В Linux, как я могу временно удалить свою связь с группой?

Я должен протестировать полномочия группы Linux на репозитории. В одной оболочке, как я могу временно удалить одну из своих ассоциаций группы?

например.
Если мои группы определяются как:

 % groups
 foo bar baz

Как я могу сделать его так, это только возвращается foo bar без baz?

3
задан 09.03.2013, 14:03

2 ответа

Это возможно.

Проверьте этот код (допустимый C89, heh) я записал в 25 минимальных примерах Использования:

whitequark@forth:~/skipgroup$ ls
skipgroup.c
whitequark@forth:~/skipgroup$ gcc skipgroup.c -o skipgroup
whitequark@forth:~/skipgroup$ sudo chown root:root skipgroup
whitequark@forth:~/skipgroup$ sudo chmod u+s skipgroup
whitequark@forth:~/skipgroup$ groups
whitequark adm dialout cdrom plugdev lpadmin admin sambashare
whitequark@forth:~/skipgroup$ ./skipgroup 
Usage: ./skipgroup <group to remove>
Must be SUID. Launches shell.
whitequark@forth:~/skipgroup$ ./skipgroup cdrom
$ id
uid=1000(whitequark) gid=1000(whitequark)
groups=4(adm),20(dialout),46(plugdev),104(lpadmin),114(admin),118(sambashare),1000(whitequark)

ПРЕДУПРЕЖДЕНИЕ ЭТОГО КОДА ЯВЛЯЕТСЯ SUID!

В то время как это отбрасывает полномочия, как Вы видите на выводе идентификатора, это МОЖЕТ БЫТЬ ОПАСНО. Dixi.

4
ответ дан 07.12.2019, 23:45

Я думаю, что это не возможно, так как файлы (и POSIX ACLs) могут указать субтрактивные права для определенных групп. Разрешение людям сбежать от группы затем было бы дырой в системе безопасности.

Конечно, если у Вас есть корневой доступ, Вы могли бы просто удалить себя из группы и сделать

sudo su - $USER
2
ответ дан 07.12.2019, 23:45

Теги

Похожие вопросы