web-dev-qa-db-ja.com

chrootされたシェルのユーザーにSudoコマンドの使用を許可する

ディレクトリにユーザーchrootedがあり、すべてがスムーズに機能しています。ただし、このユーザーが属するグループには、supervisorによって管理されている単一のプロセスを再起動できるようにしたいのですが、どうすればよいかわかりません。

この行を/etc/sudoersに追加しました:

%mygroupname ALL = (root) NOPASSWD:/usr/bin/supervisorctl restart myprocessname

/usr/bin/Sudochroot環境の同じパスにコピーしました。また、すべての依存関係を関連する場所にコピーしました(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

これはそもそも完全に馬鹿げたアイデアですか?

3
vaindil

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

そして、プロセスが再起動されます。

6
Evan Chen