1

Тема: SUID, SGID

Всем привет

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

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

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

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

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

#!/bin/bash
echo hello world

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

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

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

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

2

Re: SUID, SGID

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

3 (16.03.2015 13:55:35 отредактировано dicros)

Re: SUID, SGID

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

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

4 (16.03.2015 13:56:50 отредактировано Vascom)

Re: SUID, SGID

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

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

5

Re: SUID, SGID

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

rwx rw- r-x readme   

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

rws rw- r-x

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

6

Re: SUID, SGID

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

7

Re: SUID, SGID

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

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

8 (16.03.2015 14:16:53 отредактировано dicros)

Re: SUID, SGID

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

touch: cannot touch ‘temp’: Permission denied

9

Re: SUID, SGID

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

10

Re: SUID, SGID

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

11

Re: SUID, SGID

скрипт:

#!/bin/bash
touch temp

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

http://s019.radikal.ru/i616/1503/95/fea80127e04c.png

12

Re: SUID, SGID

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

13

Re: SUID, SGID

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

14

Re: SUID, SGID

Vascom пишет

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

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

15 (16.03.2015 16:33:45 отредактировано Vascom)

Re: SUID, SGID

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

16

Re: SUID, SGID

Vascomab А где я писал про запуск?

17

Re: SUID, SGID

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

18

Re: SUID, SGID

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

19

Re: SUID, SGID

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

20

Re: SUID, SGID

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

21 (17.03.2015 09:06:36 отредактировано )

Re: SUID, SGID

dicros пишет

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

dicros пишет

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

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

бит SET UID выставляет владельца процесса по владельцу файла. Пример:

Консоль
drb@amilo:~$ /bin/bash -c whoami
drb
drb@amilo:~$ ls -l /bin/bash
-rwxr-xr-x 1 root root 975432 ноя  7 23:30 /bin/bash*

хотя файл /bin/bash имеет владельца "root", но процессом владеет drb.

Пример set uid

Консоль
drb@amilo:~$ /bin/su -c whoami
Пароль:
root
drb@amilo:~$ ls -l /bin/su
-rws--x--x 1 root root 59586 июл  2  2014 /bin/su*

процесс запустил drb, но владелец — root.

Wolfenberg пишет

Они права повышают

если владелец файла с set uid — root, то повышают.

ЗЫЖ да, на скрипты НЕ действует SET UID, только на ELF.

22

Re: SUID, SGID

drBatty пишет

только на ELF

эм а это что ? чего то я не могу расшифровать  bw

23

Re: SUID, SGID

https://ru.wikipedia.org/wiki/Executabl … ble_Format

24

Re: SUID, SGID

lone_wolf пишет

эм а это что ?

первая ссылка в яндексе: https://ru.wikipedia.org/wiki/Executabl … ble_Format
вторая(для полноты картины) : https://lurkmore.to/%DD%EB%FC%F4

25

Re: SUID, SGID

dicros пишет

touch: cannot touch ‘temp’: Permission denied

Чтобы что-то записать в каталог, запустившему скрипт нужны права на чтение и запись в этот каталог.

26

Re: SUID, SGID

drBatty пишет

первая ссылка в яндексе

А вот и гугль

+ открыть спойлер

http://storage2.static.itmages.ru/i/15/0317/s_1426584734_4631184_f01aba8339.jpg

27 (17.03.2015 13:02:30 отредактировано )

Re: SUID, SGID

yars пишет

    touch: cannot touch ‘temp’: Permission denied

Чтобы что-то записать в каталог

вообще-то touch(1) не создаёт файлы, а меняет их временной штамп. Т.е. если файл уже есть, кроме доступа к каталогу нужно быть хозяином файла.

yars пишет

запустившему скрипт нужны права на чтение и запись в этот каталог.

нет. На модификацию(+w) и использование(+x). На чтение не нужно.

lone_wolf пишет

А вот и гугль

да, гугол обделался. Я думал проблема в вашей истории, но у меня такая же беда.