首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个程序可以接受用户的权限,还是完全受所有者的限制?

问一个程序可以接受用户的权限,还是完全受所有者的限制?
EN

Stack Overflow用户
提问于 2013-02-27 19:40:55
回答 3查看 95关注 0票数 3

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-02-27 19:42:20

应用程序的权限取决于执行该程序的用户。

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

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

要设置setuid位,请使用:

代码语言:javascript
复制
chmod u+s /path/to/application

setgid位也是如此,但是使用g+s而不是u+s。

票数 3
EN

Stack Overflow用户

发布于 2013-02-27 19:42:37

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

正如Johnsyweb在评论中提到的,如果程序碰巧设置了setuid位,它将作为所有者运行。这就是setuid的意思:设置用户ID。通常,这样做是为了允许普通用户运行需要超级用户权限的程序,比如ping。

但是请注意,例如,Linux具有一种高级机制,其形式为"Linux功能“,其中可以授予特定的select权限,而不是授予完整的setuid。

票数 2
EN

Stack Overflow用户

发布于 2013-02-27 19:47:41

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

代码语言:javascript
复制
chown user program
chmod u+s program

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15111195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档