GNU/Linux >> Tutoriales Linux >  >> Ubuntu

¿Cómo permitir que los usuarios que no son Sudoers ejecuten un script que realiza operaciones de raíz?

Supongamos que tengo un directorio /opt/expe y quiero que cualquier usuario cree archivos .txt en él. Quiero que cualquier usuario escriba algo como esto:

$ whoami
user1
$ export $file_name=my_txt_file
$ /opt/expe/create_file.sh
$ ls -cal /opt/expe
total 12
drwxr-xr-x 2 root  root 4096 Jul 29 19:27 .
drwxr-xr-x 6 root  root 4096 Jul 29 19:14 ..
-rwsr-sr-t 1 root  root   65 Jul 29 19:29 create_file.sh
-rw-r--r-- 1 user1 root    0 Jul 29 19:27 my_txt_file.txt

Intento esto con un sudoer

$ whoami
user_sudoer
$ cat /opt/expe/create_file.sh
touch /opt/expe/$file_name.txt
chown $USER /opt/expe/$file_name.txt
$ chmod a+x /opt/expe/create_file.sh
$ chmod a+t /opt/expe/create_file.sh
$ chmod a+s /opt/expe/create_file.sh
$ chmod a+X /opt/expe/create_file.sh

Luego, con un usuario no root, obtuve:

$ whoami
user1
$ export $file_name=my_txt_file
$ /opt/expe/create_file.sh
touch: cannot touch '/opt/expe/prueba_txt.txt': Permission denied

¿Puedo hacer algo como esto? Quiero algo como postgres SECURITY DEFINER concepto.

Respuesta aceptada:

No estoy lo suficientemente familiarizado con Postgres, pero veo al menos 4 opciones:

  1. Cambie los permisos de /opt/expe con chmod para permitir que todos los usuarios creen archivos dentro de este directorio.

  2. Cree un grupo separado para los usuarios que necesitan escribir allí y cambie el permiso de grupo /opt/expe con chmod para permitir que este grupo escriba allí.

  3. Cree un grupo separado y agregue la regla sudoers para permitirles ejecutar este script como se describe, por ejemplo, aquí:¿Cómo puede el usuario montar un contenedor de archivos cifrados en VeraCrypt?

  4. Utilice la seguridad de etiquetas para un control de acceso detallado. Aquí hay una breve descripción de las etiquetas de seguridad y algunos enlaces adicionales:https://unix.stackexchange.com/questions/53028/what-are-ext4-security-labels

Tenga en cuenta que el permiso para crear/eliminar archivos es una propiedad del directorio y no del archivo en sí.


Ubuntu
  1. ¿Cómo ejecutar Terminal como raíz?

  2. ¿Cómo ejecutar Greeter/script de inicio de sesión con Lightdm?

  3. ¿Cómo ejecutar el script después de reanudar y después de desbloquear la pantalla?

  4. ¿Cómo ejecutar un script?

  5. ¿Cómo evitar que los usuarios accedan al directorio raíz?

Cómo agregar usuarios a Sudoers (y eliminarlos) en Ubuntu

Cómo crear y ejecutar un script de Shell en Ubuntu 20.04 LTS

Cómo ejecutar Shell Script como servicio Systemd en Linux

Cómo ejecutar un script de Python en PHP

Cómo ejecutar un script Bash

¿Cómo ejecutar Dolphin como root?