user_selinux(8)
okay so bestie, welcome to user_selinux(8) β the user SELinux Policy documentation π. Todayβs main character is user_u, and weβre gonna get into every single deet: roles, types, ports, booleans, file paths, the whole vibe. No cap, nothing skipped.
β¨ NAME β¨
user_uβ Generic unprivileged user - Security Enhanced Linux Policy
π DESCRIPTION π
user_u is an SELinux User defined in the SELinux policy. SELinux users have default roles, user_r. The default role has a default type, user_t, associated with it.
The SELinux user will usually login to a system with a context that looks like:
user_u:user_r:user_t:s0
Linux users are automatically assigned an SELinux users at login. Login programs use the SELinux User to assign initial context to the userβs shell.
SELinux policy uses the context to control the userβs access.
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 Linux User to SELinux user mapping using:
semanage login -l
If you wanted to change the default user mapping to use the user_u user, you would execute:
semanage login -m -s user_u __default__
If you want to map the one Linux user (joe) to the SELinux user user, you would execute:
$ semanage login -a -s user_u joe
π«Ά USER DESCRIPTION π«Ά
The SELinux user user_u is defined in policy as a unprivileged user. SELinux prevents unprivileged users from doing administration tasks without transitioning to a different role.
π SUDO π
okay so this section is literally just a heading in the original β no extra deets, no commands, nothing. Weβre not inventing anything here, bestie. Moving on π
πͺ X WINDOWS LOGIN πͺ
The SELinux user user_u is able to X Windows login.
π NETWORK π
The SELinux user user_u is able to listen on the following tcp ports.
17166000-60203689all ports >= 1024all ports without defined types32768-60999
The SELinux user user_u is able to connect to the following tcp ports.
895553,853all ports389,636,3268,3269,7389all ports without defined types32768-60999all ports < 1024908088,750,4444
The SELinux user user_u is able to listen on the following udp ports.
535332768-609991716all ports without defined typesall ports >= 1024
The SELinux user user_u is able to connect to the following tcp ports.
yep, it really says tcp again here even though weβre in the udp part β keeping it 100% as written π
895553,853all ports389,636,3268,3269,7389all ports without defined types32768-60999all ports < 1024908088,750,4444
ποΈ BOOLEANS ποΈ
SELinux policy is customizable based on least access required. user policy is extremely flexible and has several booleans that allow you to manipulate the policy and run user with the tightest access possible.
cron_userdomain_transitionβ want to determine whether crond can execute jobs in the user domain as opposed to the generic cronjob domain? turn this on. Enabled by default. Runsetsebool -P cron_userdomain_transition 1.deny_bluetoothβ want to deny all system processes and Linux users to use bluetooth wireless technology? turn this on. Disabled by default. Runsetsebool -P deny_bluetooth 1.deny_execmemβ want to deny user domains applications to map a memory region as both executable and writable? this is dangerous and the executable should be reported in bugzilla. Disabled by default. Runsetsebool -P deny_execmem 1.deny_ptraceβ want to deny any process from ptracing or debugging any other processes? turn this on. Disabled by default. Runsetsebool -P deny_ptrace 1.fips_modeβ want to allow all domains to execute infips_mode? turn this on. Enabled by default. Runsetsebool -P fips_mode 1.git_session_usersβ want to determine whether calling user domains can execute Git daemon in thegit_session_tdomain? turn this on. Disabled by default. Runsetsebool -P git_session_users 1.httpd_enable_cgiβ want to allow httpd cgi support? turn this on. Enabled by default. Runsetsebool -P httpd_enable_cgi 1.httpd_unifiedβ want to unify HTTPD handling of all content files? turn this on. Disabled by default. Runsetsebool -P httpd_unified 1.nis_enabledβ want to allow system to run with NIS? turn this on. Disabled by default. Runsetsebool -P nis_enabled 1.polipo_session_usersβ want to determine whether calling user domains can execute Polipo daemon in thepolipo_session_tdomain? turn this on. Disabled by default. Runsetsebool -P polipo_session_users 1.pppd_for_userβ want to allow pppd to be run for a regular user? turn this on. Disabled by default. Runsetsebool -P pppd_for_user 1.selinuxuser_execmodβ want to allow all unconfined executables to use libraries requiring text relocation that are not labeledtextrel_shlib_t? turn this on. Disabled by default. Runsetsebool -P selinuxuser_execmod 1.selinuxuser_execstackβ want to allow unconfined executables to make their stack executable? this should never, ever be necessary. probably indicates a badly coded executable, but could indicate an attack. this executable should be reported in bugzilla. Disabled by default. Runsetsebool -P selinuxuser_execstack 1.selinuxuser_mysql_connect_enabledβ want to allow users to connect to the local mysql server? turn this on. Disabled by default. Runsetsebool -P selinuxuser_mysql_connect_enabled 1.selinuxuser_pingβ want to allow confined users the ability to execute thepingandtraceroutecommands? turn this on. Disabled by default. Runsetsebool -P selinuxuser_ping 1.selinuxuser_rw_noexattrfileβ want to allow user to r/w files on filesystems that do not have extended attributes (FAT,CDROM,FLOPPY)? turn this on. Disabled by default. Runsetsebool -P selinuxuser_rw_noexattrfile 1.selinuxuser_use_ssh_chrootβ want to allow user to use ssh chroot environment? turn this on. Disabled by default. Runsetsebool -P selinuxuser_use_ssh_chroot 1.unprivuser_use_svirtβ want to allow unprivileged user to create and transition to svirt domains? turn this on. Disabled by default. Runsetsebool -P unprivuser_use_svirt 1.use_nfs_home_dirsβ want to support NFS home directories? turn this on. Enabled by default. Runsetsebool -P use_nfs_home_dirs 1.use_samba_home_dirsβ want to support SAMBA home directories? turn this on. Disabled by default. Runsetsebool -P use_samba_home_dirs 1.
π HOME_EXEC π
The SELinux user user_u is able execute home content files.
π TRANSITIONS π
Three things can happen when user_t attempts to execute a program.
- SELinux Policy can deny
user_tfrom executing the program. - SELinux Policy can allow
user_tto execute the program in the current user type.
Execute the following to see the types that the SELinux user user_t can execute without transitioning:
sesearch -A -s user_t -c file -p execute_no_trans
- SELinux can allow
user_tto execute the program and transition to a new type.
Execute the following to see the types that the SELinux user user_t can execute and transition:
$ sesearch -A -s user_t -c process -p transition
π MANAGED FILES π
The SELinux process type user_t can manage files labeled with the following file types. The paths listed are the default paths for these file types. Note the processes UID still need to have DAC permissions.
alsa_home_t/home/[^/]+/.asoundrc
auth_cache_t/var/cache/coolkey(/.*)?
bluetooth_helper_tmp_tβ no default paths listed.bluetooth_helper_tmpfs_tβ no default paths listed.chrome_sandbox_tmpfs_tβ no default paths listed.faillog_t/var/log/btmp.*/run/faillock(/.*)?/var/log/faillog.*/var/log/tallylog.*
games_data_t/var/games(/.*)?/var/lib/games(/.*)?
gconf_tmp_t/tmp/gconfd-[^/]+/.*
gpg_agent_tmp_t/home/[^/]+/.gnupg/log-socket
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β no default paths listed.httpd_user_script_exec_t/home/[^/]+/((www)|(web)|(public_html))/cgi-bin(/.+)?
krb5_host_rcache_t/var/tmp/krb5_0.rcache2/var/cache/krb5rcache(/.*)?/var/tmp/nfs_0/var/tmp/DNS_25/var/tmp/host_0/var/tmp/imap_0/var/tmp/HTTP_23/var/tmp/HTTP_48/var/tmp/ldap_55/var/tmp/ldap_487/var/tmp/ldapmap1_0
mail_spool_t/var/mail(/.*)?/var/spool/imap(/.*)?/var/spool/mail(/.*)?/var/spool/smtpd(/.*)?
mqueue_spool_t/var/spool/(client)?mqueue(/.*)?/var/spool/mqueue.in(/.*)?
pulseaudio_tmpfs_tβ no default paths listed.pulseaudio_tmpfsfileβ no default paths listed.sandbox_tmpfs_typeall sandbox content in tmpfs file systems
security_t/selinux
session_dbusd_tmp_t/run/user/[0-9]+/bus/run/user/[0-9]+/dbus(/.*)?/run/user/[0-9]+/dbus-1(/.*)?
usbfs_tβ no default paths listed.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_typeall 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_typeall user tmp files
virt_image_typeall virtual image files
xserver_tmpfs_tβ no default paths listed.
π» COMMANDS π»
semanage fcontextcan also be used to manipulate default file context mappings.semanage permissivecan also be used to manipulate whether or not a process type is permissive.semanage modulecan also be used to enable/disable/install/remove policy modules.semanage booleancan also be used to manipulate the booleanssystem-config-selinuxis a GUI tool available to customize SELinux policy settings.
π AUTHOR π
Okay so nobody wrote this with their human hands, bestie β it's auto-generated β¨. The page literally says it was created using sepolicy manpage, which is a tool that reads the policy and spits out documentation for you. So if you ever wondered "who do I thank for this masterpiece," the answer is: a script. Iconic behaviour honestly π
π SEE ALSO π
The friend group of related manpages β go read these next, they're all linked together and honestly it's giving a whole cinematic universe π :
selinux(8)β the big parent page, the main character πuser(8)β all about users in generalsemanage(8)β the policy management toolrestorecon(8)β fixes up file security contextschcon(1)β changes file security contexts by handsepolicy(8)β the tool that generated this very page (yes, meta)setsebool(8)β flips booleans on and offuser_dbusd_selinux(8)β the D-Bus daemon's SELinux pageuser_dbusd_selinux(8)β ...and again π« (yes it's listed twice, no that's not a typo, it's literally how the page ships, we don't ask questions)user_gkeyringd_selinux(8)β the keyring daemon's pageuser_gkeyringd_selinux(8)β listed twice too, bestie, that's just the vibeuser_mail_selinux(8)β the mail domainuser_mail_selinux(8)β yep, again πΈuser_screen_selinux(8)β thescreenmultiplexer domainuser_screen_selinux(8)β double troubleuser_seunshare_selinux(8)β theseunsharedomainuser_seunshare_selinux(8)β twice, because why notuser_ssh_agent_selinux(8)β ssh-agent's little worlduser_ssh_agent_selinux(8)β and its twinuser_wine_selinux(8)β the Wine domain, for running Windows stuffuser_wine_selinux(8)β last but not least, also doubled
ngl the duplicates are giving "Ctrl+V twice and shipped it" energy, but they're all real references so we keep every single one. No entries left behind π«Ά
π one last cute sign-off π
That's the whole page, bestie! Footer time, and it's short and sweet: it's brought to you by mgrepl@redhat.com, with the version/section thing being just user, and the page title itself is user_selinux(8) π That's the source, the version, and the page name, all wrapped up. Go forth and be secure β SELinux is your friend, not your enemy, fr fr π₯π
π¦ where this page comes from
- opensuse-leap 16.0: selinux-policy-doc 20250627+git412.dbf877ab7-160000.1.1 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms