68

サーバーAからサーバーBにファイルを定期的にrsyncするための次のセットアップがあります。サーバーBには、次の構成でrsyncデーモンが実行されています。

read only = false
use chroot = false
max connections = 4
syslog facility = local5
log file = /var/adm/rsyncd.log
munge symlinks = false
secrets file = /etc/rsyncd.secrets
numeric ids = false
transfer logging = true
log format = %h %o %f %l %b


[BACKUP]
        path = /path/to/archive
        auth users = someuser

サーバー AI から次のコマンドを発行しています。

rsync -adzPvO --delete --password-file=/path/to/pwd/file/pwd.dat /dir/to/be/backedup/ someuser@192.168.100.100::BACKUP

BACKUP ディレクトリは、誰でも完全に読み取り/書き込み/実行できます。サーバー A から rsync コマンドを実行すると、次のように表示されます。

afile.txt
         989 100%    2.60kB/s    0:00:00 (xfer#78, to-check=0/79)

バックアップしたいディレクトリ内のすべてのファイルごとに。tmp ファイルを書き込もうとすると失敗します。

rsync: mkstemp "/.afile.txt.PZQvTe" (in BACKUP) failed: Permission denied (13)

後で何時間もグーグルで検索しましたが、非常に単純な許可の問題と思われるものをまだ解決できません。アドバイス?前もって感謝します。

追加情報

プロセスの開始時に次のことが発生することに気付きました。

rsync: failed to set permissions on "/." (in BACKUP): Permission denied (13)

「/」にパーミッションを設定しようとしていますか?

編集

私はユーザーとしてログインしています - someuser. 私の宛先ディレクトリには、その内容を含め、すべてのユーザーに対して完全な読み取り/書き込み/実行権限があります。さらに、宛先ディレクトリは someuser によって所有され、someuser のグループに属しています。

ファローアップ

SSHを使用するとこれが解決することがわかりました

4

18 に答える 18

29

rsyncはフォルダー自体の変更時間を更新しようとしたため、リモートマシンでrsyncされたユーザーがフォルダーの内容とフォルダー自体への書き込みアクセス権を持っていることを確認してください。

于 2012-06-14T20:52:53.317 に答える
20

あなたがこれを機能させたとしても、私は最近同様の出会いがあり、SOまたはGoogle検索はすべて基本的な許可の問題を扱っていたため、何の助けにもなりませんでした.ほとんどの状況で。

権限が拒否された場合に確認することの 1 つは、所有者とグループを含む両方のサーバーで権限がまったく同じであるが、rsync 転送が一方のサーバーでは一方の方法で機能し、他方の方法では機能しないという rsync に問題があることを最近発見したことです。

サーバーで許可が拒否されたという問題があり、SELinuxが有効になっていることが判明しました。これにより、ファイル/フォルダーのPOSIX許可が上書きされます。そのため、問題のフォルダーはルートが実行されている 777 であった可能性がありますが、コマンド SELinux が有効になっており、rsync から「アクセス許可が拒否されました」エラーを生成するアクセス許可が上書きされます。

コマンドを実行getenforceして、マシンで SELinux が有効になっているかどうかを確認できます。

私の状況では、SELINUX は不要であり、正常に動作していて有効化に問題が発生したサーバーでは既に無効になっているため、SELINUX を完全に無効にすることになりました。無効にするには、 を開い/etc/selinux/configて設定しSELINUX=disabledます。setenforce 0一時的に無効にするには、 SELinux を強制ではなく警告を出力するpermissive状態ではなく状態に設定するコマンドを実行できます。enforcing

于 2012-10-18T13:55:30.767 に答える
6

元のファイルのアクセス許可が保持されないため、これはすべての人に適しているとは限りませんが、私の場合は重要ではなく、問題を解決しました。rsync にはオプションがあります--chmod:

--chmodこのオプションは、rsync に 1 つ以上のカンマ区切りの lqchmodrq 文字列を転送中のファイルのアクセス許可に適用するように指示します。結果の値は、送信側がファイルに提供したパーミッションであるかのように扱われます。つまり、 --perms が有効になっていない場合、このオプションは既存のファイルに影響を与えないように見える可能性があります。

これにより、すべてのファイル/ディレクトリで必要なアクセス許可が強制されます。例えば:

rsync -av --chmod=Du+rwx SRC DST

転送されたすべてのディレクトリに、ユーザーの読み取り、書き込み、および実行を追加します。

于 2016-01-19T10:54:06.733 に答える
1

Raspberry pi またはその他の Unix システムを使用している場合は、リモート マシンにプログラムsudoの場所を伝える必要があります。rsyncsudo

安全のためにフルパスを入れました。

これが私の例です:

rsync --stats -paogtrh --progress --omit-dir-times --delete --rsync-path='/usr/bin/sudo /usr/bin/rsync'  /mnt/drive0/ pi@192.168.10.238:/mnt/drive0/
于 2021-01-04T20:41:32.343 に答える
0

宛先ディレクトリとサブ ディレクトリのグループ ユーザー名は、ユーザーごとに同じにする必要があります。

ユーザーが「abc」の場合、宛先ディレクトリは lrwxrwxrwx 1 abc abc 34 Jul 18 14:05 Destination_directory である必要があります

コマンド chown abc:abc Destination_directory

于 2021-08-11T10:04:05.373 に答える
0

/media/drivename現在上記で言及されていない一般的なエラーは、パーティションがマウントされていないときにマウント スペース (例: ) に書き込もうとすることだと思います。それもこのエラーを生成します。

暗号化されたドライブが自動マウントに設定されているが、そうでない場合は、マウントされるはずのスペースに書き込みを試みる前に、暗号化されたパーティションの自動ロック解除の問題である可能性があります。

于 2016-10-17T08:44:24.263 に答える