Привет.
Решил поэксперементировать:
1. Сделал копию /bin/bash к себе в тек. директорию
2. Сделал ей chown root:%myuser%
3. Сделал ей chmod 4777
Пермиссии у неё стали: -rw
srwxrwx 1 root %myuser%
Вызываю: ./копия_баш
Приглашение меняется - всё хорошо. И, якобы, я был должен повыситься до уровня владельца файла, то есть root.
Однако этого не происходит.
И при попытке вывести на экран любой файл root'а - говорит Permission denied.
Вопрос: я не совсем понимаю, как работает SUID. Почему при вызове моей копии баш мои права не повысились до прав root ?
Пользователь добавил сообщение 01 Мая 2017, 17:19:21:
Сам спросил, сам и отвечу =)
Оказыватся:
Google помог установить истину: виноват bash. Оказывается, если реальный пользователь и эффективный пользователь запущенного процесса bash оказываются разными, bash принудительно устанавливает эффективного пользователя равным реальному. Аналогично он поступает и с эффективной группой процесса - ради безопасности и исключения злоупотреблений.
Однако, выход имеется. Ключ -p позволяет отключить параноидальное поведение bash и добиться желаемого:
Ответ как это обойти - тут:
http://torofimofu.blogspot.ru/2014/09/linux-setugid-sticky-bit.html