在 /etc/passwd 檔案中將 /bin/bash 替換為 /bin/false

在 /etc/passwd 檔案中將 /bin/bash 替換為 /bin/false

我正在編寫一個程式來禁用系統中的用戶,我想替換/bin/bash/bin/false.

例子

xxx:x:1:22:xx:/export/home/xx:**/bin/bash**

替換為

xxx:x:1:22:xx:/export/home/xx:**/bin/false**

我想使用 bash 腳本。

我知道做到這一點的一種方法是使用sed.但我不擅長正規表示式。

有人可以幫忙嗎?

答案1

好吧,你根本不使用sed正規表示式來做到這一點。你所做的就是使用該程式chsh更改使用者的 shell。

chsh -s /bin/false username

或者:

usermod -s /bin/false username

如果您想用實際的 shell 替換它,您還必須確保它列在/etc/shells.

答案2

請注意,這chsh並不總是可用!在高山例如 Linux 或使用的嵌入式系統忙碌盒..

簡單的內嵌sed指令:

sed -i '/www-data/s/false/sh/g' /etc/passwd

(此範例將 shell 從/bin/假/bin/sh對於用戶www-數據

相關內容