次のように、/etc/passwdファイルで重複したユーザー名を見つけようとしました。
#!/bin/bash
# passwd file are look like below
# username : password : user ID : group ID : user ID info : home directory : command shell
cut -d: -f1 passwd | sort | uniq -d|
while IFS=: read -r user_name;
do
echo "$user_name"
done
その後、これらのすべての冗長ユーザーの中で使用されるユニークなシェルのリストを見つけようとしました。しかし、何をすべきかわかりません。
これらすべての冗長ユーザーが使用する一意のシェルを表示する方法はありますか?
私のetc/passwdファイルは次のとおりです。
imshakil:x:1000:1000:Mobarak Hosen Shakil,,,:/home/imshakil:/bin/bash
nm-openvpn:x:122:129:NetworkManager OpenVPN,,,:/var/lib/openvpn/chroot:/usr/sbin/nologin
lightdm:x:123:131:Light Display Manager:/var/lib/lightdm:/bin/false
hadoop:x:1001:1001:Bigger Hadoop,,,:/home/hadoop:/bin/bash
sshd:x:124:65534::/run/sshd:/usr/sbin/nologin
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
gdm:x:121:127:Gnome Display Manager:/var/lib/gdm3:/bin/false
imshakil:x:1000:1000:Mobarak Hosen Shakil,,,:/home/imshakil:/bin/bash
nm-openvpn:x:122:129:NetworkManager OpenVPN,,,:/var/lib/openvpn/chroot:/usr/sbin/nologin
lightdm:x:123:131:Light Display Manager:/var/lib/lightdm:/bin/false
hadoop:x:1001:1001:Bigger Hadoop,,,:/home/hadoop:/bin/bash
sshd:x:124:65534::/run/sshd:/usr/sbin/nologin
次の出力を取得する必要があります。冗長ユーザー:
bin
daemon
hadoop
imshakil
lightdm
nm-openvpn
root
sshd
sync
sys
そして、彼らが使用するシェルのリストは次のとおりです。
/bin/bash
/bin/false
/bin/sync
/usr/sbin/nologin
(直す)
ベストアンサー1
あなたはできます
sort /etc/passwd | uniq -c | grep -vE '^ +1 ' | cut -d: -f 7 | sort -u
それとも全部台無しだ
awk -F: '++count[$1] == 2 {shell[$NF]} END {for (s in shell) print s}' /etc/passwd