Что показывает команда groups?

SLAX, Deep Style, ZenWalk

Модератор: Модераторы разделов

Ответить
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Что показывает команда groups?

Сообщение Hephaestus »

Начал потихоньку осваивать слаку.

Заметил такую вещь, мне непонятную (в Debian такого не замечал):
Вывод команды groups для одного и того же пользователя различается, в зависимости от варианта вызова.

Например:
запускаем от рута без параметров

root@slackware

root@slackware# groups root bin daemon sys adm disk lp wheel floppy audio video cdrom scanner


запускаем от рута с указанием имени пользователя

root@slackware

root@slackware# groups root root : root bin daemon sys adm disk wheel



Берем обычного пользователя (только что созданного)
от имени обычного пользователя без параметров

patrik@slackware

patrik@slackware$ groups patrik lp floppy audio video cdrom scanner


от имени обычного пользователя с указанием имени пользователя

patrik@slackware

patrik@slackware$ groups patrik patrik : patrik



Очевидно, что вызов команды с указанием имени пользователя даёт правильный вариант, ибо, например в группе audio ни root, ни patrik не числятся.

root@slackware

root@slackware:~# cat /etc/group | grep audio audio:x:17:alex



Что же показывает groups без параметров? Смотрим man groups

man groups

Print group memberships for each USERNAME or, if no USERNAME is speci‐ fied, for the current process (which may differ if the groups database has changed).

Итак, если я правильно понимаю, команда выводит для каждого пользователя список групп, членом которых он является, а если имя пользователя не указано, то для текущего процесса.
Кстати, в русских переводах данной man-страницы говорится о текущем пользователе, а не текущем процессе.

Вот это не понятно.
Во-первых, непонятно, какой процесс имеется в виду.
Во-вторых, видно, что выводятся действительно группы пользователя, плюс ещё несколько групп, куда он не входит. Какой в этом смысл?

Или это системные группы?
Но всё равно непонятно, какой в этом смысл.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
Аватара пользователя
NoVASpirit
Сообщения: 118
ОС: Arch

Re: Что показывает команда groups?

Сообщение NoVASpirit »

Скорее если имя пользователя не указано, то для текущего пользователя так вроде логичнее?
Спасибо сказали:
Аватара пользователя
yars
Сообщения: 1144
Статус: Slacker!
ОС: Slackware64-current

Re: Что показывает команда groups?

Сообщение yars »

Хм, уже вторая жалоба на groups: http://www.slackware.ru/forum/viewtopic.php?f=19&t=1101
Slackware64-current/Xfce 4.12/Acer TravelMate 5760
-------------
Registered Linux User #557010
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: Что показывает команда groups?

Сообщение drBatty »

УМВР

что за версия у вас?

у меня
groups (GNU coreutils) 8.21
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: Что показывает команда groups?

Сообщение Hephaestus »

yars писал(а):
28.04.2014 02:40
Хм, уже вторая жалоба на groups
Да, я видел эту тему. Но там вроде мысль пошла немного не в том направлении, грешили на перенос конфигов с другой системы.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: Что показывает команда groups?

Сообщение Hephaestus »

drBatty писал(а):
28.04.2014 10:10
что за версия у вас?
Да хз, какая там версия - слака 14.1, версия из дистра. Вечером буду дома - гляну.

drBatty писал(а):
28.04.2014 10:10
УМВР
У тебя, небось, слака допиленная под свои задачи. А я ставил на посмотреть в режиме full.

Если не лень, попробуй воспроизвести: создаётся новый пользователь, и ему делается команда groups с именем и без. Результат отличается.

Может быть, зависит от того,каким способом создается пользователь?
Вроде нет, рута я не создавал, а у него такая же бодяга.

Мне просто интересно, как это работает. Не могу понять, откуда берутся данные в случае groups без параметров.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: Что показывает команда groups?

Сообщение Hephaestus »

Нагуглилось объяснение данного эффекта http://superuser.com/questions/416374/linu...groups-username. Сходу не очень понял, но похоже на правду.

Кстати, Слака тут абсолютно ни при чём.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: Что показывает команда groups?

Сообщение drBatty »

fflatx писал(а):
28.04.2014 11:44
У тебя, небось, слака допиленная под свои задачи. А я ставил на посмотреть в режиме full.

дело не в этом.
fflatx писал(а):
28.04.2014 11:44
Может быть, зависит от того,каким способом создается пользователь?
угу. Очевидно, ты что-то напутал в системных файлах.

fflatx писал(а):
28.04.2014 12:20
Кстати, Слака тут абсолютно ни при чём.

ЕМНИП там ванильные gnu coreutils. Т.ч. "баг" должен быть везде. Давай показывай /etc/group и /etc/passwd. Наверняка где-то ты накриворучил, и что-то не то вбил.

fflatx писал(а):
28.04.2014 12:20
Нагуглилось объяснение данного эффекта http://superuser.com/questions/416374/linu...groups-username. Сходу не очень понял, но похоже на правду.

а, ну это оно пишет, что команда group "тормозит", и если ты ввёл юзера в группу, то хотя групп добавилось(убавилось), вывод group не меняется. Потому у меня правило: после операций с группами я всегда перелогиниваюсь по новой(а для системных юзеров/групп и на сервере проще и быстрее перезагрузиться)
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
yars
Сообщения: 1144
Статус: Slacker!
ОС: Slackware64-current

Re: Что показывает команда groups?

Сообщение yars »

Оно не тормозит, а просто не перечитывает конфиги, почему и нужен перелогин.
Slackware64-current/Xfce 4.12/Acer TravelMate 5760
-------------
Registered Linux User #557010
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: Что показывает команда groups?

Сообщение drBatty »

yars писал(а):
28.04.2014 13:58
Оно не тормозит, а просто не перечитывает конфиги

ага. Она работает, только не сразу. Я об этом и говорю. Кстати, не только она. Это вообще всех процессов касается. Они что, на КАЖДОЕ обращение к КАЖДОМУ файлу должны читать /etc/group ???

Ну вот и читают один раз. Groups не исключение.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: Что показывает команда groups?

Сообщение Hephaestus »

drBatty писал(а):
28.04.2014 12:54
угу. Очевидно, ты что-то напутал в системных файлах.
drBatty писал(а):
28.04.2014 12:54
ЕМНИП там ванильные gnu coreutils. Т.ч. "баг" должен быть везде. Давай показывай /etc/group и /etc/passwd. Наверняка где-то ты накриворучил, и что-то не то вбил.


Вряд ли. Рута я никуда не вбивал. Он был создан в процессе установки. А у него это проявляется.

/etc/passwd
Spoiler

root:x:0:0::/root:/bin/bash
bin:x:1:1:bin:/bin:/bin/false
daemon:x:2:2:daemon:/sbin:/bin/false
adm:x:3:4:adm:/var/log:/bin/false
lp:x:4:7:lp:/var/spool/lpd:/bin/false
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/:/bin/false
news:x:9:13:news:/usr/lib/news:/bin/false
uucp:x:10:14:uucp:/var/spool/uucppublic:/bin/false
operator:x:11:0:operator:/root:/bin/bash
games:x:12:100:games:/usr/games:/bin/false
ftp:x:14:50::/home/ftp:/bin/false
smmsp:x:25:25:smmsp:/var/spool/clientmqueue:/bin/false
mysql:x:27:27:MySQL:/var/lib/mysql:/bin/false
rpc:x:32:32:RPC portmap user:/:/bin/false
sshd:x:33:33:sshd:/:/bin/false
gdm:x:42:42:GDM:/var/state/gdm:/bin/bash
oprofile:x:51:51:oprofile:/:/bin/false
apache:x:80:80:User for Apache:/srv/httpd:/bin/false
messagebus:x:81:81:User for D-BUS:/var/run/dbus:/bin/false
haldaemon:x:82:82:User for HAL:/var/run/hald:/bin/false
pop:x:90:90:POP:/:/bin/false
nobody:x:99:99:nobody:/:/bin/false
alex:x:1000:1000:,,,:/home/alex:/bin/bash
vboxadd:x:999:1::/var/run/vboxadd:/bin/false
patrik:x:1001:1002::/home/patrik:/bin/bash


/etc/group
Spoiler

root:x:0:root
bin:x:1:root,bin
daemon:x:2:root,bin,daemon
sys:x:3:root,bin,adm
adm:x:4:root,adm,daemon
tty:x:5:
disk:x:6:root,adm
lp:x:7:lp,alex
mem:x:8:
kmem:x:9:
wheel:x:10:root,alex
floppy:x:11:alex
mail:x:12:mail
news:x:13:news
uucp:x:14:uucp
man:x:15:
dialout:x:16:uucp
audio:x:17:
video:x:18:alex
cdrom:x:19:alex
games:x:20:
slocate:x:21:
utmp:x:22:
smmsp:x:25:smmsp
tape:x:26:
mysql:x:27:
rpc:x:32:
sshd:x:33:sshd
gdm:x:42:
shadow:x:43:
ftp:x:50:
oprofile:x:51:
apache:x:80:
messagebus:x:81:
haldaemon:x:82:
plugdev:x:83:alex
power:x:84:alex
netdev:x:86:alex
pop:x:90:pop
scanner:x:93:
nobody:x:98:nobody
nogroup:x:99:
users:x:100:
console:x:101:
alex:x:1000:
vboxsf:x:1001:
patrik:x:1002:


Как видно, в группе scanner, например, вообще никого нет. Тем не менее, она вылезает при вызове groups без параметров.

Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: Что показывает команда groups?

Сообщение Hephaestus »

drBatty писал(а):
28.04.2014 12:54
а, ну это оно пишет, что команда group "тормозит", и если ты ввёл юзера в группу, то хотя групп добавилось(убавилось), вывод group не меняется.


Я имел в виду вот это
When you run groups username, it looks up the given user in /etc/passwd and /etc/group (although it can be LDAP, NIS or something else) and shows you all groups found.

On the other hand, when you run the groups command without any arguments, it simply lists all groups it itself belongs to – which is not necessarily the same as what is listed in /etc/group. (See below for an explanation.) In fact, the only lookups made to /etc/group are for translating GIDs to group names.
выделеный кусок я не до конца понимаю, но вроде как groups без параметров просматривает кучу всяких групп, не обязательно те, куда входит вызвавший её пользователь.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: Что показывает команда groups?

Сообщение drBatty »

fflatx
вот что написано у меня:
`groups' prints the names of the primary and any supplementary groups
for each given USERNAME, or the current process if no names are given.
If more than one name is given, the name of each user is printed before
the list of that user's groups and the user name is separated from the
group list by a colon. Synopsis:

groups [USERNAME]...

The group lists are equivalent to the output of the command `id -Gn'.

Primary and supplementary groups for a process are normally inherited
from its parent and are usually unchanged since login. This means that
if you change the group database after logging in, `groups' will not
reflect your changes within your existing login session. Running
`groups' with a list of users causes the user and group database to be
consulted afresh, and so will give a different result.
т.е. без имени команда печатает список групп вовсе не для пользователя, а то, что БЫЛО у родителя groups, когда его запустили. Т.е. нужно смотреть, что запускает, и как это "что" само запускалось.

группы процесса можно посмотреть так:

$

$ grep '^Groups' /proc/$$/status 10:Groups: 7 11 17 18 19 80 83 84 86 93 100 230


как я понимаю, это как раз то, что показывает сабжевая команда без параметра. А вот откуда она берёт символические имена -- я не в курсе.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: Что показывает команда groups?

Сообщение NickLion »

fflatx писал(а):
28.04.2014 12:20
Кстати, Слака тут абсолютно ни при чём.

openSUSE:

groups

nicklion@warlock:~> groups users nicklion@warlock:~> groups nicklion nicklion : users warlock:~ # groups root warlock:~ # groups root root : root

Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: Что показывает команда groups?

Сообщение drBatty »

NickLion
ТС сразу после создания нового юзера проверял.

PS: ИМХО эта тема к слаке никаким боком не относится.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: Что показывает команда groups?

Сообщение NickLion »

"root" тоже только-что созданный?
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: Что показывает команда groups?

Сообщение Hephaestus »

drBatty писал(а):
29.04.2014 11:48
т.е. без имени команда печатает список групп вовсе не для пользователя, а то, что БЫЛО у родителя groups, когда его запустили. Т.е. нужно смотреть, что запускает, и как это "что" само запускалось.
drBatty писал(а):
29.04.2014 11:48
как я понимаю, это как раз то, что показывает сабжевая команда без параметра.
Во! Это дело. Именно так оно и есть.

drBatty писал(а):
29.04.2014 11:48
А вот откуда она берёт символические имена -- я не в курсе.
Откуда? Да всё оттуда же - из /etc/group. По крайней мере, у меня совпадает.

NickLion, когда я говорил, что Слака ни при чём, я имел в виду, что так будет работать везде, где ванильные coreutils, а не только в Слаке (хотя в Слаке они тоже ванильные, да). И обсуждение по ссылке, что я дал, косвенно это подтверждает, ибо там не уточняется дистр.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: Что показывает команда groups?

Сообщение drBatty »

NickLion писал(а):
29.04.2014 18:53
"root" тоже только-что созданный?

нет конечно. Однако видимо что-то не так с /etc/group (напомню, старый файл был удалён, или может изменён. Кто знает?) и GID'ы неправильно идентифицируются, показывая какой-то мусор.

fflatx писал(а):
29.04.2014 19:10
Откуда? Да всё оттуда же - из /etc/group. По крайней мере, у меня совпадает.

"совпадает"... Сложно показать? Мне тоже интересно, а делать юзера лень.
fflatx писал(а):
29.04.2014 19:10
везде, где ванильные coreutils

AFAIK groups везде ванильная. Потому разрабы десять раз подумают, прежде чем этот "баг" исправлять.

http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: Что показывает команда groups?

Сообщение Hephaestus »

drBatty писал(а):
29.04.2014 21:32
"совпадает"... Сложно показать? Мне тоже интересно, а делать юзера лень.
Пожалуйста:

Spoiler

Группы

'

bash-4.2$ groups patrik lp floppy audio video cdrom scanner



Номера

'

bash-4.2$ grep '^Groups' /proc/$$/status Groups: 7 11 17 18 19 93 1002



Соответствие между номером и именем группы

'

bash-4.2$ cat /etc/group root:x:0:root bin:x:1:root,bin daemon:x:2:root,bin,daemon sys:x:3:root,bin,adm adm:x:4:root,adm,daemon tty:x:5: disk:x:6:root,adm lp:x:7:lp,alex mem:x:8: kmem:x:9: wheel:x:10:root,alex floppy:x:11:alex mail:x:12:mail news:x:13:news uucp:x:14:uucp man:x:15: dialout:x:16:uucp audio:x:17: video:x:18:alex cdrom:x:19:alex games:x:20: slocate:x:21: utmp:x:22: smmsp:x:25:smmsp tape:x:26: mysql:x:27: rpc:x:32: sshd:x:33:sshd gdm:x:42: shadow:x:43: ftp:x:50: oprofile:x:51: apache:x:80: messagebus:x:81: haldaemon:x:82: plugdev:x:83:alex power:x:84:alex netdev:x:86:alex pop:x:90:pop scanner:x:93: nobody:x:98:nobody nogroup:x:99: users:x:100: console:x:101: alex:x:1000: vboxsf:x:1001: patrik:x:1002:

Итак, из /etc/group можно видеть, что 7 - это lp, 11 - это floppy, 17 - это audio и т.д. То есть соотвествие налицо.


drBatty писал(а):
29.04.2014 21:32
AFAIK groups везде ванильная.
Тогда бы это было одинаково в разных дистрах. А это не так. Выше был пример с SUSE. И я проверял на Debian.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: Что показывает команда groups?

Сообщение drBatty »

fflatx писал(а):
30.04.2014 01:09
А это не так. Выше был пример с SUSE

у меня так же как в сусе.

$

$ groups users lp floppy audio video cdrom apache plugdev power netdev scanner davfs2 $ groups drb drb : users lp floppy audio video cdrom apache plugdev power netdev scanner davfs2

http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Ответить