web-dev-qa-db-ja.com

rsync権限の質問-宛先パーマが適切に適用されていません

これは私がやろうとしていることです:

rsync -rvl --chmod=ug=rwX,o=rX test /var/www

そして私がそれをした後、私が得る結果はここにあります:

drwxr-xr-x

(実際にはdrwxr-sr-xですが、それはおそらく重要ではありません...ですか?)

これは明らかに私が望んでいるものではありません。グループに書き込み権限を与えたいのですが、何らかの理由で、rsyncコマンドがそれらに設定していません。

誰かが何かアイデアを持っているのはなぜですか?構文に間違いはありますか?それが役に立ったら、OSXからLinux(Debian)に転送します。

pdate:また、役立つ場合は、umaskと入力すると0002が表示されます。これは問題ではありません。

21
Philip Walton

--chmodsendingサイドのアクセス許可をオーバーライドしますが、-pまたは--permsも指定しない場合、宛先のデフォルトが使用されます(つまり、--chmodは無視されます)。

From man 1 rsync

-chmod

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

33
SimonJ

次のように、--chmod-pオプションとともに使用する必要があります。

$ rsync -avz --chmod=o-rwx -p tata/ tata2/

そしてここに完全なテストがあります:

フォルダーにファイルを作成する

$ mkdir tata
$ mkdir tata2
$ cd tata
$ touch tyoto
$ touch tiuti

デフォルトの権限は次のとおりです:u=rw, g=r, o=r

$ ls -l 
total 0
-rw-r--r-- 1 romain users 0 fév 16 11:48 tiuti
-rw-r--r-- 1 romain users 0 fév 16 11:48 tyoto

パラメータなしでrsyncを試す

$ cd ..
$ rsync -avz tata/ tata2/

宛先のパーマはソースファイルと同じです

$ ls -l tata2
total 0
-rw-r--r-- 1 romain users 0 fév 16 11:48 tiuti
-rw-r--r-- 1 romain users 0 fév 16 11:48 tyoto

Rsyncオプションを指定します--chmod=o-rwx -p

$ rsync -avz --chmod=o-rwx -p tata/ tata2/
$ ls -l tata2
total 0
-rw-r----- 1 romain users 0 fév 16 11:48 tiuti
-rw-r----- 1 romain users 0 fév 16 11:48 tyoto

そして今、あなたのパーマは大丈夫です。

18
Romain

追加する必要があると思います--perms(別名-p)。マンページからの引用:

このオプションがオフの場合、権限は次のように設定されます。

...

新しいファイルは、「通常の」許可ビットがソースファイルの許可に設定され、受信ディレクトリのデフォルトの許可(受信プロセスのumask、または宛先ディレクトリのデフォルトACLで指定された許可)でマスクされ、特別な許可ビットは、新しいディレクトリがその親ディレクトリからsetgidビットを継承する場合。

私はあなたの宛先システムに022のような典型的なumaskがあり、それがグループ書き込みビットがrsyncによって設定されるのを妨げていると思います。残念ながら--chmodは、umaskがどのように適用されるか、適用されないかについては言及していません。

5
Ben Jackson