#1 16.03.2015 10:03:04

dicros
Administrator
Зарегистрирован: 15.11.2014
Сообщений: 48
IP-адрес

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 16.03.2015 10:35:46

Vascom
Administrator
Зарегистрирован: 02.04.2010
Сообщений: 4 019
IP-адрес

SUID, SGID

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

#3 16.03.2015 10:54:45

dicros
Administrator
Зарегистрирован: 15.11.2014
Сообщений: 48
IP-адрес

SUID, SGID

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

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

#4 16.03.2015 10:55:51

Vascom
Administrator
Зарегистрирован: 02.04.2010
Сообщений: 4 019
IP-адрес

SUID, SGID

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

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

#5 16.03.2015 11:01:28

dicros
Administrator
Зарегистрирован: 15.11.2014
Сообщений: 48
IP-адрес

SUID, SGID

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

rwx rw- r-x readme

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

rws rw- r-x

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

#6 16.03.2015 11:02:45

1000Mhz
Administrator
Зарегистрирован: 17.08.2014
Сообщений: 816
IP-адрес

SUID, SGID

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

#7 16.03.2015 11:04:00

Vascom
Administrator
Зарегистрирован: 02.04.2010
Сообщений: 4 019
IP-адрес

SUID, SGID

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

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

#8 16.03.2015 11:15:30

dicros
Administrator
Зарегистрирован: 15.11.2014
Сообщений: 48
IP-адрес

SUID, SGID

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

touch: cannot touch ‘temp’: Permission denied

#9 16.03.2015 11:18:24

Vascom
Administrator
Зарегистрирован: 02.04.2010
Сообщений: 4 019
IP-адрес

SUID, SGID

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

#10 16.03.2015 11:24:32

s.xbatob
Administrator
Зарегистрирован: 20.11.2014
Сообщений: 229
IP-адрес

SUID, SGID

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

#11 16.03.2015 11:26:32

dicros
Administrator
Зарегистрирован: 15.11.2014
Сообщений: 48
IP-адрес

SUID, SGID

скрипт:

#!/bin/bash
touch temp


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

#12 16.03.2015 13:19:36

Wolfenberg
Administrator
Зарегистрирован: 17.07.2010
Сообщений: 8 060
IP-адрес

SUID, SGID

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

#13 16.03.2015 13:21:51

Vascom
Administrator
Зарегистрирован: 02.04.2010
Сообщений: 4 019
IP-адрес

SUID, SGID

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

#14 16.03.2015 13:30:10

Wolfenberg
Administrator
Зарегистрирован: 17.07.2010
Сообщений: 8 060
IP-адрес

SUID, SGID

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

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

#15 16.03.2015 13:33:14

Vascom
Administrator
Зарегистрирован: 02.04.2010
Сообщений: 4 019
IP-адрес

SUID, SGID

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

#16 16.03.2015 13:34:04

Wolfenberg
Administrator
Зарегистрирован: 17.07.2010
Сообщений: 8 060
IP-адрес

SUID, SGID

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

#17 16.03.2015 13:36:10

Vascom
Administrator
Зарегистрирован: 02.04.2010
Сообщений: 4 019
IP-адрес

SUID, SGID

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

#18 16.03.2015 13:41:30

Wolfenberg
Administrator
Зарегистрирован: 17.07.2010
Сообщений: 8 060
IP-адрес

SUID, SGID

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

#19 16.03.2015 13:42:20

Vascom
Administrator
Зарегистрирован: 02.04.2010
Сообщений: 4 019
IP-адрес

SUID, SGID

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

#20 16.03.2015 13:45:03

Wolfenberg
Administrator
Зарегистрирован: 17.07.2010
Сообщений: 8 060
IP-адрес

SUID, SGID

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

#21 17.03.2015 06:06:36

drBatty
Administrator
Зарегистрирован: 20.02.2010
Сообщений: 17 053
IP-адрес

SUID, SGID

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

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


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

[console]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*
[/console]
хотя файл /bin/bash имеет владельца "root", но процессом владеет drb.

Пример set uid

[console]drb@amilo:~$ /bin/su -c whoami
Пароль:
root
drb@amilo:~$ ls -l /bin/su
-rws--x--x 1 root root 59586 июл 2 2014 /bin/su*
[/console]
процесс запустил drb, но владелец — root.

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

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

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

#22 17.03.2015 08:17:28

lone_wolf
Administrator
Зарегистрирован: 04.11.2010
Сообщений: 1 306
IP-адрес

SUID, SGID

Quote by drBatty
только на ELF

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

#23 17.03.2015 08:18:30

Vascom
Administrator
Зарегистрирован: 02.04.2010
Сообщений: 4 019
IP-адрес

#24 17.03.2015 08:47:52

drBatty
Administrator
Зарегистрирован: 20.02.2010
Сообщений: 17 053
IP-адрес

SUID, SGID

Quote by lone_wolf
эм а это что ?

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

#25 17.03.2015 09:24:53

yars
Administrator
Зарегистрирован: 23.03.2012
Сообщений: 9 369
IP-адрес

SUID, SGID

Quote by dicros
touch: cannot touch ‘temp’: Permission denied

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

#26 17.03.2015 09:32:59

lone_wolf
Administrator
Зарегистрирован: 04.11.2010
Сообщений: 1 306
IP-адрес

SUID, SGID

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

А вот и гугль

#27 17.03.2015 10:02:30

drBatty
Administrator
Зарегистрирован: 20.02.2010
Сообщений: 17 053
IP-адрес

SUID, SGID

Quote by yars
touch: cannot touch ‘temp’: Permission denied

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

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

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

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

Quote by lone_wolf
А вот и гугль

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

Board footer