Linux文件权限

发布时间 2023-11-27 20:21:15作者: 七友zzz

在Linux中,文件权限用UGO三组字符表示,U表示文件所有者(user)、G表示文件所属组(group),O表示其他用户(others)的权限。这三组字符的排列顺序通常是rwx,分别表示读(read)数字设定为4、写(write)数字设定为2和执行(execute)数字设定为1的权限。

1. 文件权限基础

首先,我们创建一个名为 test_file.txt 的测试文件,并查看其默认权限:

touch test_file.txt 
ls -l test_file.txt

结果显示文件的权限,默认情况下可能是 -rw-r--r--(所有者可读写,组用户和其他用户只可读)。

2. 更改文件权限

接下来,我们通过 chmod 命令修改文件权限。例如,将文件 test_file.txt 的权限设置为:

  • 所有者可读写执行
  • 组用户可读写
  • 其他用户没有任何权限
chmod 750 test_file.txt
ls -l test_file.txt

执行后,使用 ls -l 命令可以看到权限已被更改为 -rwxr-x---

同时给所有对象增加读写执行权限,在chmod命令后加a符号,然后覆盖当前全部权限。

chmod a=rwx file

3. 更改文件属主和属组

chown:修改文件属主,属组

chgrp:修改文件属组

例如,将file2的文件属主root改为qfedu 。

chown qfedu file2

修改属主的同时也可以修改属组,只需在属主与属组之间加入“ :”即可。

groupadd linux

useradd qfedu02

chown qfedu02:linux file2

ll file2

若只需修改文件的属组,使用chgrp命令即可

chgrp linux file1

4. 基本权限ACL

ACL权限主要提供传统的UGO的rwx权限之外的具体权限设置,可以对单一用户,单一文件或目录进行权限设置。

使用getfacl查看ACL权限

例如查看/home/test.txt文件的权限  

getfacl /home/test.txt

setfacl命令可以设置ACL权限,添加-m参数可以修改文件ACL权限

setfacl -m u:alice:rw /home/test.txt

5. 特殊权限设置

尝试设置文件的 SUID(Set User ID)权限,让文件以所有者身份执行:

chmod +s test_file.txt
ls -l test_file.txt

你可能会看到权限中出现类似于 -rwsr-x--- 的变化。

6. 目录权限管理

创建一个测试目录 test_directory 并查看其默认权限:

mkdir test_directory
ls -ld test_directory

通常情况下,默认的目录权限可能是 drwxr-xr-x

7. 更改目录权限

使用 chmod 命令修改目录 test_directory 的权限,限制其他用户对其的访问:

chmod 750 test_directory
ls -ld test_directory

执行后,可以看到目录权限变更为 drwxr-x---