Який найпростіший спосіб редагувати та додавати файли до “/ var / www”?


145

Встановивши веб-сервер, існує простий спосіб встановити користувачеві можливість використовувати графічний інтерфейс для копіювання файлів і каталогів на локальний веб-сервер / var / www

Я дав собі адміністративні привілеї в Ubuntu, але він все ще не дозволяє копії.




Я намагався зробити те, що сказав Маркос Роріз Джуніор. Я скопіював і вставив, коли Маркос написав і змінив ім'я користувача на моє ім’я користувача. Але я не можу зберегти його у / etc / apache2 / sites-available, оскільки він не дозволить мені зберегти у цій папці. ???

Відповіді:


222

Якщо ви зробите / var / www записуваною його групою та додасте користувача до групи, користувачеві не доведеться використовувати sudo. Спробуйте це:

sudo adduser <username> www-data
sudo chown -R www-data:www-data /var/www
sudo chmod -R g+rwX /var/www

Потім користувач повинен мати можливість редагувати / var / www / файли без клопоту.

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

Якщо ви ввійшли в систему, як <username>вам потрібно вийти з системи та увійти знову, щоб набути чинності членство в групі.


37
Я роблю це, плюс кілька поворотів: sudo adduser <username> www-data; sudo chgrp -R www-data /var/www; sudo chmod -R g+rw /var/www; find /var/www -type d -print0 | sudo xargs -0 chmod g+s вийдіть із системи та увійдіть знову, щоб забрати вашу нову групу. Я chmod g+sзмушую нові файли та каталоги підбирати власника групи (www-data), переконуючись, що мій дозвіл змінюється поширюється.
Дон Фолкнер

15
@DonFaulkner З міркувань безпеки, ймовірно, краще тримати у /var/wwwвласності root: root, тому замість sudo chgrp -R www-data /var/wwwцього краще бути sudo chgrp -R www-data /var/www/*.
Десмонд Юм

2
Як не дивно, після виконання цих 3 команд деякі мої підпапки та файли (як-от composer.jsonі LICENSE) відображаються за допомогою двійкового значка. Відкриття composer.jsonтекстового редактора показує порожній файл, і найгірше те, що я також не можу переглядати деякі підпапки, я навіть спробував додаткову команду, як запропонував @DonFaulkner, і все ще не пощастило. Якщо я використовую термінал як корінь, то все як слід. У когось є ідеї, чому це відбувається?
Алікс Аксель

5
@itsols ви повинні вийти з системи, а потім увійти, щоб вона працювала.
джині

1
@DonFaulkner - Ви б не хотіли детальніше розповісти про те, як наявність файлів, що належать root, може бути вектором атаки? (Я новачок у всьому цьому, і я розгублений, тому що деякі, мабуть, виступають за підхід під власні сили, коли інші сумніваються, а інші твердо говорять, що не є власником за коренем. )
Ендрю Чонг

25

Ви можете chown, це є chангелом ownцієї папки. Це дозволить вам змінити користувача та групу папки, дозволяючи користувачеві додавати / видаляти файли в ній. Для цього замініть yourusernameсвоє ім’я та запустіть:

sudo chown yourusername.users /var/www

І це все.


Однак я вважаю за краще створити virtualhost у своїй домашній папці, це набагато простіше.

В основному це дозволяє використовувати будь-яку папку в якості папки, що обслуговує apache. Щоб показати, як це просто, давайте припустимо, що ваше ім’я користувача - це ім’я користувача та що папка, яку ви хочете обслуговувати, / home / username / www

Створіть у файлі mywebprojects/ etc / apache2 / sistes такий файл (наприклад ), замінивши ім'я користувача та шлях до папки (в основному просто скопіюйте та вставте та замініть в # CHANGE ТУТ):

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    # CHANGE HERE
    DocumentRoot /home/username/www

    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>

    # CHANGE HERE
    <Directory /home/username/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog /var/log/apache2/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /var/log/apache2/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

Тепер давайте створимо wwwпапку, додамо простий світ привіт, відключимо веб-сайт за замовчуванням ( /var/www), включимо наш веб-сайт mywebprojectsта перезапустимо apache.

mkdir ~/www 
echo "<html><h1>Hello World</h1></html>" > ~/www/test.html
sudo a2dissite default #
sudo a2ensite mywebprojects
sudo service apache2 restart

І що це, тепер вам не потрібно йти /var/www, ви просто додаєте файли до свого www(або іншого імені), і воно вже є :).


саме те, що я зробив. Одним плюсом для цього є те, що ви можете змінити каталог на спільний диск, щоб усі файли були доступні при завантаженні в Windows / OSX.
Джейсон

9

Спосіб 1:

  • Натисніть ALT+ F2і введіть gksudo nautilus, а потім натисніть кнопку Виконати.

    alt текст

  • Це відкриє nautilus з кореневими привілеями.
  • Перейдіть до файлової системи var www і тепер ви можете додавати / копіювати / вставляти файли.

Спосіб 2:

  • Встановіть nautilus-gksu Встановіть nautilus-gksu
  • Після встановлення введіть nautilus -qу свій термінал, щоб оновити меню правої кнопки миші.
  • Тепер ви знайдете запис "Відкрити як адміністратор" у вашому меню nautilus правою кнопкою миші.
  • Коли вам потрібно відкрити будь-які файли з дозволом root, вам просто потрібно клацнути правою кнопкою миші на цей файл / папку та вибрати "Відкрити як адміністратор".
  • Він відкриє цей файл / папку з дозволом root.

    alt текст


1
Це, безумовно, правильний шлях! Цікаво, чому це була не обрана відповідь. Інші методи передбачають возитися з дозволами, і я не ризикував би моєю системою, роблячи це. +1 для вашої відповіді.
itols

5
@itsols: Я повністю не погоджуюся - ви ризикуєте вашою системою, надаючи Nautilus повний кореневий доступ до вашої файлової системи замість належної настройки прав доступу для доступу /var/www. Одним випадковим натисканням [delete]клавіші, і ви можете закінчитися системою, що не працює.
Натан Осман

@GeorgeEdison Але це лише для встановлення дозволу. І після того, як це зроблено, ми закриваємо nautilus і працюємо як завжди. Це справді так погано? Вибачте за моє незнання тут. Незважаючи на те, що я користувач Ubuntu з версії 5.x, я все ще вважаю, що налаштування машини для розробки є досить складною, і, здається, немає чіткого способу цього зробити (як мінімум для мене ...
itsols

@itsols: Друга частина цієї відповіді є кращим методом і є тією, яку я використовую.
Натан Осман

6

Це може бути так само просто, як sudo usermod -a -G developers $usernameвикористання ACL.

Для початку потрібно трохи попрацювати. Це принаймні для Ubuntu 10.10. Спочатку встановіть файлові системи з опцією acl в / etc / fstab.

sudo vim /etc/fstab

UUID = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx / ext4 за замовчуванням, acl 0 1

sudo mount -o remount,acl /

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

sudo groupadd developers
sudo usermod -a -G developers $username

Користувачеві потрібно вийти із системи та знову увійти, щоб стати членом групи розробників.

Звичайно, не робіть цього, якщо у вас є потрібний вміст у каталозі / var / www, а просто проілюструйте його налаштування для початку:

sudo rm -rf /var/www
sudo mkdir -p /var/www/public
sudo chown -R root:developers /var/www/public
sudo chmod 0775 /var/www/public
sudo chmod g+s /var/www/public
sudo setfacl -d -m u::rwx,g::rwx,o::r-x /var/www/public

Потім замініть посилання на "/ var / www" на "/ var / www / public" у файлі config та перезавантажте.

sudo vim /etc/apache2/sites-enabled/000-default
sudo /etc/init.d/apache2 reload

Якщо ми хотіли обмежити видалення та перейменування всіх, крім користувача, який створив файл:

sudo chmod +t /var/www/public

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

Каталог журналів, що записуються Apache:

sudo mkdir /var/www/logs
sudo chgrp www-data /var/www/logs
sudo chmod 0770 /var/www/logs

Apache-читаемий каталог бібліотек:

sudo mkdir /var/www/lib
sudo chgrp www-data /var/www/logs
sudo chmod 0750 /var/www/logs

Чи можете ви пояснити, що відбувається з UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-line? Це має бути додано буквально чи ви хочете, щоб користувач знаходив рядок і редагував параметри, що стоять позаду?
MadMike

Чому б вам не пропустити sudo rm -rf /var/wwwкрок. Це насправді не здається необхідним.
MadMike

@MadMike призначений для подання в шістнадцяткових цифрах. Щоб дізнатися, на чому позначені різні ваші розділи, запустітьsudo blkid
Azendale

1
@ Azendale Коли я написав коментар, він мав на увазі як пропозицію щодо покращення відповіді. Сьогодні я знаю, що мушу запропонувати це набагато прямо. Як: Будь ласка, додайте, як заповнити UUID=xxxx-part like з a sudo blkid.
MadMike

0

Найпростіший спосіб - це виконати наведені нижче дії: -

  1. Натисніть Alt+ Ctrl+, Tі термінал відкриється та введіть sudo -sта увійдіть із паролем.
  2. Тепер ви зареєстровані як root.
  3. Тепер введіть nautilusі вона відкриє домашню папку для вас як root. Тож тепер ви можете легко редагувати файли та робити все, що завгодно.

Сподіваюсь, це допомагає. :)


1
Отримати кореневу оболонку, придатну для запуску графічних програм, таких як Nautilus, sudo -iбажано з sudo -sтієї ж причини sudo -H, що краще sudoдля запуску одного графічного додатка. ( sudo -sне скидається HOME, тому користувач може отримати файли конфігурації у своєму домашньому каталозі, які повинні належати їм, але замість них належать до root .)
Eliah Kagan,

Я настійно не рекомендую користуватися кореневим обліковим записом, особливо на серверах. sudo забезпечує більш ніж адекватний контроль доступу, дозволяючи систематичному адміністратору розробляти політику, щоб гарантувати розробникам і дизайнерам, не передають пістолет, щоб стріляти з власної (та їхніх компаній!) ноги
Shayne

0

/var/www folderналежить корінь .. Ви повинні змінити право власності на власне ім'я користувача, щоб змінити файли в цій папці. Для цього можна спробувати наступні команди ..

sudo -i // змінити на кореневу консоль

sudo chown -R <username> <path> // for eg. sudo chown -R scott /var/www/html (scott is the username, -R indicates recrusive)

Тепер право власності на папку /var/www/html willприсвоюється користувачеві scott. Тепер Скотт може копіювати / переміщувати файли в цю папку.


-1

Якщо ви використовуєте серверну версію, спробуйте webmin. Він має чудовий веб-інтерфейс та файловий менеджер. Або це, або Filezilla


4
Чи можете ви пояснити "Якщо ви використовуєте серверну версію"? Будь-який пакет, який можна встановити на сервер Ubuntu, можна встановити на настільній версії Ubuntu.
Елія Каган
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.