Linux 文件权限管理
权限管理就是对不同用户设置不同的文件访问权限,例如新建,删除,修改等
权限管理是针对文件而言的
1.权限分类
读权限(read)(r)(4)
- 对目录:可以查看该目录内容(ls)
- 对文件:可以查看文件内容(cat/more/less...)
写权限(write)(w)(2)
- 对目录:可以在该目录中创建、删除、移动等操作 (mkdir/touch/mv/rm...)
- 对文件:可以修改该文件内容(vim/vi...)
执行权限(execute)(x)(1)
- 对目录:可以进入或切换到该目录(cd)
- 对文件:可以执行该文件(命令/脚本)
没有权限(-)(0)
2.用户身份 UGO A
U the user who owns it
文件的拥有者/创建者
G other users in the file's group
在文件所属组中的用户
O other users not in the file's group
其他人,既不是文件的创建者也不在问阿金属组中的用户
A all users
表示所有用户,包含UGO
3. 修改文件权限 chmod
修改文件权限 (Change file mode bits)
选项 | 全称 | 作用 |
---|---|---|
-R | recursive | 递归修改目录和目录中文件的权限 |
- 使用字母形式修改
添加权限:# chmod o+r,o+w,g+x 文件名
删除权限:# chmod o-r,g-w 文件名
设置权限:# chmod g=rw,o=rwx 文件名
- 使用数字形式修改
设置权限:# chmod 777 文件名
4.修改文件属主和属组 chown
修改文件的属主和属组(Change file owner and group)
选项 | 全称 | 作用 |
---|---|---|
-R | recursive | 递归修改 |
- 修改所有者:
# chown 用户名 文件名
- 修改所有组 :
# chgrp 组名 文件名
或者# chown .组名 文件名
或者chown :组名 文件名
- 修改所有者和所有组:
# chown 用户名.组名 文件名
或者# chown 用户名:组名 文件名
5. ACL 访问控制策略
(Access Control Lists ),它可以对某个用户或者某个组在特定文件上设置权限
设置ACL 策略 setfacl
选项 | 全称 | 作用 |
---|---|---|
-m | modify | 修改或者设置ACL策略 给单个用户添加策略: # setfacl -m u:用户名:rwx 文件名 给单个组添加策略: # setfacl -m g:组名:rwx 文件名 |
-R | recursive | 递归授权,之后新加的文件不继承该acl策略 |
-x | remove | 去掉某个用户或者组的权限 去掉某个用户的策略: # setfacl -x u:用户 文件名 去掉某个组的策略: # setfacl -x g:组名 文件名 |
-b | remove | 删除所有acl策略 语法: # setfacl -b 文件名 |
-d | default | 默认acl策略,只针对目录,新建的文件也会继承acl策略 |
查看ACl策略 getfacl
getfacl 文件名
6.高级权限
冒险位(SETUID)
针对命令,让执行命令的人具有和该命令拥有者相同的权限,使用
s S 4
表示
- 设置冒险位:
# chmod u+s 文件名
或者# chmod 4xxx 文件名
强制位(SETGID)
针对目录,当目录拥强制位,该目录中所创建的任何文件的属组都和该目录的属组一致,使用
s S 2
表示
- 设置强制位:
# chmod g+s 文件名
或者# chmod 2xxx 文件名
粘滞位 (STICKY)
针对
公共目录
,当某个目录具有粘滞位,该目录下的文件只有创建者能够删除,root除外,使用t T 1
表示
- 设置粘滞位:
# chmod o+t 文件名
或者# chmod 1xxx 文件名
7.默认权限
指得是用户创建文件后,文件的默认权限
通过
umask
控制,是针对用户设置的,不同用户mask值不同
mask 值计算方式
Linux系统中,默认创建目录的最大权限是0777
,文件的最大权限是0666
(保证系统安全,不让文件默认具有可执行权限
');计算mask值时,当值不够时,向上取
最近的权限值
- 目录:mask值=目录最大权限(0777)- 默认权限
- 文件:mask值=文件最大权限(0666)- 默认权限
umask
控制用户创建文件的默认权限
临时控制 :
# umask 权限值
永久控制:
修改配置文件,全局控制 /etc/bashrc
,局部控制 ~/.bashrc
,在文件的最后追加: umask 0007