Recientemente instalé el servidor Ubuntu en mi servidor para probar Linux como nuevo usuario. Seguí un tutorial sobre cómo configurar el servidor web que decía que necesitaba chmod 777
el directorio del servidor web para poder escribirlo.
De todos modos, creé una nueva cuenta para un tipo para permitirle ver algunos archivos en el servidor que coloqué en su directorio de inicio:
adduser francis
Después de crear la cuenta, verifiqué qué acceso tiene con
groups francis
Decía "francis: francis", así que no fue un problema, pensé, ubuntu no lo ha incluido en ningún grupo por defecto, lo cual tiene sentido, lo creó sin permisos adicionales en cuanto a seguridad, por lo que todo está bien y elegante. Una semana después, con absoluto horror, descubrí que aunque no podía hacer cosas como SUDO o perder el tiempo en los directorios del sistema, tenía acceso completo a casi todo lo demás en el servidor. Por ejemplo, tenía acceso completo de lectura / escritura a los archivos de mi servidor web en / var / www (y, por lo tanto, las contraseñas almacenadas en los archivos de configuración de php, etc.) a pesar de que ese directorio NO está en su directorio de inicio y nunca lo agregué a ningún grupo que pudiera acceder a ese directorio, ni le otorgué ningún acceso especial a nada después de hacer el adduser.
De todos modos, ¿qué está pasando aquí? ¿Cómo elimino su acceso a algo importante? No debería poder acceder a cosas como / media o / var / www. Pensé que, por defecto, a los nuevos usuarios se les impedía hacer algo peligroso o husmear donde no deberían estar.
En resumen, solo necesito permitirle el acceso a directorios que especifique manualmente + a directorios que necesita para funcionar correctamente (su directorio de inicio, vim, nano, etc.)
Gracias
fuente
chmod
otro lugar, puede tener otros problemas.Respuestas:
Esto es como fue diseñado. Y peor chmod 777 significa ... "Me gustaría que el propietario, cualquier persona de su grupo y cualquier persona tenga permisos de lectura, escritura y ejecución"
Lo cual es bastante terrible.
Y para un servidor web, 777 no es óptimo. 755 (el propietario tiene un grupo de permisos completo y otros tienen lectura + ejecución) es un valor predeterminado común, pero por lo que ha dicho que quiere al menos lectura-escritura, o lectura-escritura ejecutar para el propietario (el usuario del servidor web), y tal vez el grupo, y sin permisos para el usuario. Hay preguntas más completas sobre los niveles de permisos apropiados en el servidor predeterminado, pero considere algo como 640 o 740.
Dicho esto, también podría poner al usuario en su propio pequeño mundo: configurar chroot para mantener al usuario en su propio espacio en el sistema. Hay guías que flotan para hacer esto, por ejemplo, la excelente respuesta de oli aquí, que puede ser una opción según sus necesidades.
fuente
Esencialmente, se descompone así:
Entonces, los permisos de lectura solo serían 4, leer y escribir sería 6, leer y ejecutar sería 5, y todo (leer, escribir, ejecutar) es 7. Así es como se calcula un valor de octeto de permiso para un propietario, grupo de propietarios o a todos.
Al aplicar esos permisos
chmod
a una ubicación de archivo o directorio, los números calculados anteriormente se aplican de esta manera, con un octeto para cada propietario, grupo y todos:Entonces, si quisiera darle a mí y a mi grupo permisos de lectura, escritura y ejecución para una carpeta que poseía, pero no quería que todos pudieran leerlo, usaría:
Para obtener más información, consulte la página de manual de chmod :
fuente
chmod ugo+rwx <...>
. Los caracteres representan u ser, g roup, o other; r ead, w rite, e x ecute. Puede usar '-' para eliminar (por ejemplo:)chmod go-wx <...>
. Solo tenga en cuenta que esto solo agrega o elimina exactamente lo que escribe.chmod ugo+rwx <file>; chmod u+rwx <file>
no elimina el acceso para grupo / otro.chmod 777
hizo, así que ahí fue donde dirigí mi explicación.Como otros han mencionado, no debe tener permisos establecidos en 777
Aquí hay una hoja de referencia útil que uso.
fuente
Para compartir archivos con una persona a la que le ha dado inicio de sesión, no necesita hacer nada en particular. En una instalación predeterminada de Debian, los usuarios tienen acceso a los directorios principales de los demás.
Por ejemplo,
Los permisos en mi directorio personal son de lectura (r) y acceso (x) para cualquier usuario en mi sistema. Solo yo adicionalmente tengo acceso de escritura (w) .
Además, el valor predeterminado
umask
en Ubuntu es tal que los archivos y directorios que crean los usuarios son legibles en todo el mundo de forma predeterminada . Se podría establecer elumask
que077
si no quieres eso.Lo que esto significa es que en una configuración predeterminada, si el usuario
you
quiere compartir documentos~/README.txt
conmigo, entonces no hay nadayou
que hacer. Simplemente puedo verlo:No puedo editar o eliminar el archivo, pero puedo copiarlo en una ubicación donde tenga permiso de escritura. Entonces soy dueño de la copia:
Hay buenas razones por las cuales la mayoría del sistema es legible por mundo de manera predeterminada, como lo he explicado en otra respuesta en AskUbuntu . Sin embargo, en un sistema compartido puede tener sentido hacer que los directorios principales sean inaccesibles para los no propietarios:
... ya que muchos usuarios aparentemente no conocen el valor predeterminado: QED ;-). Sin embargo, sería más sabio hacer que los usuarios sean conscientes de que los permisos de archivo no protegen los secretos.
fuente
En Ubuntu, cualquier usuario tiene privilegios de superusuario que se agregan en el grupo 'sudo'. Verifíquelo para asegurarse de que no se agregue ningún otro usuario en este grupo.
Para proteger sus archivos y directorio de otros usuarios, puede configurar el permiso según lo sugerido por el Sr. Journeyman Geek en la respuesta anterior.
También puede usar permisos especiales para proteger sus archivos y directorios de otros.
fuente