LinuxForum.Fans
Тема

SUID, SGID

Автор: dicros 27 сообщений 2001 просмотров
16.03.2015 13:03 #418070

Всем привет

Изучая линукс наткнулся на такие довольно интересные вещи как SUID и SGID. Но так до конца и непонимаю каким же образом они работают

Вот например как пишут:

text

В Unix-подобных системах приложение запускается с правами пользователя, вызвавшего указанное приложение. Это обеспечивает дополнительную безопасность, так как процесс с правами пользователя не сможет получить доступ на запись к важным системным файлам, например /etc/passwd, который принадлежит суперпользователю root.

Если на исполняемый файл установлен бит suid, то при выполнении эта программа автоматически меняет «эффективный userID» на идентификатор того пользователя, который является владельцем этого файла. То есть, независимо от того — кто запускает эту программу, она при выполнении имеет права хозяина этого файла.

Если я правильно понимаю, то допустим я администратор и создал файл readme со следующим содержанием:

text
#!/bin/bash
echo hello world

и присвоил ему следующие права:
-rwx rw- r-- (владелец - чтение, запись и исполнение, группа -чтение и запись, все остальные - только чтение)

После чего я эти права меняю и добавляю SUID бит
chmod 4764 readme
-rws rw- r--

И теперь этот файл по идеи сможет запустить любой пользователь, но уже не с правами (r--), а с правами администратора (rwx) т.е. сможет сделать с ним все что угодно. Но если я пытаюсь от имени обычного пользователя запустить этот файл у меня вылезает сообщение "отказано в доступе".

Объясните пожалуйста что именно я сделал не так? или чего я не так понял?

16.03.2015 13:35 #418084

Ты не разрешил другим пользователям запускать файл, бит "x".

16.03.2015 13:54 · отредактировано #418095

Vascom, так если я установлю для других пользователей флаг x, то тогда зачем мне вообще использовать SUID если они и так его смогут запустить?

Я думал что не зависимо от того какие права есть у пользователя, он получает права администратора.

16.03.2015 13:55 · отредактировано #418097

Без этого флага твой скрипт запустится с правами запускающего пользователя.
С этим флагом скрипт запустится с правами владельца.

Если же флаг исполнения не стоит, то скрипт вообще не запустится.

16.03.2015 14:01 #418099

Vascom, если я тебя правильно понимаю то....

rwx rw- r-x readme

в этом случае если файл запустит пользователь он сможет его только "читать" а если записать вот так:

rws rw- r-x

то он сможет его и редактировать. Так чтоли?

16.03.2015 14:02 #418100

dicros, в основном оно юзается, чтобы простой юзер мог запускать бинарники, требующие рутовых прав.

16.03.2015 14:04 #418103

Нет, не так.
В первом случае все действия скрипта readme будут делаться от имени запустившего пользователя.
А во втором случае - от имени владельца.

То есть если бы ты в скрипте создавал другой файл, например touch rtmp. То владелец у этого файла будет разным.

16.03.2015 14:15 · отредактировано #418110

Я сейчас попробовал так сделать с созданием нового файла, и в обоих случаях пишет что (отказано в доступе). Хотя во втором случае когда rws rw- r-x должно было сработать?

touch: cannot touch ‘temp’: Permission denied

16.03.2015 14:18 #418113

Покажи весь скрипт. Где он лежит, как ты запускаешь и какой результат получаешь.

16.03.2015 14:24 #418117

Насколько я помню, для скриптов эти биты игнорируются.

16.03.2015 14:26 #418118

скрипт:

text
#!/bin/bash
touch temp

лежит тут:
/home/lucky/test/readme

16.03.2015 16:19 #418138

dicros, флаг SUID позволяет изменять файл только владельцу файла (остальные летят на метлах дальше).
Флаг SGID - только группе, в которой состоит владелец файла.

16.03.2015 16:21 #418140

Wolfenberg, ты путаешь с обычными флагами доступа для владельца/группы/остальных.

16.03.2015 16:30 #418142
Vascom написал:
Wolfenberg, ты путаешь с обычными флагами доступа для владельца/группы/остальных.

https://ru.wikipedia.org/wiki/Suid

16.03.2015 16:33 · отредактировано #418143

Ну вот и почитай. Запустить файл можно и без этих битов, достаточно бита исполняемости.
А изменять файл позволяют биты права записи.

16.03.2015 16:34 #418145

Vascom, :) А где я писал про запуск?

16.03.2015 16:36 #418147

Ты писал про изменение.

16.03.2015 16:41 #418149

Vascom, угу. SUID и SGUID - биты безопасности для файлов, каталогов...

16.03.2015 16:42 #418150

Но они ни как не влияют на доступ к изменению файла. За это отвечают биты права записи.

16.03.2015 16:45 #418151

Vascom, :) допёрло. Они права повышают, а не понижают.

Войдите или зарегистрируйтесь, чтобы ответить.