文件权限
1.文件权限存在的意义
- 系统最底层安全设定方法之一
- 保证文件可以被可用的用户做相应操作
2.文件权限的查看
ls -l file 查看文件
ls -ld dir 查看目录本身的属性
例如:ls -ld westos
ll file 查看文件
ll -d dir 查看目录本身的属性
ls -l file
-rw-rw-r-- 1 root root 0 Oct 8 22:32 file
-代表普通文件,rw-rw–r--代表文件的具体权限,1是指cat能看到的被系统记录的次数,root指文件拥有者,root指文件所在组,0表示文件大小,Oct 8 22.32代表最后一次更改的时间,file表示文件名称。
3.文件权限的读
- |rw-rw-r--| 1 |kiosk | kiosk | 0 | Jul 21 09:18 | 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]对文件:文件大小
对目录:目录中子文件元数据(matedate可以理解为文件的属性)大小
文件元数据算法因为文件file 有4个字母所以占4个元数据。
- |rw-rw-r--| 1 |kiosk | kiosk | 0 | Jul 21 09:18 | file
1 1 1 1 1 1 1 4 =11 文件元数据
对于目录因为westos刚开始是一个空文件,所以他的 元数据为6,在westos中建立一个文件offer,offer有5个字母,占5个元数据。因此目录westos的元数据为18.(7+6+5=18)
[7]文件的内容被修改的时间
[8]文件的名称
4.如何改变文件的所有人和所有组
chown | chgrp
更改所有人 更改组
chown username file|dir 更改文件或者目录的所有人
chown user.group file|dir 更改所有人以及所有组
chown -R user.group dir 递归更改目录本身以及里面所有内容的所有人和所有组
chgrp group file|dir 更改文件或者目录所有组
chgrp -R group dir 递归更改目录本身和里面所有内容的所有组
5.如何改变文件的权限
-
对权限的理解(文件有r w x 三种权限分别为读,写,执行)
r(读)
对文件:是否可以查看文件中的内容 —>cat file。
对目录:是否可以查看目录中有什么子文件或者子目录 —> ls dir。
w(写)
对文件:是否可以改变文件里面记录的字符和内容。
对目录:是否可以对目录中子目录或子文件的元数据进行更改。
x(执行)
对文件:是否可以通过文件名称调用文件内记录的程序。
对目录:是否可以进入目录。
删除是建立在X和W基础上的。 -
更改方式
chmod <u|g|o><+|-|=><r|w|x> file|dir chmod u+x /mnt/file1 更改file1的权限(给所有人添加x权限) chmod g-r /mnt/file2 更改file2的权限(给所有组去掉r权限) chmod ug-r /mnt/file3 更改file3的权限(给所有人和所有组都去掉r权限) chmod u-r,g+x /mnt/file4更改file4的权限(给所有人去掉r,给所有组添加x权限) chmod o=r-x /mnt/file6 更改file6的权限(给其他人权限设定为r-x) rwx数字表示 210从右向左读 r=2^2=4, w=2^1=2, x=2^0=1 r-x|r--|--x 5 4 1 chmod 541 /mnt/file1 更改/mnt/file1的权限为 r-x|r--|--x 7=rwx,6=rw-,5=r-x,4=r--,3=-wx,2=-w-,1=--x,0=---
u=rwx=7 |g=rwx=7|o=rwx=7
所用二进制计算办法来进行,满权限就是rwx=4+2+1=7
u=rw-=6 g=r–=4 o=r–=4
r=4,w=2,x=1,-=0
7=rwx,6=rw-,5=r-x,4=r–,3=-wx,2=-w-,1=–x,0=—
更改文件权限如下图:
6.umask文件的默认权限
-
umask 系统建立文件是默认保留权限的权力
例:umask 077 临时设定系统预留权限为077
上图所示我们用umask命令将文件的默认权限更改成了077,所谓临时就是当我们关闭终端再重新打开时umask还是原来的022。 -
永久更改umask
编辑 vim /etc/profile 系统配置文件
vim /etc/bashrc shell配置文件
编辑结束后执行source命令让更改生效
source /etc/profile 刷新系统配置,让更改立即生效
source /etc/bashrc刷新bash配置
7.特殊权限
-
sticky 粘制位(t权限=1)
作用:
只针对目录生效,当一个目录上有sticky权限时
在这个目录中的文件只能被文件的所有者删除
设定方式:
chmod o+t dir | chmod 1xxx dir -
sgid 强制位(给g上加s,s权限=2)
作用
对文件: 只针对与二进制可执行文件
当文件上有sgid时任何人执行此文件产成的进程都属于文件的的组
对目录:
当目录上有sgid权限时任何人在此目录中建立的文件都属于目录的所有组
设定方式
chmod g+s file|dir | chmod 2xxx file|dir -
suid 冒险位(给u上加s,s权限=4)
只针对与2进制可执行文件
当文件上有suid时任何人执行这个文件中的程序产生的进程都属于文件的所有人
设定方式
chmod u+s file | chmod 4xxx file
-
acl权限列表
1.作用
让特定的用户对特定的文件拥有特定权限
-rw-rwx—+ 1 root root 0 Mar 28 02:39 file
那么这个文件的普通权限也在权限列表中识别,ls -l 看到的权限是不准确的。
2.acl列表查看
-rw-rwxr–+ 1 root root 0 Jul 21 15:45 file
-rw-rwxr–+ ------------->出现+acl列表开启getfacl file查看acl开启的文件的权限
file: file文件名称
owner: root文件拥有者
group: root文件拥有组
user::rw- 文件拥有人的权限
user:kiosk:rwx 指定用户的权限
group::r-- 文件拥有组的权力
mask::rwx能赋予用户的最大权力伐值
other::r-- 其他人的权限
3.acl列表的管理
setfacl -m u:username:rwx file设定username对file拥有rwx权限
setfacl -m g:group:rwx file 设定group组成员对file拥有rwx权限
setfacl -x u:username file 从acl列表中删除username
setfacl -b file 关闭file上的acl列表
setfacl -m u:student:rwx westos 设定student对westos拥有rwx权限
4.mask值
在权限列表中mask标示能生效的权力值
当用chmod减小开启acl的文件权限时mask值会发生改变
chmod g-w westos
如果要恢复mask值
setfacl -m m:rwx westos
5.acl的默认权限设定
acl默认权限只针对目录设定
setfacl -m d:u:student:rwx westos 设定
“acl权限只针对设定完成之后新建立的文件或目录生效,而已经存在的文件是不会继承默认权限”
下图是新建的文件继承acl默认权限
建立默认权限
setfacl -m d:u:student:rwx westos
清除默认权限
setfacl -k westos