Як я можу змінити всі файли на 644 і всі папки на 755 за chmod
допомогою linux
командного рядка? (Термінал)
http://superuser.com
:: P, але це питання мені тут допомогло, дякую.
chmod -R u+rwX,go+rX,go-w /foo
Як я можу змінити всі файли на 644 і всі папки на 755 за chmod
допомогою linux
командного рядка? (Термінал)
http://superuser.com
:: P, але це питання мені тут допомогло, дякую.
chmod -R u+rwX,go+rX,go-w /foo
Відповіді:
Одним із підходів може бути використання find:
find /desired_location -type d -print0 | xargs -0 chmod 0755
find /desired_location -type f -print0 | xargs -0 chmod 0644
sudo find /your/location -type f -exec chmod 644 {} \;
файли та sudo find /your/location -type d -exec chmod 755 {} \;
каталоги
chmod -R a=r,u+w,a+X /foo
?
unable to execute /bin/chmod: Argument list too long
Найпростіший спосіб - це зробити:
chmod -R u+rwX,go+rX,go-w /path/to/dir
що в основному означає:
в ch
Ange файл mod
ес -R
ecursively даючи:
u
ser: дозволи на r
ead, w
обряд та e X
ecute,g
користувачі маршрутизації та o
терміналів: r
ead та e X
ecute дозволи, але не -w
дозвіл на обряд.Зверніть увагу, що X
каталог зробить виконуваний файл, але не файл, якщо його вже не можна шукати / виконувати.
+X
- зробити каталог або файл для пошуку / виконання всіма, якщо його вже хтось може шукати / виконувати.
Будь ласка, перевірте man chmod
більш детальну інформацію.
Дивіться також: Як chmod всі каталоги, крім файлів (рекурсивно)? при СУ
Найкоротший з них я міг придумати:
chmod -R a=r,u+w,a+X /foo
яка працює в GNU / Linux, і я взагалі вірю в Posix (з мого читання: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/chmod.html ).
Це робить:
Важливо, що дозвіл кроку 1 очищує всі біти виконання, тому крок 3 лише додає біти виконання файлів для каталогів (ніколи файлів). Крім того, всі три кроки відбуваються до рекурсування каталогу (тому це не еквівалентно, наприклад,
chmod -R a=r /foo
chmod -R u+w /foo
chmod -R a+X /foo
оскільки a = r видаляє x з каталогів, то chmod не може повторити їх.)
Найлегше мені запам'ятати дві операції:
chmod -R 644 dirName
chmod -R +X dirName
+ X впливає лише на каталоги.
На https://help.directadmin.com/item.php?id=589 вони пишуть:
Якщо вам потрібен швидкий спосіб скинути дані public_html до 755 для каталогів та 644 для файлів, ви можете використовувати щось подібне:
cd /home/user/domains/domain.com/public_html
find . -type d -exec chmod 0755 {} \;
find . -type f -exec chmod 0644 {} \;
Я тестував і ... це працює!
Це працювало для мене:
find /A -type d -exec chmod 0755 {} \;
find /A -type f -exec chmod 0644 {} \;
find /A -type X -exec chmod Y '{}' \;
Виконайте обидва за один прохід із:
find -type f ... -o -type d ...
Як і в, знайдіть тип f АБО тип d і виконайте перше ... для файлів, а друге ... для dirs. Конкретно:
find -type f -exec chmod --changes 644 {} + -o -type d -exec chmod --changes 755 {} +
Залиште, --changes
якщо ви хочете, щоб він працював мовчки.
Якщо вам потрібен швидкий спосіб скинути дані public_html до 755 для каталогів та 644 для файлів, ви можете використовувати щось подібне:
cd /home/user/domains/domain.com/public_html
find . -type d -exec chmod 0755 {} \;
find . -type f -exec chmod 0644 {} \;
крім того, якщо ви знаєте, що PHP працює як користувач, а не як "apache", ви можете встановити файли PHP на 600, для додаткового рівня безпеки, наприклад:
find . -type f -name '*.php' -exec chmod 600 {} \;
Ви можете знайти цей ресурс тут: https://help.directadmin.com/item.php?id=589
Це також може працювати:
chmod -R 755 * // All files and folders to 755.
chmod -R 644 *.* // All files will be 644.