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

удаленно только shutdown

 ,


0

1

Здравствуйте, уважаемые. Подскажите как проще и безопаснее дать удаленно одному пользователю только на shutdown машины. Ни какого доступа к файлам, просто коннект и шатдаун, можно одновременно.

Рассматривал варианты : 1 вместо шелла /sbin/shutdown Вопрос, как поступать с ключами, как правильно писать.

2 кнок и по нему шатдаун.

первый кажется не очень безопастным, да и как его правильно настроить с ключами и с правами - хз. Второй не нравится тем, что кнок тупо без пароля, да и снесут его внезапно...

Если кто делал посоветуйте.

★★

Последнее исправление: chenger (всего исправлений: 2)

grep power /etc/passwd

power:x:505:505::/home/power:/home/power/power.sh

cat /etc/sudoers.d/power

power ALL = NOPASSWD: /sbin/poweroff

power ALL = NOPASSWD: /sbin/reboot

/home/power/power.sh:

#!/bin/bash
#

[[ "$(whoami)" == "power" ]] || exit 1

echo "Выберите действие (select action):

1 выключение    (power off)
2 перезагрузка  (reboot)

любая клавиша для отмены
(any key to cancel)

Введите команду и нажмите ввод
Enter the command and press enter
"

read -t 60 action <&1

case "${action}" in
    1)
        echo "poweroff"
        /usr/bin/sudo /sbin/poweroff
    ;;
    2)
        echo "reboot"
        /usr/bin/sudo /sbin/reboot
    ;;
    *)
        echo "bye"
        sleep 2
        exit 0
    ;;
esac

exit 0

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

спасибо.

ребут мне не нужен, скрипт урезал до

#!/bin/bash
#

[[ "$(whoami)" == "power" ]] || exit 1

        /usr/bin/sudo /sbin/poweroff

exit 0

и в sudoers только

power ALL = NOPASSWD: /sbin/poweroff

с оказией протестирую. Хорошо будет если отработает.

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

Я так и не понял, нафига это вообще:

[[ "$(whoami)" == "power" ]] || exit 1
У вас же настройки sudo именно это самое и делают: разрешает запускать /sbin/poweroff для пользователя power.

Я бы вообще сделал shell как-нибудь /bin/true, а гасил бы пользователель прямо указывая команды для ssh power@host sudo sutdown -P now

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

строчка может и реально излишняя, была бы полезна если бы скрипт лежал в usr/bin . Пользователю команду вообще давать не хочется. Именно просто коннект с паролем и досвидания.

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

Тогда ещё проще: делаем враппер над shutdown, типа:

int main(void) { return system("shutdown -P now"); }
и делаем shell-ом для группы пользователей, кому разрешено. У бинарника разрешаем 4750 root:group

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

так умно, что даже не понял...

vodz, можно, но кажется перебор. еслт уж на сях писать, то можно и порт послушать...

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

Это две строчки в конфиге sshd_config, которые делают именно то, что тебе нужно. Директива Match указывает, что следующие параметры относятся только к клиентам, удовлетворяющим критерию в Match. Критерий User, собственно, задаёт пользователя (power). ForceCommand задаёт принудительно выполняемую команду (sudo /sbin/poweroff) при подключении по ssh. В данном случае, так как ForceCommand находится в блоке Match, то она действует только для указанного пользователя.

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

еслт уж на сях писать, то можно и порт послушать..

Там «сях» не больше, чем в вашем bash-евом скрипте. Порт слушать не только перебор, а самое главное будет в безопасности аутентификации пользователя, всё же ssh имеет приличный объём, но это именно только криптография как таковая, а не shell.

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