Lý thuyết về Linux
1. File và cấu trúc file trong linux.
1.1 File trong linux
- Trong các hệ thống Linux, mọi thứ được coi là file (everything is a file). Không chỉ đoạn văn bản text ảnh hay các chương trình mà các thư mục, driver phần cứng đều được coi là một thư mục.
- Đối với người dùng, tất cả các file (kể cả khác ổ cứng) đều nằm trên bắt đầu trên thư mục root / (Không nhầm lẫn với /root) và được phân biệt với nhau thông qua tên.
- Đối với nhân của linux, các file lại được biểu diễn dưới dạng phẳng. Thay vì sử dụng các cấu trúc, các thư mục và thư mục con thì nhân (kernel) lại sử dụng inodes để biểu diễn các file.
- Inode chứa thông tin bao gồm: inode number (một số thứ tự độc nhất), chủ sở hữu và các nhóm người dùng có liên quan, dạng file (thư mục hay file bình thường), quyền, thời gian tạo, truy cập, dung lượng và địa chỉ file trên bộ nhớ
Chúng ta có thể sử dung câu lệnh sau để xem inode của một file:

Ví dụ của ls -li:
┌──────────────── inode number
| ┌─────────── file (not a directory)
| |┌─────────── read-write (no execution) permissions for the owner
| |│ ┌───────── read-only permissions for the group
| |│ │ ┌─────── read-only permissions for others
| |│ │ │ ┌── number of hard links
| |│ │ │ │ ┌── owner
| |│ │ │ │ │ ┌── user group
| |│ │ │ │ │ │ ┌── file size in bytes
| |│ │ │ │ │ │ │ ┌── last modified on
| |│ │ │ │ │ │ │ │ ┌── filename
13371337 -rw-r--r-- 3 pandakewt pandakewt 30405 Dec 2 12:52 edition-32
Các loại file của linux:
| File Type | Command to create the File | Located in | The file type using “ls -l” is denoted using | FILE command output |
|---|---|---|---|---|
| Regular FIle | touch | Any directory/Folder | – | PNG Image data, ASCII Text, RAR archive data, etc |
| Directory File | mkdir | It is a directory | d | Directory |
| Block Files | fdisk | /dev | b | Block special |
| Character Files | mknod | /dev | c | Character special |
| Pipe Files | mkfifo | /dev | p | FIFO |
| Symbol Link Files | ln | /dev | l | Symbol link to |
| Socket Files | socket(), system call | /dev | s | Socket |
1.2 Cấu trúc file trong linux

- /: hay còn được gọi là root. Đối với người dùng linux, đây là thư mục cao nhất. Mọi đường dẫn trên máy tính đều buộc phải bắt đầu từ thư mục root. Thư mục / chứa toàn bộ các file để khởi chạy cũng như điều hành máy tính. Chỉ có người dùng với quyền cao nhất (root) mới có thể thêm, sửa xóa ở thư mục này nhưng điều đó không được khuyến nghị.
- /bin: Các tệp trương trình nhị cơ bản của người dùng. Một số ví dụ về các chương trình đó là: cat, cd, cp, ls hay
pwd.

- /boot: Chứa file để hệ điều hành có thể khởi động được, thư mục này thường là nơi để mount efi. Trong thư mục này
gồm có nhân của linux (vmlinuz), các bản vá bảo mật như Spectre and Meltdown microcode của cpu (intel-ucode /
amd-ucode) bootloader (grub hoặc systemd-boot) và các bootloader của hệ điều hành khác (bootmgr của windows).

- /etc: Các cấu hình cho trương trình hoạt động. Các cấu hình được thiết đặt thường ảnh hưởng lên cả hệ thống (trừ
khi người dùng thiết đặt lại trong folder ~/.config của họ).

- /usr: Thư mục cung cấp các trương trình mã nhị phân, thư viện, các file hướng dẫn hay các dữ liệu phần mềm mà người dùng cài đặt.
- /var Là nơi chứa các dữ liệu có thể thay đổi, các nhật ký hệ thống
/var/log/, mail trong hệ thống/var/mail/, các file lock để tránh xung đột/var/lock/vân vân. - /sbin Các tệp trương trình nhị phân có khả năng thay đổi hệ thống, quản trị hệ thống. Những trương trình nhị phân trong thư mục này cần có quyền superuser (root) để chạy. Một số chương trình đó là: fdisk (quản lý ổ đĩa), halt (tắt máy), reboot (khởi động lại), ifconfig (quản trị mạng), swapon/swapoff (quản lý phân vùng ghi nhớ tạm),...
- /tmp Dữ liệu ghi tạm vào ổ cứng, sẽ được xóa sạch khi khởi động
- /dev Các file thiết bị hoặc thiết bị ảo (virtual device) của linux, các phân vùng, chuột, bàn phím,...
- /home: Thư mục cá nhân của từng user
- /lib: Thư mục chứa các thư viện và module của nhân.
- /mnt: Thư mục để gắn (mount) các ổ cứng ngoài vào.
- /opt: Thư mục chứa các tiện ích hay phần mềm của bên thứ ba
- /root: (Phân biệt với /) là một thư mục cá nhân của người dùng root
- /media Nơi để gắn các ổ đía CD/DVD
- /proc là một thư mục ảo chứa các tiến trình (proceess) đang hoạt động trên hệ thống, cũng như là một thư mục ảo
chứa thông số kĩ thuật của hệ thông, ví dụ như cpu
/proc/cpuinfo.
2. Process trong linux.
- Process trong linux được hiểu đơn giản là các tiến trình đang hoạt động trên hệ điều hành, bất cứ khi nào khi chạy phần mềm hay chạy một câu lệnh nào đó là một process mới được tạo và hoạt động.

-
Mỗi một process được chạy trên hệ thống đều được đánh dấu bằng một Process ID (PID) bao gồm tối đa 5 chữ số và là duy nhất tại thời điểm process đó được chạy.
-
Có hai lọai process là: Foreground và Background Process
-
Foreground Process: Là process mà người dùng có thể chạy được và tương tác được, chúng ta buộc phải kết thúc trương trình nếu muốn chạy lệnh khác
- Background Process: Là process không kết nối đến tty, bạn không cần phải đợi mà có thể chực tiếp chạy câu lệnh khác.Để bắt đầu một background process , thêm dấu "&" tại cuối lệnh.
3. User và groups trong linux.
Quyền trong linux
-
Linux được thiết kế cho nhiều hơn một người truy cập vào máy cùng một thời điểm khác nhau. Do đó, để đảm bảo nhu cầu bảo vệ các file khỏi người đùng khác, quyền trong linux đã được ra đời.
-
Trong linux có ba quyền cơ bản là read, write, execute.
- Read: đọc hoặc xem file.
- Write: chỉnh sửa, thay đổi nội dung của file.
- Execute: chạy file hoặc một script nào đó.
-
Các quyền thường được hiển thị qua câu lệnh
ls -la, thứ tự thường được bắt đầu từ chủ sở hữu (Owner), nhóm người dùng (users group), và cuối cùng là mọi người.
┌──────────────── inode number
| ┌─────────── file (not a directory)
| |┌─────────── read-write (no execution) permissions for the owner
| |│ ┌───────── read-only permissions for the group
| |│ │ ┌─────── read-only permissions for others
| |│ │ │ ┌── number of hard links
| |│ │ │ │ ┌── owner
| |│ │ │ │ │ ┌── user group
| |│ │ │ │ │ │ ┌── file size in bytes
| |│ │ │ │ │ │ │ ┌── last modified on
| |│ │ │ │ │ │ │ │ ┌── filename
13371337 -rw-r--r-- 3 pandakewt pandakewt 30405 Dec 2 12:52 edition-32
Groups trong linux
- Người dùng thường có một nhóm chính (primary group) là tên người dùng
- Ngoài những nhóm chính, linux còn có những nhóm phụ (secondary group), một tài khoản có thể ở trong tối đa 15 nhóm
phụ. Các thông tin về groups thường được lưu ở
/etc/group,