1.权限的查看及读取
(1)权限查看
ls -l file 查看文件权限

ls -ld dir 查看目录权限

(2)权限的读取
文件的属性称为文件的元数据(meta data),一种元数据用1个byte来记录内容
(3)文件和目录权限信息的解读
我们以上图中目录的权限为例进行介绍
drwxr-xr-x . 2 root root 6 May 18 17:10 dir
第一位是文件类型,- 为普通文件,d 为目录,l 为软链接,b 为快设备,c 为字符设备,s (socket)为套接字,p 为管道“ | ”
rwxr-xr-x 这九位表示用户权限,具体表示含义将在后续普通权限中进行介绍
‘ . ’表示系统的selinux开启
数字 2 在文件和目录中表示的含义不同,对于文件,表示文件内容被系统记录的次数(即硬链接的个数),对于目录,表示目录中子目录的个数
第一个 root 表示文件的拥有者,紧接着的 root 表示文件的拥有组
数字 6 在文件中表示文件内容的大小,在目录中表示目录中子文件的元数据大小
May 18 17:10 表示文件内容被修改的时间 dir 表示文件名称
2.普通权限的类型及作用
(1)用户对文件的身份
在用户权限 rw-r--r-- 中,前三位表示文件的拥有者的权限,中间三位表示文件的拥有组的权限,最后三位表示除了文件的拥有者和拥有组之外其他用户的总称
(2)权限类型
- 表示权限未开启
r 可读
对于文件:可以读取文件的内容
对于目录:可以 ls 列出目录中的文件
w 可写
对于文件:可以更改文件的内容
对于目录:可以在目录中新建或者删除文件
x 可执行
对于文件:可以用文件名称调用文件内记录的程序
对于目录:可以进入目录中
(3)用户身份匹配
user > group > other
3.设定普通权限的方法
chmod 设定文件的权限
使用 chmod 命令可以对文件或目录的普通权限进行设定,主要有以下几种方式一是复制权限,二是字符方式,三是数字方式
(1)chmod复制权限
chmod --reference=/root/Desktop/dir /root/Desktop/file 将目录dir的权限复制到文件file上

chmod -R --reference=/root/Desktop/file /root/Desktop/dir/ 将文件file的权限复制到目录dir及目录dir中的所有文件上

(2)字符方式设定权限
监控命令: watch -n 1 ' ls -lR /mnt '

上图是各目录与文件的权限初始状态
chmod (u g o)(+ - =)(r w x) file 用字符的方式来设定file的权限
例如:
chmod u+x file 设定file文件的拥有者可执行权限

chmod g+w /mnt/dir/file1 设定file1文件的拥有组可写权限

chmod o-rx dir 设定dir目录的其他用户无可读、可执行权限

chmod u-w,g+w /mnt/dir/file2 设定file2文件的拥有者无可读权限,拥有组可读权限

chmod g=rwx /mnt/dir/file3 设定file3文件的拥有组可读、可写、可执行权限

chmod -R u=x o=--- /mnt/dir/ 设定dir目录中所有文件的拥有者可执行权,其他用户无权限

(3)数字方式设定权限
使用三位二进制数来表示不同使用者的权限,将其转换为八进制数,再将文件的拥有者、拥有组和其他用户的三个八进制数组合在一起,便可表示其文件的权限
例如:
某一文件中,u:rwx=111=7 g:r-x=101=5 o:-w- =010=2
所以该文件的用户普通权限可表示为752
chmod 453 /mnt/file 将file的用户权限更改为453
分析: u:4=100=r-- g:5=101=r-x o:3=011=-wx
即更改后file的权限表示为r--r-x-wx

4.系统默认权限设定
意义:系统本身存在的意义是共享资源,从安全角度来看,系统共享的资源越少,开放的权力越少,系统的安全性就会越高,而如果既要保证系统安全,又要系统创造价值,就应该把开放的权力默认开放,把不安全的权力默认保留
(1)如何保留权力
umask表示系统保留权力
umask 查看保留权力
umask 权限制 临时设定系统预留权力
目录默认权限=777-umask
文件默认权限=777-umask-111
由此可见,当umask值越大时,系统的安全性就越高
(2)临时修改umask值
umask 077 修改系统的umask值为077

注:此更改仅在当前shell生效,退出shell重新打开,umask值恢复默认022
(3)永久修改umask值
若要永久修改umask值,需要修改/etc/bashrc和/etc/profile的两个文件中umask的数值
操作方法:
<1> 用vim修改文件中的数值内容

修改后的结果如下


<2> 用source命令使系统应用该文件内容

<3> 使用umask命令查看当前umask值

<4> 建立文件和目录,验证umask值和文件权限值的关系

由上图可知,文件file的权限值为600=777-077-111=777-umask-111,目录dir的权限值为700=777-077=777-umask
5.文件用户用户组的管理
chown 更改文件的拥有者 chgrp 更改文件的拥有组
下图为文件和目录的初始拥有者和拥有组

chown westos file 更改file文件的拥有者为westos

chgrp jishu file 更改file文件的拥有组为jishu

chown linux.westos file 同时更改file文件的拥有者和拥有组为linux和westos

(chown、chgrp) -R (user、group) dir 更改目录本身及其中内容的拥有者或拥有组
如:
chown -R westos dir 更改dir及其内容的拥有者为westos

chgrp -R jishu dir 更改dir及其内容的拥有组为caiwu

6.特殊权限
(1)stickyid 粘制位
作用对象:一般针对于目录
作用效果:如果一个目录的stickyid开启,那么这个目录中的文件只能被文件的拥有者删除,即可提高目录中文件的安全性
方法:chmod 1原始权限 dir 或 chmod o+t dir
操作步骤:
<1> 实验对象的准备
mkdir /mnt/cmm //在mnt里建立cmm目录
chmod 777 /mnt/cmm //修改cmm目录的权限为777
su - westos //切换到westos用户
touch /mnt/cmm/westosfile //在cmm目录下建立westosfile文件
exit //退出westos用户
su - linux //切换到linux用户
touch /mnt/cmm/linuxfile //在cmm目录下建立linuxfile文件
结果如下

<2> 不同用户建立文件的删除
此时,在linux用户下,执行以下命令
rm -fr /mnt/cmm/westosfile
结果如下

发现westosfile文件被删除,可知stickyid 未开启
<3> 开启stickyid并进行文件删除操作
exit //退出linux用户
chmod 1777 /mnt/cmm //将cmm的权限设置为1777(其中1为特殊权限)
此时,cmm目录的权限显示为

su - westos //切换到westos用户
rm -fr /mnt/cmm/linuxfile //删除linuxfile文件
结果如下:

出现cannot remove '/mnt/cmm/westosfile': Operation not permitted 报错,表示stickyid 已开启,保护cmm目录中文件的安全
(2)sgid 强制位
作用对象:目录和文件
效果:使得目录中新建的文件自动归属到目录的所属组中
方法:chmod 2源文件权限 dir 或 chmod g+s dir
针对于目录的操作步骤:
<1> 实验对象的准备
mkdir dir //建立dir目录
touch /mnt/dir/file //在dir目录下建立file文件
chmod 777 /mnt/dir //修改dir的权限为777
结果如下

上图为此实验的初始文件权限
<2> 设置sgid权限并验证
chmod g+s /mnt/dir = chmod 2777 /mnt/dir //给dir设置sgid特殊权限
此时dir目录的权限显示

su - westos //切换到westos用户
touch /mnt/dir/file1 //在dir目录下建立file1文件
结果如下

发现此时file1文件的所有组为root,证明sgid权限生效
(3)suid 冒险位
作用对象:只针对二进制的可执行文件(c程序)
效果:当运行二进制可执行文件时,都是用文件拥有者身份运行的,和执行用户无关
方法:chmod 4原权限 file 或 chmod u+s file
操作步骤:
<1> 设定监控命令
执行该命令 watch -n 1 "ps ax -o user,group,comm | grep cat "
效果如下

<2> 实验对象的准备
su - westos 切换到westos用户
/bin/cat 进入cat
执行以上命令后,效果如下

由上图可知,该cat的拥有者和拥有组均为westos
exit 退出westos用户
chmod u+s /bin/watch 给/bin/watch目录添加suid权限
su - westos 切换到westos用户
/bin/cat 进入cat
执行上述命令后,cat的拥有者变为root,拥有组仍为westos,表明suid权限添加成功
7.acl权限列表
全称:Aiccess Control Lists 访问控制列表
功能:在列表中可以设定特殊用户对于特殊文件有特殊权限
(1)acl列表开启标识
执行该命令 ls -l file 结果如下

若图中红色处有“+”,则表示acl列表功能开启,无“+”贼表示acl列表功能未开启
(2)acl列表权限读取
getfacl file 获取file文件的acl列表权限
结果如下:

(3)acl列表的控制
setfacl -m u:linux:rw /mnt/file 给linux用户设定rw的acl特殊权限
此时特殊用户权限已添加成功,再运行ls -l 命令,可查看acl权限开启的标识

上图中有“ + ”表示acl列表权限已开启
setfacl -m g:caiwu:rx /mnt/file 给caiwu用户组设定fx的acl特殊权限
setfacl -x u:linux /mnt/file 删除列表中的linux用户
setfacl -x g:caiwu /mnt/file 删除列表中的caiwu用户组

setfacl -b /mnt/file 关闭acl权限列表
在上图中可以看出,acl权限列表的标识已消失,此时acl权限列表已关闭
(4)acl权限优先级
拥有者(user) > 特殊指定用户 > 权限多的组 > 权限少的组 > 其他用户
(5)acl列表中mask控制
含义:系统能够赋予特殊用户和特殊用户组的最大权限阈值
例:
touch file
setfacl -m u:westos:rwx /mnt/file
getfacl /mnt/file
运行以上命令后,结果如下:

chmod g-x /mnt/file
getfacl /mnt/file
上述命令操作是将file组权力中的可执行权限x删去,并查看acl权限列表,运行结果如下:
此时mask权限发生变化,其权限小于所有者的权限,我们运行以下命令解决此问题
setfacl -m m::rwx /mnt/file
getfacl /mnt/file
此操作是将mask的权限恢复,运行结果如下:

由上图可知,mask权限恢复正常
(6)acl列表的默认权限
setfacl -m u:westos:rwx /mnt/dir 添加westos用户的特殊权限给dir目录
setfacl -Rm g:caiwu:rwx /mnt/dir/ 添加caiwu用户组的特殊权限给dir目录及dir目录中的内容
mkdir dir
touch /mnt/dir/file{1..5}
setfacl -m u:westos:rwx /mnt/dir
getfacl /mnt/dir/file1
以上命令运行结果如下图所示
不难发现,此时目录下文件的特殊权限并未添加,继续执行以下命令
setfacl -Rm g:caiwu:rwx /mnt/dir/ //添加caiwu用户组的特殊权限给dir目录及dir目录中的内容
getfacl /mnt/dir/file1
运行结果如下:
发现dir目录下的file1文件的特殊权限已添加,此时再继续新建文件,运行以下命令
touch /mnt/dir/file6
getfacl /mnt/dir/file6
运行结果如下:
发现file6文件的特殊权限并未添加,可得出以上命令只针对于已经存在的文件生效,新建的文件无法生效,若希望其对新建的文件也同样生效,可执行以下命令
setfacl -Rm d:u:westos:rwx /mnt/dir //添加westos用户的特殊权限给dir目录及dir目录中的文件
touch /mnt/dir/file7
getfacl /mnt/dir/file7
运行结果如下:
由上图可知,westos用户的特殊权限也添加到新建的文件file7上
8.attr权限
作用对象:所有用户
种类: i 不能做任何修改 a 能添加不能删除
方法:lsattr dir/file 查看attr权限
chattr ±i/a dir/file 设定attr权限
操作步骤:
<1> 实验对象准备
mkdir dir
touch /mnt/dir/file
lsattr -d /mnt/dir //查看文件的attr权限
运行结果如下图所示
由上图可知,无任何标识,表明attr权限未开启
<2> 添加 a 权限
chattr +a /mnt/dir //添加attr权限使用户只能添加不能删除
lsattr -d /mnt/dir
运行结果如下:
此标识表明attr中a权限已开启
<3> 验证 a 权限
touch /mnt/dir/file1
运行结果如下:
发现可以正常新建文件,继续执行以下命令
rm -fr /mnt/dir/file1
运行结果如下:
发现执行此命令会报错,表明attr权限正常运行
chattr -a /mnt/dir //取消attr权限
rm -fr /mnt/dir/file1
运行结果如下:
发现正常删除,表明attr权限已关闭
<4> 添加 i 权限
chattr +i /mnt/dir //添加attr权限使用户只能看而不能进行其他操作
lsattr -d /mnt/dir
运行结果如下:
此标识表明attr权限已开启
<5> 验证 i 权限
touch /mnt/dir/file1
rm -fr /mnt/dir/file
ls /mnt/dir
运行结果如下:
不难发现,可以正常查看文件,但无法新建和删除文件,表明 i 权限正常运行
chattr -i /mnt/dir
lsattr -d /mnt/dir
运行结果如下:
表明attr权限已关闭,使用者可正常对文件进行新建和删除操作