阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Linux基础教程之linux文件权限深度解读

90次阅读
没有评论

共计 5241 个字符,预计需要花费 14 分钟才能阅读完成。

基本命令

1.cut

: cat /etc/passwd | cut -d’:’-f7| uniq -c| sort -nr

2.authconfig 修改加密方式
  1. –passalgo=sha256 — update
3.scp 上传文件
  1. -r dir ip:path 传目录
  2. file ip:path 传文件
  3. -P port 指定端口
4.rsync 同步文件
  1. -avz 源文件 ip:path

scp 和 rsync 都是基于 ssh 协议

5.id
  1. - u 显示 uid;- g 显示 gid;- G 显示附属组 id
  2. -nu 显示用户名;-ng 组名;-nG 附加组名
6.su

: -user -c‘commond’以某个用户身份执行 commond

加 - 与不加的区别: su UserName:非登录式切换,即不会读取目标用户的配置 文件,不改变当前工作目录 su – UserName:登录式切换,会读取目标用户的配置文件,切换至家目录,完全切换

7. 查看内核信息

  1. cat /etc/redhat release 查看系统版本
  2. uname –r 查看内核 #uname –m 查看 32 or 64 位系统
  3. uname –a 查看内核完整信息

8. 新建一个 500M 的磁盘

dd if=/dev/zero of=/app/disk bs=1M count=500 mount -o loop /app/disk/ /mnt/disk

文件管理

文件权限说明:

  • r: 可使用文件查看类工具获取其内容(cat nano)
  • w: 可修改其内容
  • x: 可以把此文件提请内核启动为一个进程

目录权限说明:

  • r: 可以使用 ls 查看此目录中文件列表
  • w: 可在此目录中创建文件,也可删除此目录中的可读文件(目录还必须要有 x 权限)
  • x: 可以使用 ls -l 查看此目录中文件列表,可以 cd 进入此
12.chown
  1. user file 修改文件的属主
  2. user:gname file 修改属主和属组
  3. :gname file 修改属组
  4. user file 修改文件的属主
  5. user.gname file 修改属主和属组
  6. .gname file 修改属组
  7. option
  • –reference=/path/to/filename file 指定为与参考目录权限一致(属主属组同时修改)
  • -R user:gname dir 递归修改 dir 下所有文件权限
13.chmod[OPTION]… MODE[,MODE]… FILE…

MODE: 修改一类用户的所有权限:u= g= o= ug= a= u=,g= 修改一类用户某位或某些位权限 u + u- g+ g- o+ o- a+ a- + –

  • -R 递归修改
  • –reference=/path/to/file file
14.chgrp

GRPNAME file… (修改所属组) -R 递归修改 –reference=/path/to/file file

chgrp sales testfile chown root:admins testfile chmod u+wx,g-r,o=rx file chmod -R g+rwX /testdir chmod 600 file chown mage testfile

对目录有 w 权限即可删除目录下的文件

15.umask 遮罩码
  • 目录权限默认 655, 文件权限默认 644

root 为 022, 普通用户为:002, 故 root 用户创建的目录权限为 644, 普通用户创建文件权限为:775 umask 的计算, 讲最大位权限去除(文件最大位 666. 目录 777),umask 为 1 去除. 为 0 保留 umask:022 default:644 umask 000 010 010 max 110 110 110 default 110 100 100 得到 default644 目录默认权限:777-umask 文件默认权限:666-umask, 所得结果的奇数位加 1 针对文件速算:666-022 的结果偶数位不变. 基数位加 1 目录直接相减 mask 只影响除所有者和 other 的之外的人和组的最大权限 Mask 需要与用户的权限进行逻辑与运算后,才能变成有限的 权限(Effective Permission)

  • 更改遮罩码:umask 137 或者 umask u=rw,g=r,o=(注意这种设置方式即是目录的默认权限)
  • 目录默认不能具有执行权限,如果算得的结果中有执行权限则将其权限加一,算得权限小于 0 则为 0
  • umask –S 模式方式显示
[root@yongge: /root]# umask -S u=rwx,g=rx,o=rx
  • v umask –p 输出可被调用(输出 umask 0002) umask -p >> .bashrc = v 全局设置:/etc/bashrc 用户设置:~/.bashrc
16. 特殊权限
  • SUID 特殊用户权限 (只作用于文件) 只对二进制可执行程序有效

何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限. 启动为进程之后,其进程的属主为原程序文件的属主

一旦可执行文件拥有 SUID 权限, 那么其他用户就可以以这个文件的拥有者的身份去执行这个文件

chmod u+s FILE...
chmod u-s FILE...
chmod 4644 FILE...
chmod 0644 FILE...
  • SGID 特殊组权限(作用于文件或目录)

一旦某目录被设定了 SGID,则对此目录有写权限的用户在此 目录中创建的文件所属的组为此目录的属组

一旦具有可执行的文件夹那么其他用户可以以文件拥有组的身份去执行这个文件

chmod g+s FILE...
chmod g-s FILE...
chmod 2644 FILE...
chmod 0644 FILE...
  • sticky 黏滞位 (作用于目录, 例如 /tmp/)

在目录设置 Sticky 位,不管有无写权限, 任何人都能在此目录创建文件但只有文件的所有者或 root 可 以删除该文件

chmod o+t DIR...
chmod o-t DIR...
chmod 1644 DIR...
chmod 0644 DIR...
drwxrwxrwt. 8 root root 4096 Mar 30 08:57 tmp

SUID: user, 占据属主的执行权限位

  • s: 属主拥有 x 权限
  • S:属主没有 x 权限

SGID: group, 占据属组的执行权限位

  • s: group 原文件拥有 x 权限
  • S:group 原文件没有 x 权限

Sticky: other, 占据 other 的执行权限位

  • t: other 拥有 x 权限
  • T:other 没有 x 权限

权限为映射

SUID SGID STICKY 000 0 001 1 010 2 011 3 100 4 101 5 110 6 111 7 chmod 4777 /tmp/a.txt
访问控制列表 ACL(Access Control List)

: 对某个文件添加一个用户白名单, 除了文件的所有者,所属组和其它人,可以对更多的用户设置权限 CentOS7 默认创建的 xfs 和 ext4 文件系统具有 ACL 功能 CentOS7 之前版本,默认手工创建的 ext4 文件系统无 ACL 功能. 需手动增加

tune2fs –o acl /dev/sdb1
mount –o acl /dev/sdb1 /mnt/test
17.lsattr 查看文件的隐藏属性
18. chattr [+-=] -R(递归处理)
  • +i 不能删除,改名,更改
  • +a 只能追加(适用于一些日志)
  • +c 将目录或文件压缩后存放
  • +s 保密性删除文件或目录
  • +S 即时更新文件或目录
  • +u 预防意外删除
  • +A 锁定 atime
20. getfacl 查看文件的隐藏属性
21.setfacl 设置访问权限
  1. setfacl -k dir 删除默认 ACL 权限
  2. setfacl –b file1 清除所有 ACL
  3. -x (u|g|o):(uname|gname)移出权限列表
  4. - M 通过文件批量设置. 例如新建 acl.txt, 内容如下:
    u:lee:rwx g:ftp:rw g:admins:rwx setfacl -M acl.txt file1
 
  1. –set 选项会把原有的 ACL 项都删除,用新的替代,需要注 意的是一定要包含 UGO 的设置,不能象 -m 一样只是添加 ACL 就可以 • 示例:setfacl –set u::rw,u:wang:rw,g::r,o::- file1
d 操作符注意事项

先明白两个概念:Defalt ACL 和 Access ACL Default ACL 为目录的默认访问权限列表, 一旦设置了默认. 那么此目录下的所有文件和目录会继承这个默认设置, 但是需要注意的是. 默认权限对目录本身并没有作用;Access ACL 访问权限控制. 不具有继承性; 例如: 例如 setfacl -m d:u:wang:rx dir1 中的 d 就是将 dir1 设置为默认权限列表, 这样 dir1 下面新建的文件或目录都会把 wang 这个用户列为 rx 权限;

实例: 让 lee 用户具有 test 目录下的新文件或目录的 rwx 权限
setfacl -m d:u:lee:rwx /test/
[root@yongge: /]# getfacl /test getfacl: Removing leading '/' from absolute path names #file: test #owner: root #group: root user::rwx
group::rwx
other::rwx default:user::rwx default:user:root:rwx default:user:lee:rwx default:group::rwx default:mask::rwx default:other::rwx

下面在 test 目录下新建 at 文件
[root@yongge: test]# touch at [430][root@yongge: test]# getfacl at #file: at #owner: root #group: root user::rw-
user:root:rwx #effective:rw- user:lee:rwx #effective:rw- group::rwx #effective:rw- mask::rw-
other::rw-

可以看到 at 文件具有了 lee 的 rwx 权限
root@RedHat-7 mnt]# setfacl -m u:user1:rwx share // 为目录添加 ower = user1,并赋予 rwx 的权根。 [root@redhat-7 mnt]# setfacl -d -m u:user1:rwx share // 为目录添加默认的 acl 权限,此目录下创建目录和文件都会继承此权限信息 • mount -o acl /directory
• getfacl file |directory
• setfacl -m u:wang:rwx file|directory
• setfacl -Rm g:sales:rwX directory
• setfacl -M file.acl file|directory
• setfacl -m g:salesgroup:rw file| directory
• setfacl -m d:u:wang:rx directory
• setfacl -x u:wang file |directory
 setfacl -x d:g:lee ./dir删除 lee 组的默认访文列表权限
• setfacl -X file.acl directory 通过特定格式的文件删除访问权限. 文件格式如下 u:lee g:root
• getfacl file1 | setfacl --set-file=- file2 复制 file1(- 接受前一个命令的标准输出)
的 的 acl 权限给 file2

ACL 的 umask 对 other 不生效, 本质是权限的限高线, 不管目前有什么权限, 一旦设置 mask 则最大权限由 mask 决定 setfacl -m mask::rw 则此文件或目录的最高权限不超过 rw

22. 备份和恢复 ACL

: 主要的文件操作命令 cp 和 mv 都支持 ACL,只是 cp 命令需要 加上 -p 参数。但是 tar 等常见的备份工具是不会保留目录 和文件的 ACL 信息

练习

  1. 在 /testdir/dir 里创建的新文件自动属于 g1 组,组 g2 的成员如:alice 能对这些新文件有读写权限,组 g3 的成员如:tom 只能对新文件有读权限,其它用户(不 属于 g1,g2,g3)不能访问这个文件夹。 chown g:g1 /testdir/dir chmod g+s /testdir/dir setfacl -m d:g:g2:rw /testdir/dir
  2. 备份 /testdir/dir 里所有文件的 ACL 权限到 /root/acl.txt 中,清除 /testdir/dir 中所有 ACL 权限,最后还原 ACL

getfacl -R /testdir/dir >>/root/acl.txt setfacl -b /testdir/dir setfacl –restore=/root/acl.txt

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-12-03发表,共计5241字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中