我正在编写一个小型 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 脚本在安全方面都是一个坏主意。
整个地区的安全问题十分严重,因此有很多网站提供帮助。