特定のユーザーがパスワードなしで他のユーザーと一緒に実行する必要があるbashを実行する方法

特定のユーザーがパスワードなしで他のユーザーと一緒に実行する必要があるbashを実行する方法

2人のユーザーがいます。パスワードなしでtest1作成しました。権限とパスワードがあります。 /sbin/nologintest2sudo

/data/tempWork/fazitstになければならないスクリプトがありますtest2。今、私はこのスクリプトを実行したいのですが、そこにいる必要がtest1ありますtest2

私はこれを試してみますtest1
/bin/su -c "/data/tempWork/fazitst " - test2

しかし、それはうまくいきませんでした。このコマンドはアプリケーションで実行されているため使用できないため、ssh正しくデバッグできません。ログがありません。 rootでこのコマンドを試しましたが、うまくいきました。

しかし、パスワードが必要だと思います。それでは、パスワードなしで test1スクリプトをどのように実行しますか?test2

答え1

これがまさにsudoデザインの目的です。

まず、rootアクセス権を持つ人は、次のような構成行を作成する必要があります/etc/sudoers(または/etc/sudoers.d/*OSバージョンがサポートしている場合)。

test1 ALL=(test2) NOPASSWD: /data/tempWork/fazitst

これにより、ユーザーtest1ALLファイルのコピーを使用するホスト上)に、パスワード要求なしで任意のコマンドラインsudoers引数(またはまったくなし)を使用してユーザーとしてコマンドを実行する権限が付与されます。test2/data/tempWork/fazitst

その後、ユーザーはtest1次のコマンドを使用して実行できます。

sudo -u test2 /data/tempWork/fazitst

$HOMEコマンドを実行するときに環境変数がユーザーのホームディレクトリを指す必要がある場合は、オペレーティングシステムのバージョンのデフォルト設定によっては、コマンドにこのオプションを追加する必要があるかもしれませんtest2。この場合、ユーザーが実行するコマンドは次のようになります。-Hsudosudotest1

sudo -Hu test2 /data/tempWork/fazitst

su - test2環境設定が実行時とまったく同じである必要がある場合は、-iこのオプションが必要です。sudo

sudo -iu test2 /data/tempWork/fazitst

関連情報