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
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.