Já se sabe que a conta de convidado não pode usar su
ou sudo
:
Como isso é feito?
Meu palpite seria aparente. No entanto, não há menção a /etc/apparmor.d/lightdm-guest-session
(ou outros arquivos incluídos nela).
Isso é feito negando alguma capacidade?
$ grep cap /etc/apparmor.d/abstractions/lightdm
capability ipc_lock,
deny capability dac_override,
deny capability dac_read_search,
dac_override
parece ser um bom candidato. De acordo com man capabilities
:
CAP_DAC_OVERRIDE
Bypass file read, write, and execute permission checks. (DAC is
an abbreviation of "discretionary access control".)
CAP_DAC_READ_SEARCH
* Bypass file read permission checks and directory read and
execute permission checks;
* Invoke open_by_handle_at(2).
É isso, ou é alguma outra capacidade? Ou não é nada aparente?
Aparentemente, é a capacidade setgid
. De syslog
para uma tentativa su
:
Mar 18 12:14:52 muru-wily kernel: [ 5285.025017] audit: type=1400 audit(1458283492.316:159): apparmor="DENIED" operation="capable" profile="/usr/lib/lightdm/lightdm-guest-session" pid=25687 comm="su" capability=6 capname="setgid"
No entanto:
$ sudo grep setgid /etc/apparmor* -R
/etc/apparmor.d/disable/usr.sbin.rsyslogd: capability setgid,
/etc/apparmor.d/usr.sbin.tcpdump: capability setgid,
/etc/apparmor.d/cache/.features:caps {mask {chown dac_override dac_read_search fowner fsetid kill setgid setuid setpcap linux_immutable net_bind_service net_broadcast net_admin net_raw ipc_lock ipc_owner sys_module sys_rawio sys_chroot sys_ptrace sys_pacct sys_admin sys_boot sys_nice sys_resource sys_time sys_tty_config mknod lease audit_write audit_control setfcap mac_override mac_admin syslog wake_alarm block_suspend audit_read
/etc/apparmor.d/usr.sbin.cupsd: capability setgid,
/etc/apparmor.d/usr.sbin.cupsd: capability setgid,
/etc/apparmor.d/usr.sbin.rsyslogd: capability setgid,
/etc/apparmor.d/abstractions/lightdm_chromium-browser: capability setgid, # for sandbox to drop privileges
/etc/apparmor.d/abstractions/dovecot-common: capability setgid,
/etc/apparmor.d/abstractions/postfix-common: capability setgid,
Além da pasta .cache
, nada parece estar restringindo setgid
. No entanto, man apparmor.d
diz:
Capabilities
The only capabilities a confined process may use may be enumerated;
Se eu entendi corretamente, então, se algum recurso estiver listado, somente eles poderão ser usados - todos os outros serão restritos. A linha capability ipc_lock
restringe automaticamente todos os outros recursos não mencionados? Em caso afirmativo, por que deny capability dac_override
e deny capability dac_read_search
?