What is the sticky bit in UNIX file systems? When is it used?
Solution 1:
Its original use was to provide a hint to the OS that the executable should be cached in memory so it would load faster. This use has mostly been deprecated as OSes are pretty smart about this sort of thing now. In fact, I think now some OSes use it as a hint that the executable shouldn’t be cached.
The most common use today is to create a directory in which anyone can create a file, but only the owner of a file in that directory can delete it. Traditionally, if you have a directory that anyone can write to, anyone can also delete a file from it. setting the sticky bit on a directory makes it so only the owner of a file can delete the file from a world-writeable directory.
The classic use of this is the /tmp
directory:
$ ls -ld /tmp
drwxrwxrwt 29 root root 5120 May 20 09:15 /tmp/
The t
in the mode there is the sticky bit. If that wasn’t set, it would be pretty easy for a regular user to cause havoc by deleting everything from /tmp
. Since lots of daemons put sockets in /tmp
, it would essentially be a local DOS.
Solution 2:
http://en.wikipedia.org/wiki/Sticky_bit