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

基本命令—— 1.cut : cat /etc/passwd | cut -d’:’ -f7| uniq -c| sort -nr

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

5.id -u显示uid;-g显示gid;-G显示附属组id -nu显示用户名;-ng组名;-nG附加组名 6.su : -user -c ‘commond’以某个用户身份执行commond

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

7.查看内核信息 cat /etc/redhat release 查看系统版本 uname –r 查看内核 #uname –m 查看32 or 64位系统 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 user file修改文件的属主 user:gname file 修改属主和属组 :gname file 修改属组 user file修改文件的属主 user.gname file 修改属主和属组 .gname file 修改属组 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查看文件的隐藏属性

  1. chattr [+-=] -R(递归处理) +i 不能删除,改名,更改 +a 只能追加(适用于一些日志) +c 将目录或文件压缩后存放 +s 保密性删除文件或目录 +S 即时更新文件或目录 +u 预防意外删除 +A 锁定atime
  2. getfacl查看文件的隐藏属性 21.setfacl 设置访问权限 setfacl -k dir 删除默认ACL 权限 setfacl –b file1 清除所有ACL -x (u|g|o):(uname|gname)移出权限列表 -M通过文件批量设置.例如新建acl.txt,内容如下: u:lee:rwx g:ftp:rw g:admins:rwx setfacl -M acl.txt file1

–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 信息

练习

在/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 备份/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

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏开源优测

AutoLine源码之RobotFramework运行器

在AutoLine中我们自定义实现了RobotFramework的运行器,其路径如下图所示:

1343
来自专栏乐沙弥的世界

快速安装及部署DRBD

1071
来自专栏pythonlove

FTP使用MariaDB完成虚拟用户认证

文件传输协议(英文:File Transfer Protocol,縮寫:FTP)是用於在網絡上進行文件傳輸的一套標準協議。它属于网络传输协议的应用层。FTP是一...

1134
来自专栏Java技术分享

PDF.js专题

前言     英文是github上的原文,找不到中文资料,我根据自己理解翻译的,有些词意思拿不准就直接把单词留在原地了,看这个文档应该可以凑合着用了。 PDF....

1.8K10
来自专栏LinXunFeng的专栏

iOS 组件化开发(一):远程私有库的基本使用

4112
来自专栏wblearn

package.json文件快速入门详解

相信入门nodejs或者npm的同学会对package.json这个文件有疑惑,对这个文件的作用不是很清晰,但搭建自己的博客每每用到node,npm这个文件又必...

1471
来自专栏C/C++基础

Linux命令(18)——screen命令

screen是GNU计划开发的用于终端命令行的管理工具,可以新建和管理多个终端命令行会话,并提供切换,分离,挂接等相应的功能。

1262
来自专栏散尽浮华

进程管理利器-supervisor部署记录

一、简单介绍 supervisor是用来管理进程的一个工具,止于为什么要用supervisor,是因为相对于linux传统的进程管理方式来说,它有很多的优势: ...

3978
来自专栏运维小白

linux基础(day 32)

10.6 监控io性能 监控系统状态 iostat -x 磁盘使用 iotop 磁盘使用 查看磁盘使用情况 在运维工作中,除了查看CPU和内存之外,磁盘的io...

3048
来自专栏Coding迪斯尼

java开发操作系统:一个程序向另一个程序伸出的咸猪手

1714

扫码关注云+社区

领取腾讯云代金券