Tìm hiểu hệ thống tập tin và thư mục trên hệ điều hành Linux

Được tổ chức theo một hệ thống phân bậc tương tự cấu trúc của một cây phân cấp

Hệ thống tập tin của Linux và Unix được tổ chức theo một hệ thống phân bậc tương tự cấu trúc của một cây phân cấp. Bậc cao nhất của hệ thống tập tin là thư mục gốc, được ký hiệu bằng gạch chéo “/” (root directory).

Phần 1: Cấu trúc thư mục Linux (cấu trúc file hệ thống)

1. Các thư mục và hệ thống tập tin

Hệ thống tập tin của Linux và Unix được tổ chức theo một hệ thống phân bậc tương tự cấu trúc của một cây phân cấp. Bậc cao nhất của hệ thống tập tin là thư mục gốc, được ký hiệu bằng gạch chéo “/” (root directory).

Đối với các hệ điều hành Unix và Linux tất các thiết bị kết nối vào máy tính đều được nhận dạng như các tập tin, kể cả những linh kiện như ổ đĩa cứng, các phân vùng đĩa cứng và các ổ USB. Điều này có nghĩa là tất cả các tập tin và thư mục đều nằm dưới thư mục gốc, ngay cả những tập tin biểu tượng cho các ổ đĩa cứng.

Ví dụ, /home/nttvinh/nguyen/scnp.odt chỉ toàn bộ đường dẫn đến tập tin scnp.odt có trong thư mục nttvinh là thư mục phụ nằm trong thư mục home, ngay dưới thư mục gốc (/).

Nằm dưới thư mục gốc (/) có một loạt các thư mục quan trọng của hệ thống tập tin được công nhận ở tất cả các bản phân phối Linux khác nhau. Dưới đây là danh sách các thư mục thông thường được nhìn thấy dưới thư mục gốc (/):

Hệ thống tập tin của Linux

1. / – Root

- Mở từng tập tin và thư mục từ thư mục Root.

- Chỉ có Root user mới có quyền viết dưới thư mục này.

- Lưu ý rằng /root là thư mục gốc của Root user.

2. /bin – User Binaries

- Chứa các tập tin thực thi nhị phân (binary executables).

- Lệnh Linux phổ biến sử dụng ở chế độ Singer-user mode nằm trong thư mục này.

- Tất cả user trên hệ thống nằm tại thư mục này đều có thể sử dụng lệnh.

- Ví dụ: ps, ls, ping, grep, cp.

3. /sbin – System Binaries

- Cũng giống như /bin, /sbin cũng chứa tập tin thực thi nhị phân (binary executables).

- Lệnh Linux nằm trong thư mục này được sử dụng bởi Admin hệ thống, nhằm mục đích duy trì hệ thống.

- Ví dụ: iptables, reboot, fdisk, ifconfig, swapon.

4. /etc – Configuration Files

- Chứa cấu hình các tập tin cấu hình của hệ thống, các tập tin lệnh để khởi động các dịch vụ của hệ thống……

- Ngoài ra /etc còn chứa shell scripts startup và shutdown, sử dụng để chạy/ngừng các chương trình cá nhân.

- Ví dụ: /etc/resolv.conf, /etc/logrotate.conf.

5. /dev – Files device

- Chứa các tập tin để nhận biết cho các thiết bị của hệ thống (device files).

- Bao gồm thiết bị đầu cuối, USB hoặc các thiết bị được gắn trên hệ thống.

- Ví dụ: /dev/tty1, /dev/usbmon0

6. /proc – Process Information

- Chưa các thông tin về System Process.

- Đây là hệ thống tập tin giả có chứa thông tin về các quá trình đang chạy. chẳng hạn như thư mục /proc/{pid} có chứa thông tin về quá trình đặc biệt của pid.

- Đây là một hệ thống tập tin ảo có thông tin về tài nguyên hệ thống. Chẳng hạn như /proc/uptime.

7. /var – Variable Files

- Var là viết tắt của variable file, lưu lại tập tin ghi các số liệu biến đổi (variable files).

- Nội dung các tập tin được dự kiến sẽ tăng lên tại thư mục này.

- Bao gồm: hệ thống tập tin log (/var/log), các gói và các file dữ liệu (/var/lib), email (/var/mail), print queues (/var/spool); lock files (/var/lock); các file tạm thời cần khi reboot (/var/tmp).

8. /tmp – Temporary Files (các tập tin tạm thời)

- Thư mục chứa các tập tin tạm thời được tạo bởi hệ thống và user.

- Các tập tin tạo thư mục này được xóa khi hệ thống được khởi động lại (reboot).

9. /usr – User Programs

- Chứa các ứng dụng, thư viện, tài liệu và mã nguồn các chương trình thứ cấp.

- /usr/bin chứa các tập tin của các ứng dụng chính đã được cài đặt cho user. Nếu bạn không tìm thấy user binary tại thư mục /bin, bạn có thể tìm tại thư mục /usr/bin. Ví dụ như at, awk, cc, less, scp.

- /usr/sbin có chứa các tập tin ứng dụng cho Admin hệ thống. Nếu không tìm thấy hệ nhị phân tại /sbin, bạn có thể tìm tại /usr/sbin. Chẳng hạn như atd, cron, sshd, useradd, userdel.

- /usr/lib chứa thư viện /usr/bin và /usr/sbin.

- /usr/local chứa các chương trình user mà bạn cài đặt từ nguồn.

Chẳng hạn khi bạn cài đặt apache từ nguồn, apache nằm dưới /usr/local/apache2.

10. /home – thư mục Home

- Thư mục chính lưu trữ các tập tin cá nhân của tất cả user.

- Ví dụ: /home/john, /home/nikita.

11. /boot – Boot Loader Files

- Chứa các tập tin cấu hình cho quá trình khởi động hệ thống.

- Các file Kernel initrd, vmlinux, grub nằm trong /boot.

- Ví dụ: nitrd.img-2.6.32-24-generic, vmlinuz-2.6.32-24-generic.

12. /lib – System Libraries

- Chứa các file thư viện hỗ trợ các thư mục nằm dưới /bin và /sbin.

- Tên file thư viện có thể là ld* hoặc lib*.so.*.

- Ví dụ: ld-2.11.1.so, libncurses.so.5.7.

13. /opt – Optional add-on Applications

- Opt là viết tắt của Optional (tùy chọn).

- Chứa các ứng dụng add-on từ các nhà cung cấp.

- Ứng dụng add-on được cài đặt dưới thư mục /opt/ hoặc thư mục /opt/ sub.

14. /mnt – Mount Directory

- Gắn kết các thư mục hệ thống tạm thời (thư mục Temporary) nơi Sysadmins có thể gắn kết các file hệ thống.

15. /media – Removable Media Devices

- Gắn kết các thư mục Temporary (thư mục tạm thời) được hệ thống tạo ra khi một thiết bị lưu động (removable media) được cắm vào như đĩa CDs, máy ảnh kỹ thuật số...

- Ví dụ: /media/cdrom for CD-ROM; /media/floppy for floppy drives; /media/cdrecorder for CD writer.

16. /srv – Service Data

- Svr viết tắt của service.

- Chứa các service của máy chủ cụ thể liên quan đến dữ liệu.

- Ví dụ: /srv/cvs chứa dữ liệu liên quan đến CVS.

 

2. Ổ đĩa và các Partition (phân vùng)

  • /dev/hda Ổ đĩa cứng IDE đầu tiên (chính) 
  • /dev/hdb Ổ đĩa cứng IDE thứ hai (thứ cấp)
  • /dev/sda Ổ đĩa cứng SCSI đầu tiên
  • /dev/sdb Ổ đĩa cứng SCSI thứ hai
  • /dev/fd0 Ổ đĩa mềm đầu tiên 
  • /dev/fd1 Ổ đĩa mềm thứ hai 

Ví dụ chúng ta chạy lệnh ls –l firstdoc.txt thấy kết quả như sau:

-rwxrw-r-- 1 User1 Testers 512 Oct 24 19:42 firstdoc.txt

Ý nghĩa của các field là:

  • File Access Permission: -rwxrw-r--
  • Số liên kết: 1
  • File Owner: User1
  • Group: Testers
  • File Size (bytes): 512
  • Lần hiệu chỉnh cuối: Oct 24
  • Last Modification Time: 19:42
  • File name: firstdoc.txt

Ngoài ra, qua lệnh ls –l chúng ta sẽ biết được firstdoc.txt là tập tin hay thư mục dựa theo:

  • Nếu kí tự đầu tiên là (-), thì đây là tập tin.
  • Nếu kí tự đầu tiên là d, thì đối tượng là thư mục.
  • Nếu kí tự đầu tiên là l, thì đầy là một liên kết (symbolic link) trỏ đến một file khác (gần giống với shortcut trên Windows OS).
  • Nếu kí tự đầu tiên là b, đối tượng là block device ví dụ như disk drive.
  • Nếu kí tự đầu tiên là c, đối tượng là character device như serial port.

Object Ownership

Trong ví dụ trên chúng ta thấy các tập tin đều có một group owner và file owner. Trong trường hợp muốn thay đổi ownership cho group hay user khác hãy đăng nhập với quyền root và thự hiện lệnh sau để đổi quyền ownership đối với tập tin payroll.doc cho người dùng vp_finance

chown vp_finance payroll.doc

Nếu muốn đổi quyền ownership cho group accounting hãy thực hiện lệnh

chown vp_finance.accounting payroll.doc

Trong trường hợp muốn chuyển quyền ownership toàn bộ thư mục và các tập tin bên trong thì thự hiện lệnh chown với tùy chọn –R:

chown -R vp_marketing.marketing /marketing/June
chown -R .marketing /marketing/June

Ngoài ra, nếu muốn chuyển quyền ownership mà không có quyền root thì có thể dùng lệnh chgrp nhưng lúc này bạn phải thuộc group có quyền ownership và group muốn chuyển quyền này.

Để quản lý các file và folder trên Linux thì ngoài tiện ích Nautilus File System chúng ta có thể cài đặt và sử dụng Webmin để quản lý file va folder bằng giao diện web. Tuy nhiên nên sử dụng phiên bản mới nhất để bảo đảm an toàn cho hệ thống. Download và cài đặt Webmin tại www.webmin.com

Phần 2: Bài tập cài đặt WebMin theo Task 3A4

Trên Windows chúng ta có thể xem các tiến trình đang chạy bằng taskmanager, còn đối với hệ thống Linux chúng ta sử dụng lệnh ps để hiện thị các tiến trình đang hoạt động

Muốn xem chi tiết hơn hãy dùng tùy chọn aux với:

  • a— hiển thị tất cả các tiến trình.
  • u—hiển thị thêm thông tin người dùng
  • x—mở rộng danh sách các tiến trình

Chúng ta có thể sử dụng lệnh top để xem danh sách các tiến trình đang hoạt động được cập nhật theo thời gian xác định. Ví dụ để refresh danh sách các tiến trình hiển thị sau 7 giây chúng ta sử dụng lệnh:

# top d 7

Ngoài ra, sử dụng giao diện đồ họa System Monitor cũng là một giải pháp hay trong việc quản lý và xem xét các tiến trình đang hoạt động như hình sau đây:

Xem thông tin sử dụng đĩa cứng dùng lệnh df -h:

2.1. Bài tập Task 3A-5

Mounting thiết bị, ổ đĩa

Để có thể sử dụng các ổ đĩa như CDROM, FDD.. chúng ta cần mount các ổ đĩa này bằng lệnh mount như:

# mount /dev/cdrom /mnt/cdrom

Kết quả lệnh sẽ là:

Mount: block device /dev/cdrom is write-protected. mounting
read-only

Tuy nhiên, đối với các phiên bản Linux mới thì việc sử dụng CDROM đa số được hệ thống mount tự động. Ngoài ra, chúng ta có thể mount cdrom hay các ổ usb, fdd đến các thư mục do chúng ta tạo ra như:

mkdir /cdrom
mount /dev/cdrom /cdrom

Và sau khi sử dụng xong chúng ta có thể sử dụng lệnh umount trước khi lấy đĩa ra (có nhiều trường hợp phải lấy CD ra bằng cách tắt nguồn)

Các quyền truy cập

Tất cả các tập tin của một hệ thống tâp tin Linux được gắn các quyền truy cập khác nhau theo từng người dùng của hệ thống, liên quan đến các phép đọc, viết và thực hiện. Người quản trị hệ thống (super user "root") có phép truy cập bất kỳ tập tin của hệ thống. Mỗi tập tin là sở hữu của một người nhất định và được gắn những hạn chế truy cập tùy theo người dùng và được gắn một nhóm người dùng.

Vậy mỗi tập tin được bảo đảm an toàn bởi 3 bộ quyền truy cập được gắn theo 3 nhóm người dùng như sau, theo thứ tự từ cao đến thấp:

  • user (người dùng) những quyền truy cập của nhóm này áp dụng cho người sở hữu tập tin,
  • group (nhóm người dùng) những quyền truy cập của nhóm này áp dụng cho nhóm đã được gắn với tập tin,
  • other (những người khác) những quyền truy cập của nhóm này áp dụng cho tất cả những người còn lại.

Mỗi bộ quyền truy cập sẽ xác định cụ thể các quyền truy cập thực tế đối với các tập tin và các thư mục như sau:

  • read (đọc)
    quyền xem nội dung tập tin hoặc mở tập tin
    quyền xem nội dung của tập tin thư mục
  • write (ghi, viết)
    quyền ghi và sửa lại nội dung tập tin hoặc xoá tập tin
    quyền sửa lại nội dung của tập tin thư mục
  • execute (thực thi)
    quyền này được gắn với các tập tin lệnh, nhóm người dùng đã nhận được quyền này có thể thực hiện các tập tin lệnh, quyền vào các thư mục.

Các quyền trên hệ thống Linux có thể được mô tả qua các số từ 0 đến 7 trong hệ thập phân. Ví dụ một user hay group có quyền R (read), W (write), E (execute) đối với 1 file/folder thì được kí hiệu là 1, ngược lại là 0 nếu không có quyền tương ứng (-). Và với phép chuyển từ số nhị phân sang thập phân chúng ta có bảng giá trị sau:

Vậy nếu một user/group có quyền đối với file/folder nào đó thì tương ứng với xác lập 111 ở hệ nhị phân hay 7 trong hệ thập phân, vậy quyền 777 là cho phép RWE đối với tất cả.

Người dùng và nhóm người dùng

Muốn bổ sung thêm người dùng, hoặc nhóm người dùng, cho hệ thống, bạn có thể dùng chương trình Users And Groups, trong thực đơn System -> Administration -> Users and Groups.

Để bổ sung một người dùng mới, ấn chuột vào Add user, điền các thông tin cần thiết rồi ấn chuột vào nút ghi OK. Để chỉnh lại các thuộc tính của từng người dùng, bạn có thể ấn chuột vào nút ghi Properties có trong cửa sổ chính của Users.

Để bổ sung một nhóm người dùng mới, chọn tab Groups tab và ấn chuột vào Add group. Xác định tên của nhóm mới và nếu muốn có thể thay đổi số ấn định cho nhóm (Group ID). Nếu bạn định dùng một số Group ID đã dùng rồi, hệ thống sẽ có thông báo.

Để bổ sung người dùng cho nhóm vừa mới được tạo ra, chỉ cần chọn một người dùng từ danh sách bên trái và ấn vào nút ghi Add. Muốn loại trừ một người dùng ra khỏi một nhóm cũng đơn giản bằng việc bổ sung: sau khi đã chọn tên người dùng trong cửa sổ bên phải, ấn chuột vào nút đã ghi.

Remove. Khi nào xong, ấn vào nút OK để kết thúc và thực sự tạo ra nhóm người dùng mới, cùng những người dùng thuộc nhóm đó.

Muốn sửa lại các thuộc tính của một nhóm người dùng, chọn tên của một nhóm trong cửa sổ Groups và ấn chuột vào nút đã ghi Properties.

Để xoá hoàn toàn một người dùng, hoặc một nhóm người dùng, từ hệ thống, chọn tên người dùng hoặc tên nhóm người dùng muốn xoá và ấn chuột vào nút đã ghi Delete.

Tương tự hệ thống Windows, khi cài đặt Linux (FC Core) sẽ tạo ra một tài khoản có quyền quản trị hệ thống và có thể dùng để tạo ra các tài khoản khác, đây là tài khoản cao cấp nhất có tên gọi là root. Để cấp quyền truy cập hệ thống chúng ta cần tạo ra các tài khoản người dùng, và mỗi tài khoản người dùng được gán một UID. Các tài khoản có chung thuộc tính sẽ được xếp vào các nhóm như trên hệ thống Windows và mỗi nhóm sẽ có các GID riêng.

Trên hệ thống Linux chúng ta có thể xem các User hiện có thông qua nội dung của tập tin /etc/passwd như hình dưới đây:

Trong tập tin passwd này chúng ta thấy có nhiều record với các filed khác nhau như:

  • User Account Name: login name của tài khoản người dùng.
  • Password: login password của tài khoản người dùng. Nếu chỉ thấy kí tự x trong ô này thì mật mã đã được mã hóa và bảo vệ trong tập tin shadow password.
  • User ID: số hiệu của user (UID)
  • Group ID: số hiệu Grioup mà người dùng này là thành viên (GID).
  • Full Name: tên đầy đủ của người dùng.
  • Home Directory: thư mục chủ của người dùng sau khi đăng nhập.
  • Shell: trình diễn dịch lệnh, ví dụ bash.

Khi một tài khoản mới được tạo nó sẽ được gán 1 UID, bắt đầu từ 500 trở đi và tăng dần khi các tài khoản mới được tạo ra.

Cũng như trên hệ điều hành Windows, sau khi cài đặt một số tài khoản và group mặc định sẽ được tạo như:


Các default user


Các default group

Tạo User và Group

Chúng ta có thể tạo tài khoản người dùng trên Linux bằng dòng lệnh hoặc giao diện đồ họa. Để tạo tài khoản người dùng Linux1 bằng dòng lệnh hãy thực hiện như sau:

useradd -g Users Linux1
passwd Linux1
New password: qwerty
Retype new password: qwerty

Nếu muốn xác định home folder và shell cho user khi tạo có thể sử dụng tùy chọn –d–s

Ví dụ sau sẽ tạo ra 1 group với GID là 1024 (tùy chọn –g dùng để xác định GID, nếu không sử dụng tùy chọn này thì hệ thống sẽ tự động xác định GID cho group theo thứ tự tăng dần).

2.2. Bài tập Add Linux User và Group

1. Để Add một User mới trên hệ thống Linux hãy click System => Administration => Users and Groups.

2. Giao diện quản lý user như sau:

3. Click Add Group trên thanh toolbar sau đó tạo 2 group finance và managers như hình sau:

4. Hãy chọn tab Users và chọn Add User để tạo các tài khoản Sam Randolph với các thông tin như sau:

User Name srandolp
Full Name Sam Randolph
Password Fishing123
Confirm Password Fishing123


Click OK hoàn tất

Gán quyền trên các File và Folder

1.Tạo một folder tên là Share bằng cách nhấn đúp vào icon Computer sau đó mở File System. Nhấn chuột phải và chọn Create Folder.

2. Nhập vào tên folder là Shares và nhấn Enter.

3. Tiếp theo tạo 2 folder con là Finance ReportsManagers trong Shares Folder

4. Bây giờ chúng ta sẽ gán các quyền tương ứng cho người dùng trên những folder vừa tạo ra, hãy click chuột phải lên folder Finance Reports và chọn Properties. Trên cửa sổ thuột tính chọn tab Permissions (nếu không thấy tab Permissions hãy restart lại hệ thống)

5. Thay đổi các quyền trên folder này như sau:

File Group = finance 
Group Permissions = Read, Write, và Execute 
Other Permissions = Read only (nếu muốn duyệt thư mục phải chọn Read & Execute)

Sau khi gán quyền như trên group Finance có thể truy cập folder này còn các user khác chỉ có quyền Read.

6. Tương tự hãy gán quyền cho folder Managers như sau:

File Group = managers
Group Permissions = Read, Write, và Execute
Other Permissions = (none)

Để kiểm tra kết quả của việc gán quyền cho các folder và group hãy đăng nhập bằng các tài khoản tương ứng và tiến hành các thao tác tạo file, folder, đọc hay xóa file…

Tham khảo thêm một số bài viết dưới đây:

Chúc các bạn thành công!

Thứ Bảy, 07/05/2016 08:48
4,33 👨 36.588