コピー先のディレクトリのファイル継承許可?


9

ユーザーの読み取り権限(r-- --- ---)のみでファイルをホームディレクトリに作成しています。このファイルを/etc/test/、フォルダのアクセス権が744(rwx r-- r--)である別のディレクトリにコピーしたい。コピーしているファイルがコピー先のフォルダーのアクセス許可を継承できるようにする必要があります。これまでのところ、コピーしたときのファイルアクセス許可は同じままです(r-- --- ---)。setfaclコマンドを試しましたが、うまくいきませんでしたか?助けてください。

PS。私がすることができないだけでchmod -r /etc/test/時間をかけて、このフォルダにコピーされます多くのファイルがあるので、私はのchmodコマンドにファイルがコピーされるたびに実行する必要はありません。


どのsetfaclコマンドを試しましたか?その出力は何でしたか?
ミケル

setfacl -Rm d:u :: rwx、d:g :: r、d:o :: r / etc / test。コマンドを受け入れただけの出力はありませんでした。
LUUUUUUUUUUUUU 2014

ファイルをどのようにコピーしていますか?/bin/cpオプションなしで使用するとどうなりますか?
ミケル

私が使用するコマンドはsudo cp / home / file / etc / test / fileです。私も/ bin / cpを使用してみましたが、別の結果はありませんでした
LUUUUUUUUUUUUU

回答:


14

アクセス許可は通常、ファイルのコピー先のディレクトリによって伝達されませんumask。新しいアクセス許可は、ユーザーのによって制御されます。ただし、ある場所から別の場所にファイルをコピーする場合、ユーザーのumaskファイルは基本的に無視され、ファイルに対する既存のアクセス許可は保持されるという特別な場合があります。この概念を理解することは、あなたが望むものを得るための鍵です。

したがって、ファイルをコピーして現在の権限を「削除cp」するには、--no-preserve=allスイッチを使用して「保持しない」ように指示できます。

あなたのような次のファイルがあるとしましょう。

$ mkdir -m 744 somedir

$ touch afile
$ chmod 400 afile 

$ ll
total 0
-r--------. 1 saml saml 0 Feb 14 15:20 afile

そして、あなたが確認したように、私cpたちがそれを使って盲目的にコピーした場合、これは次のようになります:

$ cp afile somedir/
$ ls -l somedir/
total 0
-r--------. 1 saml saml 0 Feb 14 15:20 afile

これを繰り返しましょうが、今回はcp「権限の削除」を指示します。

$ rm -f somedir/afile 

$ cp --no-preserve=all afile somedir/

$ ls -l somedir/
total 0
-rw-rw-r--. 1 saml saml 0 Feb 14 15:21 afile

コピーされたファイルの権限は664に設定されましたが、どこで取得しましたか?

$ umask
0002

umaskを別のものに変更した場合、このテストを3回繰り返しumaskて、保存されていないものに及ぼす影響を確認できますcp

$ umask 037
$ rm somedir/afile 

$ cp --no-preserve=all afile somedir/
$ ls -l somedir/
total 0
-rw-r-----. 1 saml saml 0 Feb 14 15:29 afile

権限が664ではなく640になっていることに注意してください。これはによって決定されましたumask。これは、ファイルを作成するコマンドに、権限の下位5ビットを無効にするよう指示していました...これらの人:(----wxrwx)。


--no-preserveフラグは、おそらくGNUism標準ではありません。
フォンブランド2014

私はA.でと言うことを意味し、正しい、感謝
SLM

バレンタインデーの精神で、バーチャルキスをします。ありがとう!
LUUUUUUUUUUUUU
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.