| Tested on | RHEL 10.2 (Coughlan) |
|---|---|
| Package | coreutils 9.5policycoreutils 3.10libselinux-utils 3.10acl 2.4.0attr 2.5.2 |
| Applies to | RHEL, Rocky Linux, AlmaLinux, Fedora, and other Linux distributions with GNU ls and SELinux |
| Privilege | Normal user for ls -l, ls -Z, and getfacl; sudo for restorecon and chcon |
| Scope | Trailing dot and plus markers in ls -l output, SELinux context inspection, and when restorecon is appropriate. Does not cover full chmod tutorials or detailed ACL administration. |
| Related guides | Linux file permissions find command |
You ran ls -l and saw a dot after the mode bits — something like -rw-r--r--. instead of -rw-r--r--. That trailing character is not another read, write, or execute permission. GNU ls uses it to report alternate access information, most often a SELinux security context on RHEL-family systems.
Quick answer: what does the dot mean?
-rw-r--r--.
^
dotGNU ls prints . when the file has a security context but no other alternate access method. The current GNU Coreutils ls documentation defines the markers this way:
.— security context only+— some other combination of alternate access methods?—lscould not determine the alternate access information
The nine rwx characters are the normal Unix mode. The dot sits outside that mode string as a separate security-context indicator; on RHEL-family SELinux systems, it reflects the SELinux file context.
Check the SELinux context with ls -Z
To see the label behind the dot, use ls -Z or ls -lZ:
ls -lZ /etc/passwdSample output:
-rw-r--r--. 1 root root system_u:object_r:passwd_file_t:s0 /etc/passwd-rw-r--r-- is the Unix permission mode. system_u:object_r:passwd_file_t:s0 is the SELinux context stored separately from chmod bits. The trailing . only tells you that context exists and that ls did not also report another alternate access method such as an ACL.
On a file you own in your home directory, the context differs but the dot behaves the same way:
ls -Z ~/dot-perm-lab/dotfileSample output:
unconfined_u:object_r:admin_home_t:s0 /root/dot-perm-lab/dotfileDot (.) vs plus (+) in Linux permissions
| Marker | Meaning |
|---|---|
| (none) | No alternate access method reported |
. |
Security context only |
+ |
Other or additional alternate access method(s); a POSIX ACL is a common example |
? |
ls could not determine the information |
Inspect an ACL when you see +. getfacl comes from the acl package:
getfacl aclfileSample output:
# file: aclfile
# owner: root
# group: root
user::rw-
user:root:rwx
group::r--
mask::rwx
other::r--That file showed -rw-rwxr--+ in ls -l because ls detected an alternate access method beyond the security context. The mask::rwx entry is why the group permission field can display rwx even when group::r-- is more restrictive. For ACL syntax and setfacl workflows, see Linux ACL examples.
Inspect SELinux when you see .:
ls -Z aclfileSample output:
unconfined_u:object_r:admin_home_t:s0 aclfileWhy chmod does not remove the dot
chmod changes only the traditional mode bits. It does not remove the SELinux security context.
chmod 644 ~/dot-perm-lab/dotfileList the file again — the mode bits change, but the trailing dot stays:
ls -l ~/dot-perm-lab/dotfileSample output:
-rw-r--r--. 1 root root 9 Aug 16 15:58 /root/dot-perm-lab/dotfilechmod 777, chmod 755, and chmod 644 are not ways to remove the trailing dot. If the dot surprises you after a permission change, inspect the context with ls -Z instead of chasing the marker with chmod.
Should you remove the dot?
Normally, no. On SELinux-enabled systems, -rw-r--r--. is expected.
The dot does not mean:
- broken permissions
- an
lserror - overly restrictive Unix modes
- an ACL problem by itself
It only means ls found a security context and no other alternate access method to report. Do not disable SELinux merely because ls -l shows a dot.
Fix an incorrect SELinux context with restorecon
When the label is wrong for the path, restore the expected context instead of stripping it.
Check the current label:
ls -Z ~/dot-perm-lab/dotfileSee what policy expects for that path:
matchpathcon ~/dot-perm-lab/dotfileSample output:
/root/dot-perm-lab/dotfile system_u:object_r:admin_home_t:s0Restore the expected label on one file. In the lab run below, the file had the wrong etc_t type before restorecon corrected it:
restorecon -v ~/dot-perm-lab/dotfileSample output:
Relabeled /root/dot-perm-lab/dotfile from unconfined_u:object_r:etc_t:s0 to unconfined_u:object_r:admin_home_t:s0Notice that restorecon corrected etc_t to admin_home_t but retained unconfined_u. By default, restorecon primarily corrects the SELinux type on an already-labeled file. matchpathcon can show a different user component (system_u here) because it reports the policy default for the path, not every component of the label already stored on the file. Use restorecon -U or -F only when you intentionally need to replace additional context components.
For a directory tree, use recursive mode:
restorecon -Rv ~/dot-perm-labIf labels under /var/log drift after a policy change, restorecon -Rv /var/log is the maintenance path — not bulk deletion of security.selinux attributes.
Can you remove the security.selinux attribute?
setfattr -x security.selinux FILE requests removal of the stored SELinux xattr, but an active SELinux policy can reject direct changes to security.* attributes. This is not the normal way to fix the dot; use restorecon when the label is incorrect.
That is not a routine maintenance step. If SELinux is enabled or later re-enabled, restore the expected context with restorecon rather than stripping labels so ls -l looks cleaner.
References
- GNU Coreutils —
lsinvocation (alternate access methods) — https://www.gnu.org/software/coreutils/manual/html_node/ls-invocation.html - Linux
ls(1)manual — https://man7.org/linux/man-pages/man1/ls.1.html - Red Hat Enterprise Linux 10 — Managing file system labels — https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/10/html/using_selinux/managing-file-system-labels_using-selinux
- Linux
setfattr(1)manual — https://man7.org/linux/man-pages/man1/setfattr.1.html
Summary
The dot after Linux permissions in ls -l output is a GNU ls marker, not an extra r, w, or x bit. It usually means the file has a SELinux security context and nothing else ls classifies as an alternate access method. A plus sign points you toward ACL inspection with getfacl; a question mark means ls could not read that metadata.
Use ls -Z when you need the actual context. chmod changes Unix modes only, so it will not remove the dot. On SELinux systems the dot is normal — fix wrong labels with matchpathcon and restorecon rather than disabling SELinux or stripping security.selinux across system directories.
Frequently Asked Questions
What does the dot after Linux permissions mean?
GNU ls prints a dot when the file has a security context but no other alternate access method. On SELinux systems the dot is a separate indicator from the rwx mode bits — it is not another permission character.
Why does chmod not remove the dot after permissions?
chmod changes the traditional Unix mode bits only. It does not remove the SELinux security context stored separately, so ls -l can still show -rw-r--r--. after chmod 644 or chmod 755.
What is the difference between dot and plus in ls -l permissions?
A dot means security context only. A plus means ls detected another alternate access method, commonly a POSIX ACL. A question mark means ls could not determine the alternate access information.
Should I remove the dot from Linux permissions?
Usually no. The dot is normal on SELinux-enabled systems and does not mean permissions are broken. Fix an incorrect label with restorecon instead of stripping security.selinux.

