Learning Cloud Engineering with Altschool
Version Control and File Permissions
5 min read
I feel like i have broken a promise to my readers, i meannn, even if it's just one person, i promised to drop articles about my learning every week and i have failed you by being away for two weeks now. That wasn't the plan and i apologise to those who were looking forward to my next read the week after and got dissapointed. Forgive me
So without wasting time , let's jump right into what i learnt in week 3, 4 and 5. Week 5 is month 2 week 1 on the LMS
This week, I learnt more about Open Source and Version Control(git), I made some contributions to projects and i won a $20 cash gift on Twitter courtesy of Chimoney for my contribution to Open Source. It was more like a way to encourage people to keep on contributing to Open Source and a few number of people with recent contributions were picked to be awarded, which i happened to be a part of. Safe to say that was my first cash earning from Tech, although i am yet to receive the cash due to some technicalities. It is a win and I am celebrating
The week generally wasn't so pack filled with content on the LMS as the content for week 2 was used for week 3 as well. I however focused on other materials i was studying on learntocloud and Edx linux foundation.
Week 4 was more handson as we went on a deep dive into Linux.
I learnt how to create users on the terminal using the
adduser command. The difference between the two commands is; the
adduser command will automatically create a user account with a home directory for you while for the
useradd command, you have to add a flag m (-m)
useradd -m to create a user with a home directory.
I also learnt about groups, the different types, Login and Supplementary groups. How to manage groups, how to set file ownerships and permissions using the
chmod commands for the former and later. We have the read(4), write(2) and execute(1) permissions for files and the image below explains how the permissions are spread amongst target users.
To change the permission of a file, you simply type on your terminal
chmod 777 filename (read4+write2+execute1 to get 7) this will give user, group and all read write and execute permissions.
Further into this week, i learnt about Secure Shell(SSH) and how to generate secure shell keys (sshkeys) for users with the command
ssh-keygen. We were given a task to run multiple remote machines on one local machine using ssh. It was a struggle for me at first but i later got a hang of it after a 3hours long google meet call with a colleague who was also trying to figure it out. A call with a happy ending for both of us as we eventually got it
Moving further into the week, I learnt Linux Process Management and the different types of processes
- The Parent process which creates and leads to the creation of more processes called;
- The Child processes which is a process under the parent process(like a family tree)
- The orphaned process which have no parent process, perhaps as a result of a kill command executed on the parent process. This process then becomes the child of the grandparent process 'init'
- The Zombie process are processes that have completed the execution but are still listed among processes
- Daemon process are processes that run in the background.
We have process management commands like
ps which is used to check the process running
ps auxused to list all the processes and their parents
topthis is used to give details of the processes
htopused to give more detailed and colorful display of the processes. To exit the
htopcommand , you press q or F10 on your keyboard. I found that F10 doesn't work on my machine to exit the command but q does.
killis used to kill processes
sleepused to pause processes and many more commands i won't list here in other not to make this a lengthy read. Google Linux process commands and you will find a ton of them.
I also learnt about file system , virtual storage, how to mount storage , and Linux memory management
We went further into the week learning about application package management, Linux application packaging and Distribution like: DEB packaging RPM packaging Tarball / Source code Different package managers like apk (Alpine Systems) apt (Debian Systems) dpkg (Debian Systems) snap (Ubuntu Systems) yum (RPM Systems) and how to work our around downloading and installing different packages and softwares on the terminal.
You must be wondering how i got to learn all these in one week, i mean even i am shocked with all learnt in one week writing about it. They say "to whom much is given, much is expected" and Altschool doesn't relent in turning up the heat to learn, the pressure is getting wesser but we will conquer.
Week 5 which is this week, we learnt more about Version Control and navigating Github and Gitlab. It also created more time for me to practice more on things previously learnt, while enjoying life on my Terminal.
If it is not already so clear, I should add that I am very much enjoying and excited about my learning journey with Altschool Africa and in the tech space generally. Some days i feel lazy and don't want to open my computer. I sometimes feel guilty about it, feeling like i am not doing enough, but i always remind myself that rest is important so i give in to the lazy days guilt free to avoid burnout and relax my body.
Thank you for walking with me through my learning journey. I appreciate you