Я упаковываю папку с большим количеством подпапок и файлов в Windows с помощью 7zip, загружаю в VPS и затем запускаю команду:
tar -xvzf file.tar.gz
тогда все распакованные файлы и папки имеют разрешения 777. Как мне получить так, чтобы папки имели разрешения 755 и файлы 644?
linux
file-permissions
tar
Каспар Л. Пальги
источник
источник
Ответы:
Если вы работаете
tar(1)
как обычный пользователь, он будет применятьсяumask
по умолчанию. Если вы работаетеtar(1)
какroot
, то вы можете дать--no-same-permissions
опцию командной строки, чтобы попроситьtar(1)
соблюдатьumask
.Итак: либо запустите это как обычный пользователь:
или запустите это как
root
:Вы можете придерживаться
umask 022
в ваш~/.bashrc
,~/.bash_profile
или~/.profile
. (См.bash(1)
Man-страницу для полной информации о файлах запуска. Это сложно.)Подробную информацию
umask
можно найти на странице руководства вашей оболочки, на странице справки поumask(2)
системному вызову или наumask(1posix)
справочной странице утилиты, предоставляемой POSIX (если онаmanpages-posix
установлена).источник
Выполните следующие команды в корне каталога, чтобы установить необходимые разрешения для ваших каталогов и файлов:
Помните о месте между закрывающей фигурной скобкой и обратной косой чертой
источник
\;
Если вы используете заглавную букву X,
chmod
вы можете использовать ее для установки разрешений на выполнение только для каталогов. т.е.источник
Я нашел это решение, которое сработало для меня. Для папок и подпапок:
И для всех файлов (также в папках и подпапках):
Все комментарии приветствуются, если это не очень хороший способ сделать это. Я только начал изучать Linux.
После комментариев, более надежное решение, которое хорошо обрабатывает специальные символы:
источник
the': No such file or directory chmod: cannot access
Logo.txt ': нет такого файла или каталога. Chmod: не может получить доступ к `./blog/wp-content/themes/OneRoom/LOGO': такого файла нет или ди приходской777
опасно и применимо только к очень небольшому меньшинству систем.find . -type f -print0 | xargs -0 chmod 644
. В-name "*"
этом нет необходимости, и онxargs(1)
будет анализировать имена файлов через пробелы или символы новой строки, если только вы не используете-0
-, который анализирует имена файлов поNUL
символу ASCII , который не может появляться в именах файлов. Команда-print0
forfind(1)
просит его отформатировать вывод в режиме, подходящем дляxargs -0
ввода.находить . -type f -exec chmod 644 {} \;
источник