ディレクトリにユーザーchroot
edがあり、すべてがスムーズに機能しています。ただし、このユーザーが属するグループには、supervisor
によって管理されている単一のプロセスを再起動できるようにしたいのですが、どうすればよいかわかりません。
この行を/etc/sudoers
に追加しました:
%mygroupname ALL = (root) NOPASSWD:/usr/bin/supervisorctl restart myprocessname
/usr/bin/Sudo
をchroot
環境の同じパスにコピーしました。また、すべての依存関係を関連する場所にコピーしました(ldd /usr/bin/Sudo
を使用して検出)。
Sudo
がシステム上の追加ファイルのtonを使用することを収集し、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にコピーしようとするよりも、ファイルが存在することを確認してプロセスを再起動するスクリプトをrootとして実行する方が簡単な場合があります。
そのスクリプトは次のようなものです。
#!/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
(これは、ユーザーが/ homeのフォルダーにchrootされていることも想定しています)
このスクリプトがrootとして実行されると、chrootされたユーザーは次のコマンドのいずれかを実行するだけで、空のファイル(restartprocess
と呼ばれる)をホームディレクトリに作成できます(~/
ファイル名の前)
touch restartprocess
echo > restartprocess
> restartprocess
そして、プロセスが再起動されます。