Рекурсивный выбор, начиная с каталога над текущим каталогом

Мне не удалось войти в свою учетную запись «admin», и Alt + Ctrl + F1 показал, что все мои файлы принадлежат моему «стандартный» пользователь. Одд.

Так что я осторожно перешел на /home/admin и сделал

sudo chown -R admin:admin *

.* тоже).

Великий.

Тогда я не смог войти как «стандартный» пользователь, и оказалось, что все файлы в /home/standard теперь принадлежат «admin».

1112 Довольно забавно. Почему это происходит?

sudo chown -R standard:standard /home/standard/*

сделал то же самое, изменил /home/admin, а также /home/standard.

Я более запутан, чем обычно, потому что я пытался обновить систему до 15.04, и это в значительной степени сломало мой компьютер, поэтому я возвращаюсь к 14.04, пожалуйста, будьте терпеливы со мной.

22
задан 3 June 2015 в 06:26

2 ответа

Эта проблема вызывается, потому что Вы работали:

sudo chown -R admin:admin .*

Мы знаем это . указывает на текущий каталог и .. указывает на родительский каталог. Когда Вы выполняете команду с .*, это просто означает, что соответствуют любому скрытому файлу в текущем каталоге (утверждение с .), сам текущий каталог (.), родительский каталог (..). Просто поместите что-либо после . (* средства 0 или больше символов). В результате родительский каталог наряду со всем этим дочерние каталоги добирается chown- редактор к admin:admin.

Взгляд на этот тест:

test$ ls -al
drwxrwxr-x 4 foo foo 4096 Jun  3 07:15 .
drwxrwxr-x 4 foo foo 4096 Jun  2 18:06 ..
drwxrwxr-x 2 foo foo 4096 Jun  3 07:15 egg
drwxrwxr-x 2 foo foo 4096 Jun  3 07:12 spam

$ sudo chown -R bar:bar spam/.*

test$ ls -al
drwxrwxr-x 4 bar  bar  4096 Jun  3 07:15 .
drwxrwxr-x 4 foo  foo  4096 Jun  2 18:06 ..
drwxrwxr-x 2 bar  bar  4096 Jun  3 07:15 egg
drwxrwxr-x 2 bar  bar  4096 Jun  3 07:12 spam

Для возвращения назад, Вы должны chown затронутые каталоги снова.

Я не действительно уверен, каков Ваш план был, но здесь является некоторыми идеями:

  • Кому: chown любой каталог рекурсивно (включая скрытые файлы):

    sudo chown -R foo:foo /spam/egg/
    
  • Кому: chown только файлы (включая скрытые файлы) в том каталоге (не сам каталог):

    (shopt -s dotglob && sudo chown -R foo:foo egg/*)
    
  • Кому: chown только нескрытые файлы (без самого каталога):

    sudo chown -R foo:foo egg/*
    
30
ответ дан 3 June 2015 в 06:26

Я думаю, что это ".*" параметр для файлов; это соответствует всему запускающемуся с, включая "." и ".." файлы ".." родительский каталог, который включает все под ним.

лучший способ состоит в том, чтобы создать резервную копию одной папки и определить фактическую папку, которую Вы хотите изменить (/home/admin).

0
ответ дан 3 June 2015 в 06:26

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

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