Я упаковываю папку с большим количеством подпапок и файлов в Windows с помощью 7zip, загружаю на VPS, а затем запускаю команду:
tar -xvzf file.tar.gz
тогда все распакованные файлы и папки будут иметь права 777. Как сделать так, чтобы папки имели права 755, а файлы 644?
решение1
Если вы работаете tar(1)
как обычный пользователь, он применит ваш umask
по умолчанию. Если вы работаете tar(1)
как root
, то вы можете указать --no-same-permissions
параметр командной строки, чтобы попросить tar(1)
уважать umask
.
Итак: либо запустите это как обычный пользователь:
umask 022
tar zxvf file.tar.gz
или запустите это как root
:
umask 022
tar zxvf file.tar.gz --no-same-permissions
Возможно, вы захотите вставить umask 022
в свой ~/.bashrc
, ~/.bash_profile
, или ~/.profile
. (См. bash(1)
man-страницу для получения полной информации о файлах запуска. Это сложно.)
Подробную информацию umask
можно найти на странице руководства вашей оболочки, umask(2)
на странице руководства системных вызовов или umask(1posix)
на странице руководства утилиты, предоставляемой POSIX (если она у вас manpages-posix
установлена).
решение2
Выполните следующие команды в корневом каталоге, чтобы установить необходимые разрешения для ваших каталогов и файлов:
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
Обратите внимание на пробел между закрывающей фигурной скобкой и обратной косой чертой.
решение3
Если вы используете заглавную букву X, chmod
вы можете использовать ее для установки разрешений на выполнение только для каталогов. т.е.
chmod -R ugo+X .
решение4
найти . -type f -exec chmod 644 {} \;