Bash 更改用户信息(如 usermod),但没有 root 权限

Bash 更改用户信息(如 usermod),但没有 root 权限

我正在编写一个小型 GUI 程序,供用户编辑自己的帐户。您无法以普通用户身份运行 usermod,我正在寻找这种功能。

更改用户全名是最重要的。任何其他帮助或信息也很好。

答案1

chfn和实用程序chsh应在系统上可用,并且应执行您想要的操作 - 它们将分别根据可配置规则更改 gecos 字段(真实姓名等)和登录 shell,而无需您自己编写以 root 权限运行的代码(这不是难的,只是错误的代价非常非常高)。

来自 chfn 手册页:

   The chfn command changes user fullname, office room number,
   office phone number, and home phone number information for a
   user's account. 

来自 chsh 手册页:

   The chsh command changes the user login shell. This determines the name of the
   user's initial login command. A normal user may only change the login shell
   for her own account; the superuser may change the login shell for any account.

答案2

最好(也是最坏)的答案是:你编写 setuid() 代码。

根据您的问题,您可能不应该执行此类代码。在 Linux 中,您无法在 setuid 模式下执行 bash 脚本,如果我没记错的话,您必须编写和编译 C/C++ 程序,然后让 root 用户在编译的代码上设置 setuid 权限位。无论如何,setuid bash 脚本在安全方面都是一个坏主意。

整个地区的安全问题十分严重,因此有很多网站提供帮助。

安全的 setuid 程序

GNU 示例 C 代码

相关内容