云网牛站
所在位置:首页 > Linux培训 > Linux专业知识三:系统用户及组管理,文件的权限管理

Linux专业知识三:系统用户及组管理,文件的权限管理

2018-07-09 22:15:59作者:魏文应稿源:linux站

本篇Linux专业知识主要讲系统用户及组管理,文件的权限管理。

 

第一部分:系统用户及组管理

一、用户类型

超级用户: root ,它的UID为0 。

普通用户:管理员创建,权力受限(UID从1000开始,Redhat7以前的版本是从500开始)。

系统用户:一般不登陆系统,用于维持某个服务程序正常运行(UID:1 ~ 999,Redhat7以前的版本是UID:1 ~ 499)。

什么是UID呢? UID就像人的身份证号一样,通过这个号,标识用户、程序。

 

二、系统用户信息配置文件

1.用户信息文件:

账户信息文件: /etc/passwd 。

密码信息文件: /etc/shadow 。

我们可以打开 /etc/passwd 这个文件,账户信息存储格式如下:

Linux专业知识三:系统用户及组管理,文件的权限管理

我们打开 /etc/shadow 这个文件,密码信息存储格式如下:

Linux专业知识三:系统用户及组管理,文件的权限管理

2.用户组文件:

用户组信息文件: /etc/group 。

组密码信息文件: /etc/gshadow 。

我们可以打开 /etc/group 这个文件,用户组文件信息存储格式如下:

Linux专业知识三:系统用户及组管理,文件的权限管理

 

三、系统中添加用户

往系统中新增一个用户,命令:useradd 用户名。比如添加一个名为wwy的用户: useradd wwy。useradd 命令的相关参数:

参数和说明

-u:指定一个UID

-d:指定一个宿主目录

-g:给它指定一个主group,只能有一个

-G:指定一些附加group,可以有多个

-s:指定登录用使用的shell

Linux专业知识三:系统用户及组管理,文件的权限管理

创建用户时指定UID

Linux专业知识三:系统用户及组管理,文件的权限管理

创建用户时指定宿主目录

Linux专业知识三:系统用户及组管理,文件的权限管理

创建用户时给它指定主组

 

四、修改用户信息

删除一个用户: userdel wwy (这就删除一个名为 wwy 的用户)。连用户的宿主目录一起删除: userdel -r wwy 。

设置用户密码: passwd wwy (给wwy这个用户设置密码)。设置密码也可以这样: echo weiwenying | passwd --stdin wwy (把wwy用户的密码设为weiwenying)。

修改用户UID : usermod -u 2016 wwy (给用户wwy的UID设置为2016)。

修改用户默认使用的shell解释器 : usermod -s /bin/bash wwy(给用户wwy的shell设置为/bin/bash) 。

切换用户,使用其他用户登陆系统: su wwy (保持原来的环境变量)。su - wwy (切换到 wwy 这个用户的环境变量)。

 

五、查看用户信息

查看 用户所在组和用户ID ,显示当前有效用户的UID和GID : id wwy 。

查看 已经登录系统的所有用户,who 。如果还要显示正在执行的指令与程序,则使用 w 。

看一下你是哪个用户(当前用户): whoami 或者 who am i (如果使用who am i, 而且你是从wwy用户切换到root,那么此时显示当前用户是wwy)。

 

六、系统中用户组操作

添加一个组: groupadd GroupName 。添加组时,可以给组指定一个GID号:groupadd -g 2018 GroupName。

 

七、Centos6 恢复root密码

1.关闭SElinux:

# 查看一下SElinux状态

# Enforcing : 代表记录警告且阻止可疑行为。

# Permissive: 代表仅记录安全警告但不阻止 可疑行为。

# Disabled :  代表 SELinux 被禁用。

getenforce

# 改变SElinux状态:setenforce [ Enforcing | Permissive | 1 | 0 ]

# 临时关闭: setenforce 0

# 注意当从 Disabled 切换到 Permissive 或者 Enforcing

# 模式后需要重启计算机并为整个文件系统

# 重新创建安全标签(touch /.autorelabel && reboot)。

# 这里我们要永久关闭:

2.永久关闭SElinux,打开 /etc/selinux/config 这个配置文件,设为 SELINUX=disabled :

Linux专业知识三:系统用户及组管理,文件的权限管理

保存退出,reboot 操作系统,发现启动速度会很慢。

3.重启系统,在启动界面倒计时的时候,按下回车键。然后按下 e 进入编辑:

Linux专业知识三:系统用户及组管理,文件的权限管理

在编辑模式中选择kernel选项,然后按 e 进行编辑:

Linux专业知识三:系统用户及组管理,文件的权限管理

进入之后,输入 空格 + 1,回车进入 单用户模式:

Linux专业知识三:系统用户及组管理,文件的权限管理

然后按下 b ,启动单用户模式,然后就可以用正常改密码命令,进行修改密码:

Linux专业知识三:系统用户及组管理,文件的权限管理

 

八、错误处理

切换用户以后,出现 [-bash-4.1$],而不是正常的 [test@localhost ~] : 这是因为删除了用户家目录下的bash相关配置文件导致的。如下图:

Linux专业知识三:系统用户及组管理,文件的权限管理

可以通过复制系统中的bash文件到宿主目录下: cp /etc/skel/.bash* /home/test。

 

第二部分:文件的权限管理

一、权限的作用

通过设置权限,可以达到以下三种控制效果:

只允许自己访问。

预先指定一个用户组,允许组中的用户访问。

系统中任何用户都可以访问。

权限参数说明:

通过 ls -l,列出当前文件夹文件相关参数,比如:

drwxr-xr-x. 2 root root  4096 May 23 16:54 Desktop

d

rwx

r-x

r-x

2

root

root

4096

May 23 16:54

Desktop

文件类型

拥有者的权限

所属组的权限

其他人的权限

硬链接数目

拥有者

属组

文件大小

最后修改时间

对象

文件类型:

参数和说明

p:表示命名管道文件

d:表示目录文件

l:表示符号连接文件

-:表示普通文件

s:表示socket文件

c:表示字符设备文件

b:表示块设备文件

权限类型:

参数

对于文件来说

对于目录来说

没有权限

r

读(看到目录里面有什么):ls

- 表示没有该权限

w

创建、删除、移动文件:touch mkdir rm mv cp

- 表示没有该权限

x

执行

进入 : cd cat

- 表示没有该权限

 

二、权限查看与修改

查看权限:ls -l (加上 -l 参数)。

查看权限: ll -d a.txt (查看a.txt文件)。

查看文件具体详细信息: stat a.txt (查看a.txt文件)。

1.修改文件权限

用英文字母方法修改(中间的+、-表示添加还是删除该用户的对应权限):

参数

对应的意思

权限参数

举例子

​u

拥有者(user)

w、r、x

chmod u+w 表示给拥有者添加写权限

g

组(group)

w、r、x

chmod g-w 表示给组内所有用户去掉写权限

o

其它用户(other)

w、r、x

chmod o-w 表示给其它用户去掉写权限

a

所有用户(all)

w、r、x

chmod a-w 表示给所有用户去掉写权限

权限参数对应的数值:

权限参数

功能

对应二进制

对应十进制

r

100

4

w

010

2

x

执行

001

1

权限参数组合的值:

要修改的权限

计算方法

十进制的值

rwx

4 + 2 + 1

7

rw-

4 + 2 + 0

6

r-x

4 + 0 + 1

5

r--

4 + 0 + 0

4

-wx

0 + 2 + 1

3

-w-

0 + 2 + 0

2

--x

0 + 0 + 1

1

---

0 + 0 + 0

0

使用数值方法修改权限:

比如,我们要把文件 a.txt 的权限修改为 rw-rw-r--,则使用命令为 chmod 664 a.txt。

2.修改文件所有者:

只修改所有者:chown [用户名] [文件名] 。

修改所有者和主组: chown [用户名]:[主组名] [文件名] 。

只修改主组: chown :[主组名] [文件名] 。

3.修改创建文件时的默认权限

创建文件时,系统都会给文件一个默认权限:

创建文件:默认权限 最大值为6,因为Linux系统不允许文件一创建就有执行权限。如果你想文件执行,就用chmod 命令手动修改。

创建目录:默认权限 最大值为7,因为目录的执行权限,就是进入目录,Linux是允许的。

通过设置umask值,可以修改默认权限。

umask计算方法:

文件默认权限=666 - umask值, 比如:666-022=644 。

目录默认权限=777 - umask值, 比如:777-022=755 。

默认权限设置默认位置:一般在 /etc/profile、$ [HOME]/.bash_profile 或 $[HOME]/.profile 中设置umask值。

4.文件的特殊权限

1].设置SUID权限

设置SUID位 : chmod u+s filename 或者 chmod 7644 filename(这里假设原来权限为644) 。

去掉SUID设置: chmod u-s filename 或者 chmod 644 filename(这里假设原来权限为644) 。

什么是SUID权限:

一般用在可执行文件上。

当用户执行该文件时,会临时拥有该执行文件的所有者权限。

所有者权限的第三位是一个小写的”s” ,就表明该执行文件拥有SUID属性:

Linux专业知识三:系统用户及组管理,文件的权限管理

为什么passwd需要这个SUID权限呢? 我们先看 /etc/shadow 这个文件:

Linux专业知识三:系统用户及组管理,文件的权限管理

你会发现 /etc/shadow 这个文件没有任何权限,所有用户在使用 sudo passwd 修改自己密码时,要将密码写到这里面来。然而普通用户对这个文件是不能读写的啊!怎么办呢?这时我们想,能不能通过一个程序,让这个程序帮我们写进去呢?这个程序就是执行权限为 s 的文件程序。根本原因是:即使文件显示没有任何权限,但拥有者是可以有文件的所有权限的。 这个过程就像这样:

出门前,你爸爸和你说,把家看好。财产是你爸爸的(所有者),但你爸爸出门后你可以支配家里的任何东西(赋予 s 权限,这时你就是你家的所有者,你爸爸的财产都是你的!)。

出门前,你爸爸还告诉你,别人送钱来就要,其它东西不要。另外不要动家里的任何东西。(规定了程序可以执行的内容)。

王叔叔想把iPhone7s和钱放进你家,但它进不去(没有权限)。

王叔叔把你表弟叫过来,想把东西放进去,但也放不进去(没有 s 权限)。

王叔叔把你叫出来,要送你iPhone7s和钱,你只收了钱(其它用户调用具有 s 权限的文件)。

注意:这个权限很大,一般不要使用。具有很高的安全风险。

注意:如果文件一开始就没有可执行权限(x权限),直接设置 s权限 是无效的,会显示的是大写的 S。

2].设置SGID

设置SGID位: chmod g+s filename 。

去掉SGID设置 :chmod g-s filename 。

对文件夹设置了 s 权限以后, 创建文件时主组不一样:

Linux专业知识三:系统用户及组管理,文件的权限管理

比如上面的:root用户执行 chmod g+s tencent,那么,在tencent这个文件夹中创建文件,默认主组由原来的 wwy 变成了 root 。

5.设置粘滞位

创建一个文件夹 mkdir 777 tencent/ (最好在 /tmp目录 下创建这个文件,因为所有用户都能进入这个文件夹)。在 777 这个权限下,所有用户都可以对 tencet文件夹内 的文件进行 删除操作。如果一个用户参加了一个文件,又不想其它用户删除这个文件,那么这个文件夹就要粘滞位 :

设置粘滞位: chmod 1777 tencent 。

设置有 粘滞位 的文件夹,权限后面原来的 执行参数x 变成有一个 参数t:

Linux专业知识三:系统用户及组管理,文件的权限管理

这样,凡是你放进 tencent 这个文件夹的文件,其它用户是删除不掉的,只能由你删除。

 

三、ACL 访问控制列表

ACL(Access Control List) 访问控制列表:

增加权限给其它组别或者用户,而不只是局限于 owner 、group、other。

允许 指定用户(用户A、用户B、用户C等)拥有写权限,而不再是它们整个组拥有写权限。

下面我们使用ACL工具包管理文件权限:

查看有没有ACL工具包: ```rpm -qf `which getfacl```` 。

使用 getfacl 命令查看文件权限,比如查看文件a.txt : getfacl a.txt 。

使用setfacl设置权限:

Linux专业知识三:系统用户及组管理,文件的权限管理

setfacl设置文件权限

Linux专业知识三:系统用户及组管理,文件的权限管理

setfacl设置目录权限

Linux专业知识三:系统用户及组管理,文件的权限管理

setfacl设置过的文件权限

 

相关主题

第5章 用户身份与文件权限

精选文章
热门文章