재귀적으로 chown할 수 없습니다.

재귀적으로 chown할 수 없습니다.

나는 다음 명령을 사용하고 있습니다 :

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

하지만 디렉토리가 나열되지 않았다는 오류 메시지가 나타납니다.

뭐가 잘못 되었 니?

답변1

-R옵션을 앞에 놓아야 합니다 .

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

(저는 항상 사용자와 그룹 사이에 콜론 대신 점을 사용하지만 매뉴얼 페이지에는 콜론을 사용해야 한다고 나와 있습니다.)

답변2

Ubuntu의 표준인 GNU coreutils 버전은 ( 사용되지 않는 chown한) 어디에나 있는 옵션을 허용합니다 . --그건:

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 방식을 따르도록 노력하세요.

또한 의 값은 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'), 이전 버전과의 호환성을 위해 계속 지원되지만 권장되지는 않습니다.

관련 정보