Мне нужно запустить dosemu
с nice --20
из скрипта. Проблема в том, что отрицательное значение может быть применено только с sudo.
Знаете ли вы, как запустить команду nice
без sudo
или просто запустить nice --20 dosemu
из сценария?
К сожалению, я не думаю, что это легко выполнимо.
, Если Ваши dosemu обрабатывают выполнения как отдельного пользователя, то можно установить приоритет всех процессов того пользователя к отрицательной величине с помощью /etc/security/limits.conf
.
РЕДАКТИРОВАНИЕ: глупый меня, Вы не можете создавать suid сценарий оболочки, который просто не работает.
EDIT2: хорошо, можно настроить sudo, таким образом, что он не требует, чтобы Вы дали пароль, когда кто-то от sudo группы работает хороший или renice. В окне терминала войдите
sudo visudo
, Это откроет простого текстового редактора, который отредактирует конфигурацию sudo. Добавьте следующую строку в конце файла:
%sudo ALL = (ALL) NOPASSWD: /usr/bin/nice,/usr/bin/renice
Выход редактор. Редактор удостоверится, что синтаксис правилен (иначе, можно было повредить систему). Теперь, можно работать
sudo nice -n -20 sudo -u $USER /some/program
, и Вам не предложат пароль. На самом деле, хороший запустит другой процесс, названный sudo с-20 приоритетами. Этот новый процесс sudo переключится назад на Вашего исходного пользователя (-u $USER
, иначе Вы выполнили бы/some/program как корень), и запускает/some/program.
попробуйте это:
sudo -k nice -n -20 su -c "dosemu" $USER
, в то время как это работает, выполняет это:
ps -A --forest -o pid,user,command |grep dosemu
Вы будете видеть, что nice
был выполнен с полномочиями пользователя root, но dosemu
был выполнен как нормальный $USER.
Understandind, насколько безопасный это : для создания этого уверенным, что нет никакого дефекта попробуйте это, где Вы будете видеть, что это спрашивает времена пароля 2, потому что sudo ls
выполняется как нормальный $USER, таким образом, сценарий с sudo на нем невидимая работа привычки:
sudo -k nice -n -5 su -c "sudo ls" $USER
и это спросит пароль только один раз, поскольку это является уже корневым к sudo ls
:
sudo -k nice -n -5 su -c "sudo ls" root
пз.: вместо dosemu, для тестов, я использовал sleep 120
, и sudo -k
для увеличенной безопасности.
Попытка: sudo -s -H
Это регистрирует Вас в как корень, после которого Вам не будет нужен sudo.
Затем запускает Ваш скрипт.