目录
前言
这篇文章是《Linux 账号和权限管理(上)》的下半篇章,链接如下
http://t.csdn.cn/M4fj9
本篇总结了对文件或目录权限和归属修改的相关命令和具体操作,还有一些特殊权限的作用。如果对你有帮助的话还请点个赞支持一下博主哟,感谢🌹🌹🌹
管理目录和文件的属性
文件/目录的权限和归属
- 访问权限
读取 r: 允许查看文件内容、显示目录列表
写入 w: 允许修改文件内容,允许在目录中新建、移动、删除文件或子目录
可执行 x: 允许运行程序、切换目录 - 归属(所有权)
属主:拥有该文件或目录的用户帐号
属组:拥有该文件或目录的组帐号
查看文件/目录的权限和归属
ls -l [文件名]
//不加文件名就是查看当前文件夹下所有文件的权限和归属
[root@localhost ~]# ls -l
总用量 12
drwxr-xr-x. 2 root root 6 7月 21 2021 aa
-rw-------. 1 root root 1588 7月 14 2021 anaconda-ks.cfg
-rw-r--r--. 1 root root 26 9月 27 10:26 a.txt
drwxr-xr-x. 2 root root 6 7月 21 2021 bbc
-rw-r--r--. 1 root root 0 7月 21 2021 b.txt
-rw-r--r--. 1 root root 0 7月 21 2021 c.txt
drwxr-xr-x. 12 501 games 4096 10月 13 04:02 httpd-2.4.25
以第一行aa文件的信息为例
第一列为文件类型和权限十个字段,可以这样理解
d/rwx/r-x/r-x
p 表示命名管道文件
d 表示目录文件
l 表示符号连接文件
- 表示普通文件
s 表示socket套接口文件,比如我们启用mysql时,会产生一个mysql.sock文件
c 表示字符设备文件,例: 虚拟控制台 或tty0
b 表示块设备文件,例: sda, cdrom
这里aa是目录文件
后面九个字段分为三组,第一组代表文件所有者的权限(即root),第二组代表所属组的权限(也是root),第三组代表其它用户权限
rwx
表示有读写执行权限,r-x
表示有读并执行的权限。
第11字段:表示selinux安全机制特性,对于关闭了selinux的操作系统在新建文件或目录时没有这个"."
第12字段: 对于文件来说:文件硬链接数量;对于目录来说:该目录下子目录数量,子子目录数量不计算在内。
第4、5列:表示当前用户的所有者和所属组。
第6列:当前文件的大小,单位默认为字节。
第7、8、9列:修改文件的时间,可通过touch命令刷新该时间。
第10列:当前文件或目录的名称。
设置文件和目录的权限 chmod
chmod命令
chmod [ugoa] [+-=] [rwx] 文件或目录...
或
chmod nnn 文件或目录...
//u、g、o、a 分别表示属主、属组、其他用户、所有用户
//+、-、= 分别表示
增加、去除、设置权限
//nnn表示3位八进制数
[root@localhost ~]# chmod a=rwx httpd-2.4.25
[root@localhost ~]# ls -l
drwxrwxrwx. 12 501 games 4096 10月 13 04:02 httpd-2.4.25
当然,为了方便还可以用数字表示权限
[root@localhost ~]# chmod 764 httpd-2.4.25
[root@localhost ~]# ls -l
drwxrw-r--. 12 501 games 4096 10月 13 04:02 httpd-2.4.25
另外,可以用-R
递归修改指定目录下所有子项的权限.
设置文件和目录的归属 chown
chown命令
chown 属主 文件或目录
chown :属组 文件或目录
chown 属主:属组 文件或目录
[root@localhost ~]# chown hushaotian:hushaotian b.txt
[root@localhost ~]# ls -l
-rw-r--r--. 1 hushaotian hushaotian 0 7月 21 2021 b.txt
[root@localhost ~]# chown :root b.txt
[root@localhost ~]# ls -l
-rw-r--r--. 1 hushaotian root 0 7月 21 2021 b.txt
设置文件和目录默认权限 umask
umask命令
命令作用:
定义新创建文件及目录的默认权限,通过该命令实现定义权限补码
注意:文件权限最大666,目录权限最大777
设置默认权限的文件在哪呢
[root@localhost ~]# vim /etc/profile
如下图:
[root@localhost ~]# umask 000
[root@localhost ~]# touch wj1
[root@localhost ~]# ls -l
-rw-rw-rw-. 1 root root 0 10月 21 01:01 wj1
//wj1的权限是666,即最高权限减去umask定义值
上面计算默认权限可以适用于大部分情况,唯独umask 333不行,因为严谨科学的算法是将值都转化为二进制,对umask值取反,再做运算之后再转换为8进制,即为权限。
下面这些特殊权限可以仅做了解
特殊的权限 suid
- 命令作用
程序运行时的权限从执行者变更成程序所有者的权限(例如普通用户abc,没有对shadow文件写入的权限, 但是abc用户使用passwd修改自己密码时,可以修改shadow文件中的内容) - 使用方法
程序运行时的权限从执行者变SUID属性一般用在可执行文件上,当用户执行该文件时,会临时拥有该执行文件的所有者权限。使用”ls -l” 或者”ll” 命令浏览文件时,如果可执行文件所有者权限的第三位是一个小写的”s”,就表明该执行文件拥有SUID属性。比如/usr/bin/passwd文件
chmod u+s abc
chmod u-s abc
特殊的权限 sticky
- 命令作用
- 只作用于目录
- 目录下创建的文件只有root、文件创建者、目录所有者才能删除。(相当于windows中的共享文件夹)
- 使用方法
对系统中的某些目录可以授予这样的权限,此时该目录就遵循该权限规则,如系统中的/tmp
目录
chmod o+t a1
chmod o-t a1
特殊的权限 ACL
- 命令作用
- 可作用于文件及目录
- 针对文件和目录授予单个用户的rwx权限
- 使用方法
例:用户abc既不是属主也不是属组,但需要允许abc用户能够对该对象有rwx权限,但其他用户无权限,该如何实现?
# setfacl -R -m d:u:abc:rwx test //文件夹
# setfacl -m u:wangwu:rwx abc //文件
-R 表示递归授权
-m 表示修改acl权限
d 表示只对后续新对象继承该权限
u 表示用户
abc 表示要授权用户名称