如何阻止来宾帐户使用su和sudo?

已经知道来宾帐户不能使用susudo

  • 为什么su禁止访客会话?
  • Sudo在访客登录时不可用

这是怎么做到的?

我的猜测是apparmor。 但是,在/etc/apparmor.d/lightdm-guest-session (或其中包含的其他文件)中没有提到。

是否通过否认某些能力来完成?

 $ grep cap /etc/apparmor.d/abstractions/lightdm capability ipc_lock, deny capability dac_override, deny capability dac_read_search, 

dac_override似乎是一个很好的候选人。 根据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). 

这是它,还是其他一些function? 或者它根本不是apparmor?


显然,这是setgidfunction。 从syslog进行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" 

然而:

 $ 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, 

除了.cache文件夹,似乎没有任何限制setgid 。 然而, man apparmor.d说:

 Capabilities The only capabilities a confined process may use may be enumerated; 

如果我理解正确,那么如果列出了任何function,那么只能使用那些function – 所有其他function都受到限制。 capability ipc_lock是否会自动限制所有其他未提及的function? 如果是这样,为什么deny capability dac_overridedeny capability dac_read_search

通过快速搜索,我认为答案是Ubuntu实际上没有访客帐户,它使用“访客会话”。 访客会话无法对系统进行任何实际更改,因此如果您登录并尝试将文件保存到会话主目录,则在您注销时,这些文件将被删除。

您几乎可以将访客会话视为实时USB / CD会话。

我在访客会话上的大多数搜索只给了我删除它的选项,我确实找到了一个谈论创建访客用户的选项,这与访客会话不同。