$ whatis umask anyways
So, linux and other operating systems use files.
You might have heard the expression
_"On Linux, everything is a file."_
And Linux uses lots of files. And if everyone
had the same rights to all files, it'd be a mess.
Unprivileged users would be able to edit critical system files.
_small detour:_
So, in conclusion folks, applying personifying traits and giving 'rights'
to computer programs to do whatever they want **will** create trouble!
I'm talking to you, Github! No reason at all to change from _master_
to _main_. Completely absurd.
_detour ends here_
So the `ext4` filesystem has permission on files. I can get the permission
of a file using the `ls` command with some fancy options:
```
# -l stands for long options
$ ls -l articles/whatis-umask.md
-rw-r--r-- 1 john cena 780 May 2 21:03 articles/whatis-umask.md
```
where `john` is the owner of the file and `cena` is the group owner
of the file. and the first characters are what matter: `-rw-r--r--`
that garbougle of characters is weird! let's put some spaces!
`-rw- r-- r--`. Okay, looks better. These permissions are for the
user, group, and other, respectively. Yes, `john` and `cena` come
into play. `john` will have `-rw-`, `cena` will have `r--`, and
other will have `r--`. `rw` means read, write. `r--` means
read. `rwx` means read, write, execute. Yes, execute as in execute
programs.
But cool thing is if it's a directory the `x` means you can create
files within the directory ! Try it out in a temp folder ! try making
a new dir, looking at file permissions of a folder with `ls -lad folder/`
and `chmod -x`ing it. can you create files ? folders ? what happens
if you revert the `-x` ?
# what umask actually is
the umask command returns the **inverse** file mask used to create
new files within the current shell. Yes, **INVERSE**. not the 'real'
mask you get with the `ls` command.
**EVEN more confusingly**, you can run the `umask -S`
command to get a set of friendly-looking
permissions
like in the `ls` command which will now return the **real file mask**,
not the inverse. You can set the real permissions for your current
shell in the same way by just typing out the permissions you want.
e.g.
```
umask -S u=rwx,g=rx,o=rx
```
# references
- [0]: _Umask command in linux_. Yes, it has ads.
- [1]: _File permissions and attributes_. Arch Linux wiki.
- [2]: Linux NDG Unhatched. cisco Netacad.
;tags: technical linux bored