The Linux kernel is an open-source operating system that serves as a Unix-like monolithic kernel. It should not be confused with Linux distributions, as the kernel is just one component of a complete Linux operating system. At its core, the Linux kernel is responsible for managing a computer's hardware, including user management, resource management, process scheduling, hardware drivers, and more. In its minimalist form, a Linux operating system can consist of the Linux kernel, C libraries, toolchain, and basic system utilities such as a shell and login process.
Before Linux, there was Unix, which originated from the Multics project. In 1969, a filesystem design led to the development of Unix, initially implemented on PDP-7 and later on PDP-11. In 1973, Unix was rewritten in C, marking a significant milestone. Unix's distribution outside of Bell Laboratories led to further development by organizations like Berkeley's Software Division (BSD). BSD versions were released with new features, such as csh, vi, virtual memory, job control, and TCP/IP.
In 1991, Linus Torvalds, a student at the University of Helsinki, implemented the first version of the Linux kernel. Linux gained popularity among developers due to its open-source nature and attracted a collaborative community that contributed new features and improved the codebase. This collaborative effort also led to the development of Git, a version control system designed to handle the Linux source code. Today, the Linux kernel is a full-fledged operating system that can run on various hardware, from everyday devices to supercomputers.
The Linux kernel encompasses essential components for managing a computer's hardware. These components include modules for memory management, process scheduling, user management, virtual file system management, network management, security, hardware device drivers, and other kernel services. Linux distributions build upon this kernel, adding a windowing system, package management, and other software chosen by the distribution maintainers.
Like most operating systems, Linux has control systems in place to manage access to files and directories. Understanding Linux permissions can initially seem complicated, but it can be simplified.
To view permissions of a file or directory, you can use the following command:
ls -l
Linux permissions are divided into three groups:
There are three basic permission types:
Permissions are represented in a structured format. Taking two examples:
drwxr-xr-x 2 sulav sulav 4.0K Jan 23 20:53 Videos
-rw-r--r-- 1 sulav sulav 360K Aug 10 23:26 Photos
Permissions can be modified using the chmod command, while file ownership can be changed using the chown command. The permissions are defined using the permission groups and types.
u: Ownerg: Groupo: Othera: All usersr: Readw: Writex: ExecuteLinux uses octal (base-8) representation to represent permission bits. Here's a table for easy reference:
Octal Digit | Binary Representation (rwx) | Permission
------------|----------------------------|-----------
0 | 000 | none
1 | 001 | execute only
2 | 010 | write only
3 | 011 | write and execute
4 | 100 | read only
5 | 101 | read and execute
6 | 110 | read and write
7 | 111 | read, write, and execute (full permissions)
Remembering the octal values can help in setting permissions efficiently.
Read (r) -> 4
Write (w) -> 2
Execute (x)-> 1
For example, to grant a user read, write, and execute permissions, the value would be 4+2+1 = 7.
Using this table and understanding octal representation can enhance your understanding of Linux permissions.
Linux follows the Filesystem Hierarchy Standard (FHS) to define its directory structure. Let's explore the important folders and files in Linux in a simplified manner:
man 5 passwd for the passwd file./srv/html or an FTP site under /srv/ftp).
lsmod can be replaced by cat /proc/modules./sys/class/backlight/acpi_video0/brightness.Linux File System - Important Directories
Explore & Blog
Thoughts, experiments, and insights from my journey building products and exploring technology.
Technology, Business, Retail
Sulav Jung Hamal β 2026/03/12
Computer Science
Sulav Jung Hamal β 2024/08/20