Cómo permitir que un usuario cree un directorio pero no cree un subdirectorio

Cómo permitir que un usuario cree un directorio pero no cree un subdirectorio

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:

  1. Haga que todos los directorios de archivos sean propiedad de uno (o varios) usuarios, creados solo para este propósito. Asumamos su nombre usuarioarchivo.
  2. 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
    
  3. 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
    
  4. Utilice sudoel mecanismo para dar cpacceso 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 sudotutorial :-).

  5. 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 -rno se permite copiar un directorio . sudoAdemás, mkdirlos permisos impiden el comando. Así se logra su objetivo.

información relacionada