How do you set the default user in Linux for file creation?

3

1

I want to create a directory, for example:

/public/all

But I want it so that if you create a file in all, the owner is root, but anyone with access to the /public/all folder can delete/edit/etc the file, just not change the permissions. (I will use a self-created "setx" application to change the execute value if needed.)

Reason for this, I don't want you to be able to deny other users write/read access to files in /public/all. I heard setuid on directories doesn't work for that.

Not a Name

Posted 2011-11-26T00:23:55.747

Reputation: 336

Answers

7

You cannot do this; the initial owner is always the object's creator.

What you can do is set the default ACLs to automatically allow read/write to everyone:

setfacl -m default:u::rwx,default:g::rwx,default:o::rwx /public/all

Also optionally set a default group:

chown :nobody /public/all
chmod g+s /public/all

However, none of these will prevent the owner from changing the permissions later.


An alternative solution is to monitor the directory with inotify (using incron) and automatically run chown on creation. Put this to incrontab:

/public/all IN_CREATE chown nobody:nobody $@/$#; chmod 0666 $@/$#

user1686

Posted 2011-11-26T00:23:55.747

Reputation: 283 655

The chmod at the end will remove executable flags. This effect might be desired in such a directory (unless it's subdirectories), but I thought I'd mention that. – Daniel Beck – 2011-11-26T14:03:10.067

Ah, I forgot that. chmod ugo=rwX should work. – user1686 – 2011-11-26T14:12:48.277