
Estoy intentando crear un script de shell Bash que permita la transferencia de archivos desde un dispositivo flash a un archivo en el que el usuario especificará. Aunque me gustaría impedir que este usuario pueda crear subdirectorios en este directorio de archivo.
NOTA:Entonces, en esencia, quiero que el directorio de archivo que el usuario crea/especifique sea una estructura plana de un nivel.
No tengo ni idea de cómo lograrlo y agradecería cualquier ayuda que pueda obtener.
Respuesta1
No existe ningún mecanismo nativo para lograrlo fácilmente. El sistema de permisos de Linux no puede especificar permisos separados para crear archivos y directorios porque, de hecho, los directorios son archivos. Pero prueba de esta manera:
- Haga que todos los directorios de archivos sean propiedad de uno (o varios) usuarios, creados solo para este propósito. Asumamos su nombre usuarioarchivo.
Haga que todos los directorios de archivos (supongo que tiene muchos) sean propiedad de este usuario, en.ex.:
$ chown archiveuser:archiveuser /somedir/archivedir1 $ chown archiveuser:archiveuser /somedir/archivedir2 $ chown archiveuser:archiveuser /somedir/archivedir3
Restrinja el acceso a los directorios de archivos para que solo el propietario pueda acceder a ellos:
$ chmod 700 /somedir/archivedir1 $ chmod 700 /somedir/archivedir2 $ chmod 700 /somedir/archivedir3
Utilice
sudo
el mecanismo para darcp
acceso de comando a los directorios de archivos:añadir
/etc/sudoers
:someuser1 ALL=(archiveuser) NOPASSWD:/bin/cp /path/to/pendrive/* /somedir/archiveuser/* someuser2 ALL=(archiveuser) NOPASSWD:/bin/cp /path/to/pendrive/* /somedir/archiveuser/*
Por supuesto, es conveniente crear un grupo adecuado para todos los usuarios a los que se les debe permitir utilizar este comando. Leer
sudo
tutorial :-).Eso es todo. Los usuarios deben utilizar:
$ sudo -u archiveuser cp /path/to/pendrive/somefile /somedir/archiveuser/
Puede crear algún alias para que sea más cómodo de usar (es decir alias cpt='sudo -u archiveuser cp'
, ). Tenga en cuenta también que en este caso cp -r
no se permite copiar un directorio . sudo
Además, mkdir
los permisos impiden el comando. Así se logra su objetivo.