2011-11-07 15 views
16

Soy nuevo en el mundo mac y acabo de configurar mi servidor web. Utilicé la siguiente guía: http://echo.co/blog/os-x-107-lion-development-native-mamp-mysql-installerPrivilegios de escritura - localhost - Mac OSX

He transferido mis sitios y bases de datos y todo va bastante bien. El único problema que tengo es con los permisos de escritura. Por ejemplo, hay un archivo de configuración que debe escribirse, y tuve que hacer clic derecho, ir a Obtener información y luego habilitar leer & escribir para el personal y para todos.

No puedo acceder y habilitar manualmente estos privilegios de escritura para cada archivo/carpeta. No necesité hacer esto usando WAMP e hice el desarrollo mucho más rápido.

Así preguntándose unos 2 posibles soluciones: a) añadir mi cuenta de usuario a una lista blanca para el localhost para que 644 privilegios son suficientes b) establecer los privilegios de escritura recursiva

Respuesta

39

Encontré que la mejor solución era cambiar la configuración de usuario y grupo de apache. Las instrucciones se pueden encontrar en: http://paulmason.name/item/change-apache-user-group-in-lion-os-x

  1. Abrir terminal y Enter

    sudo nano /private/etc/apache2/httpd.conf 
    
  2. buscar y cambiar http.conf código de

    User _www 
    Group _www 
    

    Para

    User your_mac_username 
    Group staff 
    

    Nota: W Con versiones anteriores como Leopard, capitalice al personal del personal. Usted puede obtener su nombre de usuario y de grupo escribiendo "id" y oprimir la tecla Enter en el terminal

  3. Reinicia Apache

    sudo apachectl restart 
    
+0

¡La solución más fácil! Tanto el usuario como apache obtienen permisos de escritura/lectura sin cambiar los permisos ;-) –

+0

¿Por qué es tan importante poner al Grupo como personal? Trabajo en Linux y en Mac, en Linux, el grupo es el nombre de usuario, pero en Mac tuve que desconectar al personal para que funcione, de lo contrario Apache no se iniciará. –

+0

Actualizando a MacOS Sierra sobrescribió mis valores 'User' y' Group' en httpd.conf a '_www' y' _www'. Su respuesta me ayudó a resolver el problema de permiso que estaba encontrando al establecer al propietario del directorio en cuestión en 'Usuario' y' Grupo' de estos nuevos valores. – gmeben

2

recomiendo configuración de los privilegios de escritura de forma recursiva tu raíz web

Puede hacerlo a través de la consola/terminal usando chmod -R 774 /my/web/root. Para mí, el propietario y el grupo están configurados para: www-data:myUserName, que se puede configurar usando chown. No te olvides de verificar quién es tu usuario web primero.

Editar: Para una mejor comprensión, razón por la que no tiene acceso:

Chmod 774, cada número representa los derechos específicos: usuario, grupo, otros. Si el usuario está configurado en www-data y el grupo en www-data (la mayoría de los usuarios en un sistema Unix están en un grupo que se nombra por su nombre de usuario). Entonces, si no estás en el grupo www-data, tienes que unirte a él, o tienes que cambiar de propietario (chown) o tienes que cambiar los permisos (chmod). Hay varios tutoriales disponibles para obtener más información.

+1

simplemente traté 'chmod -R 774' para uno de mis sitios y que hizo todo el sitio prohibido hasta que use' chmod -R 777' cuales no parece correcto ¿Algunas ideas? Además, no sé cómo verificar quién es mi usuario web, ¿pueden explicarlo? –

+0

También debe verificar el propietario de un archivo (el usuario ls -l para esto). La mayoría de las carpetas están configuradas en 'www-data: www-data'. Lo que significa que no eres mencionado y no tienes acceso hasta que uses 'chmod 777'. Los últimos 7 significan "otros". Solo configura al propietario como mencioné en mi respuesta. Editaré mi respuesta para explicarlo un poco más. – sascha

22

Soy el autor de la mencionada publicación de blog. Para los permisos de archivos del servidor web, querrá otorgar acceso de escritura al usuario _www para los archivos. Para config.inc.php, se debe establecer que un par de maneras:

Tener _www poseer el archivo y tener permisos de escritura:

$ sudo chown _www config.inc.php 
$ chmod u+w config.inc.php 

que su usuario propietario del archivo, cambie el grupo de _www, y dar permisos de escritura para el grupo:

$ sudo chgrp _www config.inc.php 
$ chmod g+w config.inc.php 

O, si se siente cómodo que permite a todos los usuarios escribir, que no lo recomendaría por razones de seguridad, dan todos los usuarios la capacidad de escribir:

$ chmod a+w config.inc.php 

Si una carpeta entera necesita ser escrita por el usuario _www, que puede ser dueño de la carpeta y todos los archivos:

$ sudo chown -R _www:_www folder/ 

o le puede dar la escritura carpeta y permisos de ejecución por todos:

$ chmod a+wx folder/ 

La razón por la que chmod 774 le dio errores prohibidos fue porque el usuario _www cayó bajo el permiso '4', que es 'de solo lectura'. Para los directorios, un usuario necesita 'ejecutar' para atravesar la carpeta. chmod 775 permitiría al usuario y grupo a rwx, y otros a r-x.Here's more information on Unix file permissions.

Además, su usuario podría conservar la plena propiedad y agregar ciertos permisos para el usuario _www en lugar de cambiar el nivel de acceso para TODOS los usuarios mediante el uso de listas de control de acceso.

$ sudo chmod -R +a '_www allow read,write,delete,add_file,add_subdirectory,file_inherit,directory_inherit' folder 
$ sudo chmod +a '_www allow read,write' config.inc.php 

Si vas a ir a la ruta de ACL, sugeriría hacer leer un poco más para ver qué niveles de acceso que realmente necesita para ofrecer. Here is a great place to start.

+0

Gracias por toda la ayuda hasta ahora. Me pregunto por qué cambiaría el propietario de config.inc.php y dónde puedo encontrarlo. –

+0

@alanthing ¿No sería arriesgado otorgar permisos a apache para escribir (¿alguno?) Archivos en su máquina? – gen

9

estoy corriendo Apache en OSX y esto fija para mí:

sudo chown -R _www:_www <mywebfolder> 
sudo chmod -R 775 <mywebfolder> 

actualización # 1:

Sintaxis: sudo chown <user>:<group> <file-or-folder>. El usuario de Apache en OSX es _www.

Para mantener la propiedad sino dar Apache permisos r-w-x:

sudo chown -R <your-username>:_www <mywebfolder> 
sudo chmod -R 775 <mywebfolder> 

Actualización # 2:

me gusta este método mejor. Configura Apache para que se ejecute como tú.

  1. En terminal de tipo id para obtener uid=123(Myname).

  2. Abra /etc/apache2/httpd.conf y edítelo para usar su nombre de usuario.

    <IfModule unixd_module> 
        User Myname 
        Group staff 
    </IfModule> 
    
  3. Volver al terminal: sudo apachectl restart