Я обновил 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:~$
Это потому, что оболочка расширяет «. *» До «..» или вверх на один каталог.
В этом случае, 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 попытался ". *" что вызвало проблему.
Каждая папка содержит файл с именем ..
. Этот файл отличается тем, что указывает на каталог, содержащий текущий рабочий каталог. Например:
$ pwd
/path/to/dir
$ cd ..
$ pwd
/path/to
Поскольку вы указали .*
в качестве аргумента, оболочка расширяет его до каждого файла, начинающегося с «.», Включая ..
. Это означает, что ваша операция выполнялась на всем в текущем рабочем каталоге, а также на родительском каталоге (/home
). Поскольку вы указали рекурсив, вы изменили каждый файл и каталог в папке /home
на любое указанное вами право собственности. На самом деле, вы, возможно, изменили владельца каждого файла в вашей системе. Я бы порекомендовал запустить ls -l /
, чтобы проверить, произошло ли это - если это произойдет, у вас, вероятно, возникнут проблемы.
Я использую это на своих хостах EC2, чтобы исправить разрешения для домашней папки.
#fix home directories
cd /home/
for i in *; do
useradd $i
chown -R $i:$i /home/$i
done
Если вы делаете -R, вам не нужно использовать подстановочные знаки. Просто чоун на верхнем уровне оставь в покое. И, как говорили другие. * Соответствует ..