web-dev-qa-db-ja.com

/ 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スクリプトを使ってやりたいです。

これを行う1つの方法は、sedを使用することです。しかし、私は正規表現が苦手です。

誰か助けてもらえますか?

5
user1212207

sedや正規表現ではまったく実行しません。プログラム chsh を使用して、ユーザーのシェルを変更します。

chsh -s /bin/false username

あるいは:

usermod -s /bin/false username

実際のシェルに置き換えたい場合は、/etc/shellsにリストされていることも確認する必要があります。

8
0xC0000022L

chshが常に利用できるとは限らないことに注意してください。 in Alpine Linuxなど、またはbusyboxを使用する組み込みシステム。

単純なインラインsedコマンド:

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

(この例では、シェルを/ bin/falseから/ bin/sh for user www-dataに変更します)

2
Pooya