У меня возникли большие проблемы при изменении разрешения папки, myfolder
в которой он находится /
. Я выпустил команду
sudo chown -R luca:luca /myfolder/.*
Мое намерение состояло в том, чтобы изменить владельца всех скрытых файлов в /myfolder
.
К сожалению, я понял, что также /
было изменено право собственности , что, конечно, оставило меня со сломанной системой. Я думаю, что это произошло из-за ..
совпадений .*
, но все же мне кажется странным.
Правильное ли изменение родительского каталога или я должен отправить отчет об ошибке?
Если это была моя ошибка при использовании chown, какие рекомендации лучше использовать для предотвращения смены владельца системных папок и файлов?
permissions
filesystem
chown
hidden-files
lucacerone
источник
источник
..
спички.*
.*
означает любой файл, который заканчивается на.
*.
означает, что любой файл, который начинается с.
/
непосредственное изменение (создание папок, удаление и т. Д.), Если в этом нет крайней необходимости (откройте вопрос о том, чего вы хотели достичь). Также опасно использовать подстановочные знаки + привилегии root, потому что чаще всего вы не уверены на 100%, на что повлиял подстановочный знак.chmod
иchown
похожие команды, обе начинаются сch
, содержатo
и имеют две другие похожие буквы (n
иm
). </ literal> Серьезно, они оба имеют форму[cmd] -R [mode or user] [one or more files]
. Некоторые решения, предлагаемые по этому вопросу, также подходят для вашего случая, например, это решение от Шона Рейфшнайдера (в середине). Этот ответ также применим к скрытым файлам только путем удаления шаблона glob для не скрытых файлов.Ответы:
Помните, что командная строка раскрывается (интерпретируется) оболочкой перед выполнением
сначала интерпретируется как:
обратите внимание
/myfolder/..
в вашей командной строкеchown -R luca:luca /myfolder/..
эквивалентно тому,chown -R luca:luca /
что чоун бежит "задом наперед"
Используйте,
echo /myfolder/.*
когда вы используете "*" для подтверждения.источник
/myfolder
. Командаfind
является излишней и прерывается именами файлов, содержащими пробелы. (если вы хотите рекурсивно изменять файлы,find /myfolder | xargs chown luca:luca
похоже наchown -R luca:luca /myfolder
).Хорошо. Командная строка от имени root очень мощная. Прочитайте некоторые из этих классических. И да,
.*
соответствие..
именно то, что предназначено. Точка не особенный персонаж. Это соглашение. По соглашению, файлы, которые начинаются с точки, скрываются от представления по умолчанию при перечислении каталога - ни меньше, ни больше. По соглашению, индекс, ведущий к текущему каталогу, получает.
имя, а индекс, ведущий к родительскому каталогу, получает..
имя.То, что вы должны были сделать, было
Я упоминал, что нет ничего особенного в именах файлов, начинающихся с точки? Рекурсивный
chown
так не считает.Прямо сейчас вы можете восстановить некоторые функции, изменив владельца обратно на root. В долгосрочной перспективе вам, вероятно, придется переустановить систему.
Как общее правило:
echo .*
).источник
chown -R luca:luca /myfolder/.[^.]*
я думаюecho .*
хороший способ попробовать расширение. Он покажет вам именно то, что видит оболочка.ls .*
может быть немного более запутанным, так как это пойдет вниз по каталогам (ls -d .*
может быть, лучше, но можно было бы просто использоватьecho .*
)