Initial commit
This commit is contained in:
@@ -0,0 +1,210 @@
|
||||
# Linux – Basics
|
||||
|
||||
---
|
||||
|
||||
## 1. What Is Linux?
|
||||
|
||||
Linux is a family of open-source operating systems built around the Linux kernel. The kernel was created in 1991 by Linus Torvalds and is now maintained by a large community.
|
||||
|
||||
In practice, "Linux" usually refers to a complete system that combines:
|
||||
|
||||
- The Linux kernel (manages hardware, memory, processes).
|
||||
- User space tools and libraries (often from the GNU project).
|
||||
- Additional software such as shells, utilities, and applications.
|
||||
|
||||
These complete systems are distributed as Linux distributions.
|
||||
|
||||
---
|
||||
|
||||
## 2. Linux Distributions
|
||||
|
||||
A Linux distribution ("distro") bundles the kernel with a selection of software, configuration defaults, and a package manager.
|
||||
|
||||
Common examples include:
|
||||
|
||||
- **Debian / Ubuntu** – widely used on servers and desktops; focus on stability and large software repositories.
|
||||
- **Fedora / RHEL / CentOS / AlmaLinux** – often used in enterprise environments.
|
||||
- **Arch Linux** – rolling release, minimal by default, focused on simplicity and control.
|
||||
- **OpenSUSE**, **Gentoo**, and many others.
|
||||
|
||||
Distributions differ mainly by:
|
||||
|
||||
- Package manager (`apt`, `dnf`, `pacman`, etc.).
|
||||
- Release model (stable vs rolling release).
|
||||
- Default configuration and tooling.
|
||||
|
||||
Despite these differences, the core concepts (filesystem layout, permissions, processes, services) are very similar across distributions.
|
||||
|
||||
---
|
||||
|
||||
## 3. Kernel, User Space, and Shell
|
||||
|
||||
### 3.1 Kernel
|
||||
|
||||
The kernel is the central part of the operating system. It is responsible for:
|
||||
|
||||
- Managing memory and CPU time.
|
||||
- Talking to hardware devices (disks, network cards, etc.).
|
||||
- Creating and scheduling processes.
|
||||
- Enforcing basic security boundaries between processes.
|
||||
|
||||
Users and applications normally do not talk directly to the kernel; they use system calls via libraries and tools.
|
||||
|
||||
### 3.2 User Space
|
||||
|
||||
User space contains all programs that run "on top" of the kernel, such as:
|
||||
|
||||
- Command-line tools (`ls`, `cp`, `mv`, `ps`, etc.).
|
||||
- System utilities (`ip`, `systemctl`, `journalctl`, etc.).
|
||||
- Libraries (for example the C standard library `glibc`).
|
||||
|
||||
These tools are what administrators and scripts interact with in daily work.
|
||||
|
||||
### 3.3 Shell
|
||||
|
||||
The shell is the command-line interpreter used to run commands and scripts. Common shells include:
|
||||
|
||||
- **Bash** (Bourne Again SHell).
|
||||
- **Zsh**.
|
||||
- **Fish**.
|
||||
|
||||
The shell provides features such as:
|
||||
|
||||
- Command history and completion.
|
||||
- Variables and environment management.
|
||||
- Scripting (loops, conditions, functions).
|
||||
|
||||
For concrete shell usage and commands, see:
|
||||
|
||||
- [Linux / Cheat Sheet](./CheatSheet.md)
|
||||
|
||||
---
|
||||
|
||||
## 4. Filesystem and Paths
|
||||
|
||||
Linux uses a single hierarchical filesystem tree that starts at the root directory `/`.
|
||||
|
||||
Typical top-level directories include:
|
||||
|
||||
- `/bin`, `/usr/bin` – essential user commands.
|
||||
- `/sbin`, `/usr/sbin` – system administration commands.
|
||||
- `/lib`, `/usr/lib` – shared libraries.
|
||||
- `/etc` – system-wide configuration files.
|
||||
- `/var` – variable data (logs, spool, caches).
|
||||
- `/home` – home directories for regular users.
|
||||
- `/root` – home directory for the `root` user.
|
||||
- `/tmp` – temporary files.
|
||||
|
||||
Additional mount points (such as `/mnt`, `/srv`, or custom locations) are used for disks, network shares, or application data.
|
||||
|
||||
Paths can be:
|
||||
|
||||
- **Absolute** – start with `/` (for example `/etc/hosts`).
|
||||
- **Relative** – based on the current working directory (for example `../logs`).
|
||||
|
||||
---
|
||||
|
||||
## 5. Users, Groups, and Permissions
|
||||
|
||||
Linux is a multi-user system. Access control is based on users, groups, and file permissions.
|
||||
|
||||
### 5.1 Users and Groups
|
||||
|
||||
- Each user has a numeric user ID (UID) and belongs to one or more groups (GID).
|
||||
- The special user `root` (UID 0) has full administrative privileges.
|
||||
- Regular users have limited permissions and may use tools like `sudo` to perform administrative tasks.
|
||||
|
||||
### 5.2 File Permissions
|
||||
|
||||
Every file and directory has:
|
||||
|
||||
- An owner user.
|
||||
- An owner group.
|
||||
- Permission bits for **user**, **group**, and **others**:
|
||||
- Read (`r`)
|
||||
- Write (`w`)
|
||||
- Execute (`x`)
|
||||
|
||||
Permissions control who can read, modify, or execute a file or enter a directory.
|
||||
|
||||
---
|
||||
|
||||
## 6. Processes and Services
|
||||
|
||||
### 6.1 Processes
|
||||
|
||||
A process is an instance of a running program. Each process has:
|
||||
|
||||
- A process ID (PID).
|
||||
- A parent process.
|
||||
- An associated user.
|
||||
|
||||
Basic operations include listing processes, checking resource usage, and sending signals to stop or reload them.
|
||||
|
||||
Concrete commands for process inspection are listed in:
|
||||
|
||||
- [Linux / Cheat Sheet](./CheatSheet.md)
|
||||
|
||||
### 6.2 Services and systemd
|
||||
|
||||
Many modern distributions use **systemd** as the init system and service manager.
|
||||
|
||||
systemd is responsible for:
|
||||
|
||||
- Starting services at boot.
|
||||
- Managing service dependencies.
|
||||
- Monitoring and restarting services on failure.
|
||||
|
||||
Service definitions are stored as **units** (for example `ssh.service`, `docker.service`).
|
||||
|
||||
For more detailed administration topics (services, logs, units), see:
|
||||
|
||||
- [Linux / Administration](./Administration.md)
|
||||
|
||||
---
|
||||
|
||||
## 7. Networking Overview
|
||||
|
||||
Linux provides a full networking stack, including:
|
||||
|
||||
- IPv4 and IPv6 addressing.
|
||||
- Routing between interfaces.
|
||||
- Firewalling and packet filtering.
|
||||
|
||||
Network configuration usually involves:
|
||||
|
||||
- Assigning IP addresses to interfaces.
|
||||
- Setting gateways and routes.
|
||||
- Configuring DNS resolvers.
|
||||
|
||||
For networking concepts specific to this knowledge base, see:
|
||||
|
||||
- [Network / Basics](../Network/Basics.md)
|
||||
|
||||
---
|
||||
|
||||
## 8. Package Management
|
||||
|
||||
Each distribution uses a package manager to install, update, and remove software:
|
||||
|
||||
- Debian/Ubuntu: `apt`, `apt-get`, `dpkg`.
|
||||
- RHEL/Fedora: `dnf`, `yum`, `rpm`.
|
||||
- Arch Linux: `pacman`.
|
||||
|
||||
Package managers handle:
|
||||
|
||||
- Downloading software from repositories.
|
||||
- Dependency resolution.
|
||||
- Keeping a local database of installed packages.
|
||||
|
||||
Concrete command examples for package management can be added to the Cheat Sheet or distribution-specific notes.
|
||||
|
||||
---
|
||||
|
||||
## 9. Where to Go Next
|
||||
|
||||
- For hands-on commands and quick reminders, see [Linux / Cheat Sheet](./CheatSheet.md).
|
||||
- For administration tasks (services, logs, users, updates), see [Linux / Administration](./Administration.md).
|
||||
- For networking details, see [Network / Basics](../Network/Basics.md).
|
||||
|
||||
This basics document is intended as a neutral foundation that other, more specific guides can reference.
|
||||
Reference in New Issue
Block a user