Отсоединить демона, использующего sudo?

Самый легкий путь, вероятно, с sudo. Давайте предположим желание всех в cdrom группа, которая в состоянии смонтироваться и размонтировать ISO-образы. Сделайте следующее дополнение к sudoers использованию файла visudo:

cdrom ALL = /bin/mount -o loop -t iso9660 *.iso /media/*
cdrom ALL = /bin/umount /media/*

Это должно позволить кому-либо войти cdrom группа для монтирования файла, заканчивающегося в .iso как тип iso9660 на каталоге в / папке медиа и также размонтировали что-либо в / папке медиа.

5
02.07.2013, 16:38
4 ответа

Вы можете фон это в одном выстреле как это:

sudo -u user sh -c "daemon & disown %1"

Взгляд с ps покажет это daemon работает как user. Будет нет sudo связанный с ним.

5
27.01.2020, 20:34
  • 1
    я не уверен, что это корректно. существует pam сессия, созданная для программы, и это сохраняется sudo и закрывается, когда sudo выходит (sudo.ws/pipermail/sudo-users/2010-August/004461.html), Вам нужна к daemonise Ваша программа (linux.die.net/man/1/daemonize), и необходимо сохранить его pam сессию, идущую для целой жизни (возможно, избегают sudo за исключением выполнения команд администрирования, пока это не фиксируется, и sudo запускается "должностному лицу" снова - таким образом не добавление несовместимой опции на сторону модели процесса Unix), –  codeshot 28.05.2016, 14:57

sudo не остается бежать за ним, выполняет программу, к которой Вы спрашиваете это; на самом деле это использует exec() системный вызов для замены себя программой, которую Вы указываете так, чтобы программа имела тот же PID это sudo сделал. Можно проверить это путем выполнения следующих команд:

sudo -u user -b sleep 60
ps aux | grep sudo
ps aux | grep sleep

Вы будете видеть, что сон все еще работает, но sudo не.

Если Вы спрашиваете оболочку к фону sudo с & оператор, затем sudo будет блокироваться и ожидать там в фоновом режиме неограниченно долго, если он должен предложить Вам Ваш пароль. Если это не предлагает Вам Ваш пароль, то программа, которую Вы указываете, запущена и sudo больше не работает. Из-за потенциала для блокирования-b переключаются на sudo предпочтительный метод, таким образом, он может предложить Вам Ваш пароль в случае необходимости, и затем он разветвится в фон для запущения требуемой программы.

3
27.01.2020, 20:34

Если Вы имеете daemonize программа, можно использовать sudo daemonize PATH_TO_DAEMON.

1
27.01.2020, 20:34
  • 1
    sudo.ws/pipermail/sudo-users/2010-August/004461.html говорит, что некоторые pam модули не работают правильно, если sudo не остается рабочим, когда те pam модули используются. Я думаю, что это - pam вопросы проектирования. –  codeshot 28.05.2016, 15:02

Извините, это не действительно ответ, больше дополнительного комментария.

Несмотря на ответ psusi, кажется что некоторые версии sudo будет всегда fork() (и ожидайте дочернего процесса если -b не указан).

Проблема с использованием -b это затем $! не содержит PID демона; проблема с использованием daemonize это, это не поставляется со всеми дистрибутивами; проблема с использованием sudo sh -c 'run_my_daemon arg1 arg2 arg3... & save_pid $!' та передача args в к run_my_daemon вполне искажен; уход от таких искривлений является основной причиной использовать sudo во-первых.

Волнение по поводу ожидания пароля только применяется, если Вы не корень для начала; в особенности рассмотрите случай использования sudo -u $run_as_uid prog "${args[@]}" в сценарии, который уже работает как корень.

2
27.01.2020, 20:34

Теги

Похожие вопросы