回答:
mybackupクライアントとサーバーで新しい個別のユーザーアカウントを作成するsudo passwd -l mybackupこれらのアカウントのパスワードをロックして、直接ログインできないようにしますsudoこれらの新しいアカウント/usr/bin/rsync/ --some-long-command /from/here /to/thereがNOPASSWD:、/etc/sudoersを使用してrootとして非常に特定のコマンドを実行することを許可しますsudo visudosudo -u mybackup ssh-keygensudo -u crontab -eリモートrsyncを使用sshしてキーを実行するには、一方または他方の端に追加しますこのように、rootとして実行できる唯一のコマンドは、明示的に許可したコマンドであり、それをアクティブ化できる唯一のリモートユーザーは、インストールされているsshキーペアの残りの半分の所有者です。これは、パスワードもロックされているためです。自分自身、または設定したcrontabでsudoにアクセスできる人のみが可能です。
sudo rsyncrsyncに渡されるオプションを選択できるようにすることは、ユーザーがrsyncを使用して/etc/sudoers、たとえばファイルの読み取り/書き込みを行い、完全なsudoアクセスを自分に許可できることを意味します。
/etc/sudoersコマンドを実行しているすべてのユーザー(またはすべてのユーザー)がrootパスワードなしで(おそらくrsyncでは少し危険)実行できるように編集できます。
コマンド/スクリプト/何でも実行できませんrootか?これはcronを介して実行されると想定しているため、次のようにしてrootジョブを追加します。
sudo crontab -e
注:cronコマンドを中bash -e "..."括弧で囲むか、別のスクリプトで実行するだけで、かなり複雑なことを行うことができます。setuidされていない場合、rootそれを(を介してcron)実行rootすると、許可の問題を解決するように実行されます。
sudo、通常のユーザーがスクリプトを実行できるようにすることができます。許可するより安全ですrsync。
rootユーザーに次のパスワードを与えることができます(ただし、すべきではありません)
sudo passwd root
編集:Setuidビットはスクリプトでは機能しません。それ以外の場合は、バックアッププログラムでsetuidビットを使用できます。
sudo chown root backup
sudo chmod u+s backup
たぶん、あなたはバックアップをcronジョブとして実行したいですか?
sudo whoamireturn、root)なので、sudo passwd必要なだけです。