Unix file permissions
Level: Intermediate (score: 3)
Each file and directory in Unix has its permissions broken down into owner, group and other (world) attributes, see here.
Each attribute has one or more permissions: r(ead), w(rite), e(x)ecute. The lack of any permission is indicated by a dash (-
). So r--
= read only, rw-
= read + write, and rwx
= full permissions.
The file permission for owner + group + other has 3 of those strings after the initial character which indicates file type (- = file / d = directory):
$ lt bite.html -rw-r--r-- 1 bobbelderbos staff 229B Oct 9 14:03 bite.html
To change the file permission you use the chmod
and its octal representation, for each attribute (owner, group, other) we translate the permission string summing a value for each permission: r
= 4, w
= 2, and x
= 1, hence:
$ touch myfile $ lt myfile -rw-r--r-- 1 bobbelderbos staff 0B Oct 11 10:12 myfile $ chmod 400 myfile $ lt myfile -r-------- 1 bobbelderbos staff 0B Oct 11 10:12 myfile $ chmod 600 myfile $ lt myfile -rw------- 1 bobbelderbos staff 0B Oct 11 10:12 myfile $ chmod 700 myfile $ lt myfile -rwx------ 1 bobbelderbos staff 0B Oct 11 10:12 myfile $ chmod 740 myfile $ lt myfile -rwxr----- 1 bobbelderbos staff 0B Oct 11 10:12 myfile $ chmod 745 myfile $ lt myfile -rwxr--r-x 1 bobbelderbos staff 0B Oct 11 10:12 myfile
That concludes our little Unix file permission lesson. In this Bite you will complete get_octal_from_file_permission
that takes a permission string and returns its octal representation, for example:
>>> from permissions import get_octal_from_file_permission >>> get_octal_from_file_permission('rw-r--r--') '644' >>> get_octal_from_file_permission('rwxrwxrwx') '777'
Of course the tests check a bunch more (wonder about parametrize
? You can read more about it on our blog - bullet 9). Have fun and keep calm and code in Python!