- 我们可以在不同用户下运行同一个应用程序吗?例如:App1 在Linux 平台上
/home/usr1/App1
运行吗?/home/Usr2/App1
- 两个不同的用户可以拥有相同的 UID 吗?例如:
/home/usr1/App1
Usr1/home/usr2/App2
和 Usr2 拥有相同的 UID?如果可以,那么该怎么做? - 应用程序是否可以从一个用户切换到另一个用户,例如,运行在 app1 下的程序
/home/usr1
可以切换到/home/usr2
答案1
最好单独发布问题。但是,由于这些问题都可以快速回答(并且相关),所以我这样做了。
同一个应用程序可能由不同的用户、在不同的时间或同时运行。应用程序可能运行从同一位置(只要两个用户都有权执行它),或者可以从不同位置运行单独的副本(如您的示例所示)。
两个不同的用户不能共享 UID。您的 UID 实际上比您的用户名更能体现您的用户身份(因此得名)。当您拥有文件或文件夹,文件系统包含与文件关联的 UID,而不是用户名。如果两个用户具有相同的 UID,则意味着一个用户有多个名称(这也是不支持的)。
是的,可以切换用户身份。您可以使用
sudo -u other-user command...
或(如果您当前是root
,或者目标用户已启用登录并且您知道他们的密码)su other-user -c 'command...'
。您可以自己调用这些命令,但脚本和应用程序也可以使用它们。看社区文档,
man sudo
, 和man su
了解其工作原理和使用方法的更多详细信息。在您正在编写的程序中,您还可以使用该setuid
函数;请参阅man 2 setuid
和man 3 setuid
。要运行图形应用程序,您应该使用gksu
/gksudo
或(在 Kubuntu 中)kdesudo
而不是直接调用su
和sudo
(但请注意,Ubuntu 中默认gksu
调用的是sudo
,而不是su
)。请参阅社区文档的这一部分,man gksu
(gksudo
也包括封面),以及man kdesudo
。在编写改变用户的程序或脚本之前,我建议广泛阅读类 Unix 系统中用户身份的工作方式。