Sticky bit
There may be situation where you wanted all users to store files in a certain folder but might want to restrict users from deleting other users file. For this scenario, you can set the sticky bit of the folder which will serve our purpose.
For example we have created a folder inside /tmp directory called “user”
root@dev:/tmp# ls -l | tail -1
drwxr-xrwx 2 root root 4096 2009-07-13 11:39 user
root@dev:/tmp# cd user
Now create a file called a.txt (you are currently with root privileges)
root@dev:/tmp/user# touch a.txt
Now change to the user with normal privileges (i have created a user called ‘usr100’ for this purpose)
usr100@dev:/tmp/user$ su usr100
password:
usr100@dev:/tmp/user$ whoami
usr100
usr100@dev:/tmp/user# touch b.txt
usr100@dev:/tmp/user$ ls -ltr
total 4
-rw-r–r– 1 root root 0 2009-07-13 11:42 a.txt
-rw-r–r– 1 usr100 usr100 0 2009-07-13 11:42 b.txt
usr100@dev:/tmp/user$ rm -i a.txt
usr100@dev:/tmp/user$ ls -ltr
total 4
-rw-r–r– 1 usr100 usr100 0 2009-07-13 11:42 b.txt
The file created by root user got deleted by usr100.
In order to prevent this, set the sticky bit for the folder ‘user’
usr100@dev:/tmp/user$ su root
root@dev:/tmp# chmod +t user
root@dev:/tmp# cd usr
root@dev:/tmp/usr# touch a.txt
root@dev:/tmp/usr# su usr100
usr100@dev:/tmp$ ls -ltr | tail -1
drwxr-xrwt 2 root root 4096 2009-07-13 12:07 user
Notice “t” at the end of the permission settings which denote that the folder /user has been set with the sticky bit.
usr100@dev:/tmp/user$ ls -ltr
total 0
-rw-r–r– 1 usr100 usr100 0 2009-07-13 11:42 c.txt
-rw-r–r– 1 root root 0 2009-07-13 12:07 a.txt
Now try deleting the file a.txt created by root user
usr100@dev:/tmp/user$ rm -i a.txt
rm: remove write-protected regular empty file `a.txt’? y
rm: cannot remove `a.txt’: Operation not permitted
As the sticky bit is set for the folder ‘user’, usr100 is prevented from deleting the file created by ‘root’ user