一、 文件权限存在的意义
系统最底层安全设定的方法之一,保证文件可以被可用的用户相应操作
二、文件权限的读取
ls -l file ## 查看文件
ls -ld dir ## 查看目录
ll file(-d dir)
三、文件权限的读取
- rw-rw-r-- 1 kiosk kiosk 33 Jul 21 09:21 file
[1] [2] [3] [4] [5] [6] [7] [8]
注:
[1]: - 文件的类型
- ## 空文件,或者文本
d ## 目录
l ## 软连接
s ## socket套接字
b ## block块设备
c ## 字符设备
[2]: rw- rw- r-- 文件权限
[1] [2] [3]
[1]: [u] 文件拥有者对文件能做什么操作
[2]: [g] 文件所有组对文件所能做什么操作
[3]: [o] 文件其他人对文件所能做什么操作
[3]: 对文件:文件硬连接个数(文件被记录的次数)
对目录:目录中子目录的个数
[4]: 文件的所有人
[5]: 文件的所有组
[6]: 对文件:文件的大小
对目录:目录中子文件元数据(可以理解为文件的属性)的大小
[7]: 文件的时间
[8]: 文件名称
四、如何改变文件的所有人和所有组
chown: 改变文件所有人
chgrp: 改变文件所有组
chown -R : 同时改变所有人和所有组
例: chown student /mnt/file1 ## 将file1的所有人改为student
chgrp westos /mnt/file2 ## 将file2的所有组改为westos
chown -R student.westos /mnt/westos/ ## 将westos目录以及其下文件的所有人改为student,所有组改为westos。
建立westos目录,并在其下建立文件,查看所有人和所有组都是root。
更改所有人和所有组
五、如何改变文件的权限
1. 对权限的理解
r: 对文件:是否可以查看文件中的内容
对目录:是否可以查看目录中有什么子文件或者子目录
w: 对文件:是否可以改变文件里面记录的字符
对目录:是否可以对目录或者子目录或子文件的元数据进行更改
x: 对文件:是否可以通过文件名称调用文件内记录的程序
对目录:是否可以进入目录
2.更改方式
chmod <u|g|o> <+|-|=> <r|w|x> file | dir
更改之前首先建立文件file{1..5},查看文件属性
对以上建立的文件进行更改权限
例:chmod u+x file1
chmod g-r file2
chmod ugo-rwx file3
chmod ug=w file4
chmod -r file5
上面的写法有一些繁杂,为了简化更改方式,rwx对应:421,该位上有这一权限则为1,否则为0,即可简化为用数字来设定权限。
例:上面对file1的修改u+x,即在原先建立文件默认权限上再对所有人赋予w的权限
rwx | r-- | r-- : 744 chmod 744 file1 即可完成对文件file1权限的修改,和上面使用u+x得到的结果相同。
rwx | rwx | rwx : 777 chmod 777 file1 即可完成对文件file1权限的修改
六、umask
umask: 系统建立文件时默认保留的权力
临时更改:
umask 077 ## 临时设定系统预留权力为077
未修改之前umask之前,umask值为022,777-022-111=644 建立的文件默认权限为644
修改umask为077之后,再次建立文件,可看到默认权限已经为600,即777-077-111=600(不存在负数之说)
永久更改:需要修改/etc下的profile和bashrc这两个配置文件
vim /etc/profile
vim /etc/bashrc
两个配置文件中都有这一部分,只需修改else语句里的umask即可,完成之后在运行下面两条命令,
使配置文件的更改立即生效。
source /etc/profile ## 更改立即生效
source /etc/bashrc
七、特殊权限
1.sticky ## 粘滞位
作用: 只针对目录生效,当一个目录上有sticky权限时,
在这个目录中的文件只能被文件的所有者删除
设定方式: chmod o+t dir
chmod 1xxx dir (例xxx=777)
第一步建立目录test,并在目录下建立文件file{1..3},查看文件权限
第二步设置目录及文件权限都为777
第三步在设置粘滞位之前切换到student用户,删除test目录下的文件file1,可以删除
第四步给test目录设置粘滞位,other的x变为了t,表示粘滞位设置成功。
第五步再次切换到student用户,删除test目录下的file2文件,显示操作不被允许,不能删除test目录下的file2,即验证了粘滞位的功能。
总结:粘滞位的设定应针对一些公共目录,多用户都可操作该目录下的文件,防止用户有意或无意的删除其他用户的文件。
2.sgid ## 强制位
作用:
对文件:
只针对于二进制可执行文件,
当文件上有sgid,任何人执行此文件产生的进程都属于此文件组
首先ls查看/bin/bash,所有人和所有组都属于root
执行watch命令(1秒刷新一次的显示日期)
用ps命令查看进程,可看到watch进程的所有组属于root
修改/bin/watch的所有组为student,对/bin/watch设置sgid强制位,再次执行watch,使用ps查看进程可看到watch进程的组已经是student。
对目录:
当目录上有sgid权限时,任何人在此目录中建立的文件都属于目录的所有者
设定方式: chmod g+s file|dir
chmod 2xxx file|dir
在根下的mnt下建立test目录,查看目录的所有者属于root
设定其他人对此目录可写的权限,进入student用户,在test目录下创建文件file1,查看目录的所有者为student
对目录test设定强制位sgid权限,查看目录属性,'s'已经表示设定成功
进入student用户,在test目录下建立文件file2,查看文件file2的所有组是root,而不是student。
3.suid ## 冒险位 (程序执行过程中权力的提升或下降)
只针对于二进制可执行文件,当文件上有suid的时候,任何人执行这个文件程序产生的进程都属于文件的所有人
设定方式: chmod u+s file
chmod 4xxx file
在对/bin/watch文件未设置冒险位之前,执行watch命令,查看进程watch属于watch文件的所有人root。
修改/bin/watch文件的所有人为student,然后在对/bin/watch文件设置冒险位。
再次执行watch,使用ps命令查看watch进程,可看到现在进程的所有人是student,是/bin/watch文件的所有人,而不是root
八、acl权限列表
1.作用:让特定的用户对特定的文件拥有特定权限
2. acl列表查看
-rw-rwxr--+ 1 root root ...
“+”: acl开启标志
getfacl file ## 查看acl开启的文件的权限
# file: file ## 文件名称
# owner: root ## 文件拥有者
# group: root ## 文件拥有组
user::rw- ## 文件拥有人的权限
user:student:rwx ## 指定用户的权限
group::r-- ## 文件拥有组的权力
mask::rwx ## 能生效的权力的最大阀值
other::r-- ## 其他人的权力
3. acl列表的管理
setfacl -m u:username:rwx file ## 设定username对file拥有rwx权限
首先超级用户下建立文件file,切换到普通用户student下,对这个文件进行写入操作,权限不够,操作时被拒绝的
使用acl权限,设定student对file拥有rwx权限,再次切换到普通用户student,对这个文件进行写入操作,可以看到现在写入成功。
setfacl -m g:groupname:rwx file ## 设定group组成员对file拥有rwx权限
setfacl -x u:username file ## 从acl列表删除username,但“+”依然在
setfacl -b file ## 删除acl权限列表
4.mask值
在权限列表中mask标示能生效的权力值
当用chmod减小开启acl的文件权限时mask值会发生改变
chmod g-w westos
如果要恢复mask值
setfacl -m m:rw westos
setfacl -m m:rw
5.acl的默认权限设定
acl默认权限只针对目录设定
acl权限只针对设定完成之后新建立的文件或目录生效,而已经存在的文件是不会继承默认权限。
setfacl -m d:u:student:rwx /mnt/westos
首先在/mnt下建立test目录,然后在test目录下建立wq目录和file文件爱你,进入student用户,在test目录下的wq目录下建立文件,并且对/mnt/test/file进行写入操作也显示权限不够,请求被拒绝。
使用acl默认权限设定test目录,设定后在test目录下建立目录wq1和文件file1
进入student用户,首先对使用acl默认权限设定test目录前建立的目录和文件进行操作,结果是权限不够,
然后对acl默认权限设定后在test目录下建立的目录和文件进行操作,操作是允许的。