У меня есть пользователь chroot
редактор к каталогу, и все работает гладко. Я хочу группу, в которой находится этот пользователь смочь перезапустить единственный процесс, которым этим управляют supervisor
, однако, и я не могу выяснить как.
Я добавил эту строку к /etc/sudoers
:
%mygroupname ALL = (root) NOPASSWD:/usr/bin/supervisorctl restart myprocessname
Я скопировал /usr/bin/sudo
к тому же пути в chroot
среда. Я также скопировал все его зависимости к соответствующим местам (найденный использованием ldd /usr/bin/sudo
).
Я собрал это sudo
использует тонну дополнительных файлов в системе, и я скопировал их в chroot
среда. Я застреваю теперь, однако, и не могу закончить эту ошибку. Что я пропускаю?
sudo
журнал (разрывы строки для удобочитаемости):
Nov 10 20:29:04 sudo[3593] pam_setcred: Failure setting user credentials @
sudo_pam_begin_session()
/build/sudo-1bDJzQ/sudo-1.8.16/plugins/sudoers/auth/pam.c:274
Nov 10 20:29:04 sudo[3593] pam_open_session: Module is unknown @
sudo_pam_begin_session()
/build/sudo-1bDJzQ/sudo-1.8.16/plugins/sudoers/auth/pam.c:283
Действительно ли это - абсолютно глупая идея во-первых?
Вместо того, чтобы пытаться скопировать sudo двоичный файл и его зависимости в chroot, могло бы быть легче иметь сценарий, работающий как корень, который проверяет, когда файл существует и перезапускает процесс.
, Что сценарий мог бы быть чем-то вроде этого:
#!/bin/bash
restartfile="restartprocess"
while :
do
for user in /home/*
do
if [ -f $user/$restartfile ]
then
supervisorctl restart myprocessname
rm $user/$restartfile
fi
done
sleep 5 #Adjust file checking time interval
done
(Это также принимает, пользователь является chrooted к папке в / домой)
, После того как этот сценарий работает как корень, chrooted пользователь должен был бы просто выполнить одну из следующих команд для создания пустого файла (названный restartprocess
) в его корневом каталоге (Вы могли добавить ~/
перед именем файла):
touch restartprocess
echo > restartprocess
> restartprocess
И процесс был бы перезапущен.