第1章:初识Linux系统——第8节:查看/修改权限控制和ACL

目录

一、基本知识

二、查看/修改权限控制

①chmod命令

1.功能

(1)文字设定法

(2)数值设定法

2.其他

②chown命令

1.语法

2.功能

[③chgrp 命令](#③chgrp 命令)

1.语法

2.功能

三、ACL

1.Setfacl

①语法

②功能

③选项

④ACL规则(rules)的指定模式

2.getfacl

①语法

②功能



一、基本知识

  1. r表示读权限:针对文件可以查看文件内容;针对文件夹,可以查看文件夹内容,如ls命令
  2. w表示写权限:针对文件表示可以修改此文件;针对文件夹,可以在文件夹内:创建、删除、改名等操作
  3. x表示执行权限:针对文件表示可以将文件作为程序执行;针对文件夹,表示可以更改工作目录到此文件夹,即cd进入



二、查看/修改权限控制

①chmod命令

1.功能

修改文件或目录的权限。只有文件主或超级用户root才有权用chmod改变文件或目录的存取权限。通过chmod修改文件或目录权限有两种方法。

(1)文字设定法

chmod who 操作符号 权限 文件或目录名

使用字母和操作符表达式来修改或设定文件的访问权限。具体描述如表:

例1:取消/mnt/bb.txt所有者用户写和执行的权限,同组用户执行的权限。

root@localhost mnt# ll

drwxrwxrwx. 2 root root 4096 10月 24 17:09 b

-rw-rw-rw-. 1 root root 0 10月 24 17:09 bb.txt

例2:将/root/b目录中的所有文件权限设置为所有人都可读取及写入。

root@localhost \~# chmod a=rw b

root@localhost \~# ll

drw-rw-rw-. 2 root root 4096 9月 19 23:04 b

(2)数值设定法

chmod -R <八进制模式> <文件或目录名>

数字表示法是指将读取(r)、写入(W)和执行权限(x)分别使用"0"或"1"的二进制数来表示,有权限的表示为1,没有的权限就表示为0,然后转化为八进制数。如表:

例1:为文件/root/bb.txt设置权限:赋予所有者和组群成员读取和写入的权限,而其他人只有读取权限。则应该将权限设为"rw-rw-r--",而该权限的数字表示法为664。

root@localhost \~# chmod 664 bb.txt

root@localhost \~# ll -rw-rw-r--. 1 root root 0 9月 19 23:04 bb.txt


2.其他

我们可以使用chmod命令,修改文件、文件夹的权限信息。

注意,只有文件、文件夹的所属用户或root用户可以修改。

权限的数字序号

权限可以用3位数字来代表,第一位数字表示用户权限,第二位表示用户组权限,第三位表示其它用户权限。 数字的细节如下:r记为4,w记为2,x记为1,可以有:

  • 0:无任何权限,即 ---
  • 1:仅有x权限,即 --x
  • 2:仅有w权限,即 -w-
  • 3:有w和x权限,即 -wx
  • 4:仅有r权限,即 r--
  • 5:有r和x权限,即 r-x
  • 6:有r和w权限,即 rw-
  • 7:有全部权限,即 rwx

所以751表示: rwx(7) r-x(5) --x(1)




②chown命令

1.语法

chown 选项 属主:属组 文件或目录列表

或chown 选项 属主.属组 文件或目录列表


2.功能

修改文件的所有者或者所属组群。只有root用户才能改变文件的所有者,而只有root用户或所有者才能改变文件所属的组。用户和属组可以是名称也可以是UID或GID。多个文件之间用空格分隔。

例1:修改/root/b目录的所有者修改为u1用户。

root@localhost \~# ll

drw-rw-rw-. 2 root root 4096 9月 19 23:04 b

root@localhost \~# chown u1 b

root@localhost \~# ll drw-rw-rw-. 2 u1 root 4096 9月 19 23:04 b

例2:同时修改/root/bb.txt文件的所有者为u1和所属组为g1。

root@localhost \~# chown u1:g1 bb.txt

root@localhost \~# ll -rw-rw-r--. 1 u1 g1 0 9月 19 23:04 bb.txt

例3:只修改/root/b目录的所属组为g1。

root@localhost \~# chown .g1 b

root@localhost \~# ll drw-rw-rw-. 2 u1 g1 4096 9月 19 23:04 b


使用chown命令,可以修改文件、文件夹的所属用户和用户组

普通用户无法修改所属为其它用户或组,所以此命令只适用于root用户执行




③chgrp 命令

1.语法

chgrp 选项 属组 文件或目录列表


2.功能

用来改变所属组

例1:修改/root/b目录的所属组为root。

root@localhost \~# chgrp root b

root@localhost \~# ll drw-rw-rw-. 2 u1 root 4096 9月 19 23:04 b




三、ACL

FACL是访问控制列表(File Access Control Lists)的缩写,简称 ACL。可以针对任意指定的用户/组分配RWX权限。

Linux中ACL有两种类型:

  • 存取 ACL(access ACLs):是对指定文件或目录的存取控制列表。
  • 默认 ACL(default ACLs):只能和目录相关。若目录中的文件没有存取 ACL,就会使用该目录的默认 ACL。但是访问ACL的优先级更高。默认 ACL 是可选的。

1.Setfacl

①语法

setfacl -bkdR {-m\|-x} rules files or directory

②功能

给文件或目录设置ACL功能。

③选项

  • -x:删除文件或目录的ACL规则。
  • -b:删除文件或目录的所有ACL规则。
  • -k:删除文件或目录默认的ACL规则。
  • -d:指定文件或目录默认的ACL规则。
  • -test:测试模式,不会改变任何文件和目录的ACL.规则,操作后的ACL规则将被显示,
  • -R:对目录进行递归操作。

④ACL规则(rules)的指定模式

  • d:u:uid:perms --- 为指定的用户(使用 UID 或用户名)设置ACL权限
  • d:g:gid:perms --- 为指定的组(使用 GID 或组名)设置ACL权限
  • d:o::perms --- 为其他用户设置ACL权限
  • d:m::perms --- 设置有效的访问掩码

其中,d:表示配置用户对文件或目录的默认的ACL,perms为权限r、w、x、-的组合。

例1: 授予用户lisa读的权限:setfacl -m u:lisa:r file

取消所有用户合所有组对file写的权限:setfacl -m m::rx file

删除staff组对file操作的权限:setfacl -x g:staff file

复制一个文件file1的acl到另一个文件file2上:getfacl file1 | setfacl --set-file=- file2


2.getfacl

①语法

getfacl 选项 files or directory

②功能

查看文件或目录的ACL。

(1)-d;显示默认的ACL。

(2)-R:显示目录及其子目录和文件的ACL。

例1:IT协会的学生需要创建/dzxx/test目录,该目录需要满足下列要求:

(1)g1组的用户对此目录有完全权限。

(2)u1对此目录有r-x权限。

(3)u2对此目录有r--权限。

root@localhost \~# mkdir -p /dzx/test
设置用户u1用户r-x权限

root@localhost \~# setfacl -m u:u1:rx /dzx/test/

设置u2用户r--权限

root@localhost \~# setfacl -m u:u2:r /dzx/test/

设置g1组所有权限

root@localhost \~# setfacl -m g:g1:rwx /dzx/test/
查看acl信息

root@localhost \~# getfacl /dzx/test/

getfacl: Removing leading '/' from absolute path names

file: dzx/test/

owner: root

group: root

user::rwx

user:u1:r-x

user:u2:r--

group::r-x

group:g1:rwx

mask::rwx

other::r-x

相关推荐
律宏阔5 小时前
WSL Docker 端口明明空闲,但就是绑不上端口
linux·windows
律宏阔5 小时前
WSL 突然断网,无法 ping 内网或外网
linux·windows
穷人小水滴5 小时前
用容器编译 VirtualBox 虚拟机软件 (ArchLinux, podman)
linux·容器·virtualbox
乱码三千5 小时前
如何优雅地直连无公网 IP 的远程 GPU 服务器
linux·人工智能·程序员
yunwei376 小时前
使用 eBPF 跟踪 Nginx 请求
linux·后端·性能优化
yunwei376 小时前
使用 eBPF 跟踪 MySQL 查询
linux·后端·性能优化
yunwei376 小时前
eBPF 示例教程:使用 XDP 捕获 TCP 信息
linux·后端·性能优化
judezh6 小时前
api 容器一直 unhealthy?我把一个 Agent 运行时的健康检查逐条拆了,查出四个问题
运维·docker
GeW6 小时前
制造业高端化,为什么必须重估Linux和数据库?
linux
百万蹄蹄向前冲6 小时前
双端同步!云服务器装最新Node.js v26.10全过程追踪
服务器·人工智能·node.js