Manera adecuada de montar samba share

9

Me gustaría montar un sistema de archivos de red CIFS con samba en mi sistema Arch Linux. Me gustaría montar este sistema de archivos cada vez que inicie sesión (ya sea a través de ssh, un TTY o mediante KDM).

Puedo acercarme bastante a lo que quiero al agregar el recurso compartido de red /etc/fstab. El mayor "problema" es que esto requiere codificar mi contraseña /etc/fstabo crear un archivo de credenciales con mi nombre de usuario y contraseña. Me parece inseguro mantener mi nombre de usuario y contraseña en un archivo de texto sin formato, incluso si configuro los permisos en 600.

¿Existe una forma "adecuada" de montar de forma segura un recurso compartido de red? ¿Puedo hacer esto con PAM (mi nombre de usuario y contraseña son los mismos en ambas máquinas) y si es así, ¿cómo?

Fuerte
fuente
¿Has mirado en pam_cifs ? "pam_cifs es un módulo Linux-PAM para montar y desmontar recursos compartidos CIFS al iniciar sesión por usuario"
un CVn
O pam_mount, no tengo experiencia específica, pero parece diseñado para hacer esto.
EightBitTony
@EightBitTony encontrar pam_mount me llevó a hacer la pregunta, espero que alguien pueda decirme más definitivamente si es el camino a seguir y, de ser así, cómo.
StrongBad

Respuestas:

8

Método 1 - /etc/fstab

Me doy cuenta de que está buscando alternativas a esto, pero aquí le mostramos específicamente cómo sacar sus credenciales del /etc/fstabarchivo:

//WindowsHost/Sharename /LocalMountPoint cifs credentials=/etc/cifsauth 0 0

Luego en el archivo /etc/cifsauth:

username=someuser
password=somepass

Haga los permisos de este archivo 600, es decir chmod 600 /etc/cifsauth.

Método # 2 - pam_mount

Puede instalar pam_mount y luego configurar un montaje genérico para todos los usuarios que inician sesión como este:

# /etc/security/pam_mount.conf.xml
<debug enable="1" />
<volume server="server" path="music" mountpoint="~/MyMusicFolder" options="cred=/home/%(USER)/.Music.cred" />

Este método todavía tiene el mismo problema que el método # 1, donde se almacenan las credenciales en un archivo, /home/%(USER)/.Music.cred. Este es el mismo tipo de archivo de credenciales que en el primer método, así que asegúrese de que los permisos también sean 600.

Método # 3 - use gvfs-mount

Este U&L Q&A titulado: ¿Puedo automatizar el montaje de un recurso compartido cifs sin almacenar mi contraseña en texto sin formato? contiene una respuesta de @Gilles que describe el uso del llavero GNOME para retener sus credenciales CIFS.

Luego puede acceder a los recursos compartidos CIFS utilizando GVFS - Sistema de archivos virtuales de GNOME - de esta manera:

$ gvfs-mount smb://username\;workgroupname@hostname/sharename

Esto asignará el recurso compartido del nombre de host llamado nombre de recurso compartido y lo montará debajo $HOME/.vfs/sharename on hostname. No puedes controlar esto de ninguna manera. Está codificado para estar siempre montado aquí, ¡he mirado!

Sin embargo, puede crear enlaces a estos montajes, que es lo que hago para poder acceder a los recursos compartidos que he montado. El uso de .gvfsfue desafortunado porque algunas herramientas no enumeran los directorios de puntos en la exploración de archivos, por lo que a menudo el enlace que he creado es la única forma de acceder a estos recursos compartidos.

slm
fuente
si crea un archivo como oculto, diga .cifsauth, y 'nombre de usuario =' no es obligatorio, solo credenciales = / etc / .cifsauth suficiente
Rahul Patil
@RahulPatil: ¿estás diciendo que tienes que hacer las credenciales nombradas .cifsauthpara eliminar el username=, o que username=simplemente no es necesario todo junto?
slm
si ... Buena respuesta .. !! +1 para pam_mount
Rahul Patil
@RahulPatil: ¿con qué parte está de acuerdo?
slm
2

Resulta que ese pam_mountes el camino a seguir. Agrega el recurso compartido de red a/etc/security/pam_mount.conf.xml

<volume user="yourUserName" fstype="auto" path="//path/to/the/network/share" mountpoint="/path/to/the/mount/point" options="username=yourUserName" />
<mkmountpoint enable="1" remove="true" />

Debe ser teóricamente posible utilizar los %(USER), %(USERUID)y %(USERGID)las variables para que sea un montaje en general, pero no pude conseguir que la parte de trabajo en Arch Linux. También necesita configurar su sistema para usar pam_mount. Debe modificar ambos /etc/pam.d/system-authy su administrador de inicio de sesión correspondiente. Para KDM lo es /etc/pam.d/kde. Básicamente, las modificaciones implican agregar optional pam_mount.soa cada sección de ambos archivos, pero los detalles exactos son complicados ya que el orden es importante. Seguí el Arch Wiki .

Con esta configuración y el mismo nombre de usuario / contraseña en el servidor y en mi máquina, puedo montar automáticamente sin guardar un archivo de credenciales en ninguna parte.

Fuerte
fuente
Esto es bueno ... Como cuestión de principio, preferiría la solución fstab; no me gusta pamy el resto, personalmente, y he notado que tienden a introducirse aún más en la configuración del sistema, pero esto definitivamente responde a la pregunta. ¿Puedo preguntar por qué te opones tanto al almacenamiento de credenciales? Los permisos de usuario y / o la propiedad / cifrado de archivos deberían ser más que suficientes allí. En algunos sistemas, incluso puede almacenar dicha información en vars de firmware que solo son accesibles después de la autenticación. sshalmacena credenciales basadas en permisos fs, por ejemplo, ¿no?
mikeserv
@mikeserv utilizamos un sistema de inicio de sesión único, por lo que un administrador del sistema que tiene acceso de root a la máquina con mi archivo de credenciales, puede no tener acceso de root a todos los servidores para los cuales mi contraseña me permite acceder.
StrongBad