W Unix / Linux, w jaki sposób można dowiedzieć się, w jakiej grupie jest dany użytkownik za pomocą wiersza poleceń?
W Unix / Linux, w jaki sposób można dowiedzieć się, w jakiej grupie jest dany użytkownik za pomocą wiersza poleceń?
Odpowiedzi:
Ten pokazuje identyfikator użytkownika oraz wszystkie grupy (wraz z ich identyfikatorami), do których należą
id userid
W systemie Linux / OS X / Unix, aby wyświetlić grupy, do których należy użytkownik (lub opcjonalnie określony użytkownik), należy użyć:
id -Gn [user]
co jest równoważne z groups [user]
narzędziem, które zostało przestarzałe w Uniksie.
W systemie OS X / Unix polecenie id -p [user]
jest sugerowane dla normalnej interaktywnej.
Objaśnienie parametrów:
-G
,--groups
- wydrukuj wszystkie identyfikatory grup
-n
,--name
- wypisz nazwę zamiast numeru, dla-ugG
-p
- Niech wynik będzie czytelny dla człowieka.
lub po prostu studiuj / etc / groups (ok, to prawdopodobnie nie działa, jeśli używa pam z ldap)
Poniżej znajduje się skrypt zintegrowany z programem ansible i generującym pulpit nawigacyjny w formacie CSV.
sh collection.sh
#!/bin/bash
HOSTNAME=`hostname -s`
for i in `cat /etc/passwd| grep -vE "nologin|shutd|hal|sync|root|false"|awk -F':' '{print$1}' | sed 's/[[:space:]]/,/g'`; do groups $i; done|sed s/\:/\,/g|tr -d ' '|sed -e "s/^/$HOSTNAME,/"> /tmp/"$HOSTNAME"_inventory.txt
sudo cat /etc/sudoers| grep -v "^#"|awk '{print $1}'|grep -v Defaults|sed '/^$/d;s/[[:blank:]]//g'>/tmp/"$HOSTNAME"_sudo.txt
paste -d , /tmp/"$HOSTNAME"_inventory.txt /tmp/"$HOSTNAME"_sudo.txt|sed 's/,[[:blank:]]*$//g' >/tmp/"$HOSTNAME"_inventory_users.txt
Moje dane wyjściowe są przechowywane w poniższych plikach tekstowych.
cat /tmp/ANSIBLENODE_sudo.txt
cat /tmp/ANSIBLENODE_inventory.txt
cat /tmp/ANSIBLENODE_inventory_users.txt
getent group <groupname>
.