What does capital T mean in the output of 'ls -l'?
I had a nightly cronjob start throwing errors about "inappropriate permissions..."
rsync: [generator] failed to set permissions on "/data2/home/redacted/alsoredacted/opt/dell/srvadmin/var/log/openmanage/omcmdlog.xml": Inappropriate file type or format (79)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1179) [sender=3.1.2]
Looking into it I found:
[myname@myserver ~]$ ls -l /opt/dell/srvadmin/var/log/openmanage/omcmdlog.xml
-rw-rw-r-T. 1 root root 735 Dec 19 22:03 /opt/dell/srvadmin/var/log/openmanage/omcmdlog.xml
I suspected the 'sticky bit'.
Googling it I found this:
`T'
If the restricted deletion flag or sticky bit is set but the
other-executable bit is not set.
I thought lsattr
would show it if it was set sticky but I guess not:
$ lsattr /opt/dell/srvadmin/var/log/openmanage/omcmdlog.xml
-------------e-- /opt/dell/srvadmin/var/log/openmanage/omcmdlog.xml
What does the capital T mean and how do I get rid of it?
2 answers
The following users marked this post as Works for me:
User | Comment | Date |
---|---|---|
re89j |
Thread: Works for me Excellent explanation! |
Jan 30, 2022 at 23:12 |
The reason why you don't find this in man ls
is that the GNU project (that developed Coreutils) usually provides the complete documentation of its components not in classic manual pages, but in so called Info documents (for more context, see Unix & Linux: What is GNU Info for?), and that is indeed disclaimed in the end of man ls
.
The fragment you have quoted, which claims it is the sticky bit, is authoritative: It is from GNU Coreutils Info document itself, §10.1.2 What information is listed. And, for completeness, this is Coreutils, §27.1 Structure of File Mode Bits, defining the jargon:
The restricted deletion flag or sticky bit.
Prevent unprivileged users from removing or renaming a file in a directory unless they own the file or the directory; this is commonly found on world-writable directories like /tmp. For regular files on some older systems, save the program’s text image on the swap device so it will load more quickly when run, so that the image is “sticky”.
Regarding "how to get rid of it", first note the permissions symbolic notation, in which, skipping the foremost bit, which denotes file type,
- The 1st three bits (
rw-
) denote owner — often called user — permissions, - The 2nd three bits (
rw-
) the group permissions, - The 3rd three bits (
r-T
) the other permissions.
Thus, reading man chmod
, simple ways to remove it are
chmod o-t file
chmod -t file
o
means "other" and -t
"remove the sticky bit". Since the t
bit can only appear in the other field, it can be omitted without ambiguity.
0 comment threads
The following users marked this post as Works for me:
User | Comment | Date |
---|---|---|
re89j |
Thread: Works for me Probably not the very best answer, but worked to fix my rsync error |
Jan 21, 2022 at 05:51 |
To get rid of it, I ran:
$ sudo chmod o-t /opt/dell/srvadmin/var/log/openmanage/omcmdlog.xml
$ ls -l /opt/dell/srvadmin/var/log/openmanage/omcmdlog.xml
-rw-rw-r--. 1 root root 735 Dec 19 22:03 /opt/dell/srvadmin/var/log/openmanage/omcmdlog.xml
I am still not entirely sure if it was sticky or setuid (more likely) but there's no reason that file should have been specially permissioned.
0 comment threads