chown -R пользователь: пользователь. * изменяет разрешения назад: это правильное поведение?

7

У меня возникли проблемы при изменении разрешения папки myfolder , проживающей в / . Я выпустил команду

sudo chown -R luca:luca /myfolder/.*

Мое намерение состояло в том, чтобы сменить владельца всех скрытых файлов в /myfolder .

К сожалению, я понял, что также изменилось владение / , что, конечно, оставило меня со сломанной системой. Я думаю, это произошло потому, что .. соответствует .* , но все равно кажется мне странным.

Изменяет ли родительский каталог правильное поведение или должен ли я записывать отчет об ошибке?

Если это была моя ошибка при использовании chown, какие лучшие методы использовать для предотвращения изменения права собственности на системные папки и файлы?

    
задан lucacerone 05.07.2013 в 12:14
источник

2 ответа

4

Помните, что командная строка расширяется (интерпретируется) оболочкой перед выполнением

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 /
который заставляет chown работать «назад»

Используйте echo /myfolder/.* , когда вы используете «*» для подтверждения.

    
ответ дан Emmanuel 05.07.2013 в 12:35
источник
4

Ну. Командная строка как root очень мощная. Ознакомьтесь с некоторыми этими классиками. И да, .* соответствует .. - это именно то, что предназначено. Точка не является особым символом. Это соглашение. По соглашению, файлы, начинающиеся с точки, скрыты от представления по умолчанию при перечислении каталога - не что иное, и ничего более. По соглашению, inode, ведущий к текущему каталогу, получает имя . , а inode, ведущее к родительскому каталогу, получает имя .. .

Что вы должны были сделать, это

chown -R luca:luca /myfolder

Я упоминал, что нет ничего особенного в именах файлов, начинающихся с точки? Рекурсивный chown не так думает.

В настоящий момент вы можете спасти некоторые функции, изменив права собственности на root. В конечном итоге вам, вероятно, придется переустановить систему.

Как правило:

  1. Избегайте работать как root.
  2. Если вы работаете с правами root, прочитайте каждую команду дважды, прежде чем нажать Enter.
  3. Если вы не уверены в расширении, попробуйте сначала с помощью «безопасной» команды (например, echo .* ).
  4. Не работает как root.
  5. Существует множество задач, которые можно безопасно выполнять с помощью графического интерфейса (ваша задача - пример такой задачи).
  6. Я упоминал, что вам следует избегать использования учетной записи root?
ответ дан January 05.07.2013 в 12:44