是否可以在我启动程序时以编程方式将Linux上的用户添加到组中?我正在使用C ++。我知道它可以用shell来完成,但我需要在我的C ++程序中完成它,但是我不知道该使用什么。
答案 0 :(得分:2)
你可以采取两种方法:
鉴于选择,我可能会使用上面的第一个选项。
编辑:正如@DevSolar在他的评论中所指出的,这个答案假设您的系统正在使用/ etc中的passwd / shadow / group文件进行标准本地身份验证。如果您的系统没有使用本地身份验证,那么这是一个完全不同的球赛。答案 1 :(得分:0)
Jared Sutton的两个选项是有效的,但我想指出,如果您使用现有的库,则不必自己实施编辑/etc/group
。
我至少知道busybox,它实现了这一点。在libbb/update_passwd.c
int update_passwd(const char *filename, // /etc/group
const char *name, // username
const char *new_passwd, // nullptr
const char *member) // groupname
如果你想自己实现它,那么你可以查看它们的功能是如何工作的。
答案 2 :(得分:0)
许多配置管理软件解决了这个任务。 For example in Salt:
def adduser(name, username):
on_redhat_5 = __grains__.get('os_family') == 'RedHat' and __grains__.get('osmajorrelease') == '5'
if __grains__['kernel'] == 'Linux':
if on_redhat_5:
cmd = 'gpasswd -a {0} {1}'.format(username, name)
else:
cmd = 'gpasswd --add {0} {1}'.format(username, name)
else:
cmd = 'usermod -G {0} {1}'.format(name, username)
retcode = __salt__['cmd.retcode'](cmd, python_shell=False)
return not retcode
如您所见,使用了操作系统命令。哪一个取决于它是什么操作系统:)