簡體   English   中英

"在 shell 腳本中使用 passwd 命令"

[英]Using the passwd command from within a shell script

我正在編寫一個 shell 腳本來自動添加一個新用戶並更新他們的密碼。 我不知道如何讓 passwd 從 shell 腳本中讀取,而不是交互式地提示我輸入新密碼。 我的代碼如下。

adduser $1
passwd $1
$2
$2

來自“ man 1 passwd<\/code> ”:

   --stdin
          This option is used to indicate that passwd should read the new
          password from standard input, which can be a pipe.

唯一的解決方案適用於 Ubuntu 12.04:

echo -e "new_password\nnew_password" | (passwd user)

現在,您可以使用以下命令:

echo "user:pass" | chpasswd

對於那些需要通過腳本登錄到 sudoers 文件中的用戶帳戶遠程“以 root 身份運行”的人,我發現了一個邪惡的可怕黑客,這無疑是非常不安全的:

sshpass -p 'userpass' ssh -T -p port user@server << EOSSH
sudo -S su - << RROOT
userpass
echo ""
echo "*** Got Root ***"
echo ""
#[root commands go here]
useradd -m newuser
echo "newuser:newpass" | chpasswd
RROOT
EOSSH

如果您的passwd<\/code>不支持--stdin<\/code>並且您出於某種原因不想(或不能)使用chpasswd<\/code> ,則此處文檔<\/em>有效。

例子:<\/strong>

#!/usr/bin/env bash

username="user"
password="pass"

passwd ${username} << EOD
${password}
${password}
EOD

你可以使用 chpasswd

echo $1:$2 | chpasswd<\/code>

"

在我為這類事情保留的 CentOS VMWare 映像上對此進行了測試。 請注意,您可能希望避免將密碼作為命令行參數,因為整個機器上的任何人都可以從“ps -ef”中讀取它們。

也就是說,這將起作用:

user="$1"
password="$2"
adduser $user
echo $password | passwd --stdin $user

有時設置一個沒人知道的密碼很有用。 這似乎有效:

tr -dc A-Za-z0-9 < /dev/urandom | head -c44 | passwd --stdin $user

我偶然發現了同樣的問題,由於某種原因,-- --stdin<\/code>選項在我使用的passwd<\/code>版本上不可用(在 Ubuntu 14.04 中提供)。

如果你們中的任何人碰巧遇到同樣的問題,你可以像我一樣使用chpasswd<\/code>命令來解決它,如下所示:

echo "<user>:<password>" | chpasswd

這是 teradata 節點管理員的明確答案。

轉到\/etc\/hosts<\/code>文件並在文本文件中創建 IP 或節點名稱列表。

SMP007-1
SMP007-2
SMP007-3

對我來說,在 Raspbian 上它只能以這種方式工作(添加了舊密碼):

#!/usr/bin/env bash

username="pi"
password="Szevasz123"
new_ps="Szevasz1234"

passwd ${username} << EOD
${password}
${new_ps}
${new_ps}
EOD

回聲“你的密碼”| sudo -S yourCommand

<\/blockquote>

如果 -S 不起作用,請嘗試使用 -kS

您是否查看過adduser<\/code>的-p<\/code>選項(AFAIK 只是useradd<\/code>的另一個名稱)? 您可能還想查看luseradd<\/code>的-P<\/code>選項,它采用明文密碼,但我不知道luseradd<\/code>是否是標准命令(它可能是 SE Linux 的一部分,也可能只是 Fedora 的一個奇怪之處)。

"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM