Hi folks,

FreeBSD doesn't allow an unprivileged user to set the sticky bit (mode S_ISTXT, octal 01000) on a file, though it does allow root to do so.

[EMAIL PROTECTED]:/tmp$ chmod +t foo
chmod: foo: Inappropriate file type or format
[EMAIL PROTECTED]:/tmp$ su
Password:
vulcan# chmod +t foo
vulcan# ls -l foo
-rw-r--r-T  1 nate  wheel  0 Nov 13 22:46 foo

Why is this?

I don't expect the sticky bit to actually do anything on a regular file in this day and age (I know what its historical behavior was, and what it does for directories), but I'd think it would be harmless to set it. Linux lets a user set the sticky bit, and Solaris silently masks it off.

I came across this when trying to rsync some files which had the sticky bit set on the remote side. (It's the historical Unix archive from tuhs.org; the files in question are part of an unpacked V7 UNIX installation, for which the sticky bit of course had meaning. :-) ) It's annoying that this makes rsync fail; it messes up my mirroring script.

sticky(8) says the bit "is ignored for regular files", which evidently isn't accurate. chmod(2) says "on UFS-based file systems (FFS, LFS) the sticky bit may only be set upon directories", which isn't right either since root is able to do it. src/sys/ufs/ufs/ufs_vnops.c has the following comment:

        /*
         * Privileged processes may set the sticky bit on non-directories,
         * as well as set the setgid bit on a file with a group that the
         * process is not a member of.  Both of these are allowed in
         * jail(8).
         */

but does not explain why unprivileged process should be forbidden to set the sticky bit.

--

Nate Eldredge
[EMAIL PROTECTED]
_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to