用户权利号码

我在转换用户权限时遇到问题。 我想为某些文件/文件夹分配以下权限,但不知道帽子将它们转换为chmod将使用的格式,如chmod 755

 -rwxrwxrwx 

将会?

 drwxr-xr-x 

将会?

最后

 -rw-r--r-- 

将会?

精简版:

  • 权限可以包括:read(r),write(w),execute(x)

  • 因此,权限以三个字符的行表示,例如rwx(以提供所有权限)

  • 拒绝权限时,会放置“ – ”,例如: r--只提供读取权限。

  • 因为有三种类型的用户,我们需要3 x 3个字符:

     owner | owner group | others 

    例如rwx rwx rwx为所有类型的用户提供所有权限。

  • 这些权限可以用八进制编号表示,其中:

     read = 4 write = 2 execute = 1 so: r-- = 4 rw- = 6 rwx = 7 
  • 例:

     rw- r-- r-- 

    给每个人读取权限,只有用户可以写。 八进制:

     644 

    (4 + 2 + 0 | 4 + 0 + 0 | 4 + 0 + 0)

你的例子:

 -rwxrwxrwx 

可能是ls -l的输出,其中前面的-表示它是一个文件。 在你的第二个例子中:

 drwxr-xr-x 

该项目是目录( d


关于s标志

来自维基百科 :
setuid和setgid(“执行时设置用户ID”和“执行时设置组ID”的缩写) 1是Unix访问权限标志,允许用户分别运行具有可执行文件所有者或组权限的可执行文件并更改目录中的行为。 它们通常用于允许计算机系统上的用户运行具有临时提升权限的程序,以执行特定任务。

一个例子是passwd-rwsr-xr-x ),它可以代表用户更改写保护文件。

在维基百科上可以找到相当不错的描述。

t标志(粘性位)

(再次)来自维基百科 :
设置目录的粘滞位后,文件系统会以特殊方式处理此类目录中的文件,因此只有文件所有者,目录所有者或root用户才能重命名或删除该文件。 如果没有设置粘滞位,任何具有该目录的写入和执行权限的用户都可以重命名或删除包含的文件,而不管文件的所有者如何。

在Linux系统上,在文件上使用时会忽略t标志。

另见维基百科。

您无需将它们转换为数字。 如果将符号拆分为用户,组和其他字段, chmod可以很好地理解符号。 以下是等效的:

 chmod 755 chmod u=rwx,g=rx,o=rx 

所以给定一组权限,像这样拆分它们:

 -rwxrwxrwx == - rwx rwx rwx drwxr-xr-x == d rwx rx rx -rw-r--r-- == - rw- r-- r-- 

然后将第一个三元组分配给u ,第二个分配给g ,第三个分配给o ,跳过连字符:

 chmod u=rwx,g=rwx,o=rwx chmod u=rwx,g=rx,o=rx chmod u=rw,g=r,o=r 

当两个字段相同时,您可以将它们组合在一起。 最后一个chmod将与:

 chmod u=rw,go=r 

你可以使用(全部)一次分配给ugo ,所以第一个相当于:

 chmod a=rwx 

现在,有一些特殊权限位: s ( setuid / setgid )和t ( 粘滞位 )。

这些显示在通常看到x的字段上,因此如果目录中有其他的粘滞位,则会看到t (如果存在执行权限)或T (如果不存在执行权限)。 例如, /tmp的权限:

 drwxrwxrwt 

在这种情况下,您需要将t写为xt ,将s写为rwxs

 chmod u=rwx,g=rwx,o=rwxt 
  • setuid位意味着当执行此文件时,它将作为拥有该文件的用户运行,而不是作为执行该文件的用户运行。 考虑passwd (用于更改密码):

     # stat `which passwd` Access: (4755/-rwsr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) 

    如果我(用户muru )运行passwd ,则启动的进程将以root的权限运行,而不是使用我的权限。 它通常出现在二进制文件中,它们需要是root用于执行某些操作(例如, passwd edits /etc/shadow )。

  • 目录上的setgid位表示其中任何新创建的文件或目录都inheritance了组所有权。 它通常出现在用于Web或FTP服务器等的目录中。

  • 粘滞位意味着即使用户对目录具有写权限,他们也无法移动或重命名其他用户的文件。 它通常出现在共享目录中,例如/tmp