Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Список пользователей группы X / 17 сообщений из 17, страница 1 из 1
28.02.2009, 10:41:08
    #35843726
VxS_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список пользователей группы X
Как узнать список пользователей, входящих в определенную группу (например, audio) средствами командного интерпритатора?
...
Рейтинг: 0 / 0
28.02.2009, 11:10:41
    #35843738
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список пользователей группы X
Как то так
Код: plaintext
grep ^audio /etc/group | awk -F : '{print $4}'

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
28.02.2009, 21:55:01
    #35844224
Андрей Панфилов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список пользователей группы X
vkle
Как то так
Код: plaintext
grep ^audio /etc/group | awk -F : '{print $4}'


в общем случае неверно....

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
[21:51 1.38]
[web 14] ~ > id borisych
uid=1218(borisych) gid=1218(borisych) groups=1218(borisych)
[21:51 1.35]
[web 15] ~ > grep borisych /etc/group
[21:51 1.27]
[web 16] ~ > getent group borisych
borisych:!:1218:borisych
...
Рейтинг: 0 / 0
01.03.2009, 00:35:46
    #35844337
Sleeping Daemon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список пользователей группы X
VxS_Как узнать список пользователей, входящих в определенную группу (например, audio) средствами командного интерпритатора?
Сделать просто grep groupname /etc/group
...
Рейтинг: 0 / 0
01.03.2009, 13:29:56
    #35844589
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список пользователей группы X
> в общем случае неверно....

Гм... Пример убедителен. Поясните пожалуйста ситуацию. Это были _не локальные_ пользователь/группа? Или от ОС зависит?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
01.03.2009, 16:14:20
    #35844716
Gerrr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список пользователей группы X
а если борисычу звезду сзади поставить?...
я всегда делаю так
Код: plaintext
more /etc/passwd | grep borysich
(это для freebsd)
...
Рейтинг: 0 / 0
01.03.2009, 16:21:30
    #35844722
Gerrr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список пользователей группы X
это для пользователя, для группы соответсвенно:

Код: plaintext
more /etc/group | grep borysich

вот только не факт, что так всех выведет... как в линухе не знаю, а вот у меня во фряке там только рут выводится, а остальных нужно из того же passwd по gid-у вытаскивать - а это уже имхо менее тривиально... - надо маленький шелл писать, которыс сначала сопостовляет названию группы гид, а потом уже passwd на вопрос этого гида изучает(ну или просто посмотреть и искать сразу по гиду)...
...
Рейтинг: 0 / 0
01.03.2009, 18:11:24
    #35844807
Андрей Панфилов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список пользователей группы X
vkle
Гм... Пример убедителен. Поясните пожалуйста ситуацию. Это были _не локальные_ пользователь/группа? Или от ОС зависит?


в /etc/passwd, /etc/group, /etc/hosts конечно хранится некоторая информация о пользователях, группах, хостах, но далеко не факт что вся. За порядок поиска информации по разным ресурсам отвечает файл /etc/nsswitch.conf. В моем случае группы и пользователи берутся из БД postgresql (хотя так же могут храниться в ldap, nis, mysql либо передаваться по самбе) - последнее время это не такая уж и экзотика, но все равно встречается редко, хотя например порядок поиска хостов files dns встречается повсеместно, так что лучше пользоваться командой getent.
...
Рейтинг: 0 / 0
01.03.2009, 20:59:59
    #35844947
VxS_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список пользователей группы X
Sleeping DaemonVxS_Как узнать список пользователей, входящих в определенную группу (например, audio) средствами командного интерпритатора?
Сделать просто grep groupname /etc/group
Если бы все так просто.
Вот несколько строк из /etc/group
Код: plaintext
1.
2.
3.
4.
plugdev:x: 46 :vxs
lpadmin:x: 109 :vxs
admin:x: 114 :vxs
vxs:x: 1000 :newuser
Если воспользоваться вашим советом и прописать
Код: plaintext
>grep vxs /etc/group
то выберутся все записи в которых есть vxs. Если воспользоваться советом vkle и добавить ^:
vkle
Как то так
Код: plaintext
grep ^audio /etc/group | awk -F : '{print $4}'

Код: plaintext
>grep ^vxs /etc/group
То выберется только запись
Код: plaintext
vxs:x: 1000 :newuser

Почти то, что надо (во всяком случае со стандартными группами работает отменно) - Но! Пользователь vxs входит в группу vxs также как и newuser, но он не прописан в этой строке.
Если прописать так:
Код: plaintext
grep ^vxs /etc/group | awk -F : '{print $1,$4}'
То получаю необходимый результат для своих групп (т.к. каждому пользователю создается одноименная группа), но для стандартных групп получаю глупость (думаю это очевидно).

Вот и не понятно, как сделать так, чтобы выдавал корректный результат в обоих случаях. Думаю без шелла не обойтись.

Gerrr
Код: plaintext
more /etc/group | grep borysich

эти команды выдают тот же результат, что и:
Код: plaintext
1.
>grep ^vxs /etc/group
во всяком случае на Desktop BSD, Linux Kubuntu, Linux Mandriva
...
Рейтинг: 0 / 0
01.03.2009, 21:04:57
    #35844948
VxS_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список пользователей группы X
VxS_
Gerrr
Код: plaintext
more /etc/group | grep borysich

эти команды выдают тот же результат, что и:
Код: plaintext
1.
>grep ^vxs /etc/group

Ошибся:
Код: plaintext
1.
>grep borysich /etc/group
...
Рейтинг: 0 / 0
01.03.2009, 23:21:31
    #35845033
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список пользователей группы X
> Но! Пользователь vxs входит в группу vxs также как и newuser, но он
> не прописан в этой строке.

Другими словами, в список нужно включить так же тех пользователей, для которых указанная группа является дефолтной (та, что указана в /etc/passwd). Так?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
02.03.2009, 03:34:42
    #35845084
VxS_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список пользователей группы X
vkle,

Абсолютно верно
...
Рейтинг: 0 / 0
02.03.2009, 11:58:13
    #35845591
Gerrr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список пользователей группы X
Андрей Панфиловvkle
Гм... Пример убедителен. Поясните пожалуйста ситуацию. Это были _не локальные_ пользователь/группа? Или от ОС зависит?


в /etc/passwd, /etc/group, /etc/hosts конечно хранится некоторая информация о пользователях, группах, хостах, но далеко не факт что вся. За порядок поиска информации по разным ресурсам отвечает файл /etc/nsswitch.conf. В моем случае группы и пользователи берутся из БД postgresql (хотя так же могут храниться в ldap, nis, mysql либо передаваться по самбе) - последнее время это не такая уж и экзотика, но все равно встречается редко, хотя например порядок поиска хостов files dns встречается повсеместно, так что лучше пользоваться командой getent.

Да уж не подумал - хотя ведь у меня у самого на серваке с самбой пользователи в ldap-e... Но тут уже совсем нетривиальное решение наверное...
...
Рейтинг: 0 / 0
02.03.2009, 14:19:09
    #35846043
fy
fy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список пользователей группы X
vkle
Другими словами, в список нужно включить так же тех пользователей, для которых указанная группа является дефолтной (та, что указана в /etc/passwd). Так?


Вариант конечно не очень, но первое что пришло в голову:

авторgrep '^install' /etc/group | sed 's/^.*:.*:\([0-9].*\):\(.*\)$/\2/g' && grep "^.*:\(`grep '^install' /etc/group | sed 's/^.*:.*:\([0-9].*\):.*$/\1/g'`\):.*$" /etc/passwd | sed 's/^\([a-z].*\):x:\([0-9]\).*:.*$/\1/g'

поправьте если что не так
...
Рейтинг: 0 / 0
03.03.2009, 13:59:44
    #35848243
VxS_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список пользователей группы X
fyvkle
Другими словами, в список нужно включить так же тех пользователей, для которых указанная группа является дефолтной (та, что указана в /etc/passwd). Так?


Вариант конечно не очень, но первое что пришло в голову:

авторgrep '^install' /etc/group | sed 's/^.*:.*:\([0-9].*\):\(.*\)$/\2/g' && grep "^.*:\(`grep '^install' /etc/group | sed 's/^.*:.*:\([0-9].*\):.*$/\1/g'`\):.*$" /etc/passwd | sed 's/^\([a-z].*\):x:\([0-9]\).*:.*$/\1/g'

поправьте если что не так
Благодарю за пример. На его основе сделал такой
Код: plaintext
1.
grep '^vxs:' /etc/group|awk -F : '{print $4}' && grep '^vxs:' /etc/passwd|awk -F : '{print $1}'
Двоеточие в конце username пришлось поставить, т.к. он выводил неверный результат для группы lp (Выводил также пользователей, входящих в группу lpadmin). Информацию вроде выводит корректную (во всяком случае на наборах данных, которые я использовал), к сожалению выводит пустую строку, если группа является дефолтной для пользователя и при этом в эту группу больше пользователей не входит.
Вопросы следующие:
1. Можно ли как-нибудь запретить вывод пустой строки?
2. Есть ли наборы данных, на которых результат будет некорректен (я пока что такой не нашел)
...
Рейтинг: 0 / 0
03.03.2009, 15:07:46
    #35848474
fy
fy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список пользователей группы X
VxS_ 1. Можно ли как-нибудь запретить вывод пустой строки?


Добавить в grep проверку что строка в /etc/group не заканчивается двоеточием
...
Рейтинг: 0 / 0
03.03.2009, 15:15:51
    #35848491
fy
fy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список пользователей группы X
VxS_,

Код: plaintext
grep '^vxs:' /etc/passwd|awk -F : '{print $1}'

Вот тут я не понял, вы ищете пользователся vxs в /etc/passwd и его же и выводите. В чем смысл?
...
Рейтинг: 0 / 0
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Список пользователей группы X / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]