Estoy tratando de entender cómo funcionan realmente los usuarios confinados en Selinux, pero hay algunos comportamientos que todavía no puedo entender. De acuerdo asombrero rojo
Capacidades de usuario de SELinux
Los usuarios de cosas_u deberían poder ejecutar sudo, pero no su. Entonces he creado el usuario.algún usuarioy lo mapeó a staff_u
[someuser@testserver ~]$ id -Z
staff_u:staff_r:staff_t:s0-s0:c0.c1023
Ahora, si agrego permisos completos usando sudo, pero no configuro el rol/tipo en sudoers, no podré hacer mucho (como se esperaba).
[someuser@testserver ~]$ sudo -l
Matching Defaults entries for someuser on testserver:
!visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
User someuser may run the following commands on testserver:
(ALL) NOPASSWD: ALL
[someuser@testserver ~]$ sudo ls -la /var/log/audit/audit.log
ls: cannot access '/var/log/audit/audit.log': Permission denied
[someuser@testserver ~]$ sudo ausearch -m avc -ts recent
Error opening config file (Permission denied)
NOTE - using built-in logs: /var/log/audit/audit.log
Error opening /var/log/audit/audit.log (Permission denied)
[someuser@testserver ~]$
Si cambio los sudoers para realizar la transición a sysadm_r y sysadm_t, esperaba obtener básicamente permiso para hacer cualquier cosa, pero no es exactamente lo que obtengo.
Puedo hacer muchas cosas:
[someuser@testserver ~]$ sudo -l
Matching Defaults entries for someuser on testserver:
!visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
User someuser may run the following commands on testserver:
(ALL) ROLE=sysadm_r TYPE=sysadm_t NOPASSWD: ALL
[someuser@testserver ~]$ sudo ausearch -m avc -ts recent | wc -l
66
[someuser@testserver ~]$ sudo ls -la /var/log/audit/audit.log
-rw-------. 1 root root 1996980 Jul 30 12:55 /var/log/audit/audit.log
[someuser@testserver ~]$ sudo cat /var/log/audit/audit.log | wc -l
8172
[someuser@testserver ~]$
Pero algunos comandos todavía están bloqueados, por ejemplo postsuper del paquete postfix.
[someuser@testserver ~]$ sudo postsuper
sesh: unable to execute /sbin/postsuper: Permission denied
[someuser@testserver ~]$ file /sbin/postsuper
/sbin/postsuper: cannot open `/sbin/postsuper' (Permission denied)
[someuser@testserver ~]$ sudo file /sbin/postsuper
/sbin/postsuper: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=aa0157870508c475195fe5fb1dafe5a9b3898a61, stripped
[someuser@testserver ~]$
¿Alguien puede explicarme el motivo de eso? Lo más extraño es que no veo ninguna denegación en /var/log/audit/audit.log para el comando postsuper. Pero debe estar relacionado con SELINUX porque si vuelvo a cambiar el usuario a unconfined_u todo funciona.