How to prevent users from renaming files while providing write permissions on Linux
Solution 1
Quoting Stephane Chazelas from this answer on Unix & Linux SE.
To rename a file, write permissions to the file don't matter, renaming a file is a change to the directory, not the file. That's changing the directory entry to have a different name pointing to the file.
So all you need to do is change the permissions of the directory. For instance:
chown root: . chmod 755 .
That will prevent users from renaming files in there, but also from creating or deleting files. If you still want them to be able to do that, you could instead make the directory writeable but also set the
t
bit. With that bit set, users (other than the owner of the directory who is not restricted) can only delete or rename the files they own.chown root:people-who-can-create-file-here . chmod 1775 . chown root:people-who-can-modify-the-files file1-that-must-not-be-rename ... chmod 664 file1-that-must-not-be-rename ...
Solution 2
chmod +t [FILE]
It sets the sticky bit, which does exactly what you describe.
EDIT: Well, to be more specific it prevents other users from renaming the file. So depends on what you want, exactly.
Related videos on Youtube
manav m-n
Please note that this profile is outdated and kept here only for historical reasons. Name: Unknown Location: Unknown Education: Unknown Facebook/Twitter/Instagram: None
Updated on September 18, 2022Comments
-
manav m-n over 1 year
For some special purpose, I want to prevent non-root users of the Linux Server from changing or renaming the filenames. However, they can modify and write to the contents of the file. How to do this from command line.
-
chronitis over 10 yearsPossible solution: askubuntu.com/questions/33566/…
-
David Foerster over 10 yearsDuplicate of superuser.com/questions/653739 and unix.stackexchange.com/questions/93399. Please don't cross post!
-
don.joey over 10 yearsHow can you accept two different solutions in the two sites? Are they both working?
-
manav m-n over 10 years@don.joey Yes both are correct solutions.
-