2012-04-26 9 views
0

特定のユーザーのハウスキーピングを実行してからシャットダウンする夜間スクリプトがあります。シャットダウンにはroot権限が必要ですが、管理タスクはファイルがクリーンアップされているユーザーとして実行する必要があります。クリーンアップには時間がかかりませんので、クリーンアップとシャットダウンの両方が同じスクリプト内になければなりません。私の質問は、どのようにこれらの2つのコマンドでスクリプトをcronできるのですか?その最初のコマンドは通常のユーザー(Bobと言う)が実行する必要があります。最初の作業が完了した後でのみ、次の作業をroot(シャットダウン)として実行する必要があります。私はシステムのcrontab(これはBobとして管理者を実行できるが、その後はシャットダウンできない)を試してみた。 root crontab(シャットダウンはできますが、管理タスクはBobとして実行されません)。ヘルプは非常に高く評価されます。システムcrontab:rootとしてスクリプトを実行する方法とユーザーとして

答えて

0

sudoを使用すると、別のユーザーとしてコマンドを実行できます。

私はDebianで次のように試しました。

次のスクリプトを記述しました。

#!/bin/bash 

echo $HOME 

そしてルートとして次のコマンドを実行します。 /home/nonrootuserを印刷し、ルートは通常のユーザとして、ルートの両方として実行することができたことを示しているsome-admin-command

を実行

sudo -u nonrootuser ./script && some-admin-command 

。したがって、scriptにユーザハウスキーピングスクリプトを保存し、nonrootuserをBobに、some-admin-commandをshutdownコマンドに置き換えてrootとして実行します。ファイルのcronジョブで

0

、あなたは、として次のコマンドをコマンドを実行することができます。

0 5 * * * sudo -u nonrootser -H bash script.sh && some-command-another 

そして、あなたは、次のように含まれるファイルscript.shを書き込むことができます。

#!/bin/bash 
echo "Hello World" 
関連する問題