当前位置: 首页 > 科技观察

命令行快速提示:高级权限

时间:2023-03-16 11:27:36 科技观察

上一篇文章介绍了Fedora系统上有关文件权限的一些基础知识。本节介绍使用权限管理文件访问和共享的其他方法。它建立在上一篇文章中的知识和示例之上,所以如果您还没有阅读那篇文章,请查看一下。符号和八进制在上一篇文章中,您了解到文件具有三种不同的权限集。拥有该文件的用户有一个集合,拥有该文件的组成员有一个集合,最后是其他所有人的集合。这些权限在长列表(ls-l)中使用符号模式显示在屏幕上。每个集合都有r、w和x条目,指示特定用户(所有者、组成员或其他)是否可以读取、写入或执行文件。但是还有另一种方式来表达这些权限:八进制模式。你习惯了十进制计数系统,它有十个不同的值(0到9)。另一方面,八进制系统有八个不同的值(0到7)。在表达权限时,使用八进制作为简写来显示r、w、x字段的值。将每个字段视为具有如下值:r=4w=2x=1您现在可以使用单个八进制值表示任何组合。例如,读取和写入权限(但没有执行权限)的值为6。读取和执行权限的值仅为5。文件的rwxr-xr-x符号权限的八进制值为755。与符号值类似,您可以使用八进制值使用chmod命令设置文件权限。以下两个命令对文件设置相同的权限:chmodu=rw,g=r,o=rmyfile1chmod644myfile1specialpermissionbits文件有几个特殊权限位。这些称为setuid(或suid)、setgid(或sgid)和粘滞位(或删除禁止)。将其视为另一组八进制值:setuid=4setgid=2sticky=1setuid位将被忽略,除非该文件是可执行文件。如果是这种情况,则文件(可能是应用程序或脚本)的运行就像由拥有该文件的用户启动一样。setuid的一个很好的例子是/bin/passwd实用程序,它允许用户设置或更改密码。此实用程序必须能够写入不允许普通用户更改的文件(LCTT译注:此处指的是/etc/passwd和/etc/shadow)。所以它需要写得很好,由root拥有,并且有setuid位,以便它可以更改与密码相关的文件。setgid位对于可执行文件的工作方式类似。该文件将以拥有它的组的权限运行。然而,setgid对目录还有一个额外的用途。如果在具有setgid权限的目录中创建文件,则文件的组所有者将设置为目录的组所有者。最后,sticky位对目录很有用,尽管它对忽略文件没有意义。在目录上设置的粘滞位将防止用户删除该目录中其他用户拥有的文件。在八进制模式下使用chmod设置这些位的方法是在值前加上4755之类的前缀,这会将setuid添加到可执行文件中。在符号模式下,u和g也可用于设置或删除setuid和setgid,例如你+小号,小+小号。使用o+t设置粘滞位。(其他组合,例如o+s或u+t,没有意义,将被忽略。)共享和特殊权限回想一下上一篇文章中财务团队需要共享文件的示例。可以想象,特殊权限位有助于更有效地解决问题。最初的解决方案只是创建一个整个组都可写的目录:drwxrwx---。2rootfinance4096Jul615:35finance该目录的一个问题是属于finance组的用户dwayne和jill可以删除彼此的文档。这不是共享空间的最佳选择。它在某些情况下可能有用,但在处理财务记录时可能没有用!另一个问题是这个目录中的文件可能不会真正共享,因为它们将属于默认组dwayne和jill-很可能用户私有组也被命名为dwayne和jill,而不是finance。解决此问题的更好方法是在文件夹上设置setgid和粘滞位。这将做两件事:使在finance组自动拥有的文件夹中创建的文件,以及防止dwayne和jill删除彼此的文件。这些命令中的任何一个都可以使用:sudochmod3770financesudochmodu+rwx,g+rwxs,o+tfinance文件的长列表现在显示正在应用的新特殊权限。粘滞位显示为T而不是t,因为财务组以外的用户无法搜索该文件夹。drwxrws--T。2root财经4096Jul615:35财经