系统运输
在上一篇文章中,您发现文件有三个不同的权限集。 拥有文件的用户有一个集合,拥有文件的组的成员有一个集合,并最终应用于所有其他人。 在长列表( ls -l )中,这些权限使用符号模式显示在画面上。
每个集合都有一个r、w和x条目,用于指示特定用户(所有者、组成员或其他)是否可以读取、写入或执行文件。 但是,还有另一种表达这些权限的方法。 八进制模式。
你已经习惯了十进制系统。 那个有10个不同的值( 0到9 )。 另一方面,八进制系统有八个不同的值( 0到7 )。 表示权限时,八进制数用作速记,显示r、w和x字段中的值。 假设每个字段具有以下值:
r?=? 4
w?=? 2
x?=? 1
现在,您可以使用单个八进制数字来表示任意组合。 例如,读取和写入权限(但没有执行权限)的值为6。 读取和执行权限的值只有5。 文件的rwxr-xr-x符号权限的八进制值为755。
和符号值一样,可以在八进制数值中使用chmod吗? 命令设定文件权限。 以下两个命令为文件设置相同的权限。
chmod? u=rw,g=r,o=r? myfile1
chmod? 644? myfile1
特殊权限位
文件具有几个特殊的权限位。 它们称为setuid (或suid )、setgid (或sgid )和粘滞位(或删除阻止位delete inhibit )。 将此视为另一组八进制值。
setuid?=? 4
setgid?=? 2
蒂奇?=? 1
除非这个文件是可执行的? setuid? 位被忽略。 如果可以执行,则文件(可能是APP应用程序或脚本)将像由拥有该文件的用户启动一样运行。 setuid? 有好的例子吗? /bin/passwd? 用户可以设置或更改密码的实用程序。 该实用程序必须能够写入不允许普通用户修改的文件(译注:在此? /etc/passwd? 和? /etc/shadow )。 所以有必要慎重地写。 路线? 用户是否拥有和拥有? setuid? 比特。 允许更改密码相关文件。
setgid位对可执行文件的行为类似。 该文件将以拥有它的组的权限运行。 但是,setgid在目录中还有另一个用途。 在具有setgid权限的目录中创建文件时,该文件的组所有者将被设置为该目录的组所有者。
最后,如果文件的粘滞没有意义,则会被忽略,但对目录很有用。 为目录设置的粘滞防止用户从其他用户拥有的目录中删除文件。
要在二进制模式下使用chmod设置这些位,请添加值前缀(如4755 ),然后将setuid添加到可执行文件中。 在“符号”模式下,还可以使用u和g来设置或删除setuid和setgid,例如u s和g s。 粘性位置由o t设定。 ( o s和u t等其他组合没有意义,会被忽略。 )
3358 www.51cto.com/it/news/2019/1014/15367.html
3359 article.pchome.net/content-2101735.html
33558 www.pcpop.com/article/6067769.shtml
共享和特殊权限
请回想上一篇文章中需要共享文件的财务团队的示例。 可以想象,特殊权限位有助于更有效地解决问题。 原始解决方案只是创建了整个组都可以写入的目录。
drwxrwx---? 2? 路线? finance? 4096? Jul? 6? 15:35? finance
这个目录的问题之一是finance吗? 组成员的用户? dwayne? 和? 吉尔? 可以删除彼此的文件。 这不是共享空间的最佳选择。 在某些情况下可能有用,但在处理财务记录时可能不是。
另一个问题是,此目录中的文件可能实际上不共享。 这是因为它由dwayne和jill的默认组所有。 也许,用户的专用组也被命名为dwayne和jill,而不是finance。
解决此问题的更好方法是在文件夹中设置setgid和粘滞。 这可以通过以下两种方式完成:自动使finance组拥有在文件夹中创建的文件,并防止dwayne和jill删除彼此的文件。 以下命令均可工作:
sudo? chmod? 是770吗? finance
sudo? chmod? u rwx,g rwxs,o t? finance
此文件的长列表现在显示已应用的新特殊权限。 粘性表示是? t? 不是吗? t,为什么? finance? 组外的用户无法搜索此文件夹。
drwxrws--T . 2? 路线? finance? 4096? Jul? 6? 15:35? finance
详情请访问云服务器、域名注册、虚拟主机的问题,请访问西部数码代理商官方网站: www.chenqinet.cn