Почему я не могу установить группу и владельца одной папки, не затрагивая другую?

Я обновил Ubuntu PC с 10.04 до 12.04.

Проблема в том, что все разрешения были неправильными для домашних папок.

Итак, я сделал следующее:

sudo chown -R james:james /home/james/*
sudo chown -R james:james /home/james/.*
sudo chown -R htpc:htpc /home/htpc/*
sudo chown -R htpc:htpc /home/htpc/.*

Но в итоге вы получите все файлы в обеих папках либо в james: james, либо в htpc: htpc, в зависимости от того, каким образом вы выполняете команды.

Как стать связанным и как я могу это исправить?

По запросу:

james@htpc:~$ ls -l /home
total 8
drwxr-xr-x 41 james james 4096 May 20 19:32 htpc
drwxr-xr-x 31 james james 4096 May 20 20:04 james
james@htpc:~$ ls -l /home/htpc
total 236
drwxr-xr-x  4 james james   4096 Nov 25 13:19 Desktop
drwxr-xr-x  2 james james   4096 Mar 13  2011 Documents
drwxr-xr-x  5 james james   4096 Dec 22  2010 Downloads
-rw-r--r--  1 james james    179 Nov 18  2010 examples.desktop
-rwxr-xr-x  1 james james     85 Dec 27  2010 goback
-rw-r--r--  1 james james    425 Nov 28  2010 modelines
drwxr-xr-x  5 james james   4096 Dec 27  2010 Music
drwxr-xr-x 22 james james   4096 Oct 29  2012 Pictures
drwxr-xr-x  2 james james   4096 Nov 18  2010 Public
drwxr-xr-x  2 james james   4096 Nov 18  2010 Templates
-rwxr-xr-x  1 james james    251 Dec 27  2010 testmode
drwxr-xr-x  2 james james   4096 Dec 23  2010 Videos
-rwxr-xr-x  1 james james 190672 Nov  6  2010 winetricks
james@htpc:~$ 
2
задан 20 May 2013 в 23:08

3 ответа

Это потому, что оболочка расширяет «. *» До «..» или вверх на один каталог.

В этом случае, IMO, лучше всего использовать find

Become root

sudo -i

run find

find /home/$user -exec chown $user:$user {} \;

Изменить $ user на соответствующего пользователя name

Теоретически, chown должен работать с ключом -R и без подстановочного знака

sudo chown -R $user:$user /home/$user

, но я думаю, что это пропускает скрытые или .files, именно поэтому RoboJ1M попытался ". *" что вызвало проблему.

0
ответ дан 20 May 2013 в 23:08

Каждая папка содержит файл с именем ... Этот файл отличается тем, что указывает на каталог, содержащий текущий рабочий каталог. Например:

$ pwd
/path/to/dir
$ cd ..
$ pwd
/path/to

Поскольку вы указали .* в качестве аргумента, оболочка расширяет его до каждого файла, начинающегося с «.», Включая ... Это означает, что ваша операция выполнялась на всем в текущем рабочем каталоге, а также на родительском каталоге (/home). Поскольку вы указали рекурсив, вы изменили каждый файл и каталог в папке /home на любое указанное вами право собственности. На самом деле, вы, возможно, изменили владельца каждого файла в вашей системе. Я бы порекомендовал запустить ls -l /, чтобы проверить, произошло ли это - если это произойдет, у вас, вероятно, возникнут проблемы.

0
ответ дан 20 May 2013 в 23:08

Я использую это на своих хостах EC2, чтобы исправить разрешения для домашней папки.

#fix home directories  
cd /home/  
for i in *; do   
    useradd $i  
    chown -R $i:$i /home/$i  
done  

Если вы делаете -R, вам не нужно использовать подстановочные знаки. Просто чоун на верхнем уровне оставь в покое. И, как говорили другие. * Соответствует ..

0
ответ дан 20 May 2013 в 23:08

Другие вопросы по тегам:

Похожие вопросы: