Невозможно выполнить 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 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'), но все еще поддерживается для обратной совместимости, хотя это и не рекомендуется.

Связанный контент