2015-03-06 2 views
1

Я пытался обернуть вокруг головы, как УИП/setgid работы ... Я придумал этот надуманный пример:Проблема понимания УИП/setgid

Пользователи:

  • ПользовательА принадлежит группа А
  • UserB принадлежит к группе в

Файл a.txt принадлежит USERA с разрешениями rw-rw---- (660). Я подумал, что если ПользовательА создал этот файл, test.sh:

#!/bin/sh 
cat a.txt 

и побежал либо chmod g+s test.sh или chmod u+s test.sh что после исполнения USERB, он бы кошкой a.t. Вместо этого я получаю Permission Denied. Чтобы быть ясным, разрешения для файла test.sh выглядят следующим образом: rwsr-xr-x или rwxr-sr-x. Я думал, что вся точка setuid/setgid заключается в том, что когда другие пользователи выполняют файл, они предполагают идентификатор пользователя или идентификатор группы файла (в этом случае test.sh). Я что-то делаю неправильно, или это мое понимание?

Я проверил свой тест на RedHat, если это имеет значение. Я также попытался сыграть с umask, пытаясь запустить setuid/setgid после запуска umask 0002. Не помогло ...

ответ

1

ПРЕДУПРЕЖДЕНИЕ. Сценарии оболочки Setuid и setgid являются защитным отверстием. Есть много способов заставить кого-то заставить setuid/setgid делать то, что вы (автор) не намеревались.

Общей трюкой является обезьяна с переменными окружения. Например, кто-то может сделать это:

ln -s cat /bin/rm 
export PATH=.:${PATH} 

затем использовать Setuid скрипт для удаления файл a.txt.


К счастью, Setuid и setgid биты игнорируются для сценариев оболочки на многих современных системах Linux; см. https://unix.stackexchange.com/questions/364/allow-setuid-on-shell-scripts. Некоторые из ответов дают обходные пути ...

+0

Спасибо за объяснение и ссылку! – taylordurden

Смежные вопросы