Я пакую папку з великою кількістю підпапок і файлів у Windows із 7zip, завантажую в VPS і виконую команду:
tar -xvzf file.tar.gz
то всі розпаковані файли та папки мають дозвіл 777. Як це зробити, щоб папки мали дозволи 755 та файли 644?
Я пакую папку з великою кількістю підпапок і файлів у Windows із 7zip, завантажую в VPS і виконую команду:
tar -xvzf file.tar.gz
то всі розпаковані файли та папки мають дозвіл 777. Як це зробити, щоб папки мали дозволи 755 та файли 644?
Відповіді:
Якщо ви працюєте 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)
отримання детальної інформації про запуск файлів див. Сторінку сторінки. Складно.)
Докладні відомості umask
можна знайти на сторінці вашої оболонки, на сторінці із umask(2)
системними дзвінками або у umask(1posix)
вибраній POSIX-програмі (якщо вона manpages-posix
встановлена).
Виконайте такі команди в корені каталогу, щоб встановити потрібні дозволи для ваших каталогів та файлів:
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
Будьте в курсі місця між закритим кучерявим кронштейном і задньою косою стрічкою
\;
Якщо ви використовуєте капітал X, chmod
ви можете використовувати його для встановлення дозволів на виконання лише в каталогах. тобто
chmod -R ugo+X .
Я знайшов це рішення, яке працювало на мене. Для папок і папок:
chmod -R 777 */
А для всіх файлів (також у папках і вкладених папках):
find . -type f -name "*" | xargs chmod 644
Усі коментарі вітаються, якщо це не гарний спосіб зробити це. Я тільки почав вивчати Linux.
Після коментарів більш надійним рішенням, яке б добре поводилося зі спеціальними символами, було б:
find . -type f -print0 | xargs -0 chmod 644 # For files
find . -type d -print0 | xargs -0 chmod 755 # For directories
the': No such file or directory chmod: cannot access
до.txt ': Немає такого файлу чи каталогу chmod: не може отримати доступ `./blog/wp-content/themes/OneRoom/LOGO': Немає такого файлу або di rectory
777
є небезпечним і застосовується лише для дуже малої кількості систем.
find . -type f -print0 | xargs -0 chmod 644
. -name "*"
Чи не є необхідним, і xargs(1)
буде аналізувати імена файлів на просторах або символ нового рядка , якщо ви не використовуєте -0
- який розбирає імена файлів на ASCII NUL
символ, який не може з'явитися в іменах файлів. The -print0
for find(1)
просить його відформатувати свій вихід у режимі, придатному для xargs -0
введення.
знайти. -тип f -exec chmod 644 {} \;