Linux

從腳本將新使用者添加到 linux

  • June 27, 2016

我正在使用定制的 Redmine 安裝來管理項目。我設法掛鉤了新使用者的添加並將登錄資訊發送到我擁有的 bash 腳本。下面是我的腳本:

#!/bin/sh
UNAME=$1
UPASS=$2
wall "$UNAME $UPASS"
useradd "$UNAME"
echo "$UPASS" | passwd "$UNAME" --stdin
usermod -g restricted "$UNAME"

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

這顯然表明我需要 root 權限或其他方法來執行此操作。所以我嘗試在文件上設置權限為 4755 的 UID 位,以便它以 root 身份執行,我得到與上面相同的錯誤。知道這裡發生了什麼嗎?

我的一般情況是我的目標是自動將新使用者作為 linux 使用者添加到項目管理系統,然後當他們被添加到某個組時,我計劃掛鉤它,以便他們獲得擴展權限,讓他們通過 SSH 訪問 Mercurial 儲存庫- 所以使用者管理完全通過前端處理。

由於資訊有限,我不會詳細說明您的架構的潛在安全影響。但是,對於授予將使用者添加到非 root 使用者的能力,我會特別謹慎。

話雖如此,我不鼓勵為此目的使用 SUID 位。如果不出意外,因為它為系統上的每個使用者引入了額外的曝光。這意味著,每個使用者都可能添加 users

作為替代方案,您可以配置sudo以允許非 root 使用者執行 usermod。例如,執行visudo並添加這一行:

redmineuser ALL=NOPASSWD: /usr/sbin/usermod

引用自:https://serverfault.com/questions/159700