Как выключить компьютер простму пользователю (не root который)?

Системы, которые не вошли в список.

Модератор: Модераторы разделов

Аватара пользователя
жучара
Сообщения: 159
ОС: minix 3.1.0

Как выключить компьютер простму пользователю (не root который)?

Сообщение жучара » 27.04.2017 18:43

Друзья! Пользователь user0 создан стандартным путём, adduser. Итак, ситуация: пользователь user0 включает комп и входит под своим паролем и работает. А по окончании работы выключить комп не может!

Код: Выделить всё

$ shutdown
shutdown: Permissioon denied
* halt
halt: Permissioon denied
* reboot
reboot: Permissioon denied
* exit
...
imakompa login:


Сейчас можно войти под root-ом, набрать shutdown, потом off и компьютер выключится. Но по условию задачи, пользователь не знает пароль root-а, вот в чём дело. Что же ему теперь, питание выключать?

++++++++++++++++++++++++++++++

Я ещё не прочёл всего Танненбаума, но мне кажется, он про выключение ничего не говорит, кроме как:

Выключите систему, набрав команду shutdown. Всегда останавливайте MINIX 3 этим способом для предотвращения потери данных, так как MINIX 3 хранит некоторые файлы на виртуальном диске и копирует их на жесткий диск только при завершении работы.


То есть опять shutdown

++++++++++++++++++++++++++++++

Можно что сделать:
1) заранее дать shutdown права на выполнение всем пользователям.
2) ещё добавить файлу shudown права u+s, то есть чтобы он выполнялся от имени владельца (root-а) потому, что иначе никак. К примеру он включает файл halt ну и мало ли чего ещё.

Ну это же вообще не наш метод. Создаётся впечатление, что команда shutdown в целях безопасности доступна только root-у, а я эту безопасность нарушаю, вместо того чтобы найти маленькую изящненькую команду для выключения, которую может выполнять простой пользователь. Но сам я найти такую команду не могу, с чем к вам, друзья, собсно и обращаюсь. Спасибо, кто откликнется.
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 15059
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Как выключить компьютер простму пользователю (не root который)?

Сообщение Bizdelnick » 27.04.2017 18:48

Вполне себе решение. Не думаю, что в MINIX предусмотрено другое. (Интересно, он на кнопку выключения-то реагирует?)
Если хочется немного побезопаснее, создайте группу, скажем, power, сделайте её владельцем shutdown и выставьте права 4750. А может, оно так уже и сделано по умолчанию?
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
команда
новичок
нюанс
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
Stauffenberg
Сообщения: 2018
Статус: ☮ PEACE ☮
ОС: открытая и свободная

Re: Как выключить компьютер простму пользователю (не root который)?

Сообщение Stauffenberg » 27.04.2017 22:40

жучара писал(а):
27.04.2017 18:43
Создаётся впечатление, что команда shutdown в целях безопасности доступна только root-у, а я эту безопасность нарушаю

Специально для этих целей есть sudo
А еще можно написать свою программу, которая выключает компьютер, дать ей соответствующие права и пользоваться ей всем (как например команда ping, которая создает ICMP при помощи RAW-сокетов, которые могут создавать только root).
Labor omnia vincit

"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
Спасибо сказали:

Аватара пользователя
alv
Бывший модератор
Сообщения: 7261
Статус: Пенсионер в законе
ОС: Cintu

Re: Как выключить компьютер простму пользователю (не root который)?

Сообщение alv » 27.04.2017 22:58

Stauffenberg писал(а):
27.04.2017 22:40
Специально для этих целей есть sudo

Ага, а в конфиге её можно определить, что все пользователи меют право только на команды shutdown и reboot.
жучара писал(а):
27.04.2017 18:43
Создаётся впечатление, что команда shutdown в целях безопасности доступна только root-у, а я эту безопасность нарушаю

Правильное впечатление. Потому что придумано это, когда персоналок и в помине небыло.
Представляете, что было бы, если б каждый пользователь со своего терминала выключил комп, от которого работает за своими терминалами ещё десятки пользователей?
жучара писал(а):
27.04.2017 18:43
найти маленькую изящненькую команду для выключения

Зачем придумывать отдельную команду для выключения? Когда есть вышеупомянутая команда sudo, которая позволяет решать все подобные задачи разграничения доступа?
Спасибо сказали:

Аватара пользователя
жучара
Сообщения: 159
ОС: minix 3.1.0

Re: Как выключить компьютер простму пользователю (не root который)?

Сообщение жучара » 28.04.2017 01:49

Stauffenberg писал(а):
27.04.2017 22:40
Специально для этих целей есть sudo
нет там sudo

Код: Выделить всё

# find / -name sudo
#


alv писал(а):
27.04.2017 22:58
Зачем придумывать отдельную команду для выключения? Когда есть вышеупомянутая команда sudo, которая позволяет решать все подобные задачи разграничения доступа?
то же самое

+++++++++++++++++++++++++++++++

Bizdelnick писал(а):
27.04.2017 18:48
Если хочется немного побезопаснее, создайте группу, скажем, power, сделайте её владельцем shutdown и выставьте права 4750. А может, оно так уже и сделано по умолчанию?
Думал над этим вчера. Нет, по умолчанию там вот так вот:

Код: Выделить всё

ls -l /usr/bin/shutdown
-rwxr-x--- 1 root operator 25396 Oct 18 2005 /usr/bin/shutdown


Группа operator это группа для двух пользователей по умолчанию, для root и для bin

++++++++++++++++++++++++++++++=

Хуже другое. Если создавать группу power, то как дополнительную для простых пользователей. А дополнительных групп здесь, похоже, нельзя создать. Ну, во-первых, тут ВООБЩЕ нельзя создать групп автоматом, только прописывая /etc/group, А дополнительных тем более. Я прописывал дополнительную группу в /etc/group так:

Код: Выделить всё

power:*:12:user0


И менял у /usr/bin/shutdown группу на power. Конечно, user0 не мог выполнить shutdown. А когда делал группу power основной для user0, то мог.
Спасибо сказали:

Аватара пользователя
Stauffenberg
Сообщения: 2018
Статус: ☮ PEACE ☮
ОС: открытая и свободная

Re: Как выключить компьютер простму пользователю (не root который)?

Сообщение Stauffenberg » 28.04.2017 10:54

жучара писал(а):
28.04.2017 01:49
Stauffenberg писал(а):
27.04.2017 22:40
Специально для этих целей есть sudo
нет там sudo

а компилятор там есть?
Хотя, легче тогда дать права какому-нибудь halt или что там есть, на разрешение выполнение его всеми...
Labor omnia vincit

"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 15059
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Как выключить компьютер простму пользователю (не root который)?

Сообщение Bizdelnick » 28.04.2017 12:10

жучара писал(а):
28.04.2017 01:49
Группа operator это группа для двух пользователей по умолчанию, для root и для bin

Ну значит проблему можно решить, добавив своего пользователя в группу operator. Если, конечно, рутовые привилегии для выключения не требуются (что странно). Если таки требуются, надо добавить setuid-бит.
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
команда
новичок
нюанс
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
Goodvin
Ведущий рубрики
Сообщения: 4332
Статус: ⚝⚠⚒⚑⚖☭☞☣☤&

Re: Как выключить компьютер простму пользователю (не root который)?

Сообщение Goodvin » 28.04.2017 12:35

Есть еще одно изящное решение для этой задачи.

Создаёте пользователя с именем, например, shutdownuser

Ему в качестве шелла вместо командной оболочки прописываете просто скрипт с командой выключения машины, с нужными правами и т.п..

После чего любой человек сможет залогинившись этой УЗ shutdownuser, инициировать завершение работы машины.

Спасибо сказали:

yoshakar
Сообщения: 259
ОС: Debian Stretch

Re: Как выключить компьютер простму пользователю (не root который)?

Сообщение yoshakar » 28.04.2017 19:16

alv писал(а):
27.04.2017 22:58
Когда есть вышеупомянутая команда sudo, которая позволяет решать все подобные задачи разграничения доступа?
Костыль как он есть. В FreeBSD так же, как и в Minix, можно цивилизованно разрешить пользоваться shutdown простым юзерам, добавив их в соответствующую группу. Красиво, и с уважением традиций. А в Linux благодаря (ненавидимому мной) systemd теперь тоже есть культурный, хотя и омерзительно-модерновый, способ выключать систему: systemctl poweroff.
Спасибо сказали:

Аватара пользователя
жучара
Сообщения: 159
ОС: minix 3.1.0

Re: Как выключить компьютер простму пользователю (не root который)?

Сообщение жучара » 28.04.2017 19:30

Bizdelnick писал(а):
28.04.2017 12:10
Ну значит проблему можно решить, добавив своего пользователя в группу operator. Если, конечно, рутовые привилегии для выключения не требуются (что странно). Если таки требуются, надо добавить setuid-бит.
оно, конечно, получится. Чтобы выполнить shutdown достаточно быть членом группы operator. Просто не забываем, что

жучара писал(а):
28.04.2017 01:49
А дополнительных групп здесь, похоже, нельзя создать.
то есть я имел ввиду, что если юзер член группы operator, (чтобы мог выключить компьютер), то он НЕ МОЖЕТ БЫТЬ ЧЛЕНОМ НИКАКИХ ДРУГИХ ГРУПП, что нехорошо, на мой взгляд. Это я для ясности.

И ещё для ясности: я вношу юзеров в группы вручную (я уже писал, тут команды только есть adduser и chgrp), а как оно на самом деле нужно- неизвестно, может, я что не так делаю. Но я посмотрел файл /etc/group в другом дистрибутиве, вроде всё правильно я делаю.

++++++++++++++++++++++++++++++++++++

Goodvin так-то да, красиво.


Спасибо сказали:

yoshakar
Сообщения: 259
ОС: Debian Stretch

Re: Как выключить компьютер простму пользователю (не root который)?

Сообщение yoshakar » 28.04.2017 19:33

жучара писал(а):
28.04.2017 19:30
то есть я имел ввиду, что если юзер член группы operator, (чтобы мог выключить компьютер), то он НЕ МОЖЕТ БЫТЬ ЧЛЕНОМ НИКАКИХ ДРУГИХ ГРУПП, что нехорошо, на мой взгляд
Вы это проверяли? Вот конкретно то, что написали.
Спасибо сказали:

Аватара пользователя
жучара
Сообщения: 159
ОС: minix 3.1.0

Re: Как выключить компьютер простму пользователю (не root который)?

Сообщение жучара » 28.04.2017 19:49

yoshakar писал(а):
28.04.2017 19:33
жучара писал(а):
28.04.2017 19:30
то есть я имел ввиду, что если юзер член группы operator, (чтобы мог выключить компьютер), то он НЕ МОЖЕТ БЫТЬ ЧЛЕНОМ НИКАКИХ ДРУГИХ ГРУПП, что нехорошо, на мой взгляд
Вы это проверяли? Вот конкретно то, что написали.
ну да. Я же научен горьким опытом, сейчас кто-нибудь проверит и опровергнет и опозорит меня и будет прав.

...Допустим, простой юзер user0 член группы group. Я его добавляю в группу operatot так (отрывок из /etc/group):

Код: Выделить всё

operator:*:0:user0


по идее теперь он член групп group и operator и может выполнять shutdown. А не может на самом деле. Только если в /etc/passwd явно прописать ему членство в operator вот так (отрывок из /etc/passwd; 0 это идентификатор группы operator):

Код: Выделить всё

user0:##user0:10:0:user0:/home/user0


тогда сможет. Но, как видите, членом group он уже не будет являться. Такие дела.
Спасибо сказали:

Аватара пользователя
alv
Бывший модератор
Сообщения: 7261
Статус: Пенсионер в законе
ОС: Cintu

Re: Как выключить компьютер простму пользователю (не root который)?

Сообщение alv » 28.04.2017 20:23

жучара писал(а):
28.04.2017 19:49
сейчас кто-нибудь проверит и опровергнет

Ох не думаю я, что тут много знатоков MINIX'а. Или хотя бы просто тех, у кого он стоит хотя бы в виртуалке, чтобы проверить.
Спасибо сказали:

Аватара пользователя
alv
Бывший модератор
Сообщения: 7261
Статус: Пенсионер в законе
ОС: Cintu

Re: Как выключить компьютер простму пользователю (не root который)?

Сообщение alv » 28.04.2017 20:38

yoshakar писал(а):
28.04.2017 19:16
Костыль как он есть. В FreeBSD так же, как и в Minix, можно цивилизованно разрешить пользоваться shutdown простым юзерам, добавив их в соответствующую группу.

Как-то не вижу принципиальной разницы. Разве что только в отношении к традициям...
UPD А в любом (?) DE можно настроить выключение просто кнопкой питания, кстати.
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 15059
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Как выключить компьютер простму пользователю (не root который)?

Сообщение Bizdelnick » 29.04.2017 13:10

жучара писал(а):
28.04.2017 19:49
по идее теперь он член групп group и operator и может выполнять shutdown. А не может на самом деле.

В linux, например, это начинает работать только после релогина. Полагаю, в MINIX тоже.
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
команда
новичок
нюанс
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
жучара
Сообщения: 159
ОС: minix 3.1.0

Re: Как выключить компьютер простму пользователю (не root который)?

Сообщение жучара » 29.04.2017 22:08

Bizdelnick писал(а):
29.04.2017 13:10
жучара писал(а):
28.04.2017 19:49
по идее теперь он член групп group и operator и может выполнять shutdown. А не может на самом деле.

В linux, например, это начинает работать только после релогина. Полагаю, в MINIX тоже.
не знаю, о чём вы. Там, чтобы прекратить работу текущего пользователя, нужно скомандовать exit, после чего можно ТОЛЬКО ввести имя нового пользователя. Об этом я писал в первом сообщении.
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 15059
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Как выключить компьютер простму пользователю (не root который)?

Сообщение Bizdelnick » 29.04.2017 22:11

Я о том, что после добавления пользователя в группу нужно залогиниться по новой (вероятно).
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
команда
новичок
нюанс
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
жучара
Сообщения: 159
ОС: minix 3.1.0

Re: Как выключить компьютер простму пользователю (не root который)?

Сообщение жучара » 29.04.2017 22:31

Bizdelnick писал(а):
29.04.2017 22:11
Я о том, что после добавления пользователя в группу нужно залогиниться по новой (вероятно).
все попытки выполнить shutdown от имени какого-либо пользователя, я выполнял от имени этого пользователя. То есть залогинившись как этот пользователь.

То есть не было такого что, я допустим user1, выполняю неудачно команду shutdown и пишу:
пользователь user0 не может выполнить команду shutdown.



Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 15059
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Как выключить компьютер простму пользователю (не root который)?

Сообщение Bizdelnick » 29.04.2017 22:55

Да причём тут user1 какой-то... Изменения настроек групп могут подхватываться только при входе пользователя в систему. А для уже открытых сессий могут и не подхватываться.
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
команда
новичок
нюанс
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
жучара
Сообщения: 159
ОС: minix 3.1.0

Re: Как выключить компьютер простму пользователю (не root который)?

Сообщение жучара » 30.04.2017 00:44

Bizdelnick писал(а):
29.04.2017 22:55
Да причём тут user1 какой-то...
это я для понятности. Вы же всегда понятно говорите, я тоже стараюсь. Действительно, зачем писать "перезагрузи компьютер" когда можно более понятно выразиться, например:
Bizdelnick писал(а):
29.04.2017 13:10
В linux, например, это начинает работать только после релогина. Полагаю, в MINIX тоже.
или
Bizdelnick писал(а):
29.04.2017 22:11
Я о том, что после добавления пользователя в группу нужно залогиниться по новой (вероятно).
или
Bizdelnick писал(а):
29.04.2017 22:55
Изменения настроек групп могут подхватываться только при входе пользователя в систему. А для уже открытых сессий могут и не подхватываться.


+++++++++++++++++++++++++++++++

...Что ещё? А, да. Компьютер я конечно же, перезагружал. Проблема вся в том, что я не знаю, как делать правильно некоторые действия, и можно ли их вообще делать. Например, добавлять пользователя в какие-нибудь группы кроме основной. Специальных команд нет, поэтому просто правлю файлы вручную. /etc/group, например.
Спасибо сказали: