I want to set a folder such that anything created within it (directories, files) inherit default permissions and group.
Lets call the group "media". And also, the folders/files created within the directory should have g+rw automatically.
I found it: Applying default permissions
From the article:
chmod g+s <directory> //set gid setfacl -d -m g::rwx /<directory> //set group to rwx default setfacl -d -m o::rx /<directory> //set other
Next we can verify:
# file: ../<directory>/ # owner: <user> # group: media # flags: -s- user::rwx group::rwx other::r-x default:user::rwx default:group::rwx default:other::r-x
This is an addition to Chris' answer, it's based on my experience on my Arch Linux rig.
Using the default switch (-d) and the modify switch (-m) will only modify the the default permissions but leave the existing ones intact:
setfacl -d -m g::rwx /<directory>
If you want to change folder's entire permission structure including the existing ones (you'll have to do an extra line and make it recursive -R:
setfacl -R -m g::rwx /<directory>
setfacl -R -m g::rwx /home/limited.users/<directory> // gives group read,write,exec permissions for currently existing files and folders, recursively setfacl -R -m o::x /home/limited.users/<directory> //revokes read and write permission for everyone else in existing folder and subfolders setfacl -R -d -m g::rwx /home/limited.users/<directory> // gives group rwx permissions by default, recursively setfacl -R -d -m o::--- /home/limited.users/<directory> //revokes read, write and execute permissions for everyone else.
(CREDIT to markdwite in comments for the synthax of the revoke all privileges line)
Add yourself to apache group, so we can edit files created by apache server
sudo usermod -a -G apache myusername
Needs to Logout/Relogin so the newly added group takes effect
Add apache as group member of html folder, so we own it as well as a group member
sudo chown -R :apache html
Give read,write,execute permission to user & group (uuugggooo) u=user, g=group, o=others
sudo chmod 775 html
Set the GID of html, now, newly created files in html will inherit ownership permissions:
sudo chmod g+s html
This creates the default rules for newly created files/dirs within the html directory and subdirectories.
sudo setfacl -R -d -m g::rwx -m o::rx html
Make SELinux ignore apache context requirement so it lets allows write permissions
sudo setsebool -P httpd_unified 1
list directory to see new permissons applied
ls -ld html
drwxrwsr-x+ 3 html apache
The trailing + signify that ACL, Access Control List, is set on the directory.
Now new files created the html folder will be available to apche and myusername as well and vice versa.
Reference: Link to forum
Using the following command you can set default permission to a file:
chacl -R filename