xguest_selinux(8)

πŸ“¦
version 20250627+git412.dbf877ab7 Β· 7 versions
, in opensuse-leap 16.0

πŸ¦‹ xguest_selinux β€” the xguest SELinux policy page, but make it make sense

okay bestie, this is the manual for xguest_selinux, which lives in section 8 of the manual (the sysadmin-y one) and documents the xguest SELinux policy. it's giving "here's the least privileged xwindows user role, explained by someone who actually wants you to get it" ✨


✨ NAME ✨

xguest_u β€” Least privileged xwindows user role. Security Enhanced Linux Policy πŸ’…


🌸 DESCRIPTION 🌸

bestie. listen. xguest_u is an SELinux User defined in the SELinux policy. and SELinux users have default roles β€” in this case, xguest_r. that default role has a default type, xguest_t, chillin' with it.

when the SELinux user logs in, the context usually looks like this, no cap:

xguest_u:xguest_r:xguest_t:s0

Linux users get automatically assigned an SELinux user at login. the login programs use that SELinux User to assign the initial context to the user's shell. and then SELinux policy uses that context to control what the user can access. simple as that 🫢

by default all users are assigned to the SELinux user via the __default__ flag.

on Targeted policy systems, the __default__ user is assigned to the unconfined_u SELinux user.

you can list all the Linux User β†’ SELinux user mappings with:

semanage login -l

if you wanted to change the default user mapping to use the xguest_u user, you'd execute:

semanage login -m -s xguest_u __default__

and if you want to map the one Linux user (joe) to the SELinux user xguest, you'd execute:

$ semanage login -a -s xguest_u joe

periodt. πŸ’…


πŸ‘‘ USER DESCRIPTION πŸ‘‘

the SELinux user xguest_u is defined in policy as a unprivileged user. SELinux prevents unprivileged users from doing administration tasks without transitioning to a different role. so like… no admin shenanigans for you, bestie. πŸ™ˆ


πŸ’€ SUDO πŸ’€

(fr fr, this section heading is just… here. nothing under it. the page said SUDO and then said nothing else. iconic honestly. moving on.) ✨


πŸŽ€ X WINDOWS LOGIN πŸŽ€

the SELinux user xguest_u is able to X Windows login. πŸ–₯️✨


🌈 NETWORK 🌈

the SELinux user xguest_u is able to listen on the following tcp ports:

1716

the SELinux user xguest_u is able to connect to the following tcp ports:

53,853

8955

4713

4331,5001

80,81,443,488,8008,8009,8443,9000

8080,8118,8123,10001-10010

3128,3401,4827

843,1935

21,989,990

631,8610-8614

32768-60999

all ports without defined types

8000,9433,16001

8036

8081

9080

88,750,4444

the SELinux user xguest_u is able to listen on the following udp ports:

5353

1716

the SELinux user xguest_u is able to connect to the following tcp ports:

53,853

8955

4713

4331,5001

80,81,443,488,8008,8009,8443,9000

8080,8118,8123,10001-10010

3128,3401,4827

843,1935

21,989,990

631,8610-8614

32768-60999

all ports without defined types

8000,9433,16001

8036

8081

9080

88,750,4444
yes bestie, that last one says "tcp ports" again, exactly like the page does. i'm not fixing it, i'm just reporting it. πŸ’€

πŸ”₯ BOOLEANS πŸ”₯

SELinux policy is customizable based on least access required. and the xguest policy? extremely flexible. it has several booleans that let you manipulate the policy and run xguest with the tightest access possible. obsessed. 🫢

  • if you want to allow xguest users to configure Network Manager and connect to apache ports, you must turn on the xguest_connect_network boolean. Enabled by default.
setsebool -P xguest_connect_network 1
  • if you want to allow xguest users to mount removable media, you must turn on the xguest_mount_media boolean. Enabled by default.
setsebool -P xguest_mount_media 1
  • if you want to allow xguest to use blue tooth devices, you must turn on the xguest_use_bluetooth boolean. Enabled by default.
setsebool -P xguest_use_bluetooth 1
  • if you want to deny all system processes and Linux users from using bluetooth wireless technology, you must turn on the deny_bluetooth boolean. Disabled by default.
setsebool -P deny_bluetooth 1
  • if you want to deny user domains applications from mapping a memory region as both executable and writable β€” and bestie, this is dangerous, and the executable should be reported in bugzilla β€” you must turn on the deny_execmem boolean. Disabled by default.
setsebool -P deny_execmem 1
  • if you want to deny any process from ptracing or debugging any other processes, you must turn on the deny_ptrace boolean. Disabled by default.
setsebool -P deny_ptrace 1
  • if you want to allow all domains to execute in fips_mode, you must turn on the fips_mode boolean. Enabled by default.
setsebool -P fips_mode 1
  • if you want to allow httpd cgi support, you must turn on the httpd_enable_cgi boolean. Enabled by default.
setsebool -P httpd_enable_cgi 1
  • if you want to unify HTTPD handling of all content files, you must turn on the httpd_unified boolean. Disabled by default.
setsebool -P httpd_unified 1
  • if you want to allow confined applications to use nscd shared memory, you must turn on the nscd_use_shm boolean. Enabled by default.
setsebool -P nscd_use_shm 1
  • if you want to allow unconfined executables to make their stack executable β€” and honestly? this should never, ever be necessary. it probably indicates a badly coded executable, but it could indicate an attack. this executable should be reported in bugzilla. anyway, you must turn on the selinuxuser_execstack boolean. Disabled by default.
setsebool -P selinuxuser_execstack 1
  • if you want to allow user to r/w files on filesystems that do not have extended attributes (FAT, CDROM, FLOPPY), you must turn on the selinuxuser_rw_noexattrfile boolean. Disabled by default.
setsebool -P selinuxuser_rw_noexattrfile 1
  • if you want to allow user to use ssh chroot environment, you must turn on the selinuxuser_use_ssh_chroot boolean. Disabled by default.
setsebool -P selinuxuser_use_ssh_chroot 1
  • if you want to support NFS home directories, you must turn on the use_nfs_home_dirs boolean. Enabled by default.
setsebool -P use_nfs_home_dirs 1
  • if you want to support SAMBA home directories, you must turn on the use_samba_home_dirs boolean. Disabled by default.
setsebool -P use_samba_home_dirs 1

🧚 HOME_EXEC 🧚

the SELinux user xguest_u is able execute home content files. ✨


πŸ¦‹ TRANSITIONS πŸ¦‹

three things can happen when xguest_t attempts to execute a program. three! a whole little branching storyline:

  1. SELinux Policy can deny xguest_t from executing the program.
  2. SELinux Policy can allow xguest_t to execute the program in the current user type.

execute the following to see the types that the SELinux user xguest_t can execute without transitioning:

sesearch -A -s xguest_t -c file -p execute_no_trans
  1. SELinux can allow xguest_t to execute the program and transition to a new type.

execute the following to see the types that the SELinux user xguest_t can execute and transition:

$ sesearch -A -s xguest_t -c process -p transition

πŸ“ MANAGED FILES πŸ“

the SELinux process type xguest_t can manage files labeled with the following file types. the paths listed are the default paths for these file types. and note: the process's UID still needs to have DAC permissions, bestie. don't forget that part. πŸ’…

  • alsa_home_t
/home/[^/]+/.asoundrc
  • auth_cache_t
/var/cache/coolkey(/.*)?
  • chrome_sandbox_tmpfs_t
  • gconf_tmp_t
/tmp/gconfd-[^/]+/.*
  • httpd_user_content_t
/home/[^/]+/((www)|(web)|(public_html))(/.+)?
  • httpd_user_htaccess_t
/home/[^/]+/((www)|(web)|(public_html))(/.*)?/.htaccess
  • httpd_user_ra_content_t
/home/[^/]+/((www)|(web)|(public_html))(/.*)?/logs(/.*)?
  • httpd_user_rw_content_t
  • httpd_user_script_exec_t
/home/[^/]+/((www)|(web)|(public_html))/cgi-bin(/.+)?
  • noxattrfs
all files on file systems which do not support extended attributes
  • pulseaudio_tmpfs_t
  • pulseaudio_tmpfsfile
  • session_dbusd_tmp_t
/run/user/[0-9]+/bus
/run/user/[0-9]+/dbus(/.*)?
/run/user/[0-9]+/dbus-1(/.*)?
  • usbfs_t
  • user_fonts_cache_t
/root/.fontconfig(/.*)?
/root/.fonts/auto(/.*)?
/root/.fonts.cache-.*
/root/.cache/fontconfig(/.*)?
/home/[^/]+/.fontconfig(/.*)?
/home/[^/]+/.fonts/auto(/.*)?
/home/[^/]+/.fonts.cache-.*
/home/[^/]+/.cache/fontconfig(/.*)?
  • user_home_type
all user home files
  • user_tmp_t
/run/tlog(/.*)?
/run/user/[^/]+
/dev/shm/mono.*
/tmp/.ICE-unix(/.*)?
/tmp/.X11-unix(/.*)?
/dev/shm/pulse-shm.*
/run/user
/tmp/.X0-lock
/tmp/hsperfdata_root
/var/tmp/hsperfdata_root
/home/[^/]+/tmp
/home/[^/]+/.tmp
/run/user/[0-9]+
/tmp/gconfd-[^/]+
  • user_tmp_type
all user tmp files
  • xserver_tmpfs_t

⭐ COMMANDS ⭐

  • semanage fcontext can also be used to manipulate default file context mappings.
  • semanage permissive can also be used to manipulate whether or not a process type is permissive.
  • semanage module can also be used to enable/disable/install/remove policy modules.
  • semanage boolean can also be used to manipulate the booleans.
  • system-config-selinux is a GUI tool available to customize SELinux policy settings.

πŸ’œ AUTHOR πŸ’œ

this manual page was auto-generated using sepolicy manpage. πŸ’… (shoutout to the generator, it ate.)


🌟 SEE ALSO 🌟

selinux(8), xguest(8), semanage(8), restorecon(8), chcon(1), sepolicy(8), setsebool(8), xguest_dbusd_selinux(8), xguest_dbusd_selinux(8), xguest_gkeyringd_selinux(8), xguest_gkeyringd_selinux(8)

(no bestie, you're not seeing double β€” xguest_dbusd_selinux(8) and xguest_gkeyringd_selinux(8) each show up twice in the original. iconic of them. πŸ’€)

and that's the whole page, bestie!! πŸŽ€ written by <purple>mgrepl@redhat.com</purple> (hi mgrepl ily), part of the xguest docs, and dated xguest_selinux(8) β€” the same source/version line the page's footer carries. go forth and be the least privileged main character you can be πŸ‘‘πŸ’–

πŸ“¦ where this page comes from