Извлечь файлы и папки с указанными разрешениями

Извлечь файлы и папки с указанными разрешениями

Я упаковываю папку с большим количеством подпапок и файлов в 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 {} \;

Связанный контент