chmod:修改目录权限

chmod 简介

chmod​ 是一个常用的 Linux 命令,用于改变文件或目录的权限。在 Linux 中,每个文件和目录都有权限位,分别控制着文件所有者、所属组和其他用户对文件的读、写和执行权限。

查看 Linux 文件权限

soulio@ubuntu:~$ ls -l /
total 4004936
lrwxrwxrwx   1 root root          7 Feb 16  2024 bin -> usr/bin
drwxr-xr-x   3 root root       4096 Aug 23 06:16 boot
...

第 1 位是文件类型:l 表示链接,d 表示文件,-表示普通文件。

第 2~10 位是权限位:分别表示属主、属组 和 其他用户的 rwx 权限。

chmod 基本语法

chmod [选项] mode file
  • mode​:权限模式,用数字或符号表示。
  • file​:要改变权限的文件或目录。

chmod​ 命令中,权限可以用数字或符号表示。

  • u:文件所有者
  • g:所属组
  • o:其他用户
  • a:所有用户

一些常用的 chmod​ 命令选项包括:

  • -R:递归地改变指定目录及其子目录中所有文件的权限。
  • --reference=referencefile:根据 referencefile​ 的权限来设置指定文件的权限。

示例列表

1. 给文件所有者增加执行权限

chmod u+x file.txt

2. 给文件所属组增加写权限

chmod g+w file.txt

3. 移除其他用户的读权限

chmod o-r file.txt

4. 给所有用户设置读权限

chmod a+r file.txt

5. 设置文件权限为只有所有者有读、写、执行权限

chmod 700 file.txt

6. 设置文件权限为所有者有读、写、执行权限,所属组和其他用户有读和执行权限

chmod 755 file.txt

7. 设置文件权限为所有者有读、写权限,所属组和其他用户没有任何权限

chmod 640 file.txt

8. 设置目录权限,使得所有者有完全权限,所属组和其他用户只能进入目录(不能列出目录内容或创建文件)

chmod 711 directory

9. 设置 setuid 权限,使得执行文件的用户获得文件所有者的权限

chmod u+s executable

10. 设置 setgid 权限,使得在目录中创建的文件继承目录的所属组而不是创建者的所属组

chmod g+s directory

11. 设置 sticky bit 权限,使得只有文件所有者可以删除或重命名文件,即使其他人有写权限

chmod +t directory

12. 同时移除 setuid、setgid 和 sticky bit 权限

chmod u-s,g-s,o-t directory

特殊权限

在Linux中,除了基本的读(r)、写(w)和执行(x)权限之外,还存在三种特殊权限:

一、概念

  1. Setuid (SUID) :

    • 概念:SUID是一种特殊权限,当它被设置在一个可执行文件上时,用户在执行这个文件时,会暂时获得该文件所有者的权限。
  2. Setgid (SGID) :

    • 概念:SGID是一种特殊权限,可以应用于可执行文件或目录。当应用于可执行文件时,执行者会获得文件所属组的权限;当应用于目录时,目录中创建的新文件和目录会继承该目录的组所有权。
  3. Sticky Bit:

    • 概念:Sticky Bit是一种特殊权限,通常只应用于目录。设置了Sticky Bit的目录中,只有文件的所有者或root用户才能删除或重命名文件,即使其他用户对目录有写权限。

二、标志符号

  1. Setuid (SUID) :

    • 标志符号:在ls -l​命令的输出中,SUID权限在所有者的执行权限位上显示为s​(如果所有者有执行权限)或S​(如果所有者没有执行权限)。
  2. Setgid (SGID) :

    • 标志符号:在ls -l​命令的输出中,SGID权限在所属组的执行权限位上显示为s​(如果所属组有执行权限)或S​(如果所属组没有执行权限)。
  3. Sticky Bit:

    • 标志符号:在ls -l​命令的输出中,Sticky Bit在其他用户的执行权限位上显示为t​(如果其他用户有执行权限)或T​(如果其他用户没有执行权限)。

三、实际用途

  1. Setuid (SUID) :

    • 实际用途:SUID常用于那些需要临时提升权限来执行特定操作的应用程序,例如passwd​命令允许普通用户更改自己的密码,而密码文件通常需要root权限才能修改。
  2. Setgid (SGID) :

    • 实际用途:SGID在可执行文件上用于让执行者以文件所属组的身份运行程序,常用于共享程序。在目录上,SGID用于确保所有用户创建的文件都属于该目录的组,便于组内用户共享文件。
  3. Sticky Bit:

    • 实际用途:Sticky Bit通常用于公共可写目录,如/tmp​,以防止用户删除或重命名其他用户的文件,增加了系统安全性,尤其是在多用户环境中。

posted @ 2024-09-12 10:22  soulio  阅读(7)  评论(0编辑  收藏  举报