文件权限
文件权限
1、基本权限UGO
– rw- r– r– 1 alice hr 0 Aug 31 16:29 file1
文件类型 属主权限 属组权限 其他人权限 属主 属组
权限对象:
属主: u
属组: g
其他人: o
基本权限类型:
读: r 4
写: w 2
执行: x 1
2、设置权限(符号 或 数字)
1)更改文件的属主chown、属组chgrp
chown:
[root@test ~]# chown alice.hr file1 //改属主、属组
[root@test ~]# chown alice file1 //只改属主
[root@test ~]# chown .hr file1 //只改属组
[root@test ~]# chown -R alice.hr dir1 //将dir1目录下的所有文件和目录及目录下面的三四级文件更改属组和属主
chgrp:
[root@test ~]# chgrp it file1 //改文件属组
[root@test ~]# chgrp -R it dir1 //改文件属组
2)更改权限
a. 使用符号
对象 赋值符 权限类型
u + r
chmod g – w file1
o = x
a
Example:
[root@test ~]# chmod u+x file1 //属主增加执行
[root@test ~]# chmod a=rwx file1 //所有人等于读写执行
[root@test ~]# chmod a=- file1 //所有人没有权限
[root@test ~]# chmod ug=rw,o=r file1 //属主属组等于读写,其他人只读
[root@test ~]# ll file1 //以长模式方式查看文件权限
-rw-rw-r– 1 alice it 17 10-25 16:45 file1 //显示的结果
b. 使用数字
[root@test ~]# chmod 644 file1
[root@test ~]# ll file1
-rw-r–r– 1 alice hr 17 10-25 16:45 file1
3、基本权限ACL
getfacl
//查看文件ACL权限
setfacl [选项] 参数
//设置文件ACL权限
-b,–remove-all:删除所有扩展的acl规则,基本的acl规则(所有者,群组,其他)将被保留
-R,–recursive:递归的对所有文件及目录进行操作
Example:
[root@test ~]# touch /home/test.txt
[root@test ~]# ll /home/test.txt
-rw-r–r– 1 root root 0 10-26 13:59 /home/test.txt
[root@test ~]# getfacl /home/test.txt
[root@test ~]# setfacl -m u:alice:rw /home/test.txt //增加用户alice权限
[root@test ~]# setfacl -m u:jack:- /home/test.txt //增加用户jack权限
[root@test ~]# setfacl -m o::rw /home/test.txt
查看/删除:
[root@test ~]# ll /home/test.txt
-rw-rw-r–+ 1 root root 0 10-26 13:59 /home/test.txt
[root@test ~]# getfacl /home/test.txt
[root@test ~]# setfacl -m g:hr:r /home/test.txt
[root@test ~]# setfacl -x g:hr /home/test.txt //删除组hr的acl权限
[root@test ~]# setfacl -b /home/test.txt //删除所有acl权限
4、ACL高级
mask:
用于临时降低用户或组(除属主和其他人)的权限
mask决定了他们的最高权限
建议:为了方便管理文件权限,其他人的权限置为空
[root@test ~]# setfacl -m o::- /home/file100.txt //chmod o=- /home/file100.txt
[root@test ~]# setfacl -m m::— /home/file100.txt
5、高级权限suid,sgid,sticky
高级权限的类型
suid 4 //普通用户通过suid提权 <针对文件>
sgid 2 //用户只能删除自己的文件 <针对目录>
sticky 1 //新建文件继承目录属组 <针对目录>
设置特殊权限
a、字符
chmod u+s file
chmod g+s file
chmod g+s dir
chmod o+t dir
b、数字
chmod 4777 file
chmod 7777 file
chmod 2770 dir
chmod 3770 dir
6、文件属性(设置文件属性(权限),针对所有用户,包括root)
lsattr [选项] 参数 //查看文件属性
-a:列出目录中的所有文件,包括隐藏文件
chattr [选项] 参数 //设置文件属性
-a:让文件或目录仅供附加用途
-i:不得任意更改文件或目录
Example:
[root@test ~]# touch file100 file200 file300
[root@test ~]# lsattr file100 file200 file300
————-e- file100
————-e- file200
————-e- file300
[root@test ~]# chattr +a file100
[root@test ~]# chattr +i file200
[root@test ~]# chattr +A file300
[root@test ~]# lsattr file100 file200 file300
—–a——-e- file100
—-i——–e- file200
——-A—–e- file300
[root@test ~]# echo 111 > file100 //以覆盖的方式写入
bash: file100: Operation not permitted
[root@test ~]# rm -rf file100
rm: cannot remove `file100′: Operation not permitted
[root@test ~]# echo 111 >> file100 //以追加的方式写入,例如日志文件
[root@test ~]# echo 111 > file200
bash: file200: Permission denied
[root@instructor ~]# echo 111 >> file200
bash: file200: Permission denied
[root@test ~]# rm -rf file200
rm: cannot remove `file200′: Operation not permitted
[root@test ~]# chattr -a file100
[root@test ~]# chattr -i file200
[root@test ~]# chattr -A file300
7、进程掩码 mask umask
文件权限管理之: 进程umask
进程、新建文件、目录的默认权限会受到umask的影响,umask表示要减掉的权限
Example:
示例1: 在shell进程中创建文件
[root@test ~]# umask //查看当前用户的umask权限
0022
[root@test ~]# touch file800
[root@test ~]# mkdir dir800
[root@test ~]# ll -d dir800 file800
drwxr-xr-x. 2 root root 4096 3月 11 19:40 dir800
-rw-r–r–. 1 root root 0 3月 11 19:40 file800
示例2:修改shell umask值(临时)
[root@test ~]# umask 000
[root@test ~]# mkdir dir900
[root@test ~]# touch file900
[root@test ~]# ll -d dir900 file900
drwxrwxrwx. 2 root root 4096 3月 11 19:44 dir900
-rw-rw-rw-. 1 root root 0 3月 11 19:44 file900
示例3:修改shell umask值(永久 建议不要)
[root@test ~]# vim /etc/profile
if [ $UID -gt 199 ] && [ “`id -gn`” = “`id -un`” ]; then
umask 002
else
umask 022
fi
[root@test ~]# source /etc/profile //立即在当前shell中生效
示例4:通过umask决定新建用户HOME目录的权限
[root@test ~]# vim /etc/login.defs
UMASK 077
[root@test ~]# useradd gougou
[root@test ~]# ll -d /home/gougou/
drwx——. 4 gougou gougou 4096 3月 11 19:50 /home/gougou/
[root@test ~]# vim /etc/login.defs
UMASK 000
[root@test ~]# useradd yangyang
[root@test ~]# ll -d /home/yangyang/
drwxrwxrwx. 4 yangyang yangyang 4096 3月 11 19:53 /home/yangyang/