Я пытался добавить права на выполнение sh-файлов в папке. Для этого я по ошибке использовал:
find . -print0 -iname '*.sh' | xargs -0 chmod -v 744
и вывод был:
mode of `.' changed from 0755 (rwxr-xr-x) to 0744 (rwxr--r--)
mode of `./codis.sh' changed from 0644 (rw-r--r--) to 0744 (rwxr--r--)
mode of `./ne fil.sw' changed from 0644 (rw-r--r--) to 0744 (rwxr--r--)
mode of `./.whois1.sh.swo' changed from 0644 (rw-r--r--) to 0744 (rwxr--r--)
mode of `./new file' changed from 0644 (rw-r--r--) to 0744 (rwxr--r--)
mode of `./ezik.sh' changed from 0644 (rw-r--r--) to 0744 (rwxr--r--)
mode of `./.whois1.sh.swp' changed from 0600 (rw-------) to 0744 (rwxr--r--)
mode of `./whois1.sh' retained as 0744 (rwxr--r--)
Теперь я знаю, что правильное использование части find было
find . -iname '*.sh' -print0
Поэтому я создал еще одну находку, вот такую:
find . \! -iname '*.sh' -print0 | xargs -0 chmod 600
чтобы я мог вернуть права доступа для файлов, не относящихся к sh (да, я вижу, что некоторые файлы имеют права 644, а не 600, но сейчас это не имеет значения). Вывод этой команды:
chmod: cannot access `./ne fil.sw': Permission denied
chmod: cannot access `./.whois1.sh.swo': Permission denied
chmod: cannot access `./new file': Permission denied
chmod: cannot access `./.whois1.sh.swp': Permission denied
Я тоже пользовался sudo
, но все равно ничего...
Видимо, я не совсем понимаю права доступа... Если я правильно понял, мне нужны x
права доступа и для каталога, direc
чтобы выполнять команды в этом каталоге.
решение1
Ваш find
cmd также находит текущий каталог " .
". Права этого каталога будут установлены на 600
и, следовательно, вы потеряете права на доступ к файлам в этом каталоге.
Итак cd ..
, chmod 700
укажите каталог, а затем выполните откат find
, который теперь исключает текущий каталог, например так:
find . \! -path . \! -iname '*.sh' -print0 | xargs -0 chmod 600