jcmvbkbc: а Вы правы... Правда в вики написано что "многие" ОС игнорируют этот флаг, а не "все"... Никогда не ставил этот флаг на скрипты, по этому, особо не задумывался, как он работает :)
Евгений Вольф: я не видел ни одного линукса в котором бы он работал. И, насколько я понимаю, единственный прямой способ заставить его работать -- установить suid-бит у соответствующего шелла, чего, конечно, никто в здравом уме делать не станет.
jcmvbkbc: по правде говоря, мой внутренний параноик мне бы вообще не позволил поставить такие права на shell-скрипт, мне кажется я сегодня первый раз в жизни это сделал, когда узнал, что "оно так не работает" (я имею в виду, на shell-скрипте). Мне кажется ещё можно несколько строчек на Си например написать, что бы он (скомпилированный си-код) шелл-скрипт запускал, со своими правами соотв., но т.к. я до сих пор не представляю практической ценности такой задачи, - никогда не пробовал делать и так тоже в т.ч.
suid не является какой-то магией. Когда вы запускаете бинарник, его запускает система, и она обрабатывает этот бит. Когда же вы запускаете скрипт, система запускает интерпретатор, от имени пользователя, передавая ему параметром скрипт на исполнение.
Что может запущенный интерпретатор, работая с правами пользователя, даже если он "видит" suid бит на файле скрипта? Ничего кроме как продолжить его выполнять от текущего пользователя.
> Когда же вы запускаете скрипт, система запускает интерпретатор, от имени пользователя, передавая ему параметром скрипт на исполнение. Юрий Чудновский: да, но это происходит внутри ядра ОС. Ядро читает первую строчку скрипта и извлекает оттуда имя интерпретатора. Ядро в состоянии увидеть наличие бита suid у скрипта и запустить интерпретатор так, будто этот бит установлен у интерпретатора.
jcmvbkbc: Вы буквально читаете мои мысли, я хотел написать в ответе, что-то очень близкое по смыслу, к сказанному Вами, но пока рылся в истории комментариев, увидел Ваш ответ :)