У меня возникли большие проблемы при изменении разрешения папки myfolder
, находящейся в /
. Я дал команду
sudo chown -R luca:luca /myfolder/.*
Я намеревался изменить владельца всех скрытых файлов в /myfolder
.
К сожалению, я понял, что также было изменено право собственности на /
, что, конечно, оставило меня со сломанной системой. Я думаю, что это произошло потому, что ..
соответствует .*
, но все еще кажется мне странным.
Является ли изменение родительского каталога правильным поведением или я должен подать отчет об ошибке?
Если это была моя ошибка в использовании chown, каковы наилучшие методы, чтобы предотвратить изменение владельца системных папок и файлы?
Помните, что командная строка раскрывается (интерпретируется) оболочкой перед выполнением
sudo chown -R luca:luca /myfolder/.*
интерпретируется сначала как:
sudo chown -R luca:luca /myfolder/. /myfolder/.. /myfolder/.adobe /myfolder/.bash_history
обратите внимание на /myfolder/..
в вашей команде строка
chown -R luca:luca /myfolder/..
эквивалентна chown -R luca:luca /
, что делает «чоун» бегом «назад»
Используйте echo /myfolder/.*
, когда вы используете «*» для проверки. [ 1111]
Ну. Командная строка от имени root очень мощная. Прочитайте некоторые из этих классик. И да, .*
в соответствии с ..
- это именно то, что предназначено. Точка не особенный персонаж. Это соглашение. По соглашению, файлы, которые начинаются с точки, скрываются от представления по умолчанию при перечислении каталога - ни меньше, ни больше. По соглашению, индекс, ведущий к текущему каталогу, получает имя .
, а индекс, ведущий к родительскому каталогу, получает имя ..
.
Что вы должны были сделать, это
chown -R luca:luca /myfolder
Я упоминал, что нет ничего особенного в именах файлов, которые начинаются с точки? Рекурсивный chown
так не считает.
Прямо сейчас вы можете восстановить некоторые функции, изменив владельца обратно на root. В долгосрочной перспективе вам, вероятно, придется переустановить систему.
Как правило:
echo .*
).