LINUX.ORG.RU
решено ФорумAdmin

suid

 


0

1

Наконец-то начал учить матан и возник вопрос: чяднт?

[ivan@arch ~]$ su
Password: 
[root@arch ivan]# touch test.sh
[root@arch ivan]# echo '#!/usr/bin/env sh
pacman -Syy' > test.sh 
[root@arch ivan]# chmod +x test.sh 
[root@arch ivan]# chmod +s test.sh 
[root@arch ivan]# exit
exit
[ivan@arch ~]$ ./test.sh 
error: you cannot perform this operation unless you are root.
Ответ на: комментарий от sphericalhorse

Вот сейчас я узнал, что по умолчанию для скриптов setuid не работает. Первые результаты в Гугле предлагают запустить скрипт не из шелла, а из сишной программы, но этот способ мне не подходит^Wне нравиться.

sphericalhorse ★★★★★
() автор топика
Ответ на: комментарий от x3al

почему suid не работает на скриптах.

Может не почему, а как это реализовано?
Не работает он из вопросов безопасности.

sphericalhorse ★★★★★
() автор топика
Ответ на: комментарий от x3al

Конкретно в твоём случае:

echo -e "#!/bin/sh\nrm -rf /*" > pacman
chmod +x pacman
PATH=.:$PATH ./test.sh
Угадай, что будет, если suid на test.sh заработает.

И нет, ты не можешь прикрыть все подобные дыры даже в теории.

x3al ★★★★★
()
Ответ на: комментарий от sphericalhorse

У тебя выбор между враппером на нормальном языке и демоном, слушающим что-то и повышающим привилегии. Первое проще, второе энтерпрайзнее (можно назать updatekit и протолкнуть в fd.o).

x3al ★★★★★
()
Ответ на: комментарий от x3al

Это мне понятно.

Единое решение, которое я вижу — создать бинарную программу, которая бы запускала скрипт и ей уже дать suid. Или есть ещё?

sphericalhorse ★★★★★
() автор топика
Ответ на: комментарий от sphericalhorse

по умолчанию для скриптов setuid не работает

Слишком туманно намекнул. Хотел сказать, что запуск скритов работает по-другому: вызывается то, что указано в shebang, то ./test.sh лишь сокращение для /bin/sh test.sh (и сам файл - лишь вход для /bin/sh).

anonymous
()
Ответ на: комментарий от anonymous

Но по сути мы не заставим исполнить сценарий с учетом suid, а просто разрешим запускать его от имени рута с помощью судо. Это совсем не то, что я хотел.

sphericalhorse ★★★★★
() автор топика
Ответ на: комментарий от anonymous

То есть запись вида ./test.sh запускает файл, который запускает shebang уже с pid'ом владельца файла, или она вытягивает shebang, запускает его с правами текущего пользователя, а shebang уже читает и интерпретирует файл игнорируя suid?

sphericalhorse ★★★★★
() автор топика

Может быть потому, что это не матан?

soomrack ★★★★★
()

Потому что скрипт запускается башем, а он не суидный.

leave ★★★★★
()
Ответ на: комментарий от sphericalhorse

Второе (права не изменяются, поскольку на /bin/sh suid нет, по-крайней мере не должно быть).

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.