各ユーザーの既定のシェルを表示するコマンドを一緒に作成しようとしています。研究では、たとえばデフォルトのシェルを変更したchsh -s /bin/ksh
が、現在の操作を実行していないコマンドのほとんどを見つけることができました。
CentOSでこれを達成する方法を知っている人はいますか?
答え1
別の方法
getent passwd | cut -d: -f1,7
答え2
/etc/passwd
ユーザー名とログインシェルのリスト、およびシステム内のすべてのユーザーアカウントに関するその他の関連情報を含むこのファイルを解析できます。
ユーザー名は:
区切りの最初のフィールドに保存され、ログインシェルは7番目(最後)のフィールドに保存されます。
awk
したがって、次の形式を使用してフィールドを印刷できます。
awk -F':' '{ print $1 " " FS " " $NF }' /etc/passwd
ldap
ローカルファイルシステムを使用しない同様のサービスを使用している場合は、次の情報を使用して情報を取得した後、次のものをgetent passwd
使用できます。nsswitch
awk
getent passwd | awk -F':' '{ print $1 " " FS " " $NF }'
例:
% awk -F':' '{ print $1 " " FS " " $NF }' /etc/passwd
root : /bin/bash
daemon : /usr/sbin/nologin
bin : /usr/sbin/nologin
sys : /usr/sbin/nologin
sync : /bin/sync
games : /usr/sbin/nologin
man : /usr/sbin/nologin
lp : /usr/sbin/nologin
mail : /usr/sbin/nologin
答え3
この情報は/etc/passwdに保存されます。
cut -d: -f1,7 /etc/passwd