
Tengo una carpeta ~/nas
que normalmente uso sshfs
para montar una unidad de red. Hoy, no me di cuenta de que el recurso compartido aún no se había montado y copié algunos datos en él. Me tomó un poco darme cuenta de que simplemente había copiado datos en mi propio disco local en lugar del recurso compartido de red. ¿Hay alguna forma de marcar en el sistema que se supone que esta carpeta es un punto de montaje y no permitir que nadie copie datos en ella?
Probé la solución de permisos aquí:¿Cómo permitir que un programa escriba en un directorio solo si está montado?, pero si no tengo acceso de escritura tampoco puedo montarle nada.
Respuesta1
Mientras tu estesnoroot, simplemente puede revocar el permiso de escritura para el~/nasdirectorio usted mismo y use sudo para montaje elevado:
$ chmod u-w ~/nas
$ cd ~/nas
$ touch test
touch: cannot touch `test': Permission denied
$ cd ..
$ sudo mount -t fuse -o <options> sshfs#<user>@<host>:/mount/path/ ~/nas
$ cd ~/nas
$ touch test
$
La idea detrás de todo eso: ~/nas como ruta de montaje tendría los permisos asignados mientras el destino no esté montado, evitando así modificaciones por su parte (siempre que su usuario no tenga privilegios de root). El comando de montaje (necesita privilegios de root para ejecutarse) modifica temporalmente los permisos de la carpeta a cualquiera que estén configurados los permisos del destino, permitiendo acceso de escritura a su usuario.
Respuesta2
Usamos elinmutable-flag para proteger el directorio incluso para acceso root.
chattr +i /vmdata/backup
De esta manera, ni siquiera el root puede escribir allí cuando no hay nada montado. Después de montar el disco, todo funciona como se esperaba.
Respuesta3
Puede utilizar la respuesta sugerida más adelante allí:
1º: Verifique con el comando mount, si el directorio está montado
mount | grep <mountpoint>
Le dirá si hay algo montado allí. Si realmente desea asegurarse de que esté montado lo correcto allí, puede usar una expresión regular más compleja, pero no creo que sea necesario.