3

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

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

 % groups
 foo bar baz

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

2 ответа2

3

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

Проверьте этот код (действительный C89, хе), который я написал за 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)

ВНИМАНИЕ, ЭТОТ КОДЕКС СУДА!

Хотя он отбрасывает привилегии, как вы видите на выходе id, он МОЖЕТ БЫТЬ ОПАСНЫМ. Dixi.

2

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

Конечно, если у вас есть root-доступ, вы можете просто удалить себя из группы и сделать

sudo su - $USER

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .