Grant permission for new created files inside folder automatically
I have a folder which permission is set to 777 but when I add any files or folder unziping in that folder. Extracted files or folder permission never change. Destination folder permission is 777 and I want what I will add in that folder will automatically get permission of 777.
When I add any files or folder by extracting .zip in that folder, extracted folder/files permission won't change automatically. I always have to chmod for newly add file/folder!
What you want is called ACL - Access Control Lists.
Access Control List (ACL) provides an additional, more flexible permission mechanism for file systems. It is designed to assist with UNIX file permissions. ACL allows you to give permissions for any user or group to any disc resource.
acl
package should be already installed, to check it run: dpkg -s acl
.
To use ACL's you should enable it for your filesystem. But it can be already enabled. To check it use tune2fs -l
. Substitute /dev/sda6
for your system:
$ tune2fs -l /dev/sda6 | grep "Default mount options:"
Default mount options: user_xattr acl
If you see acl word - it is already enabled for device /dev/sda6
.
If you don't see acl word - run tune2fs -o acl /dev/sda6
to enable it.
To modify ACL use setfacl command. To add permissions use setfacl -m.
To set permission for user:
$ setfacl -m "u:username:rwx" /path/to/folder
This will set rwx
ACL, for user username
to /path/to/folder. This means that all files created in this folder will have rwx
permission for username
.
To set permission for group:
$ setfacl -m "g:groupname:rwx" /path/to/folder
This will set rwx
ACL, for group groupname
to /path/to/folder. This means that all files created in this folder will have rwx
permission for group groupname
.
To set permission for other:
$ setfacl -m "o:rwx" /path/to/folder
This will set rwx
ACL, for other to /path/to/folder. This means that all files created in this folder will have rwx
permission for other.
To check permission:
$ getfacl /path/to/folder
To combine acl
$ setfacl -m u:username:rwx,g:groupname:rwx,o:rwx /path/to/folder
Default ACL
The new object inherits the default ACL of the containing directory as its
access ACL.
If no default ACL is associated with a directory, the mode parameter to the func‐
tions creating file objects and the file creation mask (see umask(2)) are used to
determine the ACL of the new object:
The new object is assigned an access ACL containing entries of tag types
ACL_USER_OBJ, ACL_GROUP_OBJ, and ACL_OTHER. The permissions of these entries
are set to the permissions specified by the file creation mask.
So if you set default ACL, it would be preferred ACL. That means if set ACL for user
or group
, new created file would inherit default acl anyway. Be carefully with default ACL.
To set default acl use -d
key,
$ setfacl -d -m u::rwx,g::rwx,o::rwx /path/to/folder
or use default
word
$ setfacl -m default:u::rwx,default:g::rwx,default:o::rwx /path/to/folder
Be carefully with setting default ACL. For example if set like this:
$ setfacl -d -m o:--x /path/to/folder
and now fetch this ACL
$ getfacl /path/to/folder
# file: path/to/folder
# owner: c0rp
# group: c0rp
user::rwx
group::rwx
other::--x
default:user::rwx
default:group::rwx
default:other::--x
default ACL for group and user will be rwx
automatically!
Remove ACL
$ setfacl -b /path/to/folder
This will remove all ACL's from folder
Finally
If you are only user in system, I recommend use default ACL.
$ setfacl -d -m u::rwx,g::rwx,o::rwx /path/to/folder
This will do what you want for /path/to/folder
Sources
archlinux - https://wiki.archlinux.org/index.php/Access_Control_Lists
help.ubuntu - https://help.ubuntu.com/community/FilePermissionsACLs