程序是否可以采用用户的权限,还是被所有者完全限制?

时间:2013-02-27 11:40:55

标签: linux unix

例如,当root用户在* nix环境中运行程序,但程序所有者是非root用户时,该程序是否可以使用root权限执行操作?

3 个答案:

答案 0 :(得分:3)

应用程序的权限由执行程序的用户确定。

如果它需要所有者的权限,例如sudo命令将不起任何作用。 此外,/bin(或任何其他系统位置)中的大多数应用程序都归root用户所有(因此无法(轻松)修改它们),但仍然使用用户权限执行。

注意,如果程序设置了setuid or setgid位,则分别以用户和/或组权限启动应用程序。 这允许常规用户执行通常需要root权限的操作,而无需访问root帐户。

设置setuid位使用:

chmod u+s /path/to/application

同样适用于setgid位,但使用g+s代替u+s

答案 1 :(得分:2)

默认情况下,流程使用启动它的用户的ID和权限运行 ,而不是程序所有者ID。因此,如果root从普通用户拥有的程序启动进程,则该进程将以ID = 0运行。

在注释中提到Johnsyweb,如果程序恰好设置了setuid位,它将作为所有者运行。这就是setuid的含义:设置用户ID 。通常,这样做是为了允许常规用户运行需要超级用户权限的ping等程序。

但请注意,Linux例如具有“ Linux功能”形式的优越机制,其中可以授予某些选择权限而不是完整的setuid。

答案 2 :(得分:1)

启动程序的用户确定该运行的权限。如果您希望程序以其他用户的权限运行,您可以使用susudo或为程序设置setuid

chown user program
chmod u+s program

这将强制权限用于user,无论谁运行该程序。