Ответы:
Я почти уверен, что -R
флаг работает - он всегда так и есть для меня. То, что не сработает, и то, что сбило меня с толку в начале использования командной строки, это использование *
в каталоге со скрытыми файлами / каталогами. Так делать
$ chown -R /home/user/*
не будет делать скрытые файлы и каталоги. Однако, если вы последуете с
$ chown -R /home/user/.[^.]*
тогда вы будете делать все скрытые файлы, (но не .
или ..
как /home/user/.*
будет делать). Сказав все это, я ожидал бы
$ chown -R /home/user
чтобы получить все скрытые файлы и каталоги внутри /home/user
- хотя это, конечно, также изменит права доступа к самому каталогу, что может не соответствовать вашим ожиданиям.
chown nginx:nginx -R /path/to/.[^.]*
и это только изменило владение скрытыми файлами .dot. не все.
*
и следовать им, .[.^]*
чтобы получить все файлы.
я считаю, что следующая команда должна работать для этого
chown -hR userid:usergroup /nameofdirectory/nameofsubdir/
"chown -R" работает, но альтернативой будет использование find.
find /path/to/dir -exec chown USER {} \;
+
вместо -exe в ;
качестве терминатора для -exec будет более эффективным, так как будет использовать минимально необходимое число вилок для сгущения вместо одного разветвления на файл / каталог
Использование для цикла с ls -A
параметром, мы можем найти все скрытые файлы и директории исключить .
и ..
затем изменить владельца для всех скрытых файлов и каталогов.
for i in `ls -A | grep "^\."`;do chown -R user:group $i;done
Используйте xargs
опцию сls -A
ls -A | grep "^\." | xargs chown user:group
Для получения более подробной информации нажмите здесь и посетите мой сайт
Кроме того, если вы похожи на меня, вы, вероятно, будете использовать chown в основном из текущего каталога. Я привык работает это следующим образом : chown rails.rails -R *
. Простое изменение звездочки на точку (сокращение от текущего каталога), например, так: chown rails.rails -R .
ввод всех скрытых каталогов.
chown
будет работать со скрытыми файлами и каталогами. В следующем примере мы изменим владельца пользователя и группы для всех файлов в ~/some/folder
. Все файлы включают в себя все скрытые файлы (например .bashrc
, .profile
и т. Д.) И папки на ~/some/folder
уровне и ниже. В частности, обратите внимание, что мы не хотим менять владельца ~/some
, и поэтому мы исключим файл ~/some/..
из изменений владельца.
$ cd ~/some/folder
$ sudo chown -R usrname:grpname .
$
Вы могли бы сделать что-то вроде
for i in `ls -A`;do chown -R user:group $i;done
Символ -A
( заглавная A) важен, поскольку исключает «.» а также '..'
chown
каталогом имеет побочный эффект: вы изменяете права доступа к самому каталогу, а также ко всему его содержимому, что может быть, а может и не быть тем, что вы хотите.