Я хочу написать сценарий оболочки, который отображает пользователей и группы системы из /etc/passwd
и /etc/group
- для каждого пользователя я хочу отобразить имя пользователя, UID и все группы, в которые входит пользователь.
Я попробовал следующее:
cat /etc/passwd /etc/group
, но результат был повсюду. Может кто-нибудь помочь мне написать этот сценарий.
Получить все группы для всех записей в /etc/passwd
for user in $(getent passwd| cut -d: -f1); do groups $user; done
getent passwd
: списки все строки в /etc/passwd
в обычном формате
guest-ZlneMD:x:119:130:Guest,,,:/tmp/guest-ZlneMD:/bin/bash
cut -d: -f1
: удаляет все кроме первого поля (поля разделяются :
) user
присвоен все эти значения, один за другим и groups $user
принимает каждое из этих значений и отображает имя пользователя и все группы, которым принадлежит учетная запись.
guest-ZlneMD : guest-ZlneMD
Не изобретать велосипед. Эти id
команда может сделать точно что:
$ id foobar
uid=1000(foobar) gid=1000(foobar) groups=1000(foobar),4(adm),20(dialout),24(cdrom)
замена foobar
с Вашим желаемым именем пользователя.
Проверка man id
для получения большей идеи.