再帰的にchownできません。

再帰的にchownできません。

私は次のコマンドを使用しています:

chown root:www-data /var/www/example.com -R 

ただし、ディレクトリが一覧表示されないというエラーメッセージが表示されます。

何が問題なの?

答え1

-Rオプションを最初に入れる必要があります。

chown -R root:www-data /var/www/example.com 

(私は常にユーザーとグループの間にコロンの代わりにドットを使用しますが、マニュアルページにはコロンを使用する必要があることを示しています。)

答え2

GNU coreutilsバージョンはchownUbuntuの標準バージョンであり、--使用されていない限りどこにでも配置されたオプションを受け入れます。それは:

chown foo:bar some/location -R
chown -R foo:bar some/location

どちらも有効です。理由はどのようにgetopt_long()働く私の本では、これはバグです。エラーを起こしたり記録したりする必要がありますが、私が知っている限り、それは本当ではありません。

chown foo:bar some/location -- -R

というディレクトリを探します-R


ただし、環境変数を設定し、POSIXLY_CORRECT名前付きディレクトリがない場合、最初の例は失敗し、-R再び発生しません。

$ export POSIXLY_CORRECT=
$ chown -v :foo a/ -R
ownership of `a/' retained as foo:foo
chown: cannot access `-R': No such file or directory

IMHO:常にPOSIX方式に従おうとします。ある日、POSIXを適用する他のシステムにそのコマンドを入力してPOSIX方式を破ることができるからです。

また、の値はPOSIXLY_CORRECT何の影響もありません。無効にはなりません。

export POSIXLY_CORRECT=0
export POSIXLY_CORRECT=no
export POSIXLY_CORRECT=false
export POSIXLY_CORRECT=...

誰かが必要ですunset


chownシステムが他のツールを使用して設定されているか、すでに設定されている可能性POSIXLY_CORRECTがあります。

確認方法:

export | grep POSIX
chown --version
# etc.

参考までに、ドット、を使用して.グループとユーザーを区別することは廃止されました。POSIX 2001info coreutils 'chown invocation')、以前のバージョンとの互換性は依然としてサポートされていますが、お勧めできません。

関連情報