Какой самый простой способ редактировать и добавлять файлы в «/ var / www»?

145

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

Я дал себе административные привилегии в Ubuntu, но он все еще не позволяет копировать.

k_graham
источник
Связанный: askubuntu.com/questions/45496/…
Марко Чеппи
2
Связанный (более безопасный): Как избежать использования sudo при работе в / var / www?
Лекенштейн
Я пытался сделать то, что сказал Маркос Рорис Джуниор. Я скопировал и вставил, когда Маркос написал и изменил имя пользователя на мое имя пользователя. Но я не могу сохранить его в / 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 / files без хлопот.

Первая строка добавляет пользователя в группу www-data, вторая строка очищает любые файлы с ошибочным владельцем, а третья делает так, чтобы все пользователи, которые являются членами группы www-data, могли читать и записывать все файлы в / вар / WWW.

Если вы вошли в систему так, как <username>вам нужно выйти и снова войти в систему, чтобы членство в группе вступило в силу.

Azendale
источник
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
Как ни странно, после выполнения этих трех команд некоторые из моих подпапок и файлов (например, composer.jsonи LICENSE) отображаются с помощью двоичного значка. Открытие composer.jsonв текстовом редакторе показывает пустой файл, и хуже всего то, что я также не могу просмотреть некоторые подпапки, я даже попробовал дополнительную команду, предложенную @DonFaulkner, и все равно не повезло. Если я использую терминал как root, все будет так, как должно быть. У кого-нибудь есть идеи, почему это происходит?
Аликс Аксель
5
@itsols Вы должны выйти из системы, а затем войти, чтобы она заработала.
Джини
1
@DonFaulkner - Не могли бы вы рассказать, как файлы, принадлежащие пользователю root, могут быть вектором атаки? (Я новичок во всем этом, и я сбит с толку, потому что некоторые, похоже, отстаивают подход к безопасности «когда сомневаешься» и «сами по себе», в то время как другие категорически говорят «не принадлежат к корню». )
Эндрю Чонг
25

Вы можете chown, это chраздражает ownэту папку. Это позволит вам изменить пользователя и группу папки, позволяя пользователю добавлять / удалять файлы в ней. Для этого замените yourusernameсвое имя и запустите:

sudo chown yourusername.users /var/www

Вот и все.


Однако я предпочитаю создать виртуальный хост в моей домашней папке, это гораздо проще.

В основном это позволяет вам использовать любую папку в качестве папки Apache. Чтобы показать, как это просто, давайте предположим, что ваше имя пользователя - это имя пользователя, а папка, которую вы хотите обслуживать, - / home / username / www

Создайте следующий файл (например mywebprojects) в / etc / apache2 / sistes-available, заменив имя пользователя и путь к папке (в основном просто скопируйте, вставьте и замените в #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папку, добавим простой hello world, отключим сайт по умолчанию ( /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, а затем нажмите «Выполнить».

    альтернативный текст

  • Это откроет наутилус с корневыми преимуществами.
  • Перейдите в Файловая система var www и теперь вы можете добавлять / копировать / вставлять ваши файлы.

Способ 2:

  • Установить наутилус-гксу Установить наутилус-гксу
  • После установки введите nautilus -qв свой терминал, чтобы обновить меню правой кнопкой мыши.
  • Теперь вы найдете запись «Открыть как администратор» в меню правой кнопки мыши nautilus.
  • Когда вам нужно открыть какие-либо файлы с правами суперпользователя, вам просто нужно щелкнуть правой кнопкой мыши по этому файлу / папке и выбрать «Открыть как администратор».
  • Он откроет этот файл / папку с правами root.

    альтернативный текст

karthick87
источник
1
Это определенно правильный путь! Интересно, почему это не был выбранный ответ? Другие методы связаны с манипуляциями с разрешениями, и я бы не стал рисковать своей системой. +1 за ваш ответ.
itols
5
@itsols: Я полностью не согласен - вы рискуете своей системой, предоставляя Nautilus полный root-доступ к вашей файловой системе вместо того, чтобы правильно настраивать разрешения для доступа /var/www. Одно случайное нажатие [delete]клавиши, и вы можете получить не загружаемую систему.
Натан Осман
@ GeorgeEdison Но это только для того, чтобы установить разрешение. И после этого мы закрываем наутилус и работаем как обычно. Это действительно так плохо? Простите за мое невежество здесь. Несмотря на то, что я являюсь пользователем 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" в файле конфигурации и перезагрузите.

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случилось с линией? Это должно быть добавлено буквально или вы хотите, чтобы пользователь нашел строку и изменил опции?
MadMike
Почему бы тебе не пропустить sudo rm -rf /var/wwwшаг? Это на самом деле не кажется необходимым.
MadMike
@MadMike это должно быть подано с шестнадцатеричными цифрами. Чтобы узнать, как помечены ваши различные разделы, запуститеsudo blkid
Azendale
1
@Azendale Когда я писал комментарий, он имел в виду предложение о том, как улучшить ответ. Сегодня я знаю, что должен предложить это гораздо более прямо. Как: Пожалуйста, добавьте, как заполнить часть UUID=xxxxкак с 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
Я настоятельно не рекомендую использовать учетную запись root, особенно на серверах. sudo обеспечивает более чем адекватный контроль доступа, позволяя сисадмину разрабатывать политику, гарантирующую, что разработчикам и дизайнерам не будет вручен пистолет, чтобы отстреливать их собственные (и их компании!) ноги
Shayne
0

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

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. Теперь Скотт может копировать / перемещать файлы в этой папке.

Anoop
источник
-1

Если вы используете версию сервера, попробуйте webmin. Он имеет отличный веб-интерфейс и файловый менеджер. Либо это, либо Filezilla

Джон Холлквист
источник
4
Можете ли вы объяснить «Если вы используете версию сервера»? Любой пакет, который можно установить на Ubuntu Server, можно установить на настольную версию Ubuntu.
Элия ​​Каган