すべてのファイルとフォルダーにユーザー権限を付与する


9

システム上のすべてのファイルとフォルダーにアクセスできるユーザーが必要です。これは、ローカルマシンでRSYNCを使用してリモートマシンをバックアップするためのものです。

現時点ではユーザーbackupsを使用していますが、このユーザーをグループに追加してもsudoadminrsyncは次のようなメッセージを返します。

rsync:opendir "/ location / to / folder" failed:Permission denied(13)

rsync:send_files failed to open "/ location / to / file":Permission denied(13)

すべてbackupsにアクセスするためのアクセス許可をユーザーにどのように与えるかを考えます(ユーザーをすべてのグループに追加する以外は-バックアップしようとしているリモートサーバーは、すべてのアカウントがシステム上に独自のユーザーを持つ専用のホスティングサーバーです)。

助けてくれてありがとう。


1
パスの例を挙げられますか?それは中のものなら/proc/devなど、その後のエラーが予想されます。
Phil

ユーザーbackupsを追加しsudoadmin何も変更しません。
favadi

@Phil私は/ homeディレクトリ全体をバックアップしようとしています。失敗しているファイル/ディレクトリは、などの/home/a/c/account/users/mail:username権限がdrwx------あり、が所有しているものmail:4096です。ユーザーbackupsがグループに属しているsudoか、グループにadminアクセス権限がないためにアクセス権がないためと思いますか?私は知らないが、そのようなフォルダ/ファイルでのエラー。
トーマス・クレイソン、2012年

@favadi私はすでにそれをやった...まだ動かない
トーマス・クレイソン、2012年

rsyncsudoを使用してコマンドを実行する必要があります。
Phil

回答:


6

ユーザーbackupsをユーザーグループに追加しただけsudoでは、システム上のすべてのファイルへのアクセスがアカウントに自動的に付与されるわけではありません。sudoコマンドを実行する権限をユーザーに与えます。

あなたは公開鍵認証(おそらくパスフレーズなし)を使用しているので、セキュリティと実装の容易さを念頭に置いてこれに取り組みます。を使用sshすると、特定のコマンドのみを実行するようにユーザーを制限できます。この場合、ユーザーにスーパーユーザー権限でのbackups実行rsyncを許可できます。

すでに鍵交換を実行しており、認証が成功したことを確認しました。ディレクトリをauthorized_keysバッキングするリモートホスト上のファイルで、ユーザーが使用するキーにディレクティブを/home追加できcommand=ますbackups。このディレクティブは、そのキーが認証に使用されている場合にのみ、そのコマンドの実行を許可ます。したがって、キーの最初のフィールドは次のようになります。

command="/path/to/sudo /path/to/rsync -az /home /local/folder" ssh-rsa AAAAB3NzaC1yblahblahblah

さらに進んで、などのオプションをキーに追加できますfrom=myhost,no-pty,no-X11-forwarding

これにより、適切なセキュリティが提供され、基盤となるファイルシステムのアクセス許可を変更する必要がなくなります。authorized_keys期待どおりに機能するまで、ファイルに配置したコマンドを試してみる必要があるでしょう。脳を包み込むのに少し時間がかかるかもしれません。で指定されたコマンドは、authorized_keys基本的にrsync、接続するホストから渡すオプションを上書きします。

にはたくさんの良い情報がありman sshdます。AUTHORIZED_KEYS FORMATセクションを具体的に読みたい。


わかりました、私はフォローしています。そのディレクティブをauthorized_keysファイルに追加すると、スーパーユーザー権限でリモートコマンドを実行できるようになりますか?rsync -e ssh -az backups@domain.com:/home /location/of/local/folderリモートマシンでスーパーユーザーとして実行するように指示するには、コマンドをどのように変更しますか?それとも自動的に実行されますか?あなたの時間と助けをありがとう。:)
トーマス・クレイソン

1
このディレクティブでは、コマンドをスーパーユーザーとして実行することは自動的には許可されません。その特定のキーを認証に使用すると、ユーザーは指定されたコマンドのみに制限されます。スーパーユーザーの権限は「sudo」から取得されます。技術的には、「rsync」コマンド全体をauthorized_keysファイルに入れて、バックアップホストからssh接続を開始するだけです。認証が完了すると、プロセス全体が自動的に開始されます。「ssh backups @ remotehost sudo rsync」のようなものから接続を開始します
ジョージM

それはあなたの脳を包み込むのに少し時間がかかりますが、それが最終的にクリックして、あなたが何ができるかを理解するとき、それはかなりクールです。
ジョージM

2

1つのオプションは、リモートシステムでrsyncサーバーを実行することです。

基本的に、rsync.confwithを作成してuid=rootからを使用しますrsync -az rsync://domain.com

他の誰かが書いた例についてはhttp://pastebin.com/5hQx1mRVを、Ubuntuでサーバーを有効にするための基本についてはrsyncデーモン構成するをご覧ください。

これのセキュリティを考慮する必要があることに注意してください。より良いアプローチは、おそらくリモートシステムをローカルシステムにプッシュすることです。


ありがとうございます。その後/backup/lc、リモートサーバー上のフォルダーからすべてを同期しますか?それを機能させるためにpathビットを変更します/homeか?
Thomas Clayson、

編集してくれてありがとう。これに関する唯一の問題は、静的IPアドレスがどこにあるかを保証できないことです。常に発生するように、cronを使用してこれを実行する必要があります。「プッシュ」すると、IPアドレスが変更されると機能しなくなる可能性があります。:/
トーマス・クレイソン

@ThomasClayson:それが動的DNSの目的です。:)
ウォーレンヤング

1

基礎となるファイルシステムがACLをサポートしている場合は、おそらくACLを使用できます。

各ファイルとディレクトリのACLにグループバックアップを追加する必要があります。ただし、新しく作成されたファイルとディレクトリに自動的に追加されるようにするには、まずデフォルトのACLを既存のすべてのディレクトリに設定する必要があります。したがって、リモートサーバー上で:

sudo find /home -type d -print0 | xargs -0 setfacl -d -m group:backup:r-x

次に、既存のすべてのディレクトリに対するrx権限とファイルの読み取りが必要です。あなたは2つのコマンドでこれを行うことができます(今回は-dなし)

sudo setfacl -R -m group:backup:r-- /home
sudo find /home -type d -print0 | xargs -0 setfacl -m group:backup:r-x

これにより、各ファイルを所有する既存のユーザーとグループを変更せずに、グループバックアップにファイルを読み取る追加の権限が与えられます。

注:検索を加速する| xargsコマンドを使用すると、xargsコマンドに次のオプションを追加できます-P n。nは並列プロセスの数。マシンにあるCPUの数+ 1に設定できます。


この場合、ボトルネックはCPUではなくI / Oであるため、並列xargsはスピードアップしません。
ミケル

Linuxは、変更をディスクにコミットする前にメモリ内のキャッシュを使用するため、ユーザーの観点からは高速に感じられます。また、小さなノートブックhddでも、複数のACLを並行して設定する負荷を処理できます。I / Oはそれほど多くありません。試してみてください:)
ホイヘンス

ここで、superuser.com / a / 422954/53206を読んだだけで、次のように簡単に使用できますsudo setfacl -Rm d:group:backup:r-X,group:backup:r-X /home
ホイヘンス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.