一、用户以及用户的分类
(一)用户
对于计算机而言每个使用者就是一个用户,计算机会为每个使用者提供一个唯一的标识,这就是用户的ID(UID)。每个用户都会有自己的用户名和相应的密码,用来和系统上的信息库做比对从而实现认证机制。有了用户之后计算机上的资源就可以进行相应的隔离机制,对不同的用户有不同的限制。
(二)用户的类别
1.管理员(UID:0)
管理员即root,拥有最大的权限,管理计算机上的所有资源。
2.普通用户
(1)系统用户(UID:1-499(CentOS6),1-999(CentOS7))
这类用户从来不需要登录系统,是为了能够让后台进程或服务类进程以非管理员的身份运行。
(2)登录用户(UID:500-60000(CentOS6),1000-60000(CentOS7))
这类用户每次都需要登录系统,拥有的权限没有root用户大。
二、权限及权限管理
(一)权限:
1.所谓权限就是在资源使用前用户所指定的获取资源的使用范围,没有在使用资源的范围内也就是没有资格使用此资源。不同的用户拥有的资源的权限不同。
2.用户的权限:
(1)r:readable,读权限
(2)w:writeable,写权限
(3)x:excuteable,执行权限
3.权限对于文件的意义:
(1)r:可获取文件的数据;
(2)w:可修改文件的数据;
(3)x:可将此文件运行为进程。
4.权限对于目录的意义:
(1)r:可使用ls命令获取其下的所有文件列表,但是不可使用ls -l命令;
(2)w:可修改此目录下的文件列表,即创建或删除文件;
(3)x:可切换至此目录中,且可使用ls -l来获取目录列表中的详细信息。
5.权限模型:
(1)模型,mode:rwxrwxrwx
(2)从属关系,ownership:user,group
6.用户权限组合机制:
用户权限 | 二进制表示 | 八进制表示 |
--- | 000 | 0 |
--x | 001 | 1 |
-w- | 010 | 2 |
-wx | 011 | 3 |
r-- | 100 | 4 |
r-x | 101 | 5 |
rw- | 110 | 6 |
rwx | 111 | 7 |
(二)权限管理命令
1.安全上下文:
(1)进程以某用户的身份运行,进程是发起此进程用户的代理,因此以此用户的身份和权限完成所有的操作
(2)权限匹配模型
.判断进程的属主是否为被访问的文件的属主,如果是,则应用属主的权限,否则进入下一步;
.判断文件的属主是否为被访问的文件的属组,如果是,则应用属组的权限,否则进入下一步
.应用其他用户的权限。
2.chmod:改变文件的权限
u:属主,文件属于哪个用户
g:属组,文件属于哪个组
o:其他,其他的用户
a:所有,所有的用户
(1)
赋权表示法:直接操作一类用户的所有权限位rwx,一次可以指定多个,每个中间用逗号分隔。
# chmod u=rwx FILENAME
# chmod u=rwx,g=rwx FILENAME
# chmod ug=rwx FILENAME
授权表示法:直接操作一类用户的一个权限位,每次只能指定一个权限位。
# chmod u+w FILENAME
# chmod ug+w FILENAME
(2)
采用八进制格式修改,必须写全三位八进制数,要不然不会修改成功文件的权限。
# chmod 660 FILENAME
参考一个文件的权限,把将要修改的文件的权限修改为参考文件的权限,这叫作引用修改。
# chmod --reference=RFILE FILENAME
共同的选项:-R,递归修改,建议授权和赋权表示法用,其他几个不建议使用。
注意:用户只能修改属组是自己的文件的那些文件的权限。
3.umask:文件的权限反向掩码,又称遮罩码,默认的遮罩码是022.
(1)文件的遮罩码:666-umask
(2)目录的遮罩码:777-umask
(3) 查看当前umask:# umask
(4)设置umask:# umask MASK
注意:之所以文件用666减去遮罩码,就是表示文件默认不能拥有执行权限,如果减得的结果中有执行权限则需要将其加1;但是此类设置仅对当前shell进程有效。
(三)特殊权限
1.SUID
(1)默认情况下:用户发起的进程,进程的属主是其发起者,因此,其以发起者的身份运行。
(2)功用:用户运行某程序是时,如果此程序拥有SUID,那么程序运行为进程时,进程的属主不是发起者的属组,而是程序文件自己的属主。
(3)管理文件的SUID权限:
chmod uu+|-s FILE..
(4)展示位置:属主的执行权限位,
如果属主原本有执行权限,显示为小写s;否则,显示为大写S
比如:/bin/passwd
(5)案例:
# useradd ssl
新建ssl用户
# su - ssl
切换至ssl用户中
# cat /etc/shadow
用root用户使用cat命令去查看/etc/passwd文件中的信息,没有权限。
# exit
退出当前登录
# cp /bin/cat /tmp
root用户执行复制/bin/cat 到/tnp目录下
# chmod u+s /tmp/cat
root用户修改文件的权限,怎加SUID权限
# su - ssl
切换至ssl用户中
# /tmp/cat /etc/shadow
让ssl用户执行/tmp/cat 命令去查看/etc/shadow也就是密码的信息。由于修改了文件的权限,在执行此文件时就会以程序文件的权限去执行。
因为是root管理员复制过来的文件,它的属主属组都是root所以修改其SUID权限之后,就会有这样的效果。
2.SGID
(1)功用:当目录属组有写权限,并且有SGID权限时,所有属于此目录的属组,且以属组身份在此目录中饭新建文件或目录时,新文件的属组不是用户的基本组,而是目录的属组。
(2)管理文件的SGID权限:
chmod g+|-s FILE...
(3)展示位置:属组的执行权限位
如果属组原本有执行权限,显示为小写s;否则,显示为大写S。
(4)案例:
# grooupadd mygrp
root用户添加组
# useradd ssl
root用户添加用户
# useradd sdl
root用户添加用户
# usermod -a -G mygrp ssl
root将mygrp组设置为用户ssl的附加组
# usermod -a -G mygrp sdl
root将mygrp组设置为用户sdl的附加组
# mkdir /tmp/test
root用户创建目录test
# chown :mygrp /tmp/test
root用户修改目录的属组为mygrp
# chmod g+x /tmp/test
root用户为test目录的属组添加写权限
这样的话ssl和sdl用户就可以在test目录新建的文件的属主和属组都会为自己身。
# chmod g+s /tmp/test
root用户给test目录添加SGID权限
添加SGID权限之后,用户ssl和sdl用户在/tmp/test下新建的文件的属组为自己但是属组会为mygrp,也就是这个目录的属组。但是这样的话此用户也可以删除同组的其他用户的文件。为了避免此类事情的发生就需要下一个权限的设定了。
3.STICKY
(1)功用:对于属组或全局可写的目录,组内的所有用户或系统上的所有用户在此目录中都能创建新文件或删除已有的所有文件;如果此类目录设置STICKY权限,则每个用户能创建新文件,但是只能删除自己的文件。
(2)管理文件的STICKY权限
chmod o+|-t FILE...
(3)展示位置:展示于其他用户的执行权限位
如果其他用户原本有执行权限,显示为小写t;否则,显示为大写T.
(4)案例
在上一个权限设定的环境下;
# chmod o+t /tmp/test
root用户修改test目录的STICKY权限
这样的话mygrp组的其他用户就不可以删除同组的其他用户的文件只能删除自己建立的文件了。
4.管理特殊权限的另一种方式
suid sgid sticky | 八进制权限 |
000 | 0 |
001 | 1 |
010 | 2 |
011 | 3 |
100 | 4 |
101 | 5 |
110 | 6 |
111 | 7 |
(1)基于八进制赋权时,可与默认的三外八进制数字的左侧再加一位八进制的数字。
例如: chmod 1777
5.facl:file access control lists(文件访问控制列表)
(1)文件的额外赋权机制
在原来的u,g,o之外,另一层让普通用户能控制赋权给另外的用户或组的赋权机制
(2)getfacl
getfacl 文件名.....
获取到的列表的显示格式:
user:用户名:权限
group:组名:权限
(3)setfacl
赋权给用户:
setfacl -m u:用户名:权限 文件名......
赋权给组:
setfacl -m g:组名:权限 文件名......
撤销赋权:
用户:
setfacl -x u:用户名 文件名......
组:
serfacl -x g:组名 文件名......
本文出自 “blankmanba” 博客,请务必保留此出处http://shuanglong.blog.51cto.com/10743732/1725437
原文:http://shuanglong.blog.51cto.com/10743732/1725437