用户权利号码
我在转换用户权限时遇到问题。 我想为某些文件/文件夹分配以下权限,但不知道帽子将它们转换为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
你可以使用(全部)一次分配给u
, g
和o
,所以第一个相当于:
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
。