LINUX.ORG.RU

переносимое определение root'a в шелле


0

0

Предложите красивое переносимое определение root'a в шелле ?
1) id -un не подходит потому что такие ключи есть в linux но нет в solaris
2) groups | grep root не подходит потому что чувак может быть в группе root но не root
3) echo $UID не подходит потому что root это необязательно 0
4) logname и echo $LOGNAME не походит потому что не учитывает su

Можно конечно использовать вариант 2 плюс отфильтровывать uid name при помощи sed но это не красиво...

Кто чего еще предложит ?!!

anonymous

есть еще echo $USER но оно только в linux но не в solaris, а хотелось бы что бы это было и в linux и в solaris и в BSD...

anonymous
()

> echo $UID не подходит потому что root это необязательно 0

поясни этот пункт. может у тебя просто само определение рута непортабельное

anonymous
()
Ответ на: комментарий от grustnoe

еще мне пришло в голову which shutdown но насколько я понимаю PATH до shutdown может быть и доступен не root

anonymous
()
Ответ на: комментарий от anonymous

>>> echo $UID не подходит потому что root это необязательно 0
>>поясни этот пункт. может у тебя просто само определение рута >>непортабельное

root это чувак который uid которого в /etc/passwd ассоциирован с именем "root" и gid которого в /etc/group также ассоциирован с именем "root".
Помоему так. Раньше я думал что это тот uid = gid = 0 но где то услышал что uid root'a может и не быть 0.

anonymous
()
Ответ на: комментарий от anonymous

Неверно. root -- это всегда 0. Вообще в *nix системах практически вся защита идет через uids, а не через имена пользователей. Так что root -- это всегда 0, в том смысле что только пользователь с uid 0 обладает правами суперпользователя. А называться он в принципе может как угодно.

aa5779
()
Ответ на: комментарий от anonymous

> root это чувак который uid которого в /etc/passwd ассоциирован с именем "root" и gid которого в /etc/group также ассоциирован с именем "root".

Поздравь меня, у меня на НетБСД нет группы root. Значит у меня уникальная система без рута. Никаких уязвимостей нет по определению:)

dilmah ★★★★★
()
Ответ на: комментарий от dilmah

Суперпользователь это всегда uid 0, а назвать ты его можешь хоть как в виндах, administrator, вместо root

anonymous
()
Ответ на: комментарий от anonymous

>root это чувак который uid которого в /etc/passwd ассоциирован с именем "root" и gid которого в /etc/group также ассоциирован с именем "root". >Помоему так. Раньше я думал что это тот uid = gid = 0 но где то услышал что uid root'a может и не быть 0.

нефига не так, измени uid у рута, а на uid 0 повесь какой-нибудь левый логин и посмотри что выйдет из этого

Reset ★★★★★
()
Ответ на: комментарий от anonymous

Да whoami это классно ! Всем спасибо буду пользовать тогда $UID !

anonymous
()
Ответ на: комментарий от Reset

Выйдет то, что юзер с *именем* root потеряет права суперпользователя, а другой чувак их приобретет. Потому что, повторюсь еще раз, защита в *nixе реализована через uidы, а не через имена.

aa5779
()
Ответ на: комментарий от anonymous

Есть только один маленький нюанс: UID у root не обязательно 0. Обычно да, но вот есть энузиасты, которые с помощью небольшой модификации ядра меняют UID для root. Говорят, что это может запутать хакера.

syomin
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.