Як в Unix / Linux ви дізнаєтеся, до якої групи входить даний користувач за допомогою командного рядка?
Як в Unix / Linux ви дізнаєтеся, до якої групи входить даний користувач за допомогою командного рядка?
Відповіді:
Це показує uid користувача, а також усі групи (з їх дітьми), до яких вони належать
id userid
У Linux / OS X / Unix для відображення груп, до яких належить ви (або необов'язково вказаний користувач), використовуйте:
id -Gn [user]
що еквівалентно groups [user]
корисності, яка застаріла в Unix.
У OS X / Unix команда id -p [user]
пропонується для звичайного інтерактивного.
Пояснення параметрів:
-G
,--groups
- друкувати всі ідентифікатори групи
-n
,--name
- друкувати ім'я замість числа, для-ugG
-p
- Зробити результат, зрозумілий людині.
Нижче представлений сценарій, який інтегрований у ansible та генерує інформаційну панель у форматі 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
Мій вихід зберігається в текстових файлах нижче.
cat /tmp/ANSIBLENODE_sudo.txt
cat /tmp/ANSIBLENODE_inventory.txt
cat /tmp/ANSIBLENODE_inventory_users.txt
getent group <groupname>
.