可执行文件上的 chmod 和 sudo 之间的关系

可执行文件上的 chmod 和 sudo 之间的关系

对于用户来说,可执行文件chmod之间的关系是什么?sudo

“用户需要 sudo 来运行可执行文件”的情况与“chmod 尚未为用户设置执行模式位”的情况相同吗?

“用户不需要 sudo 来运行可执行文件”的情况与“chmod 已为用户设置执行模式位”的情况相同吗?

进一步来说,

  1. 对于可执行文件,如果chmod没有为用户设置其执行权限,则该用户是否必须使用sudo或来运行可执行文件su
  2. 如果chmod为用户设置其执行权限,这是否意味着用户可以在没有sudo或 的情况下运行可执行文件su
  3. 如何使可执行文件只能由给sudosu用户运行?
  4. 反之,如果用户只能使用sudo或来运行可执行文件su,是否意味着chmod没有为该用户设置该可执行文件的执行权限?

答案1

首先是术语。chmod是一个程序(和系统调用),它允许更改文件系统中文件的权限位。sudo是一个特殊的程序,允许使用不同的凭据运行其他程序(通常具有提升的权限,最常见的是 root 用户的权限)。su类似,但可配置性较低(读为“不可”)sudo——最重要的是,它需要根据 root 密码的知识对用户进行身份验证(这在安全方面是相当令人震惊的)。

可执行位表示文件的内容是否可以加载到内存中并运行(它没有说明它是否有意义 - 您可以设置 JPEG 图像的可执行位,然后当您尝试运行)。

现在回答问题:

  1. 一旦加载可执行文件,就会评估权限。在su这种情况下,这种情况发生在目标用户的sudo有效 ID(用户和组 - 权限评估中使用的凭据 - 请参阅手册页)上。credentials(7)因此,如果允许目标用户执行该文件,该文件就会被执行。

  2. 如上所述:当有效UID或GID设置了可执行位时,则可以执行。否则不会。

  3. 一般来说,你不会。如果需要,您可以将其标记为仅对某些 ID 可执行,然后准备配置,sudo以便允许某些用户使用对该文件具有可执行权限的用户之一的凭据运行该二进制文件。

  4. 不。阻止用户运行需要特殊权限的程序通常没有多大意义 - 程序应该处理缺乏这些权限的情况(如果可能的话,优雅地处理)。有些程序甚至只具有一些不需要特殊权限的功能,但在以特殊权限运行时提供更多功能 - 一个例子是route:非特权用户可以使用它来显示内核路由表,而管理员也可以更改这些功能。

答案2

这可能有点吹毛求疵,但是:要执行一个文件,你必须拥有该文件的执行权限 以及您导航到该文件的所有目录。因此,如果 Tomdo_interesting_stuff在他的主目录 ( ) 中有一个程序 ( ) /home/tom,并且该目录受到保护 700(除所有者之外任何人都无法访问),但该文件受到保护 755(每个人都有读取和执行权限),您仍然将不会能够/home/tom/do_interesting_stuff“像你自己一样”运行——你需要成为root(或“成为tom”)sudosu能够执行该文件。

当然,如果您想读取interesting_stuff.txtTom 主目录中的文件 ( ),同样的情况也是如此,因为您需要对该文件的读取访问权限 目录的执行权限。

相关内容