Я пытался chown
изнутри /opt
и по какой-то причине chown
подпрыгнул к родителю и все поел.
Кто-нибудь может подсказать, почему / как это может произойти, и как избежать этого в будущем? Немного о том, что выполнение команды в данном каталоге может эффективно запустить ее в корневом каталоге.
ubuntu: /opt > sudo chown -R root:www-data .*
chown: changing ownership of '../var/lib/lxcfs/proc/cpuinfo': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/proc/meminfo': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/proc/stat': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/proc/uptime': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/proc/diskstats': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/proc/swaps': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/proc': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/devices': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/blkio': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/hugetlb': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/rdma': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/pids': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/freezer': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/cpuset': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/memory': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/perf_event': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/cpu,cpuacct': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/net_cls,net_prio': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/name=systemd': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/unified': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs': No such file or directory
^C
:ubuntu: /opt >
permissions
chown
Герцог Дугал
источник
источник
sudo chown -R root:wwwdata /opt
согласно диалогу --help ... возможно, использование этой трубы вызвало какую-то проблему ???.*
соответствует..
(родительский каталог, который есть/
) - см. «chmod 777. * -R» родительские каталоги chmod (..)?cd
перейти в корневой каталог и пропустить команду leaing /, либо запустить команду(
, что означает, что команда не будет выполнена до тех пор, пока не будет)
набрано совпадение , что дает возможность нажать Ctrl-C и выручить плохой ошибки (например,rm -rf /tmp/foo-install
и нажмите Enter вместо T).Ответы:
Это произошло потому, что вы использовали:
когда вы должны использовать это вместо:
Во-первых,
-R
рекурсивно для всех каталогов в целевом каталоге.Кроме того,
*
будут соответствовать все файлы и каталоги в текущем каталоге. Далее.*
будут сопоставлены все файлы и каталоги на один уровень выше текущего каталога.Чтобы избежать этого в будущем, вы можете использовать
ls
команду для проверки пути перед выполнениемchown
команды, как в следующих примерах:Другой способ избежать этого - всегда использовать полный путь к каталогу, в который вы хотите запустить команду.
Вот пример:
Редактировать:
Вы можете использовать следующую команду для
chmod
всех скрытых файлов или каталогов, находящихся непосредственно под/opt
(при условии, что первым символом после того,.
что делает их скрытыми, является буква, число, тире или подчеркивание, которое должно быть верно для большинства файлов).Вы можете проверить, какие файлы это будут
chmod
, выполнив следующую команду:Первая часть команды :
for i in /opt/.[A-Za-z0-9-_]*
говорит, что для всех результатов глоба/opt/.[A-Za-z0-9-_]*
присваивают каждому результату переменную «i».Глобус здесь говорит, что первый символ должен быть
.
и что следующий символ[A-Za-z0-9-_]
должен быть любым символом, который является AZ или az или любым числом 0-9 или a-
или a_
.Это позволит исключить результаты
.
и..
которые представляют текущий каталог и каталог выше текущего каталога и будет включать в себя только скрытые файлы и каталоги.Вторая часть команды :
do sudo chmod root:www-data "/opt/$i"
говорит, что нужно выполнить команду для всех переменных, которые соответствуют текущему значению$i
.Третья часть команды :
done
говорит, что я закончил.Кроме того, вы использовали
-R
параметр с,chmod
а-R
параметр является рекурсивным и будет применяться ко всем каталогам и файлам.Когда вы используете только
chmod
команду без параметров, команда будет применяться только к конкретному файлу или каталогу, который вы ей дали, и не будет применяться рекурсивно к каталогам.источник
ls
вывод и очень медленный, пока ответ не используетсяfind
.**
, что даже это должно быть явно включено. ИМХО, вам следует прояснить роль-R
. (2) Людям рекомендуется избегать использования обычного,*
потому что оно может соответствовать именам файлов, начинающимся с-
, которые затем будут интерпретироваться как опции. должен защищать от этого, но я не уверен, что все команды соблюдают это соглашение. … (Продолжение)command
-- *
*
,./*
и даже/opt/*
не удается найти «точечные файлы» (.*
), еслиdotglob
опция не установлена. Как говорят Джошуа Беснеатте и Илккачу , такchown -R /opt
иchown -R .
лучше. … (Продолжение)Glob оболочки
.*
соответствует..
(родительский каталог) в этом случае, к сожалению, это/
:Для дополнительного обсуждения смотрите:
источник
Ваши проблемы возникли, потому что
.*
соответствует всему, что начинается с точки. Контекст является текущим каталогом, так как это выражение не включает путь. Поэтому, если.git
в текущем каталоге есть какие-либо скрытые файлы или папки , вы их сопоставите. Но (как вы увидите, запустивls -a
эту папку), вы также сопоставите.
и..
И
..
, конечно же, это родительский каталог, поэтомуchmod -R
рекурсивно нацелены на все в родительском каталоге.источник
/opt/.*
который не помог бы,/opt/..
такой же, как..
с CWD =/opt
..
в качестве контекста, но это не сработало из-за отсутствующего слеша ...