web-dev-qa-db-ja.com

ディレクトリにコピーされたファイルのアクセス許可を自動的に変更するにはどうすればよいですか?

ディレクトリにコピーされたファイルのアクセス許可の変更を自動化したいのですが。たとえば、フォルダXにコピーされたファイルはすべてモード755であり、フォルダYにコピーされたファイルはモード700である必要があります。

アドバイスしてください、ありがとう!

2
The Chosen One

これにはumaskを使用できます。モードを理解するには、次のようにします。

 7777 
-umask 
 =新しい権限

例(Linux):

 777 
-022 
 755 

umaskは022で、アクセス許可はフォルダーの場合は755、ファイルの場合は644になります。 umask 0027のようなものを〜/ .profileに入れて、ログインするたびにロードするようにします。

更新(懐疑的なコメントのため):

$ umask 
0077

$ ll
total 0
-rw-rw-rw- 1 jaroslav jaroslav 0 Nov  9 20:26 00
-rw-rw-rw- 1 jaroslav jaroslav 0 Nov  9 20:26 01
-rw-rw-rw- 1 jaroslav jaroslav 0 Nov  9 20:26 02
-rw-rw-rw- 1 jaroslav jaroslav 0 Nov  9 20:26 03

$ rm -rf ../copies/*; \
  /bin/cp --no-preserve=mode,ownership * ../copies/; ll ../copies/ 
total 0
-rw------- 1 jaroslav jaroslav 0 Nov  9 20:33 00
-rw------- 1 jaroslav jaroslav 0 Nov  9 20:33 01
-rw------- 1 jaroslav jaroslav 0 Nov  9 20:33 02
-rw------- 1 jaroslav jaroslav 0 Nov  9 20:33 03

標準のunix権限を使用して、ディレクトリごとにこれを行うことは不可能だと思います。ただし、ACLはこれを実行できます。

1
MyCatsBreath