나는 다음 명령을 사용하고 있습니다 :
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
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 2001( info coreutils 'chown invocation'
), 이전 버전과의 호환성은 여전히 지원되지만 권장되지 않습니다.