¿Cuál es la forma más sencilla de editar y agregar archivos a "/ var / www"?

145

Una vez instalado el servidor web, hay una manera sencilla de configurar un usuario capaz de utilizar la interfaz gráfica para copiar archivos y directorios en el servidor web local / var / www

Me otorgé privilegios administrativos en Ubuntu pero todavía no permite copias.

k_graham
fuente
Relacionado: askubuntu.com/questions/45496/…
Marco Ceppi
2
Relacionado (más seguro): ¿Cómo evitar usar sudo cuando se trabaja en / var / www?
Lekensteyn
Traté de hacer lo que dijo Marcos Roriz Junior. Copié y pegué cuando Marcos escribió y cambió el nombre de usuario a mi nombre de usuario. Pero no puedo guardarlo en / etc / apache2 / sites-available porque no me permite guardar en esa carpeta. ???

Respuestas:

222

Si hace que / var / www sea escribible por su grupo y agregue el usuario al grupo, ese usuario no tendrá que usar sudo. Prueba esto:

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

El usuario debería poder editar / var / www / archivos sin problemas.

La primera línea agrega al usuario al grupo www-data, la segunda línea borra todos los archivos con propiedad desordenada y la tercera hace que todos los usuarios que son miembros del grupo www-data puedan leer y escribir todos los archivos en / var / www.

Si ha iniciado sesión ya <username>que necesita cerrar sesión y volver a iniciarla para que la membresía del grupo surta efecto.

Azendale
fuente
37
Hago esto, además de algunos giros: 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 cerrar sesión e iniciar sesión nuevamente para elegir su nuevo grupo. Hago el chmod g+spara forzar nuevos archivos y directorios para que elijan al propietario del grupo (www-data), asegurándome de que mis permisos cambien los propagadores.
Don Faulkner
15
@DonFaulkner Por razones de seguridad, probablemente sea mejor que sea /var/wwwpropiedad de root: root, por lo que en lugar de sudo chgrp -R www-data /var/wwwser mejor sudo chgrp -R www-data /var/www/*.
Desmond Hume
2
Por extraño que parezca, después de ejecutar esos 3 comandos, algunas de mis subcarpetas y archivos (como composer.jsony LICENSE) se muestran usando el icono binario. Al abrir el composer.jsoneditor de texto, aparece un archivo en blanco y lo peor es que tampoco puedo explorar algunas de las subcarpetas, incluso probé el comando adicional según lo sugerido por @DonFaulkner y todavía no tuve suerte. Si uso el terminal como root, todo es como debería ser. ¿Alguien tiene alguna idea de por qué sucede esto?
Alix Axel el
55
@itsols tiene que cerrar sesión y luego iniciar sesión para que funcione.
jini
1
@DonFaulkner - ¿Te importaría explicar cómo tener archivos propiedad de root podría ser un vector de ataque? (Soy nuevo en todo esto, y estoy confundido porque algunos parecen abogar por un enfoque de seguridad en caso de duda, de raíz propia, mientras que otros dicen rotundamente no poseer por raíz. )
Andrew Cheong
25

Puedes chown, eso es change el owner de esa carpeta. Esto le permitirá cambiar el usuario y el grupo de la carpeta, permitiendo que su usuario agregue / elimine archivos. Para hacerlo, reemplace yourusernamecon su nombre y ejecute:

sudo chown yourusername.users /var/www

Y eso es.


Sin embargo, prefiero crear un host virtual en mi carpeta de inicio, es mucho más fácil.

Básicamente le permite usar cualquier carpeta como una carpeta de servicio de apache. Para mostrarlo de manera simple, supongamos que su nombre de usuario es nombre de usuario y que la carpeta que desea servir es / home / username / www

Cree el siguiente archivo (por ejemplo mywebprojects) en / etc / apache2 / sistes-available reemplazando el nombre de usuario y la ruta de la carpeta (básicamente solo copie y pegue y reemplace en #CHANGE AQUÍ):

<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>

Ahora creemos la wwwcarpeta, agreguemos un simple mundo hola, deshabilitemos el sitio web predeterminado ( /var/www), habilitemos nuestro sitio web mywebprojectsy reiniciemos Apache.

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

Y eso, ahora no necesita ir /var/www, simplemente agregue archivos a su www(u otro nombre de pila) y ya está allí :).

Marcos Roriz Junior
fuente
exactamente lo que hice. Una ventaja para esto es que puede cambiar el directorio a una unidad compartida para que todos los archivos estén disponibles cuando se inicia en Windows / OSX.
Jason
9

Método 1:

  • Presione ALT+ F2e ingrese gksudo nautilus y luego haga clic en Ejecutar.

    texto alternativo

  • Se abrirá nautilus con previleges raíz.
  • Goto Filesystem var www y ahora puede agregar / copiar / pegar sus archivos.

Método 2:

  • Instalar nautilus-gksu Instalar nautilus-gksu
  • Después de instalar, escriba nautilus -qen su terminal para actualizar los menús del botón derecho.
  • Ahora encontrará la entrada 'Abrir como administrador' en el menú contextual de nautilus.
  • Cuando necesite abrir cualquier archivo con permiso de root, solo tiene que hacer clic derecho en ese archivo / carpeta y seleccionar 'Abrir como administrador'.
  • Se abrirá ese archivo / carpeta con permiso de root.

    texto alternativo

karthick87
fuente
1
¡Este es definitivamente el camino correcto! Me pregunto por qué esta no fue la respuesta seleccionada. Los otros métodos implican jugar con los permisos y no arriesgaría mi sistema al hacerlo. +1 por tu respuesta.
itsols
55
@itsols: estoy totalmente en desacuerdo: arriesga su sistema al otorgarle a Nautilus acceso completo a la raíz de su sistema de archivos en lugar de configurar adecuadamente los permisos para permitir el acceso /var/www. Una pulsación accidental de la [delete]tecla y podría terminar con un sistema que no se puede iniciar.
Nathan Osman
@GeorgeEdison Pero esto es solo para establecer el permiso. Y una vez hecho esto, cerramos nautilus y trabajamos como siempre. ¿Es esto realmente tan malo? Disculpe por mi ignorancia aquí. A pesar de ser un usuario de Ubuntu desde la versión 5.x, todavía encuentro que configurar una máquina de desarrollo es bastante desafiante y parece que no hay una forma clara de hacerlo (para mí, al menos ...
itsols
@itsols: La segunda parte de esta respuesta es el método preferido y es el que yo uso.
Nathan Osman
6

Podría ser tan simple como sudo usermod -a -G developers $usernameusar ACL.

Sin embargo, eso requiere un poco de trabajo para comenzar. Esto es para Ubuntu 10.10 al menos. Primero monte los sistemas de archivos con la opción acl en / etc / fstab.

sudo vim /etc/fstab

UUID = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx / ext4 por defecto, acl 0 1

sudo mount -o remount,acl /

Luego, cree un grupo al que pueda pertenecer un usuario para este propósito.

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

El usuario debe cerrar sesión y volver a ingresar para convertirse en miembro del grupo de desarrolladores.

Por supuesto, no haga esto si tiene contenido en el directorio / var / www que desea, sino solo para ilustrar la configuración para comenzar:

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

Luego reemplace las referencias a "/ var / www" con "/ var / www / public" en un archivo de configuración y vuelva a cargar.

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

Si quisiéramos restringir la eliminación y el cambio de nombre de todos menos el usuario que creó el archivo:

sudo chmod +t /var/www/public

De esta manera, si queremos crear directorios para marcos que existen fuera de la raíz del documento de Apache o tal vez crear directorios que se puedan escribir en el servidor, todavía es fácil.

Directorio de registros grabables de Apache:

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

Directorio de bibliotecas legibles por Apache:

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

fuente
¿Podría explicar qué pasa con la línea UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx? ¿Está destinado a agregarse literalmente o desea que el usuario encuentre la línea y edite las opciones detrás?
MadMike
¿Por qué no te saltas el paso sudo rm -rf /var/www? Realmente no parece necesario.
MadMike
@MadMike está destinado a ser archivado con dígitos hexadecimales. Para saber cómo están etiquetadas sus diversas particiones, ejecutesudo blkid
Azendale
1
@Azendale Cuando escribí el comentario, fue una sugerencia sobre cómo mejorar la respuesta. Hoy sé que debería sugerir esto mucho más directamente. Me gusta: agregue cómo llenar la parte UUID=xxxx-como con a sudo blkid.
MadMike
0

La forma más fácil de hacerlo es seguir los pasos que se detallan a continuación:

  1. Presione Alt+ Ctrl+ Ty el terminal se abrirá y escriba sudo -se inicie sesión con su contraseña.
  2. Ahora estás conectado como root.
  3. Ahora escriba nautilusy se abrirá la carpeta de inicio para usted como root. Así que ahora puedes editar fácilmente los archivos y hacer lo que quieras.

Espero que esto ayude. :)

Mitayshh Dhaggai
fuente
1
Para obtener un shell raíz adecuado para ejecutar aplicaciones gráficas como Nautilus, sudo -ies preferible hacerlo sudo -spor la misma razón sudo -Hque sudopara ejecutar una sola aplicación gráfica. ( sudo -sNo se reinicia HOME, por lo que el usuario puede obtener los archivos de configuración en su directorio principal que deberían pertenecer a ellos, sino que pertenecen a root en vez .)
Elías Kagan
Desaconsejo firmemente el uso de la cuenta raíz, especialmente en los servidores. sudo ofrece más controles de acceso adecuado al tiempo que permite al administrador del sistema la política de artesanía para asegurar desarrolladores y diseñadores no se entregó un arma de fuego para disparar su propio pie (y sus empresas!)
Shayne
0

/var/www folderes propiedad de la raíz ... debe cambiar la propiedad a su propio nombre de usuario para modificar archivos en esta carpeta. Para esto puedes probar los siguientes comandos ...

sudo -i // para cambiar a la consola raíz

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

Ahora la propiedad de la carpeta /var/www/html willse asignará al usuario scott. Ahora Scott puede copiar / mover archivos en esta carpeta.

Anoop
fuente
-1

Si está utilizando la versión del servidor, intente webmin. Tiene una gran interfaz de usuario web y administrador de archivos. O eso o Filezilla

John Hallquist
fuente
44
¿Puede explicar "Si está utilizando la versión del servidor"? Cualquier paquete que se pueda instalar en Ubuntu Server se puede instalar en la versión de escritorio de Ubuntu.
Eliah Kagan