Создал /bin/shutdown.sh#!/bin/sh
/sbin/shutdown -r now
Сделал исполняемым
Создал пользователя, которому в качестве шела дал /bin/shutdown.shПри регистрации от данного пользователя ничего не происходит. Что пропустил?
а прав у него хватает?
>а прав у него хватает?
Все скрипты должны быть в группе оператор (которой принадлежит сам shutdown) и пользователь должен быть в группе оператор.
>>а прав у него хватает?
>
>
>Все скрипты должны быть в группе оператор (которой принадлежит сам shutdown) и
>пользователь должен быть в группе оператор.смотрим shutdown:
bash-2.05a$ uname -rs
OpenBSD 3.1
bash-2.05a$ ls -al /sbin/shutdown
-r-sr-x--- 1 root operator 180224 Aug 21 2002 /sbin/shutdown
bash-2.05a$видим что в наличии setuid-bit
варианты, либо пользователя которому будет дан shutdown - добавить
в wheel (нехорошо), либо в оператор и setgroupid на shutdown видимо.И в обоих случаях, в скрипте который в качестве shell'а - выставить
trap'ы чтобы нельзя было прервать выполнение в целях секуритиГолова уже не варит :(
PS. Вобщем, нехорошая затея...
> варианты, либо пользователя которому будет дан shutdown - добавить в wheel (нехорошо),Ну а даже если добавишь - что это даст?
> либо в оператор и setgroupid на shutdown видимо.
Запустить shutdown могут только владелец (root, которому и так всё можно) и члены группы operator; на фига тут SetGID? Просто тот юзер, под которым будет логиниться шатдаунер, :-) д.б. включён в группу operator.
Sergey_A:
> скрипт лежит в /sbin, а шелл в /binВ данном случае в роли шелла выступает скрипт; т.е. шелл и скрипт - одно и то же, а в /sbin лежит не шелл и не скрипт, а экзешник.
Хотя я бы не стал класть свои файлы в /bin - лучше в /usr/local/sbin.
>Sergey_A:
>> скрипт лежит в /sbin, а шелл в /bin
>
>В данном случае в роли шелла выступает скрипт; т.е. шелл и скрипт
>- одно и то же, а в /sbin лежит не шелл
>и не скрипт, а экзешник.
>
>Хотя я бы не стал класть свои файлы в /bin - лучше
>в /usr/local/sbin.Мдя, я что-то не туда глянул. Я по ошибке прочитал, что скрипт (в котором команда shutdown) и путь к шеллу (в /etc/passwd) различаются. Сглючил.
>> варианты, либо пользователя которому будет дан shutdown - добавить в wheel (нехорошо),
>
>Ну а даже если добавишь - что это даст?
>
>> либо в оператор и setgroupid на shutdown видимо.
>
>Запустить shutdown могут только владелец (root, которому и так всё можно) и
>члены группы operator; на фига тут SetGID? Просто тот юзер, под
>которым будет логиниться шатдаунер, :-) д.б. включён в группу operator.
>ой, чуял что наморосил!!! посыпаю голову пеплом, столько серьезных промахов :(, все - заканчиваю на сегодня работать. Уволють за такое, как пить дать уволють :(
Дима - Thanks за поправки.
>Sergey_A:
>> скрипт лежит в /sbin, а шелл в /bin
>
>В данном случае в роли шелла выступает скрипт; т.е. шелл и скрипт
>- одно и то же, а в /sbin лежит не шелл
>и не скрипт, а экзешник.
>
>Хотя я бы не стал класть свои файлы в /bin - лучше
>в /usr/local/sbin.не факт, особенно когда /usr отдельная FS, важно помнить и записывать
изменения, я статический bash всегда в корневую FS кладу для single-user
mode например.
lavr:
> не факт, особенно когда /usr отдельная FS, важно помнить
> и записывать изменения, я статический bash всегда в корневую FS
> кладу для single-user mode например.Это же скрипт, просто скрипт; и в Single-User Mode он совершенно не нужен.
A Clockwork Orange:
> скрипт должен принадлежать пользователю shutdown,
> принадлежность его группе operator недостаточноНу и что это даст скрипту? Владелец и группа файла со скриптом совершенно не важны - надо лишь чтобы посторонние не могли его заменть.
Amy:
> Плохой способ, несекьюрный!Ну и чем же он несекьюрный? Что может сделать шатдаунер, кроме как прервать перезагрузку нажатием Ctrl+C?
>> варианты, либо пользователя которому будет дан shutdown - добавить в wheel (нехорошо),
>
>Ну а даже если добавишь - что это даст?
>
>> либо в оператор и setgroupid на shutdown видимо.
>
>Запустить shutdown могут только владелец (root, которому и так всё можно) и
>члены группы operator; на фига тут SetGID? Просто тот юзер, под
>которым будет логиниться шатдаунер, :-) д.б. включён в группу operator.
>
>
>Sergey_A:
>> скрипт лежит в /sbin, а шелл в /bin
>
>В данном случае в роли шелла выступает скрипт; т.е. шелл и скрипт
>- одно и то же, а в /sbin лежит не шелл
>и не скрипт, а экзешник.
>
>Хотя я бы не стал класть свои файлы в /bin - лучше
>в /usr/local/sbin.скрипт должен принадлежать пользователю shutdown, принадлежность его группе operator недостаточно
>Создал /bin/shutdown.sh
>#!/bin/sh
>/sbin/shutdown -r now
^^^^^^>Сделал исполняемым
>Создал пользователя, которому в качестве
>шела дал /bin/shutdown.sh
^^^^^>При регистрации от данного пользователя ничего не происходит. Что пропустил?
См. помеченное. Это ты при написании сообщения ошибся или так и есть (скрипт лежит в /sbin, а шелл в /bin) ?
>Создал /bin/shutdown.sh
>
>#!/bin/sh
>
>/sbin/shutdown -r now
>
>Сделал исполняемым
>Создал пользователя, которому в качестве шела дал /bin/shutdown.sh
>
>При регистрации от данного пользователя ничего не происходит. Что пропустил?Плохой способ, несекьюрный!
Лучше так:
Пользователю shutdown в кач. шелла такой /bin/shutdown.sh:
#!/bin/sh
trap : 1 2 3 15 30 31
: >/home/shutdown/.shutdown.nowДалее из крона, скажем раз в минуту проверяешь наличие файлика /home/shutdown/.shutdown.now и при наличии оного, удаляешь его и делаешь shutdown -r now
Таким образом пользователю shutdown не нужны никакие права, всё круто и секьюрно :)
Не въехал, по подробнее можно?
вроде проще сделать в скрипте написать sudo ...
>Не въехал, по подробнее можно?Всё просто. Скрипт, /bin/shutdown.sh, не делает ничего, кроме создания пустого файла /home/shutdown/.shutdown.now.
trap : заставляет скрипт игнорировать сигналы, чтобы злобный хакер не смог чего-нибудь сделать во время его выполнения.Дальше в /etc/crontab прописывай строчку, вроде этой:
* * * * * root /bin/rm /home/shutdown/.shutdown.now && /sbin/shutdown -r nowВсе дела!