Як я можу chmod 777 всі вкладені папки / var / www?


54

Я запускаю веб-сервер і FTP-сервер, де /var/wwwприв’язаний до /home/user/www.

Я встановив обидва каталоги на chmod 777(що нормально, оскільки це лише для тестування).

Я можу завантажувати файли /home/user/www, але коли я створюю новий каталог, я завжди повинен працювати chmod 777в цій папці.

В іншому випадку, коли я намагаюся переглянути його, я отримую повідомлення про помилку

Ви не маєте дозволу на доступ / тест / на цьому сервері.

Чи є спосіб, щоб я міг зробити доступ до всіх підпапок всередині /var/www? Або їхні дозволи можуть бути автоматично встановлені 777? Прикро, що мені доводиться друкувати chmod 777щоразу.


12
Просто залиште це тут, БУДЬ ВІДПОВІДЬ НЕ ВИКОРИСТОВУВАННЯ 777 НА ВЕБ-СЕРВЕРІ . Краще запитати: "Як я можу змусити свій веб-сервер працювати без використання дозволу 777?"
Марко Цеппі

12
Вибачте, що це погана практика, і я відмовляюся відповідати на це :) Сподіваюся, що eveyone погоджується :)
Rinzwind

Відповіді:


89

Це погана практика, але, сподіваємось, ви просто використовуєте це для розвитку, або у вас є ще одна вагома причина. Ви можете вказати дозволи, створюючи каталог, використовуючи -mопцію:

mkdir -m 777 dirname

Або ви можете встановити дозволи рекурсивно.

sudo chmod -R 777 /var/www

Перш ніж використовувати будь-який із них, дійсно подумайте, чи хочете ви, щоб ваша файлова система була такою доступною.


Редагувати: Як згадував Рінцвінд, тут є кращий спосіб досягти того, що ви хочете.

Перевірте, якій групі належить ваш /var/wwwкаталог, і додайте свого користувача до цієї групи.

sudo adduser yourusername group

Мабуть, група www-data.

Тоді ви будете в порядку, встановивши свої дозволи на 775.


4
Це робить те, про що ви просили, але будь ласка, прочитайте це спочатку Чому / var / www не має chmod 777 . Це дійсно не рекомендується практика.
Warren Hill

8
Будь ласка, не допомагайте людям методом, який є поганою практикою. Я вважаю за краще, якщо ви пояснили, як це зробити: додавши свого користувача до групи www-data або apache;)
Rinzwind

4
Освіта на першому місці. Допомагати людям викручувати свою машину - це не спосіб Linux. Тож я з вами категорично не згоден.
Rinzwind

2
Автор заявив, що це лише для тестування. Я точно можу зрозуміти, що хочу, щоб ваша сторона розвитку була легкодоступною, щоб ви могли працювати швидше. Я збираюся дати йому користь від сумнівів, що він не досить дурний, щоб це зробити з виробничим сервером.
День

1
@ dan08 Є кращі способи тестування, включаючи використання домашнього каталогу. Див. Askubuntu.com/questions/46331/… та kimbriggs.com/computers/computer-notes/linux-notes/… . Є безпечні способи досягнення цих цілей;)
Пантера

7

Файли та каталоги в Unix можуть мати три типи дозволів: read ( r), write ( w) та Execute ( x). Кожен дозвіл може бути onабо offдля кожної з трьох категорій користувачів: власник файлу або каталогу; інші люди тієї ж групи, що і власник; та всі інші. Щоб змінити режим файлу, використовуйте команду chmod. Загальна форма - chmod X @ Y file1 file2 ...

chmod a-w file (removes all writing permissions)
chmod o+x file (sets execute permissions for other (public permissions))
chmod u=rx file        (Give the owner rx permissions, not w)
chmod go-rwx file      (Deny rwx permission for group, others)
chmod g+w file         (Give write permission to the group)
chmod a+x file1 file2  (Give execute permission to everybody)
chmod g+rx,o+x file    (OK to combine like this with a comma)

u = user that owns the file
g = group that owns the file
o = other (everyone else)
a = all (everybody)

r = read aces to the file
w = write access
x = execute (run) access 

4
cd /var/www
find -type d ! -perm 777 -exec chmod 777 {} \;

для ftp, що створює всі файли з різними дозволами, ви можете пошукати umask ftpd, як запускається цей демон

Погляньте на цей веб- сайт https://linuxaria.com/article/linux-shell-understanding-umask-with-examples


1
+1 для цього є єдиною відповіддю, яка оновлює
ТОЛЬКІ

3

Оголошення про державну службу:


Ніколи не використовуйте chmod 777 для вирішення проблем


  • Це великий ризик для безпеки, якщо ви запускаєте будь-які сервіси, доступні для населення, особливо веб-додатки (наприклад, PHP).

    Модель безпеки ОС передбачає, що багато сервісів (наприклад, ваш веб-сервер) працюють із обмеженими привілеями, щоб не допустити зміни файлів. Встановлення 777 для файлів порушує цю конструкцію.

    Віддалений користувач може записувати або завантажувати файли, а потім обманювати сервер (чи якийсь інший процес у вашій системі) на читання чи виконання їх. У сценаріїв або програмного забезпечення можуть бути недоліки, які це дозволяють. Дуже важко зафіксувати кожен спосіб, як це може статися, якщо існують каталоги, які можна записати у всьому світі.

  • Використовується в певних системних каталогах (/ usr, / etc, / var тощо), це може зламати вашу систему напрочуд.

    Для запуску деяких важливих системних файлів потрібні спеціальні дозволи, такі як права доступу setuid / setgid. Наприклад, судо. Уникайте змін будь-яких дозволів на файли в каталогах і файлах, створених самою системою.

  • Скасувати це не можна і повернути всі старі дозволи.

    Тобто, якщо раніше у вас були файли та папки з різними дозволами, немає жодного способу повернутися до тих конкретних дозволів - лише змінити їх на одне і те ж, що може втратити будь-які конкретні налаштування дозволу, які потрібні для конкретних файлів.

  • Завжди є більш підходящий спосіб досягти того, чого саме ви хочете досягти.

У цьому випадку, схоже, ви хочете, щоб ваш веб-сервер міг читати каталог. Надання дозволу, що записується у світі - це набагато більше, ніж потрібно зробити.

Визначте, чому веб-сервер не може прочитати цей каталог (підказка: це, мабуть, тому, що ваш домашній каталог не читається у всьому світі. Читання у світі набагато безпечніше, ніж у світовому режимі - встановіть домашній каталог на зразок 755, або перемістіть цей www dir за межами вашого будинку кудись, як / var / www або / srv).


0

Це не працює для мене.

sudo chmod -f 777 /path/to/your/file/or/directory

Я також повинен використовувати -f.

sudo chmod -R -f 777 /path/to/your/file/or/directory

0

Якщо ви хочете скопіювати дозволи та / або право власності з іншого файлу, яким ви задоволені, ви можете зробити це, використовуючи sudo chmod --reference = шлях / до / файл / до / опорний шлях / до / файл / ви / хочете / to / change / permissino / to

І ви можете зробити те ж саме, що і для власності на файл.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.