2人のユーザーがいます。パスワードなしでtest1
作成しました。権限とパスワードがあります。 /sbin/nologin
test2
sudo
/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
これにより、ユーザーtest1
(ALL
ファイルのコピーを使用するホスト上)に、パスワード要求なしで任意のコマンドラインsudoers
引数(またはまったくなし)を使用してユーザーとしてコマンドを実行する権限が付与されます。test2
/data/tempWork/fazitst
その後、ユーザーはtest1
次のコマンドを使用して実行できます。
sudo -u test2 /data/tempWork/fazitst
$HOME
コマンドを実行するときに環境変数がユーザーのホームディレクトリを指す必要がある場合は、オペレーティングシステムのバージョンのデフォルト設定によっては、コマンドにこのオプションを追加する必要があるかもしれませんtest2
。この場合、ユーザーが実行するコマンドは次のようになります。-H
sudo
sudo
test1
sudo -Hu test2 /data/tempWork/fazitst
su - test2
環境設定が実行時とまったく同じである必要がある場合は、-i
このオプションが必要です。sudo
sudo -iu test2 /data/tempWork/fazitst