当前位置: 首页 > ops >正文

06.文件权限管理

文件权限管理

  • 文件权限管理
    • 1. chown
    • 2. chgrp
    • 3. chmod
    • 4. umask
    • 5. chattr
    • 6. ACL相关命令

文件权限管理

1. chown

★ 修改文件的属主,也可以修改文件属组
chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...★ 用法说明
OWNER   		# 只修改所有者
OWNER:GROUP 	# 同时修改所有者和属组
:GROUP   		# 只修改属组,冒号也可用 . 替换-c|--changes          # 同-v选项,但只显示更新成功的信息
-f|--silent|--quiet   # 不显示错误信息
-v|--verbose          # 显示过程
--dereference         # 修改的是符号链接指向的文件,而不是链接文件本身
-h|--no-dereference   # 修改的是符号链接文件,而不是其指向的目标文件(只有当前系统支持修改符号链接文件属性时,此项才有效)
--from=user:group     # 根据原属主属组来修改,相当于一个查询条件
--no-preserve-root    # 不特别对待“/”,意思就是将根目录当成普通目录来执行,默认如此,所以不要对根目录进行操作
--preserve-root       # 不允许在"/"上递归操作
--reference=RFILE     # 根据其它文件权限来操作,就是复制该文件的属主属组信息给指定文件
-R|--recursive        # 递归操作下列选项配合 -R 使用
-H                    # 如果参数是指向目录的软链接,则只修改指向的目录,不改变目录里面文件的属主属组
-L                    # 更改所有遇到的符号链接指向的目录
-P                    # 不更改符号链接指向的目录★ 修改属主
[root@rocky8 day4]# ll
total 0
-rw-r--r--. 1 root root 0 Jan 30 21:10 a1.txt
-rw-r--r--. 1 root root 0 Jan 30 21:10 a2.txt
-rw-r--r--. 1 root root 0 Jan 30 21:10 a3.txt
[root@rocky8 day4]# chown nan a1.txt  # 只修改属主
[root@rocky8 day4]# chown nan. a2.txt # 同时修改属主和属组
[root@rocky8 day4]# chown nan: a3.txt # 同时修改属主和属组
[root@rocky8 day4]# ll
total 0
-rw-r--r--. 1 nan root 0 Jan 30 21:10 a1.txt
-rw-r--r--. 1 nan nan  0 Jan 30 21:10 a2.txt
-rw-r--r--. 1 nan nan  0 Jan 30 21:10 a3.txt
上述写法,使用的组,是属主用户的主组★ 使用UID来修改属主,UID不支持省略写法
[root@rocky8 day4]# id nan
uid=1000(nan) gid=1000(nan) groups=1000(nan)
[root@rocky8 day4]# chown 1000 a4.txt 
[root@rocky8 day4]# chown 1000. a5.txt 
chown: invalid user: ‘1000.’
[root@rocky8 day4]# chown 1000: a6.txt 
chown: invalid spec: ‘1000:’
[root@rocky8 day4]# ll a4.txt a5.txt a6.txt
-rw-r--r--. 1 nan  root 0 Jan 30 21:22 a4.txt
-rw-r--r--. 1 root root 0 Jan 30 21:22 a5.txt
-rw-r--r--. 1 root root 0 Jan 30 21:22 a6.txt★ 修改属组
[root@rocky8 day4]# ll b*
-rw-r--r--. 1 root root 0 Jan 30 21:27 b1.txt
-rw-r--r--. 1 root root 0 Jan 30 21:27 b2.txt
-rw-r--r--. 1 root root 0 Jan 30 21:27 b3.txt
-rw-r--r--. 1 root root 0 Jan 30 21:27 b4.txt
-rw-r--r--. 1 root root 0 Jan 30 21:27 b5.txt
-rw-r--r--. 1 root root 0 Jan 30 21:27 b6.txt
以组名修改
[root@rocky8 day4]# chown .nan b1.txt 
[root@rocky8 day4]# chown :nan b2.txt 
[root@rocky8 day4]# ll b1.txt b2.txt 
-rw-r--r--. 1 root nan 0 Jan 30 21:27 b1.txt
-rw-r--r--. 1 root nan 0 Jan 30 21:27 b2.txt
以GID修改
[root@rocky8 day4]# chown .1000 b4.txt 
[root@rocky8 day4]# chown :1000 b5.txt 
[root@rocky8 day4]# ll b4.txt b5.txt 
-rw-r--r--. 1 root nan 0 Jan 30 21:27 b4.txt
-rw-r--r--. 1 root nan 0 Jan 30 21:27 b5.txt★ 同时修改
[root@rocky8 day4]# ll c*
-rw-r--r--. 1 root root 0 Jan 30 21:33 c1.txt
-rw-r--r--. 1 root root 0 Jan 30 21:33 c2.txt
-rw-r--r--. 1 root root 0 Jan 30 21:33 c3.txt
-rw-r--r--. 1 root root 0 Jan 30 21:33 c4.txt
[root@rocky8 day4]# chown nan:tom c1.txt 
[root@rocky8 day4]# chown nan:123 c2.txt 
[root@rocky8 day4]# chown 456:123 c3.txt 
[root@rocky8 day4]# chown nan:nogroup c4.txt 
chown: invalid group: ‘nan:nogroup’
[root@rocky8 day4]# ll c*
-rw-r--r--. 1 nan  tom  0 Jan 30 21:33 c1.txt
-rw-r--r--. 1 nan   123 0 Jan 30 21:33 c2.txt
-rw-r--r--. 1  456  123 0 Jan 30 21:33 c3.txt
-rw-r--r--. 1 root root 0 Jan 30 21:33 c4.txt★ 根据文件修改
[root@rocky8 day4]# ll f*
-rw-r--r--. 1  111  222 0 Jan 30 21:38 f1.txt
-rw-r--r--. 1 root root 0 Jan 30 21:38 f2.txt
[root@rocky8 day4]# chown --reference=f1.txt f2.txt 
[root@rocky8 day4]# ll f*
-rw-r--r--. 1 111 222 0 Jan 30 21:38 f1.txt
-rw-r--r--. 1 111 222 0 Jan 30 21:38 f2.txt

2. chgrp

★ 修改文件的属组(设置文件的属组信息)
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...-c|--changes          # 同-v选项,但只显示更新成功的信息
-f|--silent|--quiet   # 不显示错误信息
-v|--verbose          # 显示过程
--dereference         # 修改的是符号链接指向的文件,而不是链接文件本身
-h|--no-dereference   # 修改的是符号链接文件,而不是其指向的目标文件(只有当前系统支持修改符号链接文件属性时,此项才有效)
--no-preserve-root    # 不特别对待“/”,意思就是将家目录当成普通目录来执行,默认如此,所以不要对根目录进行操作
--preserve-root       # 不允许在"/"上递归操作
--reference=RFILE     # 根据其它文件权限来操作,就是复制该文件的属主属组信息给指定文件
-R|--recursive        # 递归操作下列选项配合 -R 使用
-H                    # 如果参数是指向目录的软链接,则只修改指向的目录,不改变目录里面文件的属主属组
-L                    # 更改所有遇到的符号链接指向的目录
-P                    # 不更改符号链接指向的目录[root@rocky8 day4]# ll
total 0
-rw-r--r--. 1 root root 0 Jan 30 21:42 f1.txt
-rw-r--r--. 1 root root 0 Jan 30 21:42 f2.txt
[root@rocky8 day4]# chgrp nan f1.txt 
[root@rocky8 day4]# chgrp 123 f2.txt 
[root@rocky8 day4]# ll
total 0
-rw-r--r--. 1 root nan 0 Jan 30 21:42 f1.txt
-rw-r--r--. 1 root 123 0 Jan 30 21:42 f2.txt

3. chmod

★ 修改文件权限
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...-c|--changes         # 同-v选项,但只显示更新成功的信息
-f|--silent|--quiet  # 不显示错误信息
-v|--verbose         # 显示过程
--no-preserve-root   # 不特别对待“/”,意思就是将家目录当成普通目录来执行,默认如此,所以不要对根目录进行操作
--preserve-root      # 不允许在"/"上递归操作
--reference=RFILE    # 根据其它文件权限来操作,就是复制该文件的权限信息给指定文件
-R|--recursive       # 递归操作★ MODE
who opt permisson
who 		# u|g|o|a
opt 		# +|-|=
permission  # r|w|xu+r 	# 属主加读权限
g-x     # 属组去掉执行权限
ug=rx   # 属主属组权限改为读和执行
o=     	# other用户无任何权限   
a=rwx   # 所有用户都有读写执行权限★ 注意:
用户的最终权限,是从左向右进行顺序匹配,即,所有者,所属组,其他人,一旦匹配权限立即生效,不再向右查看其权限
r和w权限对root 用户无效,对没有读写权限的文件,root用户也可读可写
只要所有者,所属组或other三者之一有x权限,root就可以执行[root@rocky8 day4]# ll
total 0
-rw-r--r--. 1 root root 0 Jan 30 21:54 f1
-rw-r--r--. 1 root root 0 Jan 30 21:54 f2
-rw-r--r--. 1 root root 0 Jan 30 21:54 f3
-rw-r--r--. 1 root root 0 Jan 30 21:54 f4
[root@rocky8 day4]# chmod a= f1
[root@rocky8 day4]# chmod u=r,g=w,o=x f2
[root@rocky8 day4]# chmod u+w,g-x,o-r f3
[root@rocky8 day4]# chmod a=rwx f4
[root@rocky8 day4]# ll
total 0
----------. 1 root root 0 Jan 30 21:54 f1
-r---w---x. 1 root root 0 Jan 30 21:54 f2
-rw-r-----. 1 root root 0 Jan 30 21:54 f3
-rwxrwxrwx. 1 root root 0 Jan 30 21:54 f4[root@rocky8 day4]# ll
total 0
-rw-r--r--. 1 root root 0 Jan 30 21:59 a1
-rw-r--r--. 1 root root 0 Jan 30 21:59 a2
-rw-r--r--. 1 root root 0 Jan 30 21:59 a3
[root@rocky8 day4]# chmod 644 a1
[root@rocky8 day4]# chmod 0 a2
[root@rocky8 day4]# chmod 777 a3
[root@rocky8 day4]# ll
total 0
-rw-r--r--. 1 root root 0 Jan 30 21:59 a1
----------. 1 root root 0 Jan 30 21:59 a2
-rwxrwxrwx. 1 root root 0 Jan 30 21:59 a3

4. umask

★ 新建文件和目录的默认权限新建文件:666-umask,按位对应相减,如果所得结果某位存在执行(奇数)权限,则该位+1;新建目录:777-umask;umask [-p] [-S] [mode]
显示或设定文件模式掩码。
-p    # 如果省略 MODE 模式,以可重用为输入的格式输入
-S    # 以字符显示★ 查看umask
[root@rocky8 0626]# umask
0022
[root@rocky8 0626]# umask -p
umask 0022
[root@rocky8 0626]# umask -S
u=rwx,g=rx,o=rx★ 修改umask
[root@rocky8 0626]# umask 123
[root@rocky8 0626]# umask 
0123
[root@rocky8 0626]# umask u=rw,g=r,o=
[root@rocky8 0626]# umask
0137非特权用户umask默认是 002
root的umask 默认是 022持久保存umask1.全局设置: /etc/bashrc , /etc/bash.bashrc(ubuntu)2.用户设置:~/.bashrc

5. chattr

★ 设定文件特殊属性
chattr [-pRVf] [-+=aAcCdDeijPsStTuF] [-v version] files...-p project 	# 设置文件项目编号
-R     		# 递归执行
-V     		# 显示过程,并输出chattr 版本
-f     		# 不输出错误信息
-v version 	# 设置版本操作符
+attribute 	# 添加该属性
-attribute 	# 去掉该属性
=attribute 	# 仅有该属性常用属性
a 	# 对文件:可追加内容,不可被删除,不可被修改,不可被重命名;对目录,可新建,修改文件,但不可删除文件
A 	# 不更新atime,节省IO
c 	# 文件会被压缩保存
i 	# 对文件:不可被删除不可被修改不可重命名;对目录:可修改查看目录中的文件,不可新建文件,不可删除文件
s 	# 彻底删除文件,用0填充原来的数据块
u 	# 防止误删除,这里是指原来存储该文件的块不会被新的数据覆盖★ 补充:
显示文件特殊属性
lsattr [-RVadlpv] [files...]★ +i 防止误删除
[root@rocky8 ~]# echo "abcd">a.txt
[root@rocky8 ~]# chattr +i a.txt 
[root@rocky8 ~]# ll a.txt 
-rw-r-----. 1 root root 5 Jun 26 14:43 a.txt
[root@rocky8 ~]# lsattr a.txt 
----i--------------- a.txt
不可删除
[root@rocky8 ~]# rm -f a.txt 
rm: cannot remove 'a.txt': Operation not permitted
不可覆盖
[root@rocky8 ~]# echo "1234" > a.txt 
-bash: a.txt: Operation not permitted
不可追加
[root@rocky8 ~]# echo "1234" >> a.txt 
-bash: a.txt: Operation not permitted
不可移动
[root@rocky8 ~]# mv a.txt /tmp/
mv: cannot move 'a.txt' to '/tmp/a.txt': Operation not permitted
可复制
[root@rocky8 ~]# cp a.txt /tmp/
可读
[root@rocky8 ~]# cat a.txt 
abcd★ +a 一般用于日志文件
[root@rocky8 ~]# echo "abcd">b.txt
[root@rocky8 ~]# chattr +a b.txt
[root@rocky8 ~]# ll b.txt 
-rw-r-----. 1 root root 5 Jun 26 14:49 b.txt
[root@rocky8 ~]# lsattr b.txt 
-----a-------------- b.txt
不可删除
[root@rocky8 ~]# rm -f b.txt 
rm: cannot remove 'b.txt': Operation not permitted
不可覆盖
[root@rocky8 ~]# echo "1234" > b.txt 
-bash: b.txt: Operation not permitted
可追加
[root@rocky8 ~]# echo "1234" >> b.txt 
不可移动
[root@rocky8 ~]# mv b.txt c.txt
mv: cannot move 'b.txt' to 'c.txt': Operation not permitted
可复制
[root@rocky8 ~]# cp b.txt /tmp/
可读
[root@rocky8 ~]# cat b.txt 
abcd
1234

6. ACL相关命令

setfacl 可设置ACL权限

getfacl 可查看设置的ACL权限

setfacl [-bkndRLPvh] [{-m|-x} acl_spec] [{-M|-X} acl_file] file ...
http://www.xdnf.cn/news/18032.html

相关文章:

  • 从 UI 角度剖析蔬菜批发小程序的设计之道——仙盟创梦IDE
  • Nextcloud容器化部署革新:Docker+Cpolar构建高效私有云远程访问新架构
  • 构建经典PyTorch框架卷积神经网络参数demo
  • Python 调试工具的高级用法
  • 原子指标、派生指标和复合指标
  • 【IDEA】设置Debug调试时调试器不进入特定类(Spring框架、Mybatis框架)
  • 项目发布上线清单
  • 数据链路层(2)
  • JavaScript 性能优化实战大纲
  • Go语言企业级权限管理系统设计与实现
  • Pulsar存储计算分离架构设计之存储层BookKeeper(上)
  • 【165页PPT】锂电池行业SAP解决方案(附下载方式)
  • 2024年08月13日 Go生态洞察:Go 1.23 发布与全面深度解读
  • 海洋牧场:引领渔业从传统到现代的华丽跨越
  • 【LeetCode】10. 正则表达式匹配
  • [GLM-4.5] LLM推理服务器(SGLang/vLLM) | 工具与推理解析器
  • 云计算-k8s实战指南:从 ServiceMesh 服务网格、流量管理、limitrange管理、亲和性、环境变量到RBAC管理全流程
  • Tomcat Endpoint的核心概念和实现细节
  • Meteodyn WT 6.7(Meteodyn)风力资源评估及微观选址软件工具
  • Unity进阶--C#补充知识点--【Unity跨平台的原理】了解.Net
  • 积鼎科技CFD VirtualFlow:引领国产多相流仿真技术,赋能工业智造
  • UE5多人MOBA+GAS 49、创建大厅
  • 数据结构:二叉树的高度 (Height)和节点总数 (Count of Nodes)
  • 第 463 场周赛(GPT-3,Me-1)
  • 【C#补全计划】多线程
  • Agent开发进阶路线:从基础响应到自主决策的架构演进
  • pytorch线性回归
  • 电力设备状态监测与健康管理:从数据感知到智能决策的技术实践​
  • 6-服务安全检测和防御技术
  • Spring AI 集成阿里云百炼平台