¿Quién es "otros", si le damos un usuario a todos los servicios en nuestro servidor, "otros" no existen? Por ejemplo, si ponemos Apache a un usuario, y lo configuramos como /var/www
propiedad apache
e ingresamos chmod 700
, debería funcionar, ¿verdad?
Así es como funcionan los permisos, explicados de manera muy breve:
El primer dígito es para el propietario real de un archivo (verifique quién posee un archivo ls -l
y modifíquelo chown
)
El segundo dígito es para el grupo del archivo (aunque el propietario de un archivo no necesariamente debe estar en el mismo grupo que posee el archivo)
El tercer dígito es cualquier otra persona, es decir, no el propietario del archivo y todos los que no están en el grupo.
Entonces, si tiene chmod
un archivo de 700 y es propiedad de él apache
, incluso su usuario "normal" no podrá leerlo, escribirlo ni ejecutarlo. Esto es muy restrictivo y solo se necesita en raras ocasiones; por ejemplo, cuando desea proteger su clave privada SSH, obtiene 600
permisos. Para Apache, esto podría incluso ocasionar otros problemas, además del hecho de que con su cuenta de usuario normal, ya no podrá editar ningún archivo /var/www
.
Por lo tanto, en general, no debería necesitar eliminar los permisos de lectura ( x00
) para otros.
Podrías dejar que apache
el /var/www
directorio sea el propietario , pero 644
quizás con (solo lectura para otros). Otro enfoque que utilizo a menudo es la adición de su propio usuario y el usuario de Apache a un nuevo www-users
grupo y, a continuación, en archivos chmodding /var/www
a 775
. De esta manera, tanto usted como Apache pueden escribir en los archivos. Consulte aquí para obtener más información: permisos de grupo para apache
¿Cuál es la diferencia entre "ejecutar" y "leer"?
Los archivos ejecutables pueden ser ejecutados directamente por un usuario, directamente desde el shell. Para demostrar esto, vamos a escribir un archivo corto y llamarlo "prueba". Agregue el siguiente contenido:
echo "I am executable"
Guarda el archivo. Ahora, en su caparazón, intente ingresar ./test
. Obtendrá el error " -bash: ./test: Permiso denegado ". Esto se debe a que, de manera predeterminada, los archivos recién creados no tienen permisos de ejecución. Si agrega el permiso de ejecución, funcionará.
$ chmod +x test
$ ./test
I am executable
Ahora, esto era solo un script de prueba, pero generalmente, todos los archivos binarios (como los programas compilados) también necesitan el conjunto de permisos de ejecución, por lo que puede ejecutar y hacer algo con ellos, y no solo leer.
Estos son, por ejemplo, los programas del sistema que se encuentran principalmente en /bin
. Corre ls -l /bin
para inspeccionar sus permisos. Como puede ver, son propiedad de ellos root
y no puede cambiarlos, pero siempre puede ejecutarlos.
Por lo tanto, esta también es una característica de seguridad, ya que puede restringir la ejecución de ciertos scripts y binarios para algunos usuarios.
Para obtener más información sobre los permisos de Unix, lea el artículo de Wikipedia . Los permisos básicos que conoce como "lectura-escritura-ejecución" han existido durante mucho tiempo, pero son solo parte de lo que llama Listas de control de acceso, que ofrecen mucha más funcionalidad que esta.
¿Cuáles son los permisos de archivo predeterminados para todo el sistema después de una instalación limpia (por ejemplo, en Ubuntu)?
Varían según el directorio y el propietario. Algunos archivos y directorios están reservados por el sistema y son propiedad de root
. En la mayoría de los casos, podrá leerlos con su cuenta de usuario normal.
Otros directorios como su carpeta de inicio obviamente pertenecen a su usuario. Podría tener sentido denegar permisos de lectura a otros usuarios en una máquina si se comparte entre varias personas; después de todo, no desea que sus cosas privadas sean expuestas.
Finalmente, algunos archivos son ejecutables por defecto (por ejemplo, en /bin
), pero otros no (por ejemplo, archivos de configuración en /etc
).
El estándar de jerarquía del sistema de archivos especifica el uso previsto para los directorios que se encuentran en los sistemas Linux. Casi puede "adivinar" cuáles deberían ser los permisos en función de lo que desea hacer con un directorio.