
我正在使用這個命令:
chown root:www-data /var/www/example.com -R
但我收到一條錯誤訊息,指出該目錄未列出。
怎麼了?
答案1
你必須把-R
選項放在前面。
chown -R root:www-data /var/www/example.com
(我總是在使用者和群組之間使用點而不是冒號,但手冊頁說應該使用冒號)。
答案2
GNU coreutils 版本chown
是 Ubuntu 下的標準版本,接受放置在任何地方的選項(只要--
不使用)。那是:
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
恕我直言:始終嘗試遵守 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 2001( info coreutils 'chown invocation'
),但仍支援向後相容,但不建議這樣做。