rsyncのrootアカウントを有効にする必要がありますか?


10

rootアカウントを有効にするにはどうすればよいですか?通常はお勧めしませんが、rsyncを使用してサーバーをバックアップする非対話型スクリプトをセットアップしたいと思います。使用することはできます--rsync-path="sudo rsync"が、sudoパスワードを平文で保存する必要があります。これは、rootアカウントを有効にするよりもはるかに悪いようです。

回答:


10
  1. mybackupクライアントとサーバーで新しい個別のユーザーアカウントを作成する
  2. sudo passwd -l mybackupこれらのアカウントのパスワードをロックして、直接ログインできないようにします
  3. sudoこれらの新しいアカウント/usr/bin/rsync/ --some-long-command /from/here /to/thereNOPASSWD:/etc/sudoersを使用してrootとして非常に特定のコマンドを実行することを許可しますsudo visudo
  4. を使用して、ローカルからリモートホストへの新しいパスワードなしのSSHキーを作成します。 sudo -u mybackup ssh-keygen
  5. トランスポートとしてsudo -u crontab -eリモートrsyncを使用sshしてキーを実行するには、一方または他方の端に追加します

このように、rootとして実行できる唯一のコマンドは、明示的に許可したコマンドであり、それをアクティブ化できる唯一のリモートユーザーは、インストールされているsshキーペアの残りの半分の所有者です。これは、パスワードもロックされているためです。自分自身、または設定したcrontabでsudoにアクセスできる人のみが可能です。


これは、sudoersで非常に具体的なコマンドを許可することを私が考えていなかったこととまったく同じです( 'rsync'を許可しました)。素晴らしい提案!
Olivier Lalonde

2
「非常に具体的な...コマンド」を示すための+1。それ以外の場合、ユーザーに実行する権利を与え、sudo rsyncrsyncに渡されるオプションを選択できるようにすることは、ユーザーがrsyncを使用して/etc/sudoers、たとえばファイルの読み取り/書き込みを行い、完全なsudoアクセスを自分に許可できることを意味します。
スザンヌデュペロン2013年

7
  1. /etc/sudoersコマンドを実行しているすべてのユーザー(またはすべてのユーザー)がrootパスワードなしで(おそらくrsyncでは少し危険)実行できるように編集できます。

  2. コマンド/スクリプト/何でも実行できませんrootか?これはcronを介して実行されると想定しているため、次のようにしてrootジョブを追加します。

    sudo crontab -e
    

    注:cronコマンドを中bash -e "..."括弧で囲むか、別のスクリプトで実行するだけで、かなり複雑なことを行うことができます。setuidされていない場合、rootそれを(を介してcron)実行rootすると、許可の問題を解決するように実行されます。


問題は、ローカルマシンでスクリプトをセットアップし、それをrootとして実行すると、サーバーで権限の問題が発生することです。サーバーにスクリプトをセットアップしてrootとして実行すると、ローカルマシンよりも権限の問題が発生します。つまり、ローカルマシンとサーバーマシンの両方でroot権限が必要です。
Olivier Lalonde、2011年

両端にスクリプトを記述してsudo、通常のユーザーがスクリプトを実行できるようにすることができます。許可するより安全ですrsync
Oli

須藤は素晴らしいアイデアです。どのユーザーがどのコマンドを実行できるかを正確に指定できます。やれ。
フランク

6

rootユーザーに次のパスワードを与えることができます(ただし、すべきではありません)

sudo passwd root

編集:Setuidビットはスクリプトでは機能しません。それ以外の場合は、バックアッププログラムでsetuidビットを使用できます。

sudo chown root backup
sudo chmod u+s backup

たぶん、あなたはバックアップをcronジョブとして実行したいですか?


1
sudoは、ユーザー rootであるrootのenvとして実行されるため、「root」を指定する必要はありません。(sudo whoamireturn、root)なので、sudo passwd必要なだけです。
マルコチェッピ

setuidはスクリプトでは機能しません
enzotib

そう、スクリプトは、she-bang行で指定されたシェルによって実行されます。誤報してすみません。
フランク
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.