Оконечные корневые процессы

Тип раздела менее конкретен, чем тип файловой системы. Самые "собственные" файловые системы Linux используют тип 83 раздела, например: весь из ext* варианты, ReiserFS, XFS и другие.

Необходимо попытаться переключиться на parted или gParted. Для некоторых типов файловой системы это может создать раздел и создать файловую систему во всем этом в том же инструменте. (С некоторыми файловыми системами Вы все еще имеете к mkfs отдельно, все же.)

3
23.09.2011, 02:09
2 ответа

Пользователям только разрешают уничтожить или иначе сигнализировать об их собственных процессах.

Вы говорите, что процесс запускается демоном, работающим как корень. Это обрабатывает потребность работать как корень также? Если это не делает, заставьте его отбросить полномочия и работать как требуемый пользователь.

Если процесс должен работать как корень, необходимо будет позволить, чтобы агент поднял свои полномочия уничтожить процесс. Это может принять форму корневого исполняемого файла помощника setuid или запись в sudoers файл (с NOPASSWD тег). sudo запись имеет преимущество, что его использование будет зарегистрировано.

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

Существует способ избежать этого вовлечения родителя процесса, который Вы хотите уничтожить, но это сложно. Идентификатор процесса не исчезнет, пока его родитель не подтверждает смерть ребенка (процесс-зомби остается до тех пор). Для использования этого эффективно Вам нужен родитель, чтобы знать, что он должен держаться ни до какого агента он собирающийся хотеть итог уничтожает ребенка.

Если Вы не обеспокоены состоянием состязания, можно дать агенту разрешение работать pkill name_of_process_to_kill, если Вы знаете, что будет единственный процесс с тем именем. Если можно определить процесс файлом, он имеет открытый, можно использовать fuser -k /path/to/file.

Если Вы можете, изменить процесс так, чтобы он слушал запрос завершения на канале или сокете. Настройте полномочия или аутентификацию на канале или сокете согласно Вашим потребностям.

0
27.01.2020, 21:32
  • 1
    Процесс выполняется как корень просто, потому что это называет damon; отбрасывание его полномочий было бы лучшим решением. Любые идеи о том, как это сделано, являются значительно ценившим –  Samantha Catania 23.09.2011, 08:15
  • 2
    setuid справки () было лучшим решением –  Samantha Catania 23.09.2011, 10:29
  • 3
    , Продолженным здесь. –  Gilles 'SO- stop being evil' 23.09.2011, 10:34

Необходимо изучить sudo.

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

Это может уже быть установлено и настроено в Вашей системе. Дело обстоит так на Ubuntu и OS X, например. В противном случае это доступно для большинства систем Unixy.

1
27.01.2020, 21:32
  • 1
    , я использовал sudo, но это все еще просит пароль; я должен реализовать это в программе, таким образом, я не могу сделать, чтобы пользователь ввел пароль –  Samantha Catania 22.09.2011, 18:23
  • 2
    @Samantha, "Можно настроить его, чтобы позволить Вам ввести любую команду без пароля". Посмотрите этот вопрос –  Michael Mrozek♦ 22.09.2011, 18:45
  • 3
    , я не могу настроить его тот путь –  Samantha Catania 22.09.2011, 20:00
  • 4
    @SamanthaCatania: почему Вы не можете? Вы не можете, или у Вас нет полномочия изменить /etc/sudoers? –  enzotib 22.09.2011, 20:03
  • 5
    Как я записал в вопросе, это должно быть сделано из программы агента не должно быть никакого входа от пользователя и нет никакого окна терминала –  Samantha Catania 22.09.2011, 20:07

Теги

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