理论知识
- 文件和目录的权限:在 Linux 系统中,文件和目录的权限分为读(r)、写(w)、执行(x)三种。读权限允许用户查看文件内容或目录列表,写权限允许用户修改文件内容或在目录中创建、删除文件,执行权限允许用户运行文件或进入目录。
- 权限的表示方法:权限可以用字符法或八进制法表示。字符法用
r
、w
、x
表示读、写、执行权限,用 -
表示没有该权限。八进制法用数字 4(读)、2(写)、1(执行)的组合来表示权限,例如 7 表示读、写、执行权限(4 + 2 + 1)。 - 文件和目录的所有者、所属组和其他用户:每个文件和目录都有一个所有者和所属组,除了所有者和所属组的用户外,其他用户也可以对文件和目录进行访问。可以分别为所有者、所属组和其他用户设置不同的权限。
- 修改文件和目录的权限:使用
chmod
命令可以修改文件和目录的权限。可以使用字符法或八进制法来指定新的权限。 - 修改文件和目录的所有者和所属组:使用
chown
命令可以修改文件和目录的所有者,使用 chgrp
命令可以修改文件和目录的所属组。 - 特殊权限位:除了基本的读、写、执行权限外,Linux 系统还有一些特殊权限位,如 SUID、SGID 和粘滞位。SUID 权限允许用户以文件所有者的身份执行文件,SGID 权限允许用户以文件所属组的身份执行文件,粘滞位可以防止用户删除其他用户的文件。
- 默认权限掩码(umask):umask 是一个用于设置新建文件和目录默认权限的掩码。默认情况下,新建文件的权限是 666 减去 umask,新建目录的权限是 777 减去 umask。
- 权限的继承:当创建一个新的文件或目录时,它会继承其父目录的权限和所属组。可以通过设置目录的 SGID 权限来确保新创建的文件和目录继承该目录的所属组。
- 权限的递归修改:使用
chmod
和 chown
命令的 -R
选项可以递归地修改目录及其子目录和文件的权限和所有者。 - 文件权限的查看:使用
ls -l
命令可以查看文件和目录的权限信息。 - 权限的安全影响:合理设置文件和目录的权限可以提高系统的安全性,防止未经授权的访问和数据泄露。
- 权限的审计和监控:可以通过查看系统日志和使用审计工具来监控文件和目录的权限变更,及时发现异常行为。
实践案例
- 查看文件的权限:使用
ls -l
命令查看 test.txt
文件的权限:
ls -l test.txt
- 修改文件的权限(字符法):将
test.txt
文件的所有者添加执行权限:
chmod u+x test.txt
- 修改文件的权限(八进制法):将
test.txt
文件的权限修改为 755(所有者具有读、写、执行权限,所属组和其他用户具有读、执行权限):
chmod 755 test.txt
- 修改文件的所有者:将
test.txt
文件的所有者改为 testuser
:
sudo chown testuser test.txt
- 修改文件的所属组:将
test.txt
文件的所属组改为 testgroup
:
sudo chgrp testgroup test.txt
- 设置文件的 SUID 权限:将
test.sh
脚本设置为 SUID 权限:
sudo chmod u+s test.sh
- 设置文件的 SGID 权限:将
test.sh
脚本设置为 SGID 权限:
sudo chmod g+s test.sh
- 设置目录的粘滞位:将
/tmp
目录设置为粘滞位:
sudo chmod +t /tmp
- 查看当前的 umask 值:使用
umask
命令查看当前的 umask 值:
umask
- 修改 umask 值:临时修改 umask 值为 0022:
umask 0022
- 递归修改目录及其子目录和文件的权限:将
/home/testuser
目录及其子目录和文件的权限修改为 755:
sudo chmod -R 755 /home/testuser
- 递归修改目录及其子目录和文件的所有者和所属组:将
/home/testuser
目录及其子目录和文件的所有者改为 testuser
,所属组改为 testgroup
:
sudo chown -R testuser:testgroup /home/testuser