Рейтинг:0

всегда запрашивать пароль sudo при перезагрузке/выключении системы

флаг es

Так,

Я заметил, что на manjaro, если есть только один пользователь, набрав перезагрузка без судо, просто потерпит неудачу и запросит пароль sudo, тогда как на сервере ubuntu ввод этого не запрашивает пароль sudo и успешно перезагружает систему. Мой вопрос в том, как я могу сделать так, чтобы при вводе перезагрузка/выключение/остановка, ubuntu всегда запрашивает пароль sudo, даже если в данный момент вошел только один пользователь? Может ли это быть связано с polkit? Если да, то как я могу это изменить?

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

Спасибо

Рейтинг:2
флаг in

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

sudo systemctl маска poweroff.target

Теперь любая попытка выключить систему через sudo завершение работы или же sudo systemctl выключение молча провалится. То же самое можно сделать с остановкой и перезагрузкой:

Маска sudo systemctl runlevel0.target
маска sudo systemctl halt.target
Маска sudo systemctl runlevel6.target
Маска sudo systemctl reboot.target

Примечание: уровень выполнения6 эквивалентно перезагрузка, и уровень запуска0 эквивалентно неисправность и останавливаться.

Чтобы отменить это, эти команды можно запустить снова, но с разоблачать:

sudo systemctl размаскировать runlevel0.target
sudo systemctl размаскировать shutdown.target
sudo systemctl размаскировать halt.target
sudo systemctl размаскировать runlevel6.target
sudo systemctl размаскировать reboot.target

Имея это в виду, теперь вы можете написать исполняемый скрипт. Только для людей с судо доступ:

#!/бин/баш

## Определить выполняемую операцию (маскировать | размаскировать)
op=маска

если [[ $1 = снять маску ]]
тогда
        op=разоблачить
фи

## Установите цели, которые мы хотим замаскировать
объявить -a arr=("уровень запуска0" "уровень запуска6" "выключение" "перезагрузка" "остановка")

## Запускаем команды
для i в "${arr[@]}"
делать
        cmd=$(sudo systemctl $op $i.target)
        эхо "$i :: $op"
сделано

ПРЕДУПРЕЖДЕНИЕ: Этот код будет работать, но он довольно грубый. Обязательно проверьте его работоспособность с помощью виртуальной машины или где-нибудь в «безопасном месте», прежде чем запускать его на рабочей машине.

Теперь вы можете запустить этот скрипт для маскировки целей после загрузки и выключения/перезагрузки следующим образом:

sudo ~./setTargetMask.sh снять маску
sudo выключить сейчас

Примечание: Не стесняйтесь называть скрипт как хотите.

Liwinux avatar
флаг es
Это определенно один из способов, который я не мог придумать самостоятельно, спасибо вам за это, это намного проще! Одна вещь, которую я обнаружил, заключается в том, что с голой системой (что означает отсутствие среды рабочего стола) единственный способ выполнить обслуживание — использовать Sudo, тогда как система, в которой, например, установлен xfce, не требует никаких команд sudo.Я думаю, это потому, что xfce (или любой другой DE) должен установить пакет policykit, чтобы кнопка перезапуска/выключения работала без системных привилегий, но это относится ко всей системе. Поправьте меня, если я ошибаюсь!

Ответить или комментировать

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