在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---
。