从脚本向 linux 添加新用户

Jos*_*eld 2 linux permissions ssh setuid

我正在使用自定义的 Redmine 安装来管理项目。我设法挂钩了新用户的添加并将登录信息发送到我拥有的 bash 脚本。下面是我的脚本:

#!/bin/sh
UNAME=$1
UPASS=$2
wall "$UNAME $UPASS"
useradd "$UNAME"
echo "$UPASS" | passwd "$UNAME" --stdin
usermod -g restricted "$UNAME"
Run Code Online (Sandbox Code Playgroud)

Echo 是一个内置的 bash,所以当它输入密码时它不会显示在进程表中。 问题是我收到了 Redmine 的许可投诉:

/opt/rms/redmine/new-user: line 5: /usr/sbin/useradd: Permission denied
Only root can do that.
/opt/rms/redmine/new-user: line 7: /usr/sbin/usermod: Permission denied
Run Code Online (Sandbox Code Playgroud)

这显然表明我需要 root 权限或执行此操作的其他方法。因此,我尝试在文件上设置具有权限 4755 的 UID 位,以便它以 root 身份运行,但出现与上述相同的错误。知道这里发生了什么吗?

我的一般情况是我的目标是将新用户作为 linux 用户自动添加到项目管理系统中,然后当他们被添加到某个组时,我计划将其挂钩,以便他们获得扩展权限,使他们能够通过 SSH 访问 Mercurial 存储库- 所以用户管理完全通过前端处理。

War*_*ner 5

由于信息有限,我不打算对您的体系结构的潜在安全影响进行详细的理论分析。但是,对于授予将用户添加到非 root 用户的能力,我会特别谨慎。

话虽如此,我不鼓励为此目的使用 SUID 位。如果不出意外,因为它为系统上的每个用户带来了额外的曝光。意思是,每个用户都可能添加 users

作为替代方案,您可以配置sudo以允许非 root 用户运行 usermod。例如,运行visudo并添加以下行:

redmineuser ALL=NOPASSWD: /usr/sbin/usermod