Тип раздела менее конкретен, чем тип файловой системы. Самые "собственные" файловые системы Linux используют тип 83 раздела, например: весь из ext*
варианты, ReiserFS, XFS и другие.
Необходимо попытаться переключиться на parted
или gParted
. Для некоторых типов файловой системы это может создать раздел и создать файловую систему во всем этом в том же инструменте. (С некоторыми файловыми системами Вы все еще имеете к mkfs
отдельно, все же.)
Пользователям только разрешают уничтожить или иначе сигнализировать об их собственных процессах.
Вы говорите, что процесс запускается демоном, работающим как корень. Это обрабатывает потребность работать как корень также? Если это не делает, заставьте его отбросить полномочия и работать как требуемый пользователь.
Если процесс должен работать как корень, необходимо будет позволить, чтобы агент поднял свои полномочия уничтожить процесс. Это может принять форму корневого исполняемого файла помощника setuid или запись в sudoers
файл (с NOPASSWD
тег). sudo запись имеет преимущество, что его использование будет зарегистрировано.
Обратите внимание, что нет никакого атомарного способа отправить сигнал в процесс. Отправка сигнала является асинхронной: возможно, что Вы получаете PID процесса, затем Вы отправляете сигнал в тот процесс, но процесс умер тем временем, и его идентификатор процесса был уже снова использован другим процессом.
Существует способ избежать этого вовлечения родителя процесса, который Вы хотите уничтожить, но это сложно. Идентификатор процесса не исчезнет, пока его родитель не подтверждает смерть ребенка (процесс-зомби остается до тех пор). Для использования этого эффективно Вам нужен родитель, чтобы знать, что он должен держаться ни до какого агента он собирающийся хотеть итог уничтожает ребенка.
Если Вы не обеспокоены состоянием состязания, можно дать агенту разрешение работать pkill name_of_process_to_kill
, если Вы знаете, что будет единственный процесс с тем именем. Если можно определить процесс файлом, он имеет открытый, можно использовать fuser -k /path/to/file
.
Если Вы можете, изменить процесс так, чтобы он слушал запрос завершения на канале или сокете. Настройте полномочия или аутентификацию на канале или сокете согласно Вашим потребностям.
Необходимо изучить sudo
.
Можно настроить его, чтобы позволить Вам ввести любую команду без пароля, или просто некоторым нравится kill
, или попросить Ваш пароль пользователя (не корень, Ваш) на каждой команде, и т.д. Это очень гибко.
Это может уже быть установлено и настроено в Вашей системе. Дело обстоит так на Ubuntu и OS X, например. В противном случае это доступно для большинства систем Unixy.
/etc/sudoers
?
– enzotib
22.09.2011, 20:03