システムへのアクセスが制限されたユーザーがいます(つまり、彼はsudoerではありません)。単発。
私(システム管理者)が信頼し、問題なく root として実行するスクリプトやバイナリがありますget-todays-passphrase.sh
。このスクリプトの作業は、「個人」(Bobまたはroot以外のユーザー/グループ所有)ファイルからデータを読み取り、ファイルの特定の行/srv/daily-passphrases
(今日の日付に対応する行)のみを出力することです。
Bobなどのユーザーいいえファイルに記載されていても明日のパスワードがわかります。したがって、ファイルは/srv/daily-passphrases
Unix権限で保護されているため、Bobなどの非ルートユーザーいいえファイルへの直接アクセスを許可します。ただし、get-todays-passphrase.sh
「フィルタ処理された」データを返すスクリプトは常に実行できます。
結論として(長い話を短くバージョン):
- Bobは保護されたファイルを読み取ることができません。
- このスクリプトは保護されたファイルを読み取ることができます。
- Bobは常にファイルを読み取ることができるスクリプトを実行できます。
Unixファイル権限内でこれを実行できますか?それとも、Bobがスクリプトを起動すると、そのスクリプトは常にBobと同じ権限で実行されますか?
答え1
これは実際には非常に一般的で非常に簡単です。 sudo
ユーザーが呼び出すことができる特定のアプリケーションを制限できます。つまり、root権限をすべて付与する必要もなく、sudo
権限も付与することはできません。特定のコマンドの実行。これはまさにあなたが望むものであり、ユーザーがSSHを介してGitリポジトリをプッシュできるようにするなどの作業では非常に一般的な慣行です。
これを行うには、/etc/sudoers
次の行を追加するだけです。
bob ALL=(root) NOPASSWD: /path/to/command/you/trust
(このNOPASSWD:
部分は必須ではありませんが、この状況でよく使われる部分です。) このとき sudo を通じて呼び出すことができますがbob
、/path/to/command/you/trust
そうでなければ呼び出せません。
つまり、誰かにrootアクセス権を与えること(ここで行うこと)がまさに望むものではないかもしれません。スクリプトに欠陥がある場合、ボックスがルーティングされる危険性があることは注目に値します。このため、たとえば、特定のファイルを所有するユーザーを具体的に作成し、そのユーザーにファイルを提供してspecialuser
そのchown
ユーザーにすることを好む/etc/sudoers
場合があります。bob
この場合、追加する行は次のsudoers
ようになります。
bob ALL=(specialuser) NOPASSWD: /path/to/command/you/trust
答え2
はじめに:
コメントで指摘して理由を説明したようにこの回答Linuxカーネルは無視します。ユーザーIDの設定/起動設定スクリプトを処理するときのビットです。ベンジャミンの答えを繰り返すことはありません。スクリプトそして実行可能私の答えを正しくしてください。
短い答え:使用設定
詳細な手順:
- 新しいグループを作成する(例:readpass)
- このグループをパスワードファイルの所有者にする
sudo chown :readpass thatfile
- ファイルが属するグループのみが読み取れるように設定
sudo chmod g=r,o= thatfile
- 実行ファイルを作成するシードパスを読む:
sudo chmod g+s thatfile
これにより、実行可能ファイルが属するグループの権限で実行可能ファイルが実行され、ファイルを読み取ることができます。