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

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.dtcms.com/a/338179.html

相关文章:

  • quic协议与应用开发
  • 视觉语言导航(12)——LLM-VLN 4.2
  • 如何部署 PHPWind 8.5 UTF8 论坛?从下载到安装全流程(附安装包下载)
  • GraphPad Prism10.1安装包免费下载中文版下载以及详细安装教程!!
  • Tomcat Wrapper源码解析:深入理解Servlet生命周期与请求分发机制
  • SQL Server 基本语法
  • NodeJs 桌面开发学习 electron.js (一)
  • 黑马java入门实战笔记
  • 【从0到1制作一块STM32开发板】8. PCB添加丝印
  • c++中的auto自动类型推导
  • JVM-类加载详情
  • Mysql——分库分表后id冲突解决方案(即分布式ID的生成方案)
  • 静态网站与动态网站的区别
  • MySQL分库分表实战指南
  • 电子电气架构 --- 软件开发数字化转型
  • Linux小白加油站,第三周周考
  • 永磁同步电机控制算法--转速环电流环超螺旋滑模控制器STASMC
  • 04 类型别名type + 检测数据类型(typeof+instanceof) + 空安全+剩余和展开(运算符 ...)简单类型和复杂类型 + 模块化
  • Maven依赖管理工具详细介绍
  • PowerShell定时检查日期执行Python脚本
  • 决策树的学习
  • 【EI会议征稿】2025第四届健康大数据与智能医疗国际会议(ICHIH 2025)
  • 基于STM32的电动车智能报警系统设计与实现
  • <数据集>遥感飞机识别数据集<目标检测>
  • rsync scp无法使用,踩坑破解之道!
  • 代理模式深度解析:从静态代理到 Spring AOP 实现
  • WAIC点燃人形机器人热潮,诠视SeerSense® DS80:多感融合的空间感知中枢,重新定义机器三维认知
  • 8月更新!Windows 10 22H2 64位 五合一版【原版+优化版、版本号:19045.6159】
  • 红日靶场01<超水版>
  • IDEA的创建与使用(2017版本)