Chuẩn bị kỳ thi LPI 101: Các thiết bị, các hệ thống tập tin Linux và tiêu chuẩn phân cấp hệ thống tập tin

Chủ đề 104 (LPIC-1) Quản trị trình độ sơ cấp

Trong hướng dẫn này, Ian Shields tiếp tục chuẩn bị cho bạn tham gia kỳ thi 101 (LPIC-1) về quản trị trình độ sơ cấp của Viện Linux chuyên nghiệp (Linux Professional Institute® LPI). Trong hướng dẫn thứ tư này của loạt năm bài hướng dẫn, Ian giới thiệu cho bạn về các thiết bị, các hệ thống tập tin Linux và tiêu chuẩn phân cấp hệ thống tập tin. Đến cuối hướng dẫn này, bạn sẽ biết cách tạo và định dạng các phân vùng với các hệ thống tập tin Linux® khác nhau và cách quản lý và bảo trì các hệ thống tập tin đó.

Ian Shields, Lập trình viên cao cấp, IBM

Ian Shields làm việc cho rất nhiều dự án Linux trên vùng Linux của developerWorks. Ông là một lập trình viên cao cấp của IBM tại Khu vực Tam giác nghiên cứu (Research Triangle Park - RTP), bang Bắc Carolina (NC). Ông đã đến với IBM ở Canberra, Úc, như là một kỹ sư hệ thống vào năm 1973, và từ đó đã làm việc về các hệ thống thông tin liên lạc và điện toán mọi nơi tại Montreal, Canada, và RTP, NC. Ông đã có một số bằng sáng chế và đã xuất bản một số bài báo. Ông tốt nghiệp đại học ngành toán học thuần tuý và triết học tại Đại học Quốc gia Úc. Ông có bằng thạc sĩ và tiến sĩ khoa học máy tính của Đại học Bắc Carolina.



16 04 2006 (Xuất bản lần đầu tiên vào ngày 20 08 2010)

Trước khi bạn bắt đầu

Tìm hiểu xem các hướng dẫn có thể dạy cho bạn những gì và làm thế nào để bạn có thể tiếp thu được nhiều nhất từ các hướng dẫn đó.

Về loạt bài này

Viện Linux chuyên nghiệp (LPI-Linux Professional Institute) cấp chứng chỉ nhà quản trị hệ thống Linux ở hai trình độ: trình độ sơ cấp (còn gọi là "chứng chỉ cấp 1") và trình độ trung cấp (còn gọi là "chứng chỉ cấp 2"). Để đạt được chứng chỉ cấp 1, bạn phải vượt qua kỳ thi 101 và 102; để đạt được chứng chỉ cấp 2, bạn phải vượt qua kỳ thi 201 và 202.

developerWorks cung cấp các hướng dẫn để giúp bạn chuẩn bị cho từng kỳ thi trong bốn kỳ thi đó. Mỗi bài thi bao gồm một số chủ đề và mỗi chủ đề có một hướng dẫn tự học tương ứng trên developerWorks. Đối với kỳ thi LPI 101, có năm chủ đề và các hướng dẫn tương ứng trên developerWorks là:

Bảng 1. Kỳ thi LPI 101: Các hướng dẫn và các chủ đề
Chủ đề của kỳ thi LPI 101Hướng dẫn trên developerWorksTóm tắt hướng dẫn
Chủ đề 101Chuẩn bị cho kỳ thi LPI 101 (chủ đề 101):
Phần cứng và kiến trúc.
Học cách cấu hình phần cứng hệ thống của bạn với Linux. Đến cuối hướng dẫn này, bạn sẽ biết cách Linux cấu hình phần cứng có trong một máy tính cá nhân (PC) hiện đại như thế nào và bạn sẽ phải xem xét ở đâu khi có trục trặc.
Chủ đề 102Chuẩn bị cho kỳ thi LPI 101:
Cài đặt Linux và quản lý gói.
Giới thiệu về cài đặt Linux và quản lý gói. Đến cuối hướng dẫn này, bạn sẽ biết cách Linux sử dụng các phân vùng đĩa, cách Linux khởi động và cách cài đặt và quản lý các gói phần mềm như thế nào.
Chủ đề 103Chuẩn bị cho kỳ thi LPI 101:
Các lệnh GNU và UNIX.
Giới thiệu về các lệnh GNU và UNIX thường dùng. Đến cuối hướng dẫn này, bạn sẽ biết cách sử dụng các lệnh trong bash shell, bao gồm cách sử dụng các lệnh và các bộ lọc xử lý văn bản, cách tìm kiếm các tập tin và các thư mục và cách quản lý các tiến trình.
Chủ đề 104Chuẩn bị cho kỳ thi LPI 104:
Các thiết bị, các hệ thống tập tin Linux và các chuẩn phân cấp hệ thống tập tin.
(Hướng dẫn này). Học cách tạo các hệ thống tập tin trên các phân vùng đĩa, cũng như cách cho phép người dùng truy cập chúng, quản lý quyền chủ sở hữu tập tin và các hạn ngạch của người dùng và sửa chữa các hệ thống tập tin khi cần thiết. Bạn cũng được học về liên kết cứng và liên kết biểu tượng và cách để xác định vị trí các tập tin trong hệ thống tập tin của bạn và nơi đặt các tập tin. Xem chi tiết các mục tiêu dưới đây.
Chủ đề 110Chuẩn bị cho kỳ thi LPI 110:
Hệ thống Window X.
Tìm hiểu về hệ thống Window X trên Linux. Đến cuối hướng dẫn này, bạn sẽ biết cách cài đặt và bảo trì hệ thống Windows X. Hướng dẫn này trình bày hai gói chính cho X trên Linux: XFree86 và X.Org.

Để vượt qua kỳ thi 101 và 102 (và đạt được chứng chỉ cấp 1), bạn cần có khả năng:

  • Làm việc với các dòng lệnh Linux.
  • Thực hiện các nhiệm vụ bảo trì dễ: trợ giúp những người dùng, thêm những người dùng vào một hệ thống lớn hơn, sao lưu và phục hồi, tắt và khởi động lại.
  • Cài đặt và đặt cấu hình một máy trạm (bao gồm cả X) và kết nối nó với một mạng LAN hoặc kết nối một máy tính độc lập qua modem tới mạng Internet.

Để tiếp tục chuẩn bị cho chứng chỉ cấp 1, hãy xem hướng dẫn của developerWorks cho kỳ thi LPI 101. Đọc thêm trọn bộ các hướng dẫn LPI của developerWorks.

LPI không chứng thực bất kỳ tài liệu hay kỹ thuật luyện thi riêng biệt nào của một bên thứ ba. Để biết thêm chi tiết, xin vui lòng liên hệ với info@lpi.org.

Về hướng dẫn này

Chào mừng bạn đến với "Các thiết bị, các hệ thống tập tin Linux và tiêu chuẩn phân cấp hệ thống tập tin", hướng dẫn thứ tư trong năm hướng dẫn được thiết kế để chuẩn bị cho bạn về kỳ thi LPI 101. Trong hướng dẫn này, bạn sẽ tìm hiểu về cách tạo và quản lý các phân vùng. Bạn sẽ tìm hiểu về tiêu chuẩn phân cấp hệ thống tập tin (FHS - Filesystem Hierarchy Standard), tiêu chuẩn này khuyến nghị với bạn có thể tìm thấy các kiểu dữ liệu khác nhau ở đâu và nên lưu trữ chúng ở đâu trên một hệ thống Linux.

Hướng dẫn này được cấu tạo theo các mục tiêu của LPI cho chủ đề này. Nói chung, hãy chờ đợi sẽ có nhiều câu hỏi hơn trong kỳ thi dành cho các mục tiêu có trọng số cao hơn.

Bảng 2. Các thiết bị, các hệ thống tập tin Linux và tiêu chuẩn phân cấp hệ thống tập tin: Các mục tiêu của kỳ thi được trình bày trong hướng dẫn này
Mục tiêu của kỳ thi LPITrọng số của mục tiêuTóm tắt mục tiêu
1.104.1
Tạo các phân vùng và các hệ thống tập tin
Trọng số 3Tìm hiểu cấu hình các phân vùng đĩa và tạo các hệ thống tập tin trên phương tiện lưu trữ như là các đĩa cứng. Sử dụng các lệnh mkfs để thiết lập các hệ thống tập tin, bao gồm ext2, ext3, reiserfs, vfat và xfs.
1.104.2
Duy trì tính toàn vẹn của các hệ thống tập tin
Trọng số 3Học cách kiểm tra tính toàn vẹn của các hệ thống tập tin, theo dõi vùng trống và các inode và sửa chữa các vấn đề của hệ thống tập tin đơn giản. Học cách giữ gìn các hệ thống tập tin tiêu chuẩn và các hệ thống tập tin có ghi nhật ký (journaling).
1.104.3
Lắp đặt và bỏ lắp đặt
Trọng số 3Học cách lắp đặt (mount) và bỏ lắp đặt (unmount) các hệ thống tập tin bằng tay. Ngoài ra cũng học cách cấu hình lắp đặt hệ thống tập tin trong quá trình khởi động máy và cấu hình hệ thống tập tin có thể tháo lắp vật lý được, chẳng hạn như các ổ băng từ, các đĩa mềm và các đĩa CD, để người dùng bình thường có thể lắp đặt và bỏ lắp đặt chúng.
1.104.4
Quản lý hạn ngạch đĩa
Trọng số 5Học cách quản lý hạn ngạch đĩa cho những người dùng, bao gồm cả việc thiết lập các hạn ngạch cho một hệ thống tập tin và soạn thảo, kiểm tra và tạo ra các báo cáo hạn ngạch của người sử dụng.
1.104.5
Sử dụng quyền trên tập tin để kiểm soát truy cập vào các tập tin
Trọng số 5Học cách kiểm soát truy cập tập tin thông qua các quyền hạn, bao gồm các quyền truy cập vào các tập tin thông thường và đặc biệt cũng như các thư mục. Ngoài ra tìm hiểu về các chế độ truy cập như suid, sgid và bit dính (sticky); việc sử dụng trường nhóm để cấp quyền truy cập tập tin cho các nhóm làm việc; cờ bất biến; và chế độ tạo tập tin mặc định.
1.104.6
Quản lý quyền sở hữu tập tin
Trọng số 1Học cách kiểm soát quyền sở hữu nhóm và người dùng của các tập tin, bao gồm làm thế nào để thay đổi chủ sở hữu nhóm và người dùng của một tập tin cũng như chủ sở hữu nhóm mặc định cho các tập tin mới.
1.104.7
Tạo và thay đổi các liên kết cứng và liên kết biểu tượng
Trọng số 1Học cách tạo và quản lý liên kết cứng và liên kết biểu tượng cho một tập tin, bao gồm việc tạo ra và nhận biết các liên kết. Học cách sao chép các tập tin thông qua các liên kết và sử dụng các tập tin có liên kết để hỗ trợ các nhiệm vụ quản trị hệ thống.
1.104.8
Tìm các tập tin hệ thống và đặt các tập tin vào vị trí đúng
Trọng số 5Tìm hiểu về tiêu chuẩn phân cấp hệ thống tập tin, bao gồm các vị trí tập tin điển hình và các phân loại thư mục. Học cách tìm các tập tin và các lệnh trên một hệ thống Linux.

Điều kiện cần có trước

Để thu được nhiều nhất từ hướng dẫn này, bạn cần phải có một kiến thức cơ bản về Linux và một hệ thống Linux đang hoạt động, trên hệ thống đó bạn có thể thực hành các lệnh được trình bày trong hướng dẫn này.

Hướng dẫn này dựa vào nội dung được trình bày trong ba hướng dẫn trước trong loạt bài này, vì thế trước tiên bạn có thể cần xem lại các hướng dẫn của các chủ đề 101, 102 và 103.

Các phiên bản khác nhau của một chương trình có thể định dạng kết quả đầu ra khác nhau, do đó kết quả của bạn có thể trông không chính xác giống như các liệt kê và các hình vẽ trong hướng dẫn này.


Tạo các phân vùng và các hệ thống tập tin

Phần này trình bày các tư liệu cho chủ đề 1.104.1 cho kỳ thi quản trị trình độ sơ cấp (LPIC-1) 101. Chủ đề này có trọng số 3.

Trong phần này, bạn tìm hiểu cách để:

  • Cấu hình các phân vùng đĩa.
  • Tạo các hệ thống tập tin trên các đĩa cứng và phương tiện khác
  • Sử dụng các lệnh mkfs để thiết lập các phân vùng ext2, ext3, reiserfs, vfat và xfs.

Trước tiên, hãy ôn lại nhanh. Trong hướng dẫn cho chủ đề 101, "Chuẩn bị cho kỳ thi LPI 101 (chủ đề 101): Phần cứng và kiến trúc," bạn đã học về các ổ đĩa cứng IDE và SCSI như /dev/hda and /dev/sdb và các phân vùng trên các ổ đĩa này, chẳng hạn như dev/hda1, /dev/hda5 và /dev/sda1.

Trong hướng dẫn cho chủ đề 102, "Chuẩn bị cho kỳ thi LPI 101 (chủ đề 102): Cài đặt Linux và quản lý gói," bạn đã học thêm về các phân vùng, bao gồm các phân vùng chính, phân vùng vùng mở rộng và phân vùng logic. Bạn cũng biết được rằng một hệ thống tập tin Linux có chứa các tập tin được sắp xếp trên một đĩa hoặc thiết bị lưu trữ khối khác trong các thư mục. Giống như với nhiều hệ thống khác, các thư mục trên một hệ thống Linux có thể chứa các thư mục khác gọi là các thư mục con. Hướng dẫn đó cũng đã thảo luận các vấn đề cần cân nhắc, chúng sẽ chỉ dẫn cho bạn trong việc lựa chọn tạo phân vùng.

Phần này xem lại các thiết bị khối và các phân vùng và sau đó giới thiệu cho bạn lệnh fdisk, được sử dụng để tạo, chỉnh sửa hoặc xóa các phân vùng trên các thiết bị khối. Phần này cũng giới thiệu các dạng khác nhau của lệnh mkfs viết tắt của make filesystem - (tạo hệ thống tập tin); các lệnh này được sử dụng để định dạng các phân vùng như là một kiểu hệ thống tập tin cụ thể.

Lưu ý: Ngoài các công cụ và hệ thống tập tin cần thiết cho các kỳ thi LPI, bạn có thể bắt gặp hoặc cần các công cụ và hệ thống tập tin khác. Hãy tìm một bản tóm tắt ngắn gọn của một số công cụ có sẵn khác trong phần Các công cụ và các hệ thống tập tin khác.

Các thiết bị khối và các phân vùng

Ta hãy ôn lại nhanh các thiết bị khối và các phân vùng. Nếu bạn cần thêm nhiều thông tin, hãy xem lại các hướng dẫn cho chủ đề 101chủ đề 102.

Các thiết bị khối

Một thiết bị khối (block device) là một tầng trừu tượng đối với bất kỳ thiết bị lưu trữ nào có thể được định dạng theo các khối; có kích thước cố định; các khối riêng lẻ có thể được truy cập độc lập với việc truy cập vào các khối khác. Việc truy cập như vậy thường được gọi là truy cập ngẫu nhiên.

Tầng trừu tượng của các khối có kích thước cố định truy cập được ngẫu nhiên cho phép các chương trình sử dụng các thiết bị khối này mà không phải lo lắng về việc thiết bị bên dưới có phải là một ổ đĩa cứng, đĩa mềm, đĩa CD, ổ đĩa mạng hoặc một số kiểu thiết bị ảo như là một hệ thống tập tin trong bộ nhớ hay không.

Ví dụ về các thiết bị khối gồm có ổ đĩa cứng IDE đầu tiên trên hệ thống của bạn (/dev/hda) hoặc ổ đĩa SCSI thứ hai (/dev/sdb). Hãy sử dụng lệnh ls -l để hiển thị các mục /dev. Ký tự đầu tiên trên mỗi dòng đầu ra là b dành cho một thiết bị khối (block), chẳng hạn như ổ đĩa mềm, ổ CD, ổ cứng IDE hoặc ổ cứng SCSI và c dành cho một thiết bị dữ liệu ký tự (character), chẳng hạn như một ổ băng từ hoặc thiết bị đầu cuối. Xem các ví dụ trong Liệt kê 1.

Liệt kê 1. Các thiết bị khối và thiết bị ký tự Linux
[ian@lyrebird ian]$ ls -l /dev/fd0 /dev/hda /dev/sdb /dev/st0 /dev/tty0 
brw-rw---- 1 ian floppy 2, 0 Jun 24 2004 /dev/fd0 
brw-rw---- 1 root disk 3, 0 Jun 24 2004 /dev/hda 
brw-rw---- 1 root disk 8, 16 Jun 24 2004 /dev/sdb                                    
crw-rw---- 1 root disk 9, 0 Jun 24 2004 /dev/st0
crw--w---- 1 root root 4, 0 Jun 24 2004 /dev/tty0

Các phân vùng

Đối với một số thiết bị khối, chẳng hạn như các đĩa mềm và các đĩa CD hay đĩa DVD, nói chung thường sử dụng toàn bộ phương tiện như là một hệ thống tập tin duy nhất. Tuy nhiên, với các ổ đĩa cứng lớn và thậm chí cả bút (thanh) nhớ USB nhỏ hơn, cách làm phổ biến hơn là phân chia hay phân vùng, không gian có sẵn thành một số các phân vùng khác nhau.

Các phân vùng có thể có các kích thước khác nhau và các phân vùng khác nhau có thể có các hệ thống tập tin khác nhau trên chúng, do đó một đĩa duy nhất có thể được sử dụng cho nhiều mục đích, bao gồm cả việc chia sẻ nó giữa nhiều hệ điều hành. Ví dụ, tôi sử dụng các hệ thống thử nghiệm với một số bản phân phối Linux khác nhau và đôi khi với một hệ thống Windows® nữa, tất cả cùng chia sẻ một hoặc hai ổ đĩa cứng.

Bạn sẽ nhớ lại từ các hướng dẫn 101 và 102 rằng các ổ đĩa cứng có một hình học (geometry), được định nghĩa thông qua các trụ (cylinder), các đầu (head) và các cung (sector). Mặc dù các ổ đĩa hiện đại sử dụng cách đánh địa chỉ khối logic (logical block addressing - LBA), trong đó hầu như không liên quan gì đến hình học đĩa, đơn vị phân bổ cơ sở cho các mục đích tạo phân vùng vẫn là các trụ.

Hiển thị thông tin phân vùng

Thông tin phân vùng được lưu trữ trong một bảng phân vùng trên đĩa. Bảng này liệt kê thông tin về nơi bắt đầu và kết thúc của từng phân vùng, thông tin về kiểu của nó và việc nó có được đánh dấu có khả năng khởi động hay không. Để tạo và xóa các phân vùng, bạn chỉnh sửa bảng phân vùng bằng cách sử dụng một chương trình được thiết kế đặc biệt cho công việc này. Đối với kỳ thi LPI, bạn cần biết về chương trình fdisk, vì thế chương trình fdisk là những gì được trình bày ở đây, mặc dù vẫn có một số công cụ khác.

Lệnh fdisk với tùy chọn -l được sử dụng để liệt kê các phân vùng. Thêm một tên thiết bị, như /dev/hda, nếu bạn muốn xem các phân vùng trên một ổ đĩa cụ thể. Lưu ý rằng công cụ phân vùng đòi hỏi quyền truy cập root (gốc). Liệt kê 2 cho thấy các phân vùng trên một trong các ổ đĩa cứng của tôi.

Liệt kê 2. Liệt kê các phân vùng bằng lệnh fdisk
[root@lyrebird root]# fdisk -l /dev/hda

Disk /dev/hda: 160.0 GB, 160041885696 bytes 
255 heads, 63 sectors/track, 19457 cylinders 
Units = cylinders of 16065 * 512 = 8225280 bytes 

Device     Boot    Start    End     Blocks    Id    System 
/dev/hda1   *          1   2078   16691503+    7    HPFS/NTFS 
/dev/hda2           2079   3295    9775552+    c    Win95 FAT32 (LBA) 
/dev/hda3           3296   3422    1020127+   83    Linux 
/dev/hda4           3423  19457  128801137+    f    Win95 Ext'd (LBA) 
/dev/hda5           3423   3684    2104483+   82    Linux swap 
/dev/hda6           3685   6234   20482843+   83    Linux 
/dev/hda7           6235   7605   11012526    83    Linux 
/dev/hda8           7606   9645   16386268+   83    Linux 
/dev/hda9           9646  12111   19808113+   83    Linux 
/dev/hda10         12112  15680   28667961    83    Linux
/dev/hda11         15681  19457   30338721    83    Linux

Lưu ýs:

  1. Thông tin tiêu đề cho thấy kích thước và hình học đĩa. Hầu hết các đĩa lớn sử dụng LBA có 255 đầu cho mỗi hình trụ và 63 cung cho mỗi rãnh (track), tạo ra tổng cộng 16065 cung hoặc 8225280 byte cho mỗi trụ.
  2. Trong ví dụ này, phân vùng chính đầu tiên (/dev/hda1) được đánh dấu có khả năng khởi động (hoặc chủ động). Như bạn đã thấy trong hướng dẫn cho chủ đề 102, điều này cho phép bản ghi khởi động chính (MBR) của máy PC DOS tiêu chuẩn khởi động phân vùng này. Cờ này không có ý nghĩa đối với các bộ nạp khởi động LILO hoặc GRUB.
  3. Các cột Bắt đầu (Star) và Kết thúc (End) chỉ ra trụ bắt đầu và trụ kết thúc cho mỗi phân vùng. Các phân vùng phải không chồng chéo lên nhau và nói chung cần liền khối, không có vùng nào xen kẽ vào nhau.
  4. Cột Blocks cho thấy số lượng các khối 1K (1024 byte) trong phân vùng đó. Số lượng tối đa của các khối trong một phân vùng vì thế bằng một nửa tích số của số các trụ (End + 1 - Start) với số các cung trên mỗi trụ. Một dấu + phía sau chỉ thị rằng không phải tất cả các cung trong phân vùng này được sử dụng.
  5. Trường Id (mã nhận dạng) biểu thị dự kiến sử dụng của phân vùng đó. Kiểu 82 là một phân vùng tráo đổi Linux và kiểu 83 là một phân vùng dữ liệu Linux. Có khoảng 100 kiểu phân vùng khác nhau đã được định nghĩa. Đĩa cụ thể này được chia sẻ giữa một số hệ điều hành, bao gồm cả Windows/XP, do đó có mặt các phân vùng NTFS (và FAT32) của Windows.

Tạo phân vùng bằng lệnh fdisk

Bạn vừa thấy làm thế nào để hiển thị thông tin phân vùng khi sử dụng lệnh fdisk. Lệnh này cũng cung cấp một môi trường tương tác cho việc soạn thảo bảng phân vùng để tạo ra hoặc loại bỏ các phân vùng.

Các cảnh báo

Trước khi bạn bắt đầu sửa đổi các phân vùng, cần ghi nhớ một số điều quan trọng. Bạn có nguy cơ mất dữ liệu hiện có của mình nếu bạn không làm theo các hướng dẫn này.

  1. Không thay đổi các phân vùng đang sử dụng. Lập kế hoạch hành động của bạn và thực hiện chúng một cách cẩn thận.
  2. Biết rõ công cụ của bạn. Lệnh fdisk không hoàn tất bất kỳ các thay đổi nào đối với đĩa của bạn cho đến khi bạn yêu cầu nó làm thế. Các công cụ khác, bao gồm parted, có thể hoàn tất ngay các thay đổi khi bạn tiến hành.
  3. Sao lưu dữ liệu quan trọng trước khi bạn bắt đầu, như với bất kỳ hoạt động nào có thể gây mất dữ liệu.
  4. Các công cụ tạo phân vùng viết vào bảng phân vùng. Trừ khi công cụ mà bạn đang sử dụng cũng bao gồm khả năng di chuyển, sửa lại kích thước, định dạng hoặc viết vào vùng dữ liệu của đĩa cứng của bạn, dữ liệu của bạn sẽ không bị chạm vào. Nếu bạn vô ý phạm một lỗi, hãy dừng lại càng nhanh càng tốt và tìm sự trợ giúp. Bạn vẫn có thể có thể khôi phục các phân vùng và dữ liệu của bạn.

Bắt đầu lệnh fdisk

Để bắt đầu lệnh fdisk trong chế độ tương tác, chỉ cần cung cấp tên của một đĩa, ví dụ như /dev/hda hay /dev/sdb làm một tham số. Các ví dụ sau đây khởi động một đĩa CD trực tiếp Knoppix. Bạn sẽ cần quyền người dùng root và bạn sẽ thấy kết quả đầu ra tương tự như Liệt kê 3.

Liệt kê 3. Bắt đầu lệnh fdisk tương tác
root@ttyp1[knoppix]# fdisk /dev/hda 

The number of cylinders for this disk is set to 14593. 
There is nothing wrong with that, but this is larger than 1024, 
and could in certain setups cause problems with: 
1) software that runs at boot time (e.g., old versions of LILO) 
2) booting and partitioning software from other OSs 
        (e.g., DOS FDISK, OS/2 FDISK) 

Command (m for help):

Hầu hết các ổ đĩa hiện đại có hơn 1024 trụ, do đó bạn sẽ thường thấy những lời cảnh báo như trong Liệt kê 3. Gõ m để hiển thị một danh sách các lệnh một chữ cái có sẵn như trong Liệt kê 4.

Liệt kê 4. Trợ giúp trong fdisk
Command action 
   a toggle a bootable flag 
   b edit bsd disklabel 
   c toggle the dos compatibility flag 
   d delete a partition
   l list known partition types 
   m print this menu 
   n add a new partition 
   o create a new empty DOS partition table 
   p print the partition table 
   q quit without saving changes 
   s create a new empty Sun disklabel 
   t change a partition's system id 
   u change display/entry units 
   v verify the partition table 
   w write table to disk and exit 
   x extra functionality (experts only) 

Command (m for help):

Sử dụng lệnh p để hiển thị phân vùng hiện có trên đĩa cụ thể này; Liệt kê 5 cho thấy kết quả đầu ra.

Liệt kê 5. Hiển thị bảng phân vùng hiện có
Disk /dev/hda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders 
Units = cylinders of 16065 * 512 = 8225280 bytes 

    Device Boot Start    End   Blocks   Id   System
 /dev/hda1   *      1   2611 20972826    7   HPFS/NTFS 

Command (m for help):

Đĩa cụ thể này là một đĩa 120GB với một phân vùng Windows/XP có kích thước khoảng 20GB. Đó là một phân vùng chính và nó được đánh dấu có khả năng khởi động, như là dạng điển hình cho một hệ thống Windows.

Bố trí máy trạm của chúng ta

Bây giờ hãy sử dụng một phần của không gian rỗi để thiết lập một máy trạm đơn giản với các phân vùng bổ sung sau đây. Trong thực tế, ít có khả năng là bạn sẽ trộn lẫn nhiều kiểu hệ thống tập tin khác nhau như thế này, nhưng chúng ta sẽ thực hiện nó ở đây cho mục đích minh họa.

  1. Một phân vùng chính khác cho các tập tin khởi động của chúng ta. Phân vùng này sẽ được lắp đặt như là thư mục /boot và sẽ chứa các tập tin nhân (kernel) và các tập tin đĩa nhớ ảo (ramdisk) ban đầu. Nếu bạn sử dụng bộ nạp khởi động GRUB, các tập tin GRUB cũng sẽ được đặt ở đây. Theo hướng dẫn cho chủ đề 102, chỉ dẫn của chúng tôi là phân vùng này chiếm khoảng 100MB. Chúng ta thấy từ Liệt kê 5 rằng một trụ có chứa khoảng 8MB dữ liệu, vì vậy chúng ta sẽ sử dụng 13 trụ cho thư mục /boot. Đây sẽ là /dev/hda2.
  2. Chúng ta sẽ tạo ra một phân vùng mở rộng để chứa các phân vùng logic trùm qua phần còn lại của không gian chưa sử dụng. Đây sẽ là /dev/hda3.
  3. Chúng ta sẽ tạo ra một phân vùng tráo đổi 500MB là /dev/hda5. Chúng ta sẽ sử dụng 64 trụ cho việc này.
  4. Chúng ta sẽ tạo ra một phân vùng logic khoảng 20GB cho hệ thống Linux của chúng ta. Đây sẽ là /dev/hda6.
  5. Chúng ta sẽ tạo ra một phân vùng 10GB tách riêng cho dữ liệu người dùng. Phân vùng này cuối cùng sẽ được lắp đặt là /home. Bây giờ, nó chỉ đơn giản sẽ là /dev/hda7.
  6. Cuối cùng, chúng ta sẽ tạo một phân vùng nhỏ 2GB để chia sẻ dữ liệu giữa các hệ thống Linux và Windows. Phân vùng này cuối cùng sẽ được định dạng là FAT32 (hoặc vfat). Đây sẽ là /dev/hda8.

Tạo các phân vùng của chúng ta

Hãy bắt đầu bằng cách sử dụng lệnh n để tạo ra một phân vùng mới, xem Liệt kê 6.

Liệt kê 6. Tạo phân vùng đầu tiên của chúng ta
Command (m for help): n 
Command action 
   e extended 
   p primary partition (1-4) 
p 
Partition number (1-4): 2 
First cylinder (2612-14593, default 2612): 
Using default value 2612 
Last cylinder or +size or +sizeM or +sizeK (2612-14593, default 14593): 2624 

Command (m for help): p 

Disk /dev/hda: 120.0 GB, 120034123776 bytes 
255 heads, 63 sectors/track, 14593 cylinders 
Units = cylinders of 16065 * 512 = 8225280 bytes 

    Device  Boot  Start   End    Blocks   Id  System
 /dev/hda1    *       1  2611  20972826    7  HPFS/NTFS 
 /dev/hda2          2612 2624    104422+  83  Linux 

Command (m for help):

Chúng ta lấy trụ đầu tiên theo mặc định và chỉ rõ giá trị 2624 là trụ cuối cùng, dẫn đến một phân vùng có 13 trụ. Bạn có thể nhìn thấy từ Liệt kê 6 là phân vùng của chúng ta quả thật có kích thước khoảng 100MB. Vì nó là một phân vùng chính, nó phải được đánh số từ 1 đến 4. Một ý tưởng tốt là gán các số phân vùng một cách tuần tự; một số công cụ cảnh báo khi không làm như thế.

Lưu ý rằng phân vùng mới của chúng ta được gán kiểu 83, dành cho một phân vùng dữ liệu Linux. Hãy coi việc này như một chỉ báo cho hệ điều hành về dự kiến sử dụng phân vùng đó. Việc sử dụng cuối cùng phải phù hợp với dự kiến này, nhưng vào thời điểm này chúng ta thậm chí còn chưa định dạng phân vùng, vẫn để nguyên bất kỳ dữ liệu nào trên đó.

Bây giờ chúng ta tạo phân vùng mở rộng, đó là một thùng chứa (container) cho các phân vùng logic trên đĩa. Chúng ta gán số phân vùng 3 (/dev/hda3). Quá trình tương tác và kết quả được hiển thị trong Liệt kê 7. Lưu ý rằng kiểu phân vùng đã được gán tự động.

Liệt kê 7. Tạo một phân vùng mở rộng
Command (m for help): n 
Command action 
   e extended
   p primary partition (1-4) 
e 
Partition number (1-4): 3 
First cylinder (2625-14593, default 2625): 
Using default value 2625 
Last cylinder or +size or +sizeM or +sizeK (2625-14593, default 14593): 
Using default value 14593 

Command (m for help): p 

Disk /dev/hda: 120.0 GB, 120034123776 bytes 
255 heads, 63 sectors/track, 14593 cylinders 
Units = cylinders of 16065 * 512 = 8225280 bytes 
   Device   Boot Start    End     Blocks    Id   System 
/dev/hda1     *      1   2611   20972826     7   HPFS/NTFS 
/dev/hda2         2612   2624     104422+   83   Linux 
/dev/hda3         2625  14593   96140992+    5   Extended
                              
Command (m for help):

Bây giờ hãy chuyển sang việc tạo ra một phân vùng tráo đổi như là một phân vùng logic trong phân vùng mở rộng của chúng ta. Chúng ta sẽ sử dụng một giá trị +64 (trụ) làm trụ cuối cùng, thay vì phải tự làm các phép tính số học. Lưu ý rằng lúc này chúng ta sử dụng lệnh t để gán một kiểu 82 (vùng tráo đổi của Linux) cho phân vùng vừa được tạo ra. Nếu không, nó sẽ là phân vùng kiểu 83 (vùng dữ liệu của Linux) khác.

Liệt kê 8. Tạo ra một phân vùng tráo đổi
Command (m for help): n 
Command action 
   l logical (5 or over) 
   p primary partition (1-4) 
l
First cylinder (2625-14593, default 2625): 
Using default value 2625 
Last cylinder or +size or +sizeM or +sizeK (2625-14593, default 14593): +64 

Command (m for help): t 
Partition number (1-5): 5 
Hex code (type L to list codes): 82
Changed system type of partition 5 to 82 (Linux swap) 

Command (m for help): p 

Disk /dev/hda: 120.0 GB, 120034123776 bytes 
255 heads, 63 sectors/track, 14593 cylinders 
Units = cylinders of 16065 * 512 = 8225280 bytes 

   Device   Boot   Start   End     Blocks   Id  System 
/dev/hda1     *        1  2611   20972826    7  HPFS/NTFS 
/dev/hda2           2612  2624     104422+  83  Linux
/dev/hda3           2625 14593   96140992+   5  Extended 
/dev/hda5           2625  2689     522081   82  Linux swap 

Command (m for help):

Bây giờ hãy định nghĩa phân vùng Linux chính và phân vùng /home. Lúc này chúng ta chỉ đơn giản chỉ rõ kích thước +20480M và +10240M, biểu thị là 20GB và 10GB, tương ứng. Chúng ta để cho fdisk tính toán số lượng các trụ cho chúng ta. Các kết quả được hiển thị trong Liệt kê 9.

Liệt kê 9. Tạo phân vùng Linux chính của chúng ta
Command (m for help): n 
Command action
   l logical (5 or over) 
   p primary partition (1-4) 
l 
First cylinder (2690-14593, default 2690): 
Using default value 2690 
Last cylinder or +size or +sizeM or +sizeK (2690-14593, default 14593): +20480M 

Command (m for help): n 
Command action 
   l logical (5 or over) 
   p primary partition (1-4) 
l 
First cylinder (5181-14593, default 5181): 
Using default value 5181 
Last cylinder or +size or +sizeM or +sizeK (5181-14593, default 14593): +10240M 

Command (m for help): p 

Disk /dev/hda: 120.0 GB, 120034123776 bytes 
255 heads, 63 sectors/track, 14593 cylinders 
Units = cylinders of 16065 * 512 = 8225280 bytes
 
   Device   Boot Start     End     Blocks   Id   System  
/dev/hda1     *      1    2611   20972826    7   HPFS/NTFS 
/dev/hda2         2612    2624     104422+  83   Linux 
/dev/hda3         2625   14593   96140992+   5   Extended 
/dev/hda5         2625    2689     522081   82   Linux swap
/dev/hda6         2690    5180   20008926   83   Linux 
/dev/hda7         5181    6426   10008463+  83   Linux 

Command (m for help):

Phân vùng cuối cùng của chúng ta là phân vùng FAT32. Chúng ta sử dụng các lệnh mà chúng ta đã dùng ở trên để tạo /dev/hda8 với đặc tả kích thước +2048 M và sau đó chúng ta thay đổi kiểu phân vùng thành b (dành cho một phân vùng FAT32 W95). Tiếp theo chúng ta ghi lưu tất cả công việc đã làm.

Lưu bảng phân vùng của chúng ta

Cho đến nay, chúng ta mới chỉ đang thực hiện biên soạn một bảng phân vùng trong bộ nhớ. Chúng ta có thể sử dụng lệnh q để thoát ra mà không ghi lưu lại các thay đổi. Nếu trong bảng phân vùng đó có một cái gì đó không như chúng ta muốn, chúng ta có thể sử dụng lệnh d để xóa một hoặc nhiều phân vùng để có thể định nghĩa lại chúng. Nếu chúng ta hài lòng với các thiết lập của mình, chúng ta sử dụng lệnh v để kiểm tra lại thiết lập của mình và sau đó dùng lệnh w để viết các bảng phân vùng mới và thoát ra. Xem Liệt kê 10. Nếu bạn chạy lại fdisk -l, bạn sẽ thấy Linux bây giờ biết về các phân vùng mới. Không giống như trong một số hệ điều hành, để xem các thay đổi không nhất thiết phải luôn khởi động lại hệ thống. Việc khởi động lại có thể cần thiết nếu chẳng hạn, /dev/hda3 trở thành /dev/hda2 vì /dev/hda2 ban đầu đã bị xóa. Nếu việc khởi động lại là cần thiết, lệnh, fdisk sẽ báo cho bạn biết phải làm như vậy.

Liệt kê 10. Lưu bảng phân vùng
Command (m for help): v 
127186915 unallocated sectors 

Command (m for help): w 
The partition table has been altered!
                              
Calling ioctl() to re-read partition table. 

WARNING: If you have created or modified any DOS 6.x 
partitions, please see the fdisk manual page for additional 
information. 
Syncing disks.
root@ttyp0[knoppix]# fdisk -l /dev/hda 

Disk /dev/hda: 120.0 GB, 120034123776 bytes 
255 heads, 63 sectors/track, 14593 cylinders 
Units = cylinders of 16065 * 512 = 8225280 bytes 

   Device   Boot Start   End     Blocks  Id   System 
/dev/hda1     *      1  2611   20972826   7   HPFS/NTFS 
/dev/hda2         2612  2624     104422+ 83   Linux 
/dev/hda3         2625 14593   96140992+  5   Extended
/dev/hda5         2625  2689     522081  82   Linux swap 
/dev/hda6         2690  5180   20008926  83   Linux 
/dev/hda7         5181  6426   10008463+ 83   Linux 
/dev/hda8         6427  6676    2008093+  b   W95 FAT32

Nói thêm về fdisk

Bạn có thể nhận thấy rằng chúng ta không thay đổi cờ có khả năng khởi động trên bất kỳ phân vùng nào. Như tình trạng đĩa của chúng ta bây giờ, nó vẫn có MBR (bản ghi khởi động chính) của Windows và do đó sẽ khởi động phân vùng chính đầu tiên được đánh dấu là có khả năng khởi động (trong ví dụ của chúng ta là phân vùng NTFS)..

Cả bộ nạp khởi động LILO lẫn GRUB đều không sử dụng cờ có khả năng khởi động. Nếu một trong hai bộ nạp khởi động này được cài đặt trong MBR, thì nó có thể khởi động phân vùng Windows/XP. Bạn cũng có thể cài đặt LILO hoặc GRUB vào phân vùng /boot của bạn (/dev/hda2) và đánh dấu phân vùng đó có khả năng khởi động và gỡ bỏ cờ có khả năng khởi động khỏi /dev/hda1. Giữ nguyên MBR ban đầu có thể có ích nếu máy tính này sau đó được trả lại là một máy tính chỉ có Windows.

Bây giờ bạn đã thấy một cách để thiết lập một máy trạm làm việc Linux. Các sự lựa chọn khác mà bạn có thể làm được trình bày ở phần sau trong hướng dẫn này, trong phần Tìm kiếm và bố trí các tập tin hệ thống.

Các kiểu hệ thống tập tin

Linux hỗ trợ các hệ thống tập tin khác nhau. Mỗi hệ thống tập tin có các điểm mạnh và các điểm yếu và một tập hợp các đặc tính hiệu năng riêng của mình. Một thuộc tính quan trọng của hệ thống tập tin là ghi nhật ký, journaling, cho phép khôi phục hệ thống nhanh hơn sau khi một hệ thống bị sự cố. Nói chung, một hệ thống tập tin có nhật ký được ưu tiên dùng hơn một hệ thống tập tin không có nhật ký khi bạn có thể lựa chọn. Sau đây là tóm tắt về các kiểu hệ thống tập tin mà bạn cần biết với kỳ thi LPI. Xem Tài nguyên để biết thông tin cơ sở bổ sung.

Hệ thống tập tin ext2

Hệ thống tập tin ext2 (còn gọi là hệ thống tập tin mở rộng thứ hai) được phát triển để giải quyết các khiếm khuyết trong hệ thống tập tin Minix được sử dụng trong các phiên bản ban đầu của Linux. Nó đã được sử dụng rộng rãi trên Linux trong nhiều năm. Không có việc ghi nhật ký nào trong ext2 và nó phần lớn đã được thay thế bằng ext3.

Hệ thống tập tin ext3

Hệ thống tập tin ext3 bổ sung thêm khả năng ghi nhật ký cho một hệ thống tập tin ext2 tiêu chuẩn và do đó ext3 là sự tăng trưởng tiến hóa của một hệ thống tập tin rất ổn định. Nó cung cấp hiệu năng hợp lý trong hầu hết các điều kiện và vẫn đang được cải thiện. Vì nó bổ sung thêm khả năng ghi nhật ký lên trên hệ thống tập tin ext2 đã qua thử thách, nên có thể chuyển đổi một hệ thống tập tin ext2 hiện có sang ext3 và thậm chí chuyển đổi ngược lại khi cần thiết.

Hệ thống tập tin ReiserFS

ReiserFS là một hệ thống tập tin dựa vào cây-B (B-Tree) có hiệu năng tổng thể rất tốt, đặc biệt đối với số lượng lớn của các tập tin nhỏ. ReiserFS cũng mở rộng tốt và có ghi nhật ký.

Hệ thống tập tin XFS

XFS là một hệ thống tập tin có ghi nhật ký. Nó đi kèm với các tính năng mạnh mẽ và được tối ưu hóa cho khả năng mở rộng. XFS tích cực lưu trữ nhanh dữ liệu trung chuyển trong RAM, do đó chúng tôi khuyên bạn nên sử dụng một nguồn cấp điện liên tục (UPS) nếu bạn sử dụng XFS.

Hệ thống tập tin tráo đổi

Không gian tráo đổi phải được định dạng để sử dụng như không gian trao đổi, nhưng về mặt khác, nói chung nó không được coi là một hệ thống tập tin.

Hệ thống tập tin vfat

Hệ thống tập tin này (còn gọi là FAT32) không được ghi nhật ký và thiếu nhiều tính năng cần thiết cho việc thực hiện hệ thống tập tin Linux đầy đủ. Nó rất có ích cho việc trao đổi dữ liệu giữa các hệ thống Windows và Linux khi nó có thể được cả Windows và Linux đọc. Không sử dụng hệ thống tập tin này cho Linux, trừ việc chia sẻ dữ liệu giữa Windows và Linux. Nếu bạn giải nén hoặc gỡ rời (untar) một tập tin kho lưu trữ Linux trên một đĩa vfat, bạn sẽ mất các quyền hạn, chẳng hạn như quyền thực thi và bạn sẽ mất bất kỳ liên kết biểu tượng nào có thể đã được lưu trữ trong kho lưu trữ đó.

Cả hai ext3 và ReiserFS đã hoàn thiện và được sử dụng như hệ thống tập tin mặc định trên một số các bản phân phối. Hai hệ thống tập tin này được đề nghị để sử dụng rộng rãi.

Tạo các hệ thống tập tin

Linux sử dụng lệnh mkfs để tạo hệ thống tập tin và lệnh mkswap để tạo không gian tráo đổi. Lệnh mkfs thực tế là lối vào của một số lệnh đặc thù riêng cho từng hệ thống tập tin, ví dụ như mkfs.ext3 cho ext3 và mkfs.reiserfs cho ReiserFS.

Sự hỗ trợ hệ thống tập tin nào đã được cài đặt trên hệ thống của bạn rồi? Hãy sử dụng lệnh ls /sbin/mk* để tìm ra câu trả lời. Một ví dụ được hiển thị trong Liệt kê 11.

Liệt kê 11. Các lệnh tạo hệ thống tập tin
root@ttyp0[knoppix]# ls /sbin/mk* 
/sbin/mkdosfs      /sbin/mkfs.ext2  /sbin/mkfs.msdos    /sbin/mkraid 
/sbin/mke2fs       /sbin/mkfs.ext3  /sbin/mkfs.reiserfs /sbin/mkreiserfs 
/sbin/mkfs         /sbin/mkfs.jfs   /sbin/mkfs.vfat     /sbin/mkswap 
/sbin/mkfs.cramfs  /sbin/mkfs.minix /sbin/mkfs.xfs

Bạn sẽ thấy nhiều dạng của một số lệnh. Ví dụ, bạn sẽ thường thấy rằng các tập tin mke2fs, mkfs.ext2 và mkfs.ext3 là giống nhau, cũng như mkreiserfs và mkfs.reiserfs.

Có một vài tùy chọn chung cho tất cả các lệnh mkfs. Các tùy chọn là đặc thù riêng cho kiểu hệ thống tập tin được tạo ra đã được chuyển sang cho lệnh tạo thích hợp, dựa vào kiểu hệ thống tập tin đã chỉ rõ trong tùy chọn -type. Ví dụ của chúng ta sử dụng mkfs -type, nhưng bạn có thể sử dụng trực tiếp các dạng khác với hiệu lực như nhau. Ví dụ, bạn có thể sử dụng mkfs -type reiserfs, mkreiserfs hoặc mkfs.reiserfs. Để đọc các trang hướng dẫn sử dụng cho một hệ thống tập tin cụ thể, hãy sử dụng lệnh mkfs thích hợp làm tên lệnh, ví dụ, man mkfs.reiserfs. Nhiều trong số các giá trị được hiển thị trong các ví dụ đầu ra dưới đây có thể được kiểm soát bằng các tùy chọn của lệnh mkfs.

Tạo ra một hệ thống tập tin ext3

Liệt kê 12. Tạo ra một hệ thống tập tin ext3
root@ttyp0[knoppix]# mkfs -t ext3 /dev/hda8
mke2fs 1.35 (28-Feb-2004) 
Filesystem label= 
OS type: Linux 
Block size=4096 (log=2) 
Fragment size=4096 (log=2) 
251392 inodes, 502023 blocks 
25101 blocks (5.00%) reserved for the super user 
First data block=0 
16 block groups 
32768 blocks per group, 32768 fragments per group 
15712 inodes per group 
Superblock backups stored on blocks:
       32768, 98304, 163840, 229376, 294912 

Writing inode tables: done
Creating journal (8192 blocks): done 
Writing superblocks and filesystem accounting information: done 

This filesystem will be automatically checked every 32 mounts or 
180 days, whichever comes first. Use tune2fs -c or -i to override.

Một tùy chọn có ích cho hệ thống tập tin ext2 và ext3 là tùy chọn -L với một tên, nó sẽ gán một nhãn cho phân vùng đó. Tùy chọn này có thể được sử dụng thay cho tên thiết bị khi lắp đặt (mount) các hệ thống tập tin; nó cung cấp một mức cách ly nào đó trước các thay đổi có thể cần phải được phản ánh trong các tập tin điều khiển khác nhau. Để hiển thị hoặc thiết lập một nhãn cho một hệ thống tập tin ext2 hoặc ext3 hiện có, sử dụng lệnh e2label. Các nhãn được hạn chế có kích thước tối đa là 16 ký tự.

Lưu ý rằng một nhật ký được tạo ra với ext3. Nếu bạn muốn thêm một nhật ký cho một hệ thống tune2fs hiện có, hãy sử dụng lệnh tune2fs với tùy chọn -j.

Tạo ra một hệ thống tập tin ReiserFS

Liệt kê 13. Tạo ra một hệ thống tập tin ReiserFS
.root@ttyp0[knoppix]# mkfs -t reiserfs /dev/hda6 
mkfs.reiserfs 3.6.17 (2003 www.namesys.com) 

A pair of credits: 
Many persons came to www.namesys.com/support.html, and got a question answered 
for $25, or just gave us a small donation there.

Jeremy Fitzhardinge wrote the teahash.c code for V3. Colin Plumb also
contributed to that. 

Guessing about desired format. Kernel 2.4.26 is running. 
Format 3.6 with standard journal Count of blocks on the device: 5002224 
Number of blocks consumed by mkreiserfs formatting process: 8364 
Blocksize: 4096 Hash function used to sort names: "r5"
Journal Size 8193 blocks (first block 18) 
Journal Max transaction length 1024 
inode generation number: 0 
UUID: 72e317d6-8d3a-45e1-bcda-ad7eff2b3b40 
ATTENTION: YOU SHOULD REBOOT AFTER FDISK! 
        ALL DATA WILL BE LOST ON '/dev/hda6'! 
Continue (y/n):y
Initializing journal - 0%....20%....40%....60%....80%....100%
Syncing..ok 

Tell your friends to use a kernel based on 2.4.18 or later, and especially not a 
kernel based on 2.4.9, when you use reiserFS. Have fun. 
ReiserFS is successfully created on /dev/hda6.

Bạn có thể gắn nhãn cho một hệ thống tập tin ReiserFS bằng cách sử dụng -l (hoặc tùy chọn --label kèm với một tên). Bạn có thể sử dụng lệnh reiserfstune để thêm một nhãn hoặc hiển thị nhãn trên một hệ thống tập tin ReiserFS hiện có. Các nhãn được hạn chế có kích thước tối đa là 16 ký tự.

Tạo một hệ thống tập tin XFS

Liệt kê 14. Tạo một hệ thống tập tin XFS
root@ttyp0[knoppix]# mkfs -t xfs /dev/hda7
meta-data=/dev/hda7          isize=256    agcount=16, agsize=156382 blks 
         =                   sectsz=512 
data     =                   bsize=4096   blocks=2502112, imaxpct=25 
         =                   sunit=0      swidth=0 blks, unwritten=1 
naming   =version 2          bsize=4096   
log      =internal log       bsize=4096   blocks=2560, version=1 
         =                   sectsz=512   sunit=0 blks
realtime =none               extsz=65536   blocks=0, rtextents=0

Bạn có thể gắn nhãn một hệ thống XFS bằng cách sử dụng tùy chọn -L với một tên. Bạn có thể sử dụng lệnh xfs_admin với tùy chọn -L để thêm một nhãn cho một hệ thống tập tin XFS hiện có. Sử dụng tùy chọn -l cho lệnh xfs_admin để hiển thị một nhãn. Không giống như ext2, ext3 và ReiserFS, các nhãn được giới hạn có kích thước tối đa là 12 ký tự.

Tạo một hệ thống tập tin vfat

Liệt kê 15. Tạo một hệ thống tập tin vfat
root@ttyp0[knoppix]# mkfs -t vfat /dev/hda8
mkfs.vfat 2.10 (22 Sep 2003)

Tạo nhãn cho một hệ thống tập tin FAT32 bằng cách sử dụng tùy chọn -n (viết tắt của volume name). Lệnh e2label sẽ hiển thị hoặc thiết lập nhãn trên phân vùng vfat cũng như các phân vùng ext. Các nhãn trên FAT32 được giới hạn có kích thước tối đa 16 ký tự.

Tạo không gian tráo đổi

Liệt kê 16. Tạo không gian tráo đổi
root@ttyp0[knoppix]# mkswap /dev/hda5 
Setting up swapspace version 1, size = 534605 kB

Không giống như các hệ thống tập tin thông thường, các phân vùng tráo đổi không được lắp đặt. Thay vào đó, chúng được kích hoạt bằng lệnh swapon. Kịch bản lệnh khởi động của hệ thống Linux của bạn sẽ lo việc kích hoạt tự động các phân vùng tráo đổi của bạn.

Các công cụ và các hệ thống tập tin khác

Các công cụ và các hệ thống tập tin sau đây không phải là một phần của các mục tiêu LPI cho kỳ thi này. Tổng quan rất ngắn gọn này đề cập đến một số các công cụ và các hệ thống tập tin mà bạn có thể gặp phải.

Các công cụ phân vùng

Nhiều bản phân phối Linux bao gồm các lệnh cfdisksfdisk. Lệnh cfdisk cung cấp giao diện đồ họa nhiều hơn so với fdisk, sử dụng các chức năng của thư viện ncurses như trong Hình 1. Lệnh sfdisk được dành cho các lập trình viên sử dụng và có thể đưa vào kịch bản lệnh. Chỉ sử dụng nó khi bạn biết những gì bạn đang làm.

Hình 1. Sử dụng cfdisk
Sử dụng cfdisk

Một công cụ phổ biến khác để làm việc với bảng phân vùng là parted, nó có thể thay đổi kích thước và định dạng nhiều kiểu phân vùng cũng như tạo và phá hủy chúng. Trong khi parted không thể thay đổi kích thước các phân vùng NTFS, thì ntfsresize có thể thay đổi được. Các công cụ qtparted sử dụng bộ công cụ Qt để cung cấp một giao diện đồ họa. Nó bao gồm các chức năng của parted cũng như chức năng của ntfsresize.

Công cụ gparted là một công cụ phân vùng đồ họa khác, được thiết kế cho màn hình nền GNOME. Nó sử dụng thư viện GTK + GUI và được hiển thị trong Hình 2. (Xem Tài nguyên để tìm các liên kết đến cả qtparted lẫn gparted.)

Hình 2. Sử dụng Gparted
Sử dụng Gparted

Có một số công cụ phân vùng thương mại có sẵn. Có lẽ một công cụ nổi tiếng nhất là PartitionMagic, bây giờ do Symantec bán ra.

Nhiều bản phân phối cho phép bạn phân vùng đĩa cứng của mình và đôi khi co nhỏ lại một phân vùng NTFS hay FAT32 hiện có của Windows, như là một phần của quá trình cài đặt. Tham khảo tài liệu cài đặt cho bản phân phối của bạn.

Trình quản lý đĩa logic

Trình quản lý đĩa logic (LVM - logical volume manager) dành cho Linux cho phép bạn kết hợp nhiều thiết bị lưu trữ vật lý vào một nhóm đĩa duy nhất. Ví dụ, bạn có thể thêm một phân vùng vào một nhóm đĩa hiện có, thay vì phải cắt ra một vùng liền khối đủ lớn cho hệ thống tập tin mong muốn của bạn.

RAID

RAID (Redundant Array of Independent Disks - Mảng có dư các đĩa cứng độc lập) là công nghệ để tạo ra một kho lưu trữ dữ liệu tin cậy bằng cách sử dụng các đĩa cứng giá thấp có chi phí thấp hơn nhiều so với các đĩa cứng trong các hệ thống cao cấp. Có một số kiểu khác nhau của RAID và RAID có thể được triển khai thực hiện bằng phần cứng hay phần mềm. Linux hỗ trợ cả RAID phần cứng lẫn phần mềm.

Nói thêm về các hệ thống tập tin

Bạn có thể sẽ bắt gặp các hệ thống tập tin ngoài các hệ thống tập tin được trình bày ở trên.

Hệ thống tập tin có nhật ký, (JFS - journaled File System) của IBM, hiện được sử dụng trong các máy chủ doanh nghiệp của IBM, được thiết kế dành cho môi trường máy chủ có thông lượng cao. Nó có sẵn cho Linux và kèm theo trong một số bản phân phối. Để tạo các hệ thống tập tin JFS, hãy sử dụng lệnh mkfs.jfs.

Còn có các hệ thống tập tin khác nữa, chẳng hạn như hệ thống tập tin cramfs thường được sử dụng trên các thiết bị nhúng.

Phần kế tiếp cho bạn thấy làm thế nào để duy trì tính toàn vẹn trên các hệ thống tập tin và phải làm gì khi tính toàn vẹn đó có lỗi.


Tính toàn vẹn của hệ thống tập tin

Phần này trình bày các tư liệu cho chủ đề 1.104.2 cho kỳ thi quản trị trình độ sơ cấp (LPIC-1) 101. Chủ đề này có trọng số 3.

Trong phần này, bạn tìm hiểu cách để:

  • Giám sát không gian chưa sử dụng và các inode.
  • Kiểm tra tính toàn vẹn của các hệ thống tập tin.
  • Sửa chữa các vấn đề hệ thống tập tin đơn giản.

Cả hai hệ thống tập tin tiêu chuẩn và hệ thống tập tin có ghi nhật ký sẽ được trình bày. Trọng tâm là về ext2 và ext3, nhưng các công cụ cho hệ thống tập tin khác cũng được đề cập. Hầu hết các tư liệu này áp dụng cho cả nhân 2.4 và nhân 2.6. Các ví dụ trong phần này chủ yếu sử dụng Ubuntu 5.10 "Breezy Badger" (một bản phân phối dựa trên Debian), với một nhân 2.6.12, được cài đặt trên các hệ thống tập tin mà chúng ta đã tạo ra trong phần trên. Các kết quả của bạn trên các hệ thống khác có thể khác nhau.

Giám sát không gian chưa sử dụng

Trước tiên, hãy ôn lại. Trong hướng dẫn cho chủ đề 103, "Chuẩn bị cho kỳ thi LPI 101: Các lệnh GNU và UNIX," bạn đã biết rằng một tập tin hoặc thư mục được chứa trong một sưu tập các khối và thông tin về tập tin hoặc thư mục được chứa trong một inode.

Cả hai các khối dữ liệu và các khối inode chiếm không gian trên hệ thống tập tin, vì vậy bạn cần phải giám sát việc sử dụng không gian đó để đảm bảo rằng các hệ thống tập tin của bạn có không gian để phát triển.

Lệnh df

Lệnh df sẽ hiển thị các thông tin về các hệ thống tập tin được lắp đặt. (Bạn sẽ tìm hiểu thêm về việc lắp đặt các hệ thống tập tin trong phần kế tiếp, Lắp đặt và bỏ lắp đặt các hệ thống tập tin). Nếu bạn thêm tùy chọn -T thì kiểu hệ thống tập tin có trong màn hình hiển thị, nếu không thêm tùy chọn này, nó sẽ không có. Kết quả đầu ra của lệnh df cho hệ thống Ubuntu mà chúng ta đã cài đặt trên hệ thống tập tin được tạo ra trong phần trước được hiển thị trong Liệt kê 17.

Liệt kê 17. Hiển thị cách sử dụng hệ thống tập tin
ian@pinguino:~$ df -T 
Filesystem    Type 1K-blocks    Used Available Use% Mounted on 
/dev/hda6 reiserfs  20008280 1573976  18434304   8% / 
tmpfs        tmpfs   1034188       0   1034188   0% /dev/shm 
tmpfs        tmpfs   1034188   12588   1021600   2% /lib/modules/2.6.12-10-386/volatile
/dev/hda2     ext3    101105   19173     76711  20% /boot 
/dev/hda8     vfat   2004156       8   2004148   1% /dos 
/dev/hda7      xfs   9998208    3544   9994664   1% /home 
/dev/hda1     ntfs  20967416 9594424  11372992  46% /media/hda1

Bạn sẽ nhận thấy rằng kết quả đầu ra bao gồm tổng số các khối cũng như số khối được sử dụng và số khối chưa sử dụng. Bạn cũng sẽ nhận thấy hệ thống tập tin, như /dev/hda7 và điểm lắp đặt của nó: /home cho /dev/hda7. Hai mục tmpfs là dành cho các hệ thống tập tin bộ nhớ ảo. Các hệ thống tập tin này chỉ tồn tại trong RAM hoặc không gian tráo đổi và được tạo ra khi được lắp đặt không cần một lệnh mkfs. Bạn có thể đọc thêm về tmpfs trong "Các vấn đề thường gặp: hướng dẫn cho người cài đặt hệ thống tập tin cao cấp, Phần 3" (xem Tài nguyên để có một đường liên kết).

Nếu bạn cần có thông tin cụ thể về cách sử dụng inode, hãy sử dụng tùy chọn -i với lệnh df. Bạn có thể loại trừ các kiểu hệ thống tập tin nào đó bằng cách sử dụng tùy chọn -x hoặc hạn chế thông tin chỉ với các kiểu hệ thống tập tin nào đó bằng cách sử dụng tùy chọn -t. Áp dụng việc này nhiều lần nếu cần thiết. Xem các ví dụ trong Liệt kê 18.

Liệt kê 18. Hiển thị cách sử dụng inode
ian@pinguino:~$ df -i -x tmpfs 
Filesystem     Inodes    IUsed    IFree   IUse%    Mounted on 
/dev/hda6           0        0        0       -    / 
/dev/hda2       26208       34    26174      1%    /boot 
/dev/hda8           0        0        0       -    /dos 
/dev/hda7    10008448      176 10008272      1%    /home 
/dev/hda1       37532    36313     1219     97%    /media/hda1 
ian@pinguino:~$ df -iT -t vfat -t ext3 
Filesystem  Type  Inodes IUsed IFree IUse% Mounted on 
/dev/hda2   ext3   26208    34 26174    1% /boot 
/dev/hda8   vfat       0     0     0     - /dos

Có lẽ bạn không bị bất ngờ khi thấy rằng hệ thống tập tin FAT32 không có các inode, nhưng bạn có thể sẽ ngạc nhiên khi biết rằng thông tin ReiserFS cho thấy không có các inode. ReiserFS giữ siêu dữ liệu cho các tập tin và thư mục trong các mục thống kê (stat items). Và do ReiserFS sử dụng một cấu trúc cây cân bằng, nên không có số các inode định trước nào như vẫn có trong các hệ thống tập tin ext2, ext3 hoặc xfs, chẳng hạn.

Có một số tùy chọn khác mà bạn có thể sử dụng với lệnh df để hạn chế chỉ hiển thị các hệ thống tập tin cục bộ hoặc kiểm soát định dạng của đầu ra. Ví dụ, sử dụng tùy chọn -H để hiển thị các kích thước mà con người dễ đọc, chẳng hạn như 1K thay cho 1024 hoặc sử dụng tùy chọn -h (hoặc --si) để có được các kích thước theo lũy thừa của 10 (1K=1000).

Nếu bạn không chắc chắn một phần cụ thể của cây thư mục của bạn nằm trên hệ thống tập tin nào, thì bạn có thể cung cấp cho lệnh df một tham số là tên thư mục hoặc thậm chí là một tên tập tin như trong Liệt kê 19.

Liệt kê 19. Kết quả đầu ra của lệnh df cho con người dễ đọc
ian@pinguino:~$ df --si ~ian/index.html 
Filesystem      Size    Used      Avail    Use%     Mounted on 
/dev/hda7        11G    3.7M        11G      1%     /home

Lệnh du

Lệnh df cung cấp thông tin chỉ về toàn bộ hệ thống tập tin. Đôi khi bạn có thể muốn biết có bao nhiêu không gian được thư mục nhà của bạn sử dụng hoặc bạn sẽ cần một phân vùng lớn bao nhiêu khi bạn muốn di chuyển /usr đến hệ thống tập tin riêng của nó. Để trả lời câu hỏi loại này, hãy sử dụng lệnh du.

Lệnh du hiển thị thông tin về tên tập tin (hoặc các tên tập tin) đã cho như là các tham số của lệnh. Nếu cho một tên thư mục, thì lệnh du thực hiện đệ quy và tính toán các kích thước cho mọi tập tin và thư mục con của thư mục đã cho. Dẫn đến kết quả có thể là rất nhiều. May mắn thay, bạn có thể sử dụng tùy chọn -s để chỉ yêu cầu một tổng số cho một thư mục. Nếu bạn sử dụng lệnh du để nhận thông tin cho nhiều thư mục, thì hãy thêm tùy chọn -c để có được một tổng số chung. Bạn cũng có thể kiểm soát định dạng đầu ra với cùng một tập hợp các tùy chọn kích thước (-h, -H, --si, và v.v) giống như được dùng cho lệnh df. Liệt kê 20 cho thấy hai hình ảnh về các thư mục nhà của tôi trên hệ thống Ubuntu mới được cài đặt.

Liệt kê 20. Sử dụng lệnh du
ian@pinguino:~$ du -hc * 
0     Desktop 
16K   index.html 
16K   total
ian@pinguino:~$ du -hs . 
3.0M   .

Lý do về sự khác biệt giữa tổng số 16K từ lệnh du -c * và tổng số 3M từ lệnh du -s là lệnh thứ hai bao gồm các mục bắt đầu bằng một dấu chấm, chẳng hạn như .bashrc, trong khi lệnh thứ nhất thì không.

Một điều khác cần lưu ý về lệnh du là bạn phải có khả năng đọc các thư mục mà bạn đang chạy lệnh này đối với nó.

Vậy bây giờ ta hãy sử dụng lệnh du để hiển thị tổng số không gian được cây /usr và mỗi thư mục con mức thứ nhất của nó sử dụng. Kết quả được hiển thị trong Liệt kê 21. Sử dụng quyền root để đảm bảo bạn có các quyền truy cập thích hợp.

Liệt kê 21. Sử dụng du trên /usr
root@pinguino:~# du -shc /usr/* 
66M     /usr/bin 
0       /usr/doc 
1.3M    /usr/games 
742K    /usr/include 
0       /usr/info 
497M    /usr/lib 
0       /usr/local 
7.3M    /usr/sbin 
578M    /usr/share 
0       /usr/src 
14M     /usr/X11R6          
1.2G    total

Kiểm tra các hệ thống tập tin

Đôi khi hệ thống của bạn có thể bị sự cố hoặc mất điện. Trong những trường hợp này, Linux sẽ không có khả năng bỏ lắp đặt một cách sạch sẽ các hệ thống tập tin của bạn và hệ thống có thể rơi vào một trạng thái không còn nhất quán, với một số thay đổi đã thực hiện và một số thì chưa kịp thực hiện. Việc vận hành với một hệ thống tập tin bị hỏng không phải là một ý tưởng tốt vì bạn có nhiều khả năng sẽ trộn thêm bất kỳ các lỗi hiện có nào.

Công cụ chính để kiểm tra các hệ thống tập tin là fsck, mà, giống như mkfs, thực sự là một lối vào tới các thường trình kiểm tra hệ thống tập tin cho các loại hệ thống tập tin khác nhau. Một số các thường trình kiểm tra cơ bản được hiển thị trong Liệt kê 22.

Liệt kê 22. Một số các chương trình fsck
ian@pinguino:~$ ls /sbin/*fsck* 
/sbin/dosfsck    /sbin/fsck.ext3  /sbin/fsck.reiser4  /sbin/jfs_fscklog 
/sbin/e2fsck     /sbin/fsck.jfs   /sbin/fsck.reiserfs /sbin/reiserfsck 
/sbin/fsck       /sbin/fsck.minix /sbin/fsck.vfat     /sbin/fsck.cramfs 
/sbin/fsck.msdos /sbin/fsck.xfs   /sbin/fsck.ext2     /sbin/fsck.nfs 
/sbin/jfs_fsck

Quá trình khởi động hệ thống sử dụng fsck để kiểm tra hệ thống tập tin gốc và bất kỳ các hệ thống tập tin khác được xác định trong tập tin điều khiển /etc/fstab. Nếu hệ thống tập tin chưa được bỏ lắp đặt một cách sạch sẽ, thì việc kiểm tra tính nhất quán được thực hiện. Điều này được kiểm soát bởi trường pass (hoặc passno) (trường thứ sáu) của mục /etc/fstab. Hệ thống tập tin với pass đặt là 0 sẽ không được kiểm tra lúc khởi động. Hệ thống tập tin gốc có giá trị pass bằng 1 và được kiểm tra đầu tiên. Các hệ thống tập tin khác sẽ thường có một giá trị pass bằng 2 (hoặc cao hơn), biểu thị thứ tự trong đó chúng cần được kiểm tra. Nhiều hoạt động fsck có thể chạy song song, vì vậy các hệ thống tập tin khác nhau được phép có giá trị pass giống nhau, như là trường hợp các hệ thống tập tin /boot và /home trong ví dụ của chúng ta.

Liệt kê 23. Kiểm tra khởi động hệ thống tập tin với các mục fstab
# <file system> <mount point> <type> <options> <dump> <pass> 
proc              /proc            proc     defaults    0        0 
/dev/hda6         /                reiserfs defaults    0        1 
/dev/hda2         /boot            ext3     defaults    0        2 
/dev/hda8         /dos             vfat     defaults    0        0 
/dev/hda7         /home            xfs      defaults    0        2

Lưu ý rằng một số hệ thống tập tin có ghi nhật ký, chẳng hạn như ReiserFS và xfs, có thể có một giá trị pass là 0 bởi vì mã lệnh nhật ký (journaling code), chứ không phải là fsck, sẽ làm việc kiểm tra và sửa chữa tính nhất quán của hệ thống tập tin.

Sửa chữa các hệ thống tập tin

Nếu việc kiểm tra tự động lúc khởi động của hệ thống tập tin không thể khôi phục lại tính nhất quán, thì hệ thống thường đưa bạn vào trong một trình shell cho một người dùng duy nhất với một số hướng dẫn để chạy fsck thủ công. Đối với một hệ thống tập tin ext2, không được ghi nhật ký, hệ thống này có thể đưa ra cho bạn một loạt các câu hỏi yêu cầu bạn xác nhận các hành động được đề xuất để sửa chữa các khối cụ thể của hệ thống tập tin. Thông thường bạn nên cho phép fsck để cố gắng sửa chữa các vấn đề, bằng cách trả lời y (viết tắt của yes). Khi khởi động lại hệ thống, hãy kiểm tra xem có bất kỳ dữ liệu hoặc các tập tin nào còn thiếu hay không.

Nếu bạn nghi ngờ có lỗi hoặc muốn chạy một kiểm tra thủ công, hầu hết các chương trình kiểm tra yêu cầu trước tiên hệ thống tập tin phải được bỏ lắp đặt đã. Vì bạn không thể bỏ lắp đặt hệ thống tập tin gốc trên hệ thống đang chạy, nên việc tốt nhất mà bạn có thể làm là chuyển xuống chế độ người dùng đơn (sử dụng lệnh telinit 1) và sau đó lắp đặt lại (remount) hệ thống tập tin gốc ở chế độ chỉ đọc, đến lúc đó bạn sẽ có khả năng thực hiện việc kiểm tra tính nhất quán. (Việc lắp đặt hệ thống tập tin được trình bày trong phần kế tiếp (Lắp đặt và bỏ lắp đặt các hệ thống tập tin). Một cách tốt hơn để kiểm tra một hệ thống tập tin là khởi động một hệ thống khôi phục, chẳng hạn như một đĩa CD hoặc một thanh nhớ USB trực tiếp và thực hiện việc kiểm tra các hệ thống tập tin đã bỏ lắp đặt của bạn từ đó.

Tại sao phải ghi nhật ký?

Lệnh fsck quét một đĩa ext2 có thể mất khá nhiều thời gian để hoàn thành, bởi vì các cấu trúc dữ liệu nội bộ (hoặc siêu dữ liệu) của hệ thống tập tin phải được quét đầy đủ. Do các hệ thống tập tin càng ngày càng lớn hơn, việc quét diễn ra càng ngày lâu hơn, mặc dù đĩa cũng chạy nhanh hơn, do đó việc kiểm tra đầy đủ có thể mất một hoặc nhiều giờ.

Vấn đề này đã thúc đẩy sự ra đời các hệ thống tập tin có (ghi) nhật ký (journaled hay journaling). Các hệ thống tập tin có nhật ký giữ một bản ghi các thay đổi mới nhất với các siêu dữ liệu của hệ thống tập tin. Sau một sự cố, trình điều khiển hệ thống tập tin tra soát nhật ký thay đổi này để xác định các phần nào của hệ thống tập tin đã thay đổi mới đây có thể có lỗi. Với sự thay đổi thiết kế này, việc kiểm tra tính nhất quán của một hệ thống tập tin có nhật ký thường chỉ mất một vài giây, bất kể kích thước của hệ thống tập tin. Hơn nữa, các trình điều khiển hệ thống tập tin sẽ luôn kiểm tra hệ thống tập tin khi được lắp đặt vào, do đó, việc kiểm tra fsck bên ngoài nói chung là không cần thiết. Trong thực tế, với hệ thống tập tin xfs, lệnh fsck không làm bất kỳ điều gì!

Nếu bạn chạy lệnh kiểm tra hệ thống tập tin một cách thủ công, hãy đọc các trang hướng dẫn sử dụng, tìm lệnh fsck thích hợp (fsck.ext3, e2fsck , reiserfsck v.v) để xác định các tham số thích hợp. Một số ví dụ có trong Liệt kê 24, khi sử dụng một ảnh CD Ubuntu trực tiếp để chạy các lệnh fsck.

Liệt kê 24. Chạy fsck thủ công
root@ubuntu:~# fsck -p /dev/hda6 
fsck 1.38 (30-Jun-2005) 
Reiserfs super block in block 16 on 0x306 of format 3.6 with standard journal 
Blocks (total/free): 5002224/4608416 by 4096 bytes 
Filesystem is clean 
Replaying journal..
Reiserfs journal '/dev/hda6' in blocks [18..8211]: 0 transactions replayed 
Checking internal tree..finished 
root@ubuntu:~# fsck -p /dev/hda2 
fsck 1.38 (30-Jun-2005) 
BOOT: clean, 34/26208 files, 22488/104420 blocks
root@ubuntu:~# fsck -p /dev/hda7 fsck 1.38 (30-Jun-2005)
root@ubuntu:~# fsck -a /dev/hda8 fsck 1.38 (30-Jun-2005) 
dosfsck 2.11, 12 Mar 2005, FAT32, LFN 
/dev/hda8: 1 files, 2/501039 clusters

Công cụ cao cấp

Có một số công cụ cao cấp hơn mà bạn có thể sử dụng để kiểm tra hoặc sửa chữa một hệ thống tập tin. Hãy xem các trang hướng dẫn sử dụng để sử dụng đúng và xem Dự án Tài liệu Linux (xem Tài nguyên) để biết thông tin hướng dẫn. Hầu như tất cả các lệnh này đòi hỏi phải bỏ lắp đặt hệ thống tập tin, mặc dù một số chức năng có thể được sử dụng trên các hệ thống tập tin được lắp đặt ở chế độ chỉ đọc. Một vài trong số các lệnh được mô tả dưới đây.

Bạn nên thường xuyên sao lưu hệ thống tập tin của bạn trước khi thử thực hiện các việc sửa chữa bất kỳ.

Các công cụ cho các hệ thống tập tin ext2 và ext3

tune2fs
Điều chỉnh các tham số trên các hệ thống tập tin ext2 và ext3. Sử dụng công cụ này để thêm một nhật ký tới một hệ thống ext2, làm cho nó thành một hệ thống ext3, cũng như hiển thị hoặc thiết lập số lần lắp đặt tối đa trước khi bắt buộc tiến hành một việc kiểm tra. Bạn cũng có thể gán một nhãn và thiết lập hoặc vô hiệu hóa các tính năng tùy chọn khác.
dumpe2fs
In thông tin bộ mô tả siêu khối và thông tin bộ mô tả nhóm khối cho một hệ thống tập tin ext2 hoặc ext3.
debugfs
Là một trình sửa lỗi hệ thống tập tin tương tác. Sử dụng nó để kiểm tra hoặc thay đổi trạng thái của một hệ thống tập tin ext2 hoặc ext3.

Công cụ cho các hệ thống tập tin ReiserFS

reiserfstune
Hiển thị và điều chỉnh các tham số trên các hệ thống tập tin ReiserFS.
debugreiserfs
Thực hiện các chức năng tương tự với dumpe2fs và debugfs cho các hệ thống tập tin ReiserFS.

Các công cụ cho các hệ thống tập tin XFS

xfs_info
Hiển thị thông tin hệ thống tập tin XFS.
xfs_growfs
Mở rộng một hệ thống tập tin XFS (giả định một phân vùng khác có sẵn).
xfs_admin
Thay đổi các tham số của một hệ thống tập tin XFS.
xfs_repair
Sửa chữa một hệ thống tập tin XFS khi các việc kiểm tra lắp đặt chưa đủ để sửa chữa hệ thống đó.
xfs_db
Kiểm tra hoặc sửa lỗi một hệ thống tập tin XFS.

Lắp đặt và bỏ lắp đặt các hệ thống tập tin

Phần này trình bày các tư liệu cho chủ đề 1.104.3 cho kỳ thi quản trị trình độ sơ cấp (LPIC-1) 101. Chủ đề này có trọng số 3.

Trong phần này, bạn tìm hiểu cách để:

  • Lắp đặt các hệ thống tập tin.
  • Bỏ lắp đặt hệ thống tập tin.
  • Cấu hình việc lắp đặt hệ thống tập tin trong quá trình khởi động.
  • Cấu hình các hệ thống tập tin có thể tháo lắp vật lý, do người dùng lắp đặt như ổ đĩa, băng từ, đĩa mềm và đĩa CD.

Lắp đặt các hệ thống tập tin

Hệ thống tập tin Linux là một cây lớn có gốc ở thư mục / và chúng ta cũng có các hệ thống tập tin trên các thiết bị và các phân vùng khác nhau. Bây giờ chúng ta giải quyết sự không tương hợp bề ngoài này. Hệ thống tập tin gốc (/) được lắp đặt như là một phần của quá trình khởi tạo. Hệ thống Linux của bạn không có khả năng sử dụng bất cứ hệ thống tập tin khác nào mà chúng ta đã tạo ra, cho đến khi nó được lắp đặt vào một điểm lắp đặt.

Một điểm lắp đặt đơn giản là một thư mục trong tập hợp hiện tại của các hệ thống tập tin đã được lắp đặt, tại đây hệ thống tập tin trên thiết bị được ghép vào cây thư mục. Việc lắp đặt là quá trình làm cho hệ thống tập tin trên thiết bị trở thành một phần của hệ thống tập tin Linux có thể truy cập được của bạn. Ví dụ, bạn có thể lắp đặt các hệ thống tập tin trên phân vùng ổ cứng như là /boot, /tmp hoặc /home và bạn có thể lắp đặt hệ thống tập tin trên một ổ đĩa mềm như là /mnt/floppy và hệ thống tập tin trên đĩa CD-ROM như là /media/cdrom1.

Ngoài các hệ thống tập tin trên các phân vùng, các đĩa mềm và các đĩa CD, còn có các kiểu hệ thống tập tin khác. Chúng ta nói ngắn gọn đến một hệ thống tập tin tmpfs, đó là một hệ thống tập tin bộ nhớ ảo. Cũng có thể đặt các hệ thống tập tin của một hệ thống tới một hệ thống khác bằng cách sử dụng một hệ thống tập tin nối mạng như NFS hay AFS. Bạn cũng có thể tạo một tập tin trong một hệ thống tập tin hiện có và định dạng tập tin đó như là một loại hệ thống tập tin, có thể là không cùng loại, và cũng lắp nó.

Trong khi quá trình lắp đặt thực tế là lắp đặt hệ thống tập tin trên một thiết bị nào đó (hoặc tài nguyên khác), người ta thường chỉ đơn giản nói rằng bạn "lắp đặt thiết bị", được hiểu là "lắp đặt hệ thống tập tin trên thiết bị".

Dạng cơ bản của lệnh mount (lắp đặt) có hai tham số: thiết bị (hoặc tài nguyên khác) có chứa hệ thống tập tin được lắp đặt và điểm lắp đặt. Ví dụ, chúng ta lắp đặt phân vùng FAT32 /dev/hda8 của chúng ta tại điểm lắp đặt /dos như trong Liệt kê 25.

Liệt kê 25. Mounting /dos
root@pinguino:~# mount /dev/hda8 /dos

Điểm lắp đặt phải tồn tại trước khi bạn lắp đặt bất cứ cái gì trên nó. Khi bạn thực hiện, các tập tin trên hệ thống tập tin mà bạn đang lắp đặt trở thành các tập tin và các thư mục con của điểm lắp đặt đó. Nếu thư mục của điểm lắp đặt đã chứa các tập tin hoặc các thư mục con rồi, thì chúng không còn nhìn thấy được nữa cho đến khi hệ thống tập tin đã lắp đặt được bỏ lắp đặt, và lúc này chúng lại trở nên nhìn thấy được. Việc sử dụng chỉ các thư mục rỗng làm các điểm lắp đặt để tránh vấn đề này là một ý tưởng tốt.

Sau khi lắp đặt vào một hệ thống tập tin, bất kỳ tập tin hoặc thư mục nào được tạo hoặc sao chép vào điểm lắp đặt hoặc bất kỳ thư mục nào dưới nó sẽ được tạo trên hệ thống tập tin được lắp đặt. Vì vậy, một tập tin như /dos/sampdir/file.txt sẽ được tạo ra trên hệ thống tập tin FAT32 mà chúng tôi đã lắp đặt tại /dos trong ví dụ của chúng ta.

Thông thường, lệnh mount sẽ tự động phát hiện kiểu hệ thống tập tin đang được lắp đặt. Ðôi khi, bạn có thể cần phải chỉ rõ kiểu hệ thống tập tin bằng cách sử dụng tùy chọn -t như trong Liệt kê 26.

Liệt kê 26. Lắp đặt với kiểu hệ thống tập tin rõ ràng
root@pinguino:~# mount -t vfat /dev/hda8 /dos

Để xem các hệ thống tập tin nào được lắp đặt, hãy sử dụng lệnh mount không có tham số nào. Liệt kê 27 cho thấy hệ thống ví dụ của chúng ta.

Liệt kê 27. Hiển thị các hệ thống tập tin được lắp đặt
/dev/hda6 on / type reiserfs (rw)
proc on /proc type proc (rw) 
sysfs on /sys type sysfs (rw) 
devpts on /dev/pts type devpts (rw,gid=5,mode=620) 
tmpfs on /dev/shm type tmpfs (rw) 
usbfs on /proc/bus/usb type usbfs (rw) 
tmpfs on /lib/modules/2.6.12-10-386/volatile type tmpfs (rw,mode=0755)
/dev/hda2 on /boot type ext3 (rw) 
/dev/hda8 on /dos type vfat (rw)
/dev/hda7 on /home type xfs (rw) 
/dev/hda1 on /media/hda1 type ntfs (rw) 
tmpfs on /dev type tmpfs (rw,size=10M,mode=0755)

Bạn cũng có thể xem thông tin tương tự bằng cách hiển thị /proc/mounts hoặc /etc/mtab, cả hai đều chứa thông tin về các hệ thống tập tin đã lắp đặt.

Tùy chọn lắp đặt

Lệnh mount có một số tùy chọn sẽ đè lên hành vi mặc định. Ví dụ, bạn có thể lắp đặt một hệ thống tập tin để chỉ đọc bằng cách chỉ rõ tùy chọn -o ro. Nếu hệ thống tập tin đã được lắp đặt rồi, hãy thêm remount như trong Liệt kê 28.

Listing 28. Remounting read-only
root@pinguino:~# mount -o remount,ro /dos

Lưu ý:

  • Phân cách nhiều tùy chọn bằng các dấu phẩy.
  • Khi lắp đặt lại một hệ thống tập tin đã được lắp đặt, chỉ cần xác định hoặc điểm lắp đặt hoặc tên thiết bị. Không cần thiết chỉ rõ cả hai.
  • Bạn không thể lắp đặt một hệ thống tập tin chỉ đọc thành đọc-viết. Một phương tiện không sửa đổi được, chẳng hạn như đĩa CD-ROM, sẽ tự động được lắp đặt chỉ đọc.
  • Để lắp đặt lại một thiết bị đọc-viết, hãy chỉ rõ -o remount,rw

Lệnh lắp đặt lại sẽ không hoàn toàn thành công nếu có bất cứ tiến trình nào đã mở các tập tin hoặc các thư mục trong hệ thống tập tin đang được lắp đặt lại. Sử dụng lệnh lsof để xác định những tập tin nào đã mở. Kiểm tra các trang hướng dẫn sử dụng để tìm hiểu về các tùy chọn lắp đặt bổ sung và lsof.

fstab

Trong hướng dẫn cho chủ đề 102, "Chuẩn bị cho kỳ thi LPI 101 (chủ đề 102): cài đặt Linux và quản lý gói," bạn đã học cách sử dụng tham số root= trong cả hai bộ nạp khởi động GRUB và LILO để báo cho bộ nạp khởi động biết hệ thống tập tin nào cần được lắp đặt như là gốc. Một khi hệ thống tập tin này được lắp đặt, quá trình khởi tạo chạy lệnh mount với tùy chọn -a để tự động lắp đặt một tập hợp các hệ thống tập tin. Tập hợp này được xác định trong tập tin /etc/fstab. Liệt kê 29 cho thấy /etc/fstab cho hệ thống Ubuntu ví dụ mà chúng ta đã cài đặt bằng cách sử dụng các hệ thống tập tin được tạo ở trên trong hướng dẫn này.

Liệt kê 29. Một ví dụ fstab
root@pinguino:~# cat /etc/fstab 
# /etc/fstab: sttic file system information. 
# 
#<file system> <mount point> <type> <options>    <dump> <pass> 
proc             /proc            proc     defaults        0         0
/dev/hda6        /                reiserfs defaults        0         1 
/dev/hda2        /boot            ext3     defaults        0         2
/dev/hda8        /dos             vfat     defaults        0         0 
/dev/hda7        /home            xfs      defaults        0         2
/dev/hda1        /media/hda1      ntfs     defaults        0         0 
/dev/hda5        none             swap     sw              0         0 
/dev/hdc         /media/cdrom0    udf,iso9660 user,noauto  0         0 
/dev/fd0         /media/floppy0   auto     rw,user,noauto  0         0

Các dòng bắt đầu bằng một ký tự # là các chú thích. Các dòng còn lại có chứa sáu trường. Do vị trí các trường là có ý nghĩa, nên tất cả chúng phải được xác định.

hệ thống tập tin (file system)
Đối với các ví dụ được sử dụng cho đến nay, trường này sẽ là một tên thiết bị như /dev/hda1.
điểm lắp đặt (mount point)
Đây là điểm lắp đặt mà chúng ta đã thảo luận trong phần Lắp đặt các hệ thống tập tin ở trên. Đối với vùng trao đổi, trường này cần có giá trị none. (không). Đối với các hệ thống tập tin ext2, ext3 và xfs, bạn cũng có thể chỉ rõ một nhãn, ví dụ như là LABEL=XFSHOME. Điều này làm cho hệ thống của bạn vững chãi hơn khi các thiết bị được thêm vào hoặc gỡ ra.
kiểu (type)
Chỉ rõ kiểu của hệ thống tập tin. Các ổ đĩa CD/DVD sẽ thường hỗ trợ hoặc các hệ thống tập tin ISO9660 hoặc các hệ thống tập tin UDF, vì vậy bạn có thể chỉ định nhiều khả năng trong một danh sách phân cách bằng dấu phẩy. Nếu bạn muốn lệnh mount tự động xác định kiểu, hãy chỉ rõ auto (tự động) như đã làm ở dòng cuối cùng cho ổ đĩa mềm.
tùy chọn (option)
Chỉ rõ các tùy chọn lắp đặt. Chỉ rõ defaults (các giá trị mặc định) nếu bạn muốn các tùy chọn lắp đặt mặc định. Một số tùy chọn mà bạn sẽ cần biết là:
  • rwro xác định việc hệ thống tập tin cần được lắp đặt đọc-viết hay chỉ đọc.
  • noauto xác định rằng hệ thống tập tin này không nên được lắp đặt tự động lúc khởi động hoặc bất cứ khi nào chạy lệnh mount -a Trong ví dụ của chúng ta, điều này được thực hiện cho các ổ đĩa tháo lắp vật lý.
  • user (người dùng)
  • xác định rằng một người sử dụng không phải root được phép lắp đặt và bỏ lắp đặt hệ thống tập tin. Điều này đặc biệt có ích đối với phương tiện tháo lắp vật lý. Tùy chọn này phải được xác định trong /etc/fstab chứ không phải là lệnh mount.
  • execnoexec xác định có hoặc không cho phép chạy thi hành các tập tin từ hệ thống tập tin được lắp đặt. Các hệ thống tập tin do người dùng lắp đặt có mặc định là noexec trừ khi chỉ rõ execsauuser.
  • noatime sẽ vô hiệu hóa việc ghi thời gian truy cập. Việc không ghi lại thời gian truy cập có thể cải thiện hiệu năng.
dump
Xác định liệu lệnh dump có cần xem xét hệ thống tập tin ext2 hoặc ext3 này để sao lưu không. Giá trị 0 cho lệnh dump biết bỏ qua hệ thống tập tin này.
pass
Các giá trị khác không của pass xác định trình tự kiểm tra các hệ thống tập vào lúc khởi động, như đã thảo luận trong phần Kiểm tra các hệ thống tập tin.

Đối với các hệ thống tập tin được liệt kê trong /fstab etc, chỉ cần cung cấp hoặc tên thiết bị hoặc điểm lắp đặt khi lắp đặt hệ thống tập tin. Bạn không cần phải đưa ra cả hai.

Tham khảo các trang hướng dẫn sử dụng cho fstabmount để biết thêm thông tin, bao gồm các tùy chọn không được trình bày ở đây.

Bỏ lắp đặt các hệ thống tập tin

Tất cả các hệ thống tập tin đã lắp đặt thường được hệ thống bỏ lắp đặt tự động khi hệ thống được khởi động lại hoặc tắt. Khi một hệ thống tập tin được bỏ lắp đặt, mọi dữ liệu của nó đã được lưu trữ nhanh trong bộ nhớ được đổ ra đĩa.

Bạn cũng có thể bỏ lắp đặt các hệ thống tập tin bằng tay. Thật vậy, bạn nên làm việc này khi tháo phương tiện có thể viết vào được như là các ổ đĩa mềm hay các ổ USB hay các thanh nhớ. Trước khi bỏ lắp đặt một hệ thống tập tin, hãy chắc chắn rằng không có các tiến trình nào đang chạy có các tập tin mở trên hệ thống tập tin. Sau đó, sử dụng lệnh umount, chỉ rõ hoặc tên thiết bị hoặc điểm lắp đặt như là đối số. Một số ví dụ thành công và không thành công được hiển thị trong Liệt kê 30.

Liệt kê 30. Bỏ lắp đặt các hệ thống tập tin
root@pinguino:~# lsof /dos 
root@pinguino:~# umount /dos 
root@pinguino:~# mount /dos 
root@pinguino:~# umount /dev/hda8 
root@pinguino:~# umount /boot 
umount: /boot: device is busy 
umount: /boot: device is busy 
root@pinguino:~# lsof /boot 
COMMAND  PID   USER   FD  TYPE DEVICE   SIZE  NODE  NAME 
klogd   6498   klog   1r   REG    3,2 897419  6052  /boot/System.map-2.6.12-10-386

Sau khi hệ thống tập tin được bỏ lắp đặt, bất kỳ tập tin nào trong thư mục đã được sử dụng làm điểm lắp đặt lại có thể nhìn thấy được.

Không gian tráo đổi

Bạn có thể nhận thấy trong phần thảo luận về fstab ở trên là không gian tráo đổi không có điểm lắp đặt. Quá trình khởi động thường cũng bật kích hoạt không gian tráo đổi đã định nghĩa trong /etc/fstab trừ khi tùy chọn noauto được quy định. Để kiểm soát thủ công không gian tráo đổi trên hệ thống đang chạy -- ví dụ, khi bạn thêm một phân vùng tráo đổi mới -- sử dụng lệnh swaponswapoff. Xem các trang hướng dẫn sử dụng để biết chi tiết.

Bạn có thể xem các thiết bị tráo đổi hiện đang được kích hoạt với cat /proc/swaps.


Các hạn ngạch đĩa

Phần này trình bày các tư liệu cho chủ đề 1.104.4 cho kỳ thi quản trị trình độ sơ cấp (LPIC-1) 101. Chủ đề này có trọng số 3.

Trong phần này, bạn tìm hiểu cách để:

  • Cho phép các hạn ngạch.
  • Thiết lập các giới hạn hạn ngạch.
  • Kiểm tra các hạn ngạch.
  • Tạo ra các báo cáo hạn ngạch.

Các hạn ngạch cho phép bạn kiểm soát việc sử dụng đĩa của người dùng hoặc của nhóm người dùng. Các hạn ngạch ngăn chặn những người dùng cá nhân và các nhóm, không cho sử dụng một phần hệ thống tập tin lớn hơn là họ được phép hoặc thậm chí chiếm nó hoàn toàn. Các hạn ngạch phải được người dùng root cho phép và quản lý. Chúng thường được sử dụng trên hệ thống nhiều người dùng, nhưng thường ít thấy hơn trên máy trạm chỉ một người dùng.

Cho phép các hạn ngạch

Các hạn ngạch yêu cầu hỗ trợ từ nhân. Nói chung, một nhân 2.4 hoặc nhân 2.6 gần đây sẽ có tất cả các hỗ trợ mà bạn cần. Các phiên bản sớm hơn có thể hỗ trợ hạn ngạch không đầy đủ, yêu cầu bạn phải xây dựng nhân riêng của mình. Trong việc triển khai thực hiện hiện tại có thể bạn sẽ tìm thấy sự hỗ trợ hạn ngạch được thực hiện dưới dạng mô đun nhân. Có ba kiểu hỗ trợ hạn ngạch khác nhau; vfsold (hạn ngạch phiên bản 1), vfsv0 (hạn ngạch phiên bản 2) và xfs (hạn ngạch trên các hệ thống tập tin XFS). Phần này trình bày hạn ngạch phiên bản 2 trên các hệ thống tập tin không phải là XFS và hạn ngạch xfs trên các hệ thống tập tin XFS.

Bước đầu tiên để cho phép các hạn ngạch là thêm các tùy chọn usrquota hay grpquota vào các định nghĩa hệ thống tập tin trong /etc/fstab, tùy theo việc bạn muốn triển khai thực hiện các hạn ngạch người dùng, các hạn ngạch nhóm hoặc cả hai hay không. Giả sử bạn muốn thêm vào cả hai loại hạn ngạch cho hệ thống tập tin XFS được sử dụng cho các thư mục nhà trong ví dụ của chúng ta và cũng cho hệ thống tập tin /boot, để cho bạn có thể thấy nó hoạt động như thế nào trên hai hệ thống tập tin khác nhau. Hãy thực hiện điều này như trong Liệt kê 31.

Liệt kê 31. Cho phép hỗ trợ hạn ngạch trong /etc/fstab
/dev/hda2   /boot   ext3   defaults,usrquota,grpquota 0 2 
/dev/hda7   /home   xfs    defaults,usrquota,grpquota 0 2

Đối với các hệ thống tập tin XFS, dữ liệu hạn ngạch được coi là một phần của siêu dữ liệu hệ thống tập tin. Đối với các hệ thống tập tin khác, thông tin hạn ngạch của người dùng được lưu trữ trong tập tin aquota.user trong thư mục gốc của hệ thống tập tin và tương tự, thông tin hạn ngạch nhóm cũng được lưu trữ trong aquota.group. Các hạn ngạch phiên bản 1 sử dụng quota.user và quota.group.

Sau khi bạn chỉnh sửa /etc/fstab và thêm vào các hạn ngạch, bạn cần phải bỏ lắp đặt các hệ thống tập tin và, với các hệ thống tập tin không là XFS, tạo các tập tin hạn ngạch và bật cho phép kiểm tra hạn ngạch. Lệnh quotacheck kiểm tra các hạn ngạch trên tất cả các hệ thống tập tin và tạo ra các tập tin aquota.user và aquota.group cần thiết nếu chúng chưa tồn tại. Nó cũng có thể sửa chữa các tập tin hạn ngạch bị hỏng. Xem các trang hướng dẫn sử dụng để biết thêm thông tin. Lệnh quotaon bật cho phép kiểm tra hạn ngạch. Liệt kê 32 cho thấy một ví dụ. Các tùy chọn sau được sử dụng trên cả hai lệnh:

-a
Dành cho tất cả các hệ thống tập tin trong /etc/fstab được kích hoạt để lắp đặt tự động (automount).
-u
Dành cho các hạn ngạch của người dùng (đây là mặc định).
-g
Dành cho các hạn ngạch của nhóm.
-v
Dành cho kết quả đầu ra với đầy đủ chi tiết.
Liệt kê 32. Tạo các tập tin hạn ngạch và bật thực thi hạn ngạch
root@pinguino:~# quotacheck -augv 
quotacheck: Scanning /dev/hda2 [/boot] quotacheck: Cannot stat old user quota 
file: No such file or directory 
quotacheck: Cannot stat old group quota file: No such file or directory 
quotacheck: Cannot stat old user quota file: No such file or directory 
quotacheck: Cannot stat old group quota file: No such file or directory 
done 
quotacheck: Checked 4 directories and 23 files 
quotacheck: Old file not found.
quotacheck: Old file not found. 
quotacheck: Skipping /dev/hda7 [/home]
root@pinguino:~# quotaon -ugva 
/dev/hda2 [/boot]: group quotas turned on 
/dev/hda2 [/boot]: user quotas turned on

Kiểm tra các hạn ngạch khi khởi động

Các lệnh quotacheckquotaon thường được bao gồm trong các kịch bản lệnh khởi tạo để cho các hạn ngạch được kích hoạt bất cứ khi nào bạn khởi động lại hệ thống. Sách hướng dẫn nhỏ về hạn ngạch (xem Tài nguyên để có một đường liên kết) có các thông tin bổ sung.

Lệnh quotaoff vô hiệu hóa các hạn ngạch, liệu có khi nào bạn nên làm như vậy không.

Thiết lập các giới hạn hạn ngạch

Như bạn đã thấy, các hạn ngạch được kiểm soát hoặc thông qua các tập tin nhị phân trong thư mục gốc của hệ thống tập tin hoặc thông qua siêu dữ liệu của hệ thống tập tin. Để thiết lập một hạn ngạch cho một người dùng cụ thể, sử dụng lệnh edquota. Lệnh này trích xuất thông tin hạn ngạch cho người sử dụng từ các hệ thống tập tin khác nhau với các hạn ngạch được phép, tạo ra một tập tin tạm thời và mở ra một trình soạn thảo cho bạn để điều chỉnh các hạn ngạch. Xem các trang hướng dẫn sử dụng cho lệnh edquota để tìm ra trình soạn thảo nào được sử dụng. Bạn phải là người dùng root để chỉnh sửa hạn ngạch. Các thông tin hiển thị sẽ trông giống như Liệt kê 33.

Liệt kê 33. Chạy lệnh edquota
Disk quotas for user ian (uid 1000):
  Filesystem    blocks   soft   hard   inodes   soft   hard 
  /dev/hda2          0      0      0        0      0      0
  /dev/hda7       2948      0      0      172      0      0

Như bạn thấy, edquota hiển thị phần sử dụng hiện tại của tôi gồm cả các khối 1K và các inode trên mỗi một trong các hệ thống tập tin có hạn ngạch đã bật. Ngoài ra còn có các giới hạn mềm và cứng cho cả hai phần sử dụng khối và inode. Trong ví dụ này, chúng là 0, có nghĩa là không có giới hạn hạn ngạch nào được thi hành.

Giới hạn mềm là giá trị mà tại đó một người dùng sẽ nhận được các cảnh báo e-mail về việc vượt quá hạn ngạch. Giới hạn cứng là giá trị mà một người sử dụng không được vượt quá. Bạn có thể nghĩ về các giới hạn khối như là một giới hạn về số lượng dữ liệu mà người dùng có thể lưu trữ và giới hạn inode như là một giới hạn về số lượng các tập tin và các thư mục.

Thay đổi các giới hạn hạn ngạch

Bạn thay đổi các giới hạn hạn ngạch bằng cách thay đổi các giá trị trong tập tin tạm thời và sau đó lưu tập tin này. Thoát khỏi tập tin đó mà không lưu gì hết nếu bạn không muốn thay đổi. Giả sử bạn muốn thiết lập hạn ngạch của tôi đến 10MB dữ liệu và 1000 tập tin trên hệ thống tập tin /home. Khi cho phép thêm 10% vào các giới hạn cứng, bạn sẽ thiết lập các giá trị như trong Liệt kê 34.

Liệt kê 34. Thiết lập các giới hạn
Disk quotas for user ian (uid 1000): 
  Filesystem   blocks   soft    hard inodes soft hard 
   /dev/hda2        0      0       0      0    0    0 
  /dev/hda7      2948  10240   11264    172 1000 1100

Lưu tập tin đó và các hạn ngạch mới sẽ có hiệu lực. Trong ví dụ này, không có thay đổi nào được thực hiện với hạn ngạch cho người sử dụng ian trên hệ thống tập tin /boot, vì ian không thể viết vào hệ thống tập tin này. Cũng lưu ý rằng bất kỳ thay đổi nào mà bạn thực hiện cho các giá trị khối hoặc các inode được sử dụng sẽ bị bỏ qua.

Sao chép các hạn ngạch

Bây giờ giả sử bạn đang tạo các mã nhận dạng (id) cho những người đã đăng ký vào một lớp học. Giả sử bạn có người sử dụng gretchen, tom và greg và bạn muốn tất cả họ có cùng hạn ngạch giống như ian. Bạn làm điều này bằng cách sử dụng tùy chọn -p của lệnh edquota, trong đó sử dụng các giá trị hạn ngạch của ian làm một nguyên mẫu cho các giá trị hạn ngạch của người dùng khác như trong Liệt kê 35.

Liệt kê 35. Thiết lập các hạn ngạch từ một nguyên mẫu
root@pinguino:~# edquota -p ian gretchen tom greg

Các giới hạn nhóm

Bạn cũng có thể sử dụng lệnh edquota để hạn chế việc phân bổ không gian đĩa dựa trên quyền sở hữu nhóm với các tập tin. Ví dụ, ba người tham dự lớp học nói trên được thiết lập trong nhóm chính xml-101. Để giới hạn tổng số không gian và các tập tin do tất cả các thành viên của nhóm sử dụng không quá 25MB và 2500 tập tin, sử dụng lệnh edquota -q xml-101 và thiết lập các giá trị như trong Liệt kê 36.

Liệt kê 36. Thiết lập các hạn ngạch cho một nhóm
Disk quotas for group xml-101 (gid 1001):
  Filesystem   blocks   soft    hard   inodes   soft   hard 
   /dev/hda2        0      0       0        0      0      0
   /dev/hda7       28  25600   28160       10   2500   2750

Khoảng thời gian gia hạn

Người dùng có thể vượt quá giới hạn mềm của họ trong khoảng thời gian gia hạn, mặc định là 7 ngày. Sau thời gian gia hạn, người dùng bắt buộc phải thực hiện giới hạn mềm như là một giới hạn cứng. Thiết lập các khoảng thời gian gia hạn bằng tùy chọn -y của lệnh edquota. Một lần nữa, bạn sẽ được đưa vào một trình soạn thảo có dữ liệu tương tự như dữ liệu trong Liệt kê 37. Như trước đây, hãy lưu các thay đổi để cập nhật các giá trị. Hãy chắc chắn dành cho người dùng của bạn có đủ thời gian để nhận được e-mail cảnh báo của mình và xóa một số tập tin.

Liệt kê 37. Thiết lập các khoảng thời gian gia hạn
Grace period before enforcing soft limits for users: 
Time units may be: days, hours, minutes, or seconds
 Filesystem       Block grace period       Inode grace period 
  /dev/hda2              7days                   7days
  /dev/hda7              7days                   7days

Kiểm tra các hạn ngạch

Lệnh quota không có tùy chọn nào hiển thị các hạn ngạch dành cho người sử dụng chạy lệnh này trên bất kỳ hệ thống tập tin nào mà người dùng đó có hạn ngạch. Tùy chọn -v hiển thị thông tin cho tất cả các hệ thống tập tin có các hạn ngạch được phép. Người sử dụng root cũng có thể thêm một tên người sử dụng sau lệnh đó để xem các hạn ngạch cho một người dùng cụ thể. Các lệnh này được hiển thị trong Liệt kê 38.

Liệt kê 38. Hiển thị các hạn ngạch
root@pinguino:~# quota 
Disk quotas for user root (uid 0): none 
root@pinguino:~# quota -v 
Disk quotas for user root (uid 0): 
   Filesystem  blocks  quota   limit  grace  files   quota   limit   grace
    /dev/hda2   19173      0       0     26      0       0 
    /dev/hda7      16      0       0      5      0       0 
root@pinguino:~# quota -v ian 
Disk quotas for user ian (uid 1000): 
   Filesystem  blocks   quota  limit  grace  files  quota limit grace 
    /dev/hda2       0       0      0      0      0      0
    /dev/hda7    2948   10240  11264    172   1000   1100

Cùng với các thống kê về phần sử dụng hiện tại, bạn sẽ thấy các giới hạn hạn ngạch cứng và mềm được hiển thị. Liệt kê 39 cho thấy những gì xảy ra nếu bạn vượt quá giới hạn mềm và sau đó những gì xảy ra nếu bạn cố gắng vượt quá giới hạn cứng. Trong ví dụ này, một tập tin khoảng 4MB được tạo ra và sau đó một bản sao được thực hiện. Cùng với phần sử dụng ban đầu khoảng 3MB, điều này là đủ để vượt quá giới hạn mềm. Chú ý giới hạn mềm nào có dấu sao bên cạnh nó biểu thị rằng người sử dụng đã vượt quá hạn ngạch. Cũng lưu ý rằng các cột của khoảng thời gian gia hạn bây giờ biểu thị người sử dụng có bao nhiêu thời gian để sửa chữa vấn đề.

Liệt kê 39. Vượt quá các hạn ngạch
ian@pinguino:~$ dd if=/dev/zero of=big1 bs=512 count=8000 
8000+0 records in 
8000+0 records out 
4096000 bytes transferred in 0.019915 seconds (205674545 bytes/sec) 
ian@pinguino:~$ cp big1 big2 
ian@pinguino:~$ quota 
Disk quotas for user ian (uid 1000): 
   Filesystem   blocks   quota   limit   grace   files   quota limit grace
    /dev/hda7    10948*  10240   11264   7days     174    1000  1100 
ian@pinguino:~$ cp big1 big3 
cp: writing `big3': Disk quota exceeded

Tạo các báo cáo hạn ngạch

Việc kiểm tra các hạn ngạch của người sử dụng mỗi lần một người là không có lợi lắm, vì vậy bạn sẽ cần sử dụng lệnh repquota để tạo các báo cáo hạn ngạch. Liệt kê 40 cho thấy làm thế nào để xem các hạn ngạch cho tất cả người dùng và các nhóm trên /home.

Liệt kê 39. Vượt quá các hạn ngạch
root@pinguino:~# repquota -ug /home 
*** Report for user quotas on device /dev/hda7 
Block grace time: 7days; Inode grace time: 7days 
                        Block limits             File limits 
User            used    soft   hard    grace   used   soft  hard grace
----------------------------------------------------------------------
root      --      16       0      0        5      0      0 
ian       +-   11204   10240  11264    6days    175   1000  1100 
tom       --       8   10240  11264               3   1000  1100 
gretchen  --       8   10240  11264               3   1000  1100
greg      --      12   10240  11264               4   1000  1100 

*** Report for group quotas on device /dev/hda7 
Block grace time: 7days; Inode grace time: 7days
                         Block limits              File limits 
Group           used    soft    hard   grace   used  soft  hard  grace
----------------------------------------------------------------------
root      --      16       0       0              5     0     0 
ian       --   11204       0       0            175     0     0 
xml-101   --      28   25600   28160             10  2500  2750

Lưu ý dấu cộng trong danh sách đối với người sử dụng ian, biểu thị rằng ian đã vượt quá hạn ngạch.

Như với các lệnh hạn ngạch khác, tùy chọn -a đưa ra một báo cáo cho tất cả các hệ thống tập tin đã lắp đặt và đã kích hoạt hạn ngạch. Tùy chọn -v đưa ra kết quả dài đầy đủ chi tiết. Và tùy chọn -n đưa ra liệt kê dùng số hiệu của người sử dụng bằng số chứ không phân giải số hiệu thành tên. Điều này có thể mang lại hiệu năng tăng cao cho các báo cáo lớn, nhưng nói chung là ít có ích đối với người đọc.

Cảnh báo những người dùng

Lệnh warnquota được sử dụng để gửi các cảnh báo e-mail cho những người dùng quá hạn ngạch. Khi một nhóm người dùng vượt quá hạn ngạch, e-mail được gửi đến người dùng được quy định tại /etc/quotagrpadmins cho nhóm đó. Thông thường lệnh warnquota chạy định kỳ như là một công việc định kỳ (cron). Xem các trang hướng dẫn sử dụng về cronwarnquota để biết thêm thông tin.


Quyền trên tập tin và kiểm soát truy cập

Phần này trình bày các tư liệu cho chủ đề 1.104.5 cho kỳ thi quản trị trình độ sơ cấp (LPIC-1) 101. Chủ đề này có trọng số 5.

Trong phần này, bạn tìm hiểu về:

  • Những người dùng và các nhóm người dùng.
  • Các quyền trên tập tin và thư mục.
  • Thay đổi các quyền hạn.
  • Các chế độ truy cập.
  • Các tập tin bất biến.
  • Các chế độ tạo tập tin mặc định.

Những người dùng và các nhóm người dùng

Bây giờ, bạn biết rằng Linux là một hệ thống đa người dùng và mỗi người sử dụng thuộc về một nhóm người dùng chính và có thể cũng thuộc các nhóm người dùng bổ sung khác. Cũng có thể đăng nhập như một người dùng này và trở thành một người dùng khác khi sử dụng các lệnh su hay sudo -s. Quyền sở hữu của các tập tin trong Linux có liên quan chặt chẽ đến mã nhận dạng (id) của người dùng và các nhóm người dùng, do đó, chúng ta hãy xem lại một số thông tin về người dùng và nhóm người dùng cơ bản.

Tôi là ai?

Nếu bạn không trở thành một người dùng khác, id của bạn vẫn còn là id mà bạn đã sử dụng để đăng nhập. Nếu bạn đã trở thành một người dùng khác, dấu nhắc của bạn có thể gồm thêm id người dùng của bạn, như hầu hết các ví dụ trong hướng dẫn này đã làm. Nếu dấu nhắc của bạn không bao gồm id người dùng của bạn, thì bạn có thể sử dụng lệnh whoami để kiểm tra id có hiệu lực hiện tại của bạn. Liệt kê 41 cho thấy một số ví dụ trong đó có các chuỗi ký tự dấu nhắc (từ biến môi trường PS1) khác với các ví dụ khác trong hướng dẫn này.

Liệt kê 41. Xác định id của người sử dụng đang có hiệu lực
/home/ian$ whoami 
tom 
/home/ian$ exit 
exit 
$ whoami 
ian

Tôi ở trong nhóm người dùng nào?

Tương tự, bạn có thể tìm thấy bạn đang ở trong nhóm nào bằng cách sử dụng lệnh groups. Bạn có thể tìm ra cả hai thông tin người dùng và thông tin nhóm người dùng bằng cách sử dụng lệnh id Thêm một tham số id của người dùng tới hoặc lệnh groups hoặc lệnh id để xem thông tin về id của người dùng đó thay vì id của người dùng hiện tại. Xem Liệt kê 42 với một số ví dụ.

Liệt kê 42. Xác định thành viên nhóm
$ su tom 
Password: 
/home/ian$ groups 
xml-101
/home/ian$ id 
uid=1001(tom) gid=1001(xml-101) groups=1001(xml-101)
/home/ian$ exit 
$ groups 
ian adm dialout cdrom floppy audio dip video plugdev lpadmin scanner admin xml-101 
$ id 
uid=1000(ian) gid=1000(ian) groups=4(adm),20(dialout),24(cdrom),25(floppy),
29(audio),30(dip),44(video),46(plugdev),104(lpadmin),105(scanner),106(admin),
1000(ian),1001(xml-101) 
$ groups tom 
tom : xml-101

Quyền sở hữu và các quyền trên tập tin

Cũng như mỗi người sử dụng có một id và là một thành viên của một nhóm chính, vì vậy mọi tập tin trên một hệ thống Linux có một chủ sở hữu và một nhóm kết hợp với nó.

Các tập tin thông thường

Sử dụng lệnh ls -l để hiển thị chủ sở hữu và nhóm người dùng.

Liệt kê 43. Xác định quyền sở hữu tập tin
gretchen@pinguino:~$ ls -l /bin/bash .bashrc
-rw-r--r--  1 gretchen xml-101   2227  Dec 20 10:06 .bashrc 
-rwxr-xr-x  1 root     root    645140  Oct  5 08:16 /bin/bash

Trong ví dụ cụ thể này, tập tin .bashrc của người dùng gretchen thuộc sở hữu của cô ta và ở trong nhóm xml-101, nhóm chính của cô ấy. Tương tự, /bin/bash thuộc sở hữu của người dùng root và đang ở trong nhóm root. Các tên người dùng và các tên nhóm đến từ các vùng tên riêng biệt, do đó một tên nhóm có thể giống như một tên người dùng. Trong thực tế, nhiều bản phân phối mặc định sẽ tạo ra một nhóm khớp đúng với mỗi người dùng mới.

Mô hình quyền truy cập (permission) của Linux có ba kiểu quyền cho từng đối tượng của hệ thống tập tin. Các quyền là đọc (r), viết (w) và thi hành (x). Quyền viết bao gồm khả năng thay đổi hoặc xóa một đối tượng. Ngoài ra, các quyền hạn được quy định riêng cho chủ sở hữu của tập tin, các thành viên của nhóm của tập tin và mọi người khác.

Tham khảo lại cột đầu tiên của Liệt kê 43, để ý rằng nó chứa một chuỗi mười ký tự. Ký tự đầu tiên mô tả kiểu đối tượng (dấu gạch ngang - biểu thị một tập tin bình thường trong ví dụ này) và trong chín ký tự còn lại thể hiện ba nhóm của ba ký tự. Nhóm đầu tiên biểu thị các quyền đọc, viết và thi hành của chủ sở hữu của tập tin. Một dấu gạch ngang - biểu thị rằng quyền tương ứng không được cấp. Như vậy, người dùng gretchen có thể đọc và viết tập tin .bashrc, nhưng không thi hành (cho chạy) nó được, trong khi người dùng root có thể đọc, viết cho chạy tập tin /bin/bash. Nhóm thứ hai biểu thị các quyền đọc, viết và thi hành của nhóm của tập tin. Các thành viên của nhóm xml-101 có thể đọc tập tin .bashrc của gretchen, nhưng không có quyền viết nó, giống như mọi người khác cũng vậy. Tương tự, các thành viên của nhóm root và mọi người khác có thể đọc hoặc cho chạy tập tin /bin/bash.

Các thư mục

Các thư mục cũng sử dụng các cờ quyền hạn giống như các tập tin thông thường, nhưng chúng được diễn giải khác đi. Quyền đọc một thư mục cho phép một người dùng có quyền này liệt kê các nội dung của thư mục. Quyền viết có nghĩa là một người sử dụng có quyền hạn này có thể tạo hoặc xóa các tập tin trong thư mục. Quyền thi hành cho phép người dùng vào thư mục và truy cập các thư mục con. Nếu không có quyền thi hành, thì không thể truy cập được các đối tượng của hệ thống tập tin bên trong một thư mục. Nếu không quyền đọc, thì không thể xem được các đối tượng hệ thống tập tin bên trong một thư mục, nhưng các đối tượng này vẫn có thể được truy cập miễn là bạn biết đường dẫn đầy đủ đến đối tượng trên đĩa. Liệt kê 44 là một ví dụ có chút nhân tạo minh họa những điểm này.

Liệt kê 44. Các quyền và các thư mục
ian@pinguino:~$ ls -l /home 
total 8 
drwxr-x---  2     greg  xml-101     60 2005-12-20 11:37 greg 
drwx------ 13 gretchen  xml-101   4096 2005-12-21 12:22 gretchen 
drwxr-xr-x 15      ian      ian   4096 2005-12-21 10:25 ian 
d-wx--x--x  2      tom  xml-101     75 2005-12-21 11:05 tom
ian@pinguino:~$ ls -a ~greg 
. .. .bash_history .bash_profile .bashrc
ian@pinguino:~$ ls -a ~gretchen 
ls: /home/gretchen: Permission denied
ian@pinguino:~$ ls -a ~tom 
ls: /home/tom: Permission denied
ian@pinguino:~$ head -n 3 ~tom/.bashrc 
# ~/.bashrc: executed by bash(1) for non-login shells. 
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

Ký tự đầu tiên của một mục trong liệt kê với định dạng dài (long) mô tả kiểu của đối tượng (d là dành cho một thư mục). Thư mục nhà của người dùng greg cho phép đọc và thi hành cho các thành viên của nhóm xml-101, do đó người dùng ian có thể liệt kê thư mục này. Thư mục nhà của người dùng gretchen không cho phép đọc và cũng không cho phép thi hành, do đó người sử dụng ian không thể truy cập nó. Thư mục nhà của người dùng tom cho phép thi hành nhưng không cho phép đọc, vì vậy người dùng ian không thể liệt kê các nội dung, nhưng có thể truy cập các đối tượng trong thư mục đó nếu anh ta biết chúng tồn tại.

Các đối tượng hệ thống tập tin khác

Một liệt kê dài có thể chứa các đối tượng hệ thống tập tin không phải là các tập tin và các thư mục như được biểu thị bởi ký tự đầu tiên của một mục trong danh sách. Chúng ta sẽ xem thêm về những điều này sau trong phần này, nhưng bây giờ, hãy lưu ý các kiểu có thể của đối tượng.

Bảng 3. Các kiểu đối tượng hệ thống tập tin
Kiểu đối tượng
-Tập tin thông thường
dThư mục
lLiên kết biểu tượng
cThiết bị ký tự đặc biệt
bThiết bị khối đặc biệt
pFIFO
sỔ cắm

Thay đổi các quyền hạn

Thêm quyền hạn

Giả sử bạn tạo ra một kịch bản lệnh shell "Hello world". Lần đầu tiên khi bạn tạo kịch bản, nó sẽ thường không thể cho chạy được. Hãy sử dụng lệnh chmod với tùy chọn +x để thêm quyền thi hành như trong Liệt kê 45.

Liệt kê 45. Tạo một kịch bản lệnh shell có thể thi hành được
ian@pinguino:~$ echo 'echo "Hello world!"'>hello.sh 
ian@pinguino:~$ ls -l hello.sh 
-rw-r--r--  1 ian ian 20 2005-12-22 12:57 hello.sh 
ian@pinguino:~$ ./hello.sh
-bash: ./hello.sh: Permission denied 
ian@pinguino:~$ chmod +x hello.sh
ian@pinguino:~$ ./hello.sh Hello world! 
ian@pinguino:~$ ls -l hello.sh
-rwxr-xr-x  1 ian ian 20 2005-12-22 12:57 hello.sh

Bạn có thể sử dụng r để thiết lập các quyền đọc và w để thiết lập quyền viết theo cùng cách. Trong thực tế, bạn có thể sử dụng bất kỳ tổ hợp nào của r, wx với nhau. Ví dụ, sử dụng lệnh chmod +rwx sẽ thiết lập tất cả các quyền đọc, viết và thi hành đối với một tập tin. Dạng này của lệnh chmod thêm các quyền còn chưa được thiết lập.

Hãy chọn lọc

Bạn có thể đã nhận thấy trong ví dụ trên, quyền thi hành được thiết lập cho chủ sở hữu, nhóm những người khác. Để chọn lọc hơn, bạn có thể thêm u vào đầu biểu thức chế độ để thiết lập quyền đó chỉ cho người dùng, g để thiết lập nó cho các nhóm và o để thiết lập nó cho những người khác. Khi chỉ rõ a lệnh sẽ thiết lập quyền hạn cho tất cả người dùng, tương đương với việc bỏ qua nó. Liệt kê 46 cho thấy làm thế nào để thêm các quyền thi hành và viết cho người dùng và nhóm đối với một bản sao khác của kịch bản lệnh shell.

Liệt kê 46. Thêm các quyền hạn có chọn lọc
ian@pinguino:~$ echo 'echo "Hello world!"'>hello2.sh 
ian@pinguino:~$ chmod ug+xw hello2.sh
ian@pinguino:~$ ls -l hello2.sh 
-rwxrwxr-- 1 ian ian 20 2005-12-22 13:17 hello2.sh

Loại bỏ các quyền hạn

Đôi khi bạn cần phải loại bỏ các quyền hạn hơn là thêm chúng. Đơn giản chỉ cần thay đổi dấu + thành một dấu - và bạn loại bỏ bất kỳ của các quyền hạn cụ thể được thiết lập. Liệt kê 47 cho thấy cách loại bỏ tất cả các quyền hạn cho những người dùng khác trên các kịch bản lệnh shell.

Liệt kê 47. Loại bỏ các quyền hạn
ian@pinguino:~$ ls -l hello* 
-rwxrwxr-- 1 ian ian 20 2005-12-22 13:17 hello2.sh 
-rwxr-xr-x 1 ian ian 20 2005-12-22 12:57 hello.sh 
ian@pinguino:~$ chmod o-xrw hello* 
ian@pinguino:~$ ls -l hello* 
-rwxrwx--- 1 ian ian 20 2005-12-22 13:17 hello2.sh 
-rwxr-x--- 1 ian ian 20 2005-12-22 12:57 hello.sh

Lưu ý rằng bạn có thể thay đổi các quyền hạn trên nhiều tập tin cùng một lúc. Giống như với một số lệnh khác mà bạn gặp trong hướng dẫn cho chủ đề 103, thậm chí bạn có thể sử dụng tùy chọn -R (hay --recursive) để thao tác đệ quy trên các thư mục và các tập tin.

Thiết lập các quyền hạn

Bây giờ bạn có thể thêm hoặc loại bỏ các quyền hạn, bạn có thể tự hỏi làm thế nào để thiết lập vừa đúng một tập hợp quyền cụ thể. Hãy làm điều này bằng cách sử dụng = thay cho + hoặc -. Để thiết lập các quyền hạn trên các kịch bản lệnh nói trên sao cho những người dùng khác không có các quyền truy cập, bạn có thể sử dụng chmod o= hello*, thay cho các lệnh mà chúng ta sử dụng để loại bỏ các quyền hạn.

Nếu bạn muốn thiết lập các quyền hạn khác nhau cho người dùng, nhóm người dùng hoặc những người khác, bạn có thể tách các biểu thức khác nhau bằng các dấu phẩy, ví dụ, ug=rwx,o=rx, hoặc bạn có thể sử dụng các quyền hạn dạng số, được mô tả tiếp sau.

Các quyền hạn dạng số cơ số 8

Cho đến nay bạn đã sử dụng các ký hiệu (ugoa và rxw) để xác định các quyền hạn. Có ba quyền hạn có thể trong mỗi nhóm. Bạn cũng có thể thiết lập các quyền hạn bằng cách sử dụng các số cơ số 8 thay cho các ký hiệu. Các quyền hạn thiết lập theo cách này sử dụng tối đa bốn chữ số cơ số 8. Chúng ta sẽ xem xét chữ số đầu tiên khi chúng ta thảo luận về các thuộc tính. Số thứ hai định nghĩa các quyền hạn của người sử dụng, số thứ ba định nghĩa các quyền hạn của nhóm và số thứ tư định nghĩa các quyền hạn khác. Mỗi một trong ba số này được xây dựng bằng cách cộng các thiết lập các quyền hạn mong muốn: đọc (4), viết (2) và thi hành (1). Trong ví dụ cho hello.sh trong Liệt kê 45, kịch bản lệnh này đã được tạo ra với các quyền hạn -rw-r -- r --, tương ứng với số 644 cơ số 8. Nếu thiết lập quyền thi hành cho tất cả mọi người thì chế độ thay đổi thành 755.

Sử dụng các quyền hạn số là rất tiện dụng khi bạn muốn thiết lập tất cả các quyền hạn cùng một lúc mà không phải đưa ra các quyền hạn giống nhau cho mỗi một trong các nhóm. Sử dụng Bảng 4 như tài liệu tham khảo thuận tiện cho các quyền hạn dạng cơ số 8.

Bảng 4. Các quyền hạn bằng số
Biểu tượngCơ số 8
rwx7
rw-6
r-x5
r--4
-wx3
-w-2
--x1
---0

Các chế độ truy cập

Khi bạn đăng nhập, tiến trình shell mới chạy với id người dùng và id nhóm của bạn. Chúng là các giấy phép điều quản sự truy cập của bạn đến bất kỳ tập tin nào trên hệ thống. Điều này thường có nghĩa là bạn không thể truy cập các tập tin thuộc về những người khác và không thể truy cập các tập tin hệ thống. Trong thực tế, với tư cách là những người sử dụng, chúng ta hoàn toàn phụ thuộc vào các chương trình khác để thực hiện các hoạt động thay mặt chúng ta. Vì các chương trình mà bạn bắt đầu chạy kế thừa id người dùng của bạn, nên chúng không thể truy cập bất kỳ các đối tượng hệ thống tập tin nào mà bạn đã không được cấp quyền truy cập.

Một ví dụ quan trọng là tập tin /etc/passwd mà người dùng bình thường không thể thay đổi trực tiếp được, do chỉ có người dùng root có quyền viết. Tuy nhiên, người dùng bình thường cần có khả năng sửa đổi /etc/passwd bằng cách nào đó, bất cứ khi nào họ cần phải thay đổi mật khẩu của họ. Vì vậy, nếu người dùng không có khả năng chỉnh sửa tập tin này, làm thế nào để có thể thực hiện điều này?

suid và sgid

Mô hình cấp phép của Linux có hai chế độ truy cập đặc biệt gọi là suid (set user id - thiết lập id của người dùng ) và sgid (set group id - thiết lập id của nhóm). Khi một chương trình có thể thi hành được có chế độ truy cập suid được thiết lập, nó sẽ chạy như thể nó đã được bắt đầu bởi chủ sở hữu tập tin, chứ không phải bởi người dùng đã thực sự bắt đầu nó. Tương tự, nếu chế độ truy cập sgid được thiết lập, chương trình sẽ chạy như thể là người dùng khởi đầu đã thuộc về nhóm tập tin chứ không phải thuộc nhóm riêng của người đó. Một trong hai hoặc cả hai chế độ truy cập có thể được thiết lập.

Liệt kê 48 cho thấy tập tin passwd chạy được thuộc sở hữu của root:

Liệt kê 48. Chế độ truy cập suid trên /usr/bin/passwd
ian@pinguino:~$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 25648 2005-10-11 12:14 /usr/bin/passwd

Lưu ý rằng thay cho một x trong bộ ba quyền hạn của người dùng, bây giờ là một s. Điều này biểu thị rằng, đối với chương trình cụ thể này, các bit suid và bit thi hành đã được thiết lập. Vì vậy khi chạy passwd, nó sẽ thực thi như khi người dùng root đã khởi chạy nó, với đầy đủ quyền truy cập của siêu người dùng (superuser), chứ không phải là của người dùng đã chạy nó. Bởi vì passwd chạy với quyền truy cập root, nó có thể sửa đổi /etc/passwd.

Các bit suid và sgid chiếm cùng vị trí như các bit x trong kết quả liệt kê thư mục dài. Nếu tập tin có thể thi hành được, các bit suid hoặc sgid, khi được thiết lập, sẽ được hiển thị như là chữ thường s, trái lại, chúng sẽ được hiển thị như là chữ hoa S.

Trong khi suid và sgid là tiện dụng và thậm chí cần thiết trong nhiều trường hợp, việc sử dụng không đúng các chế độ truy cập này có thể dẫn đến các lỗ thủng an ninh của hệ thống. Bạn nên có càng ít chương trình suid thì càng tốt. Lệnh passwd là một trong số ít lệnh phải là suid.

Thiết lập suid và sgid

Các bit suid và sgid được thiết lập và đặt lại theo ký hiệu bằng cách sử dụng chữ s; ví dụ, u+s thiết lập chế độ truy cập suid và g-s loại bỏ chế độ sgid. Trong định dạng số cơ số 8, suid có giá trị 4 cho ký số đầu tiên (phía bậc cao), trong khi sgid có giá trị 2.

Các thư mục và sgid

Khi một thư mục có chế độ sgid được kích hoạt, bất kỳ tập tin hoặc thư mục nào được tạo ra trong nó sẽ kế thừa id nhóm của thư mục. Điều này đặc biệt có ích cho các cây thư mục được sử dụng bởi một nhóm người đang làm việc trên cùng một dự án. Liệt kê 49 cho thấy cách người sử dụng greg có thể thiết lập một thư mục mà tất cả người dùng của nhóm xml-101 có thể sử dụng được, cùng với một ví dụ về cách người sử dụng gretchen có thể tạo ra một tập tin trong thư mục đó.

Liệt kê 49. Các thư mục và chế độ truy cập sgid
greg@pinguino:~$ mkdir xml101
greg@pinguino:~$ chmod g+ws xml101 
greg@pinguino:~$ ls -ld xml101
drwxrwsr-x 2 greg xml-101 6 Dec 25 22:01 xml101 
greg@pinguino:~$ su - gretchen 
Password: 
gretchen@pinguino:~$ touch ~greg/xml101/gretchen.txt 
gretchen@pinguino:~$ ls -l ~greg/xml101/gretchen.txt 
-rw-r--r-- 1 gretchen xml-101 0 Dec 25 22:02 /home/greg/xml101/gretchen.txt

Bất kỳ thành viên của nhóm xml-101 bây giờ có thể tạo các tập tin trong thư mục xml101 của người sử dụng greg. Như Liệt kê 50 cho thấy, các thành viên khác của nhóm không thể cập nhật tập tin gretchen.txt, nhưng họ có quyền hạn viết vào thư mục đó và do đó có thể xóa tập tin đó.

Liệt kê 50. Chế độ truy cập sgid và quyền sở hữu tập tin
gretchen@pinguino:~$ su - tom
Password: 
~$ cat something >> ~greg/xml101/gretchen.txt 
-su: /home/greg/xml101/gretchen.txt: Permission denied 
~$ rm ~greg/xml101/gretchen.txt 
rm: remove write-protected regular empty file `/home/greg/xml101/gretchen.txt'? y 
~$ ls -l ~greg/xml101 
total 0

Bit dính

Bạn vừa thấy bất cứ người nào có quyền viết vào thư mục có thể xóa các tập tin trong đó. Điều này có thể chấp nhận được cho một dự án nhóm làm việc, nhưng không phải là điều mong muốn đối với không gian tập tin chia sẻ chung toàn cục, ví dụ như thư mục /tmp. May mắn thay, có một giải pháp.

Bit chế độ truy cập còn lại được gọi là bit dính. Nó được biểu diễn theo ký hiệu là t và bằng số là 1 tại ký số cơ số 8 phía bậc cao. Nó được hiển thị trong kết quả liệt kê thư mục với định dạng dài đúng tại vị trí của cờ thi hành được cho những người dùng khác (ký tự cuối cùng), với ý nghĩa tương tự cho trường hợp chữ hoa và chữ thường, giống như với suid và sgid. Nếu thiết lập cho một thư mục, nó chỉ cho phép người sử dụng là chủ sở hữu hoặc siêu người dùng (superuser hay root) xóa hay gỡ bỏ liên kết một tập tin. Liệt kê 51 cho thấy cách người sử dụng greg có thể thiết lập bit dính trên thư mục xml101 của mình và cũng cho thấy rằng bit này được đặt cho thư mục /tmp.

Liệt kê 51. Các thư mục dính
greg@pinguino:~$ chmod +t xml101 
greg@pinguino:~$ ls -l xml101 
total 0
greg@pinguino:~$ ls -ld xml101 
drwxrwsr-t  2  greg xml-101   6 Dec 26 09:41 xml101 
greg@pinguino:~$ ls -ld xml101 /tmp 
drwxrwxrwt 13  root    root 520 Dec 26 10:03 /tmp 
drwxrwsr-t  2  greg xml-101   6 Dec 26 09:41 xml101

Về một lưu ý lịch sử, các hệ thống, UNIX® thường sử dụng bit dính trên các tập tin để tích trữ các tập tin thi hành được trong không gian tráo đổi và tránh nạp lại. Các nhân Linux hiện đại bỏ qua bit dính nếu nó được thiết lập cho các tập tin.

Tóm tắt chế độ truy cập

Bảng 5 tóm tắt ký hiệu và số cơ số 8 cho ba chế độ truy cập đã thảo luận tại đây.

Bảng 5. Các chế độ truy cập
Các chế độ truy cậpKý hiệu Cơ số 8
suids với u4000
sgids với g2000
stickyt1000

Kết hợp điều này với các thông tin quyền hạn ở trên, bạn có thể thấy rằng biểu diễn số cơ số 8 đầy đủ cho các quyền hạn và các chế độ truy cập tới xml101 của greg, mà dưới dạng ký hiệu là drwxrwsr-t, sẽ là 1775.

Các tập tin bất biến

Các chế độ truy cập và các quyền hạn cung cấp sự kiểm soát rộng lớn về việc những người nào có thể làm những gì với các tập tin và các thư mục. Tuy nhiên, chúng không ngăn cản được người dùng root vô ý xóa các tập tin. Có một số thuộc tính bổ sung có sẵn trên các hệ thống tập tin khác nhau cung cấp các khả năng bổ sung. Một trong số đó là thuộc tính bất biến (immutable). Nếu thuộc tính này được thiết lập, thậm chí người dùng root không thể xóa các tập tin cho đến khi thuộc tính được bỏ thiết lập.

Sử dụng lệnh lsattr để xem cờ bất biến (hoặc bất kỳ thuộc tính khác nào) có được thiết lập cho một tập tin hoặc thư mục hay không. Để làm cho một tập tin thành bất biến, hãy sử dụng lệnh chattr với cờ -i.

Liệt kê 52 cho thấy rằng người sử dụng root có thể tạo một tập tin bất biến, nhưng không thể xóa nó cho đến khi cờ bất biến được gỡ bỏ.

Liệt kê 52. Các tập tin bất biến
root@pinguino:~# touch keep.me 
root@pinguino:~# chattr +i keep.me 
root@pinguino:~# lsattr keep.me 
----i------------ keep.me 
root@pinguino:~# rm -f keep.me 
rm: cannot remove `keep.me': Operation not permitted 
root@pinguino:~# chattr -i keep.me
root@pinguino:~# rm -f keep.me

Việc thay đổi cờ bất biến đòi hỏi quyền root hoặc ít nhất là khả năng CAP_LINUX_IMMUTABLE. Làm cho các tập tin thành bất biến thường được thực hiện như là một phần của một nỗ lực an ninh hoặc phát hiện xâm nhập. Xem trang hướng dẫn sử dụng lệnh (man capabilities) để biết thêm thông tin.

umask

Khi một tập tin mới được tạo ra, quá trình tạo tập tin xác định các quyền hạn mà tập tin mới cần phải có. Thông thường, chế độ yêu cầu là 0666, nghĩa là bất cứ ai cũng có thể đọc được và có thể viết được. Tuy nhiên, việc tạo quyền hạn này bị ảnh hưởng bởi một giá trị umask, xác định các quyền hạn mà một người dùng không xác định các quyền hạn mà một người dùng không muốn cấp phát tự động cho các tập tin hoặc thư mục mới được tạo ra. Hệ thống sử dụng giá trị umask để giảm các quyền hạn cần thiết ban đầu. Bạn có thể xem việc thiết lập giá trị umask của bạn với lệnh umask, như trong Liệt kê 53.

Liệt kê 53. Hiển thị umask dạng cơ số 8
ian@pinguino:~$ umask 
0022

Hãy nhớ rằng umask xác định các quyền không nên được cấp. Trên các hệ thống Linux, umask thông thường mặc định là 0022 để loại bỏ quyền viết của nhóm và những người khác đối với các tập tin mới. Sử dụng tùy chọn -S để hiển thị umask dưới dạng ký hiệu, dạng này chỉ ra các quyền hạn nào được phép.

Bạn có thể sử dụng lệnh umask để thiết lập một umask cũng như hiển thị một giá trị umask. Vì vậy, nếu bạn muốn giữ các tập tin của bạn riêng tư hơn và không cho phép tất cả các nhóm hoặc người khác truy cập vào tập tin mới được tạo ra, bạn nên sử dụng một giá trị umask là 0077. Hoặc thiết lập nó bằng ký hiệu, sử dụng lệnh umask u=rwx,g=,o=, như minh họa trong Liệt kê 54.

Liệt kê 54. Thiết lập umask
ian@pinguino:~$ umask 
0022 
ian@pinguino:~$ umask -S 
u=rwx,g=rx,o=rx
ian@pinguino:~$ umask u=rwx,g=,o= 
ian@pinguino:~$ umask 
0077
ian@pinguino:~$ touch newfile 
ian@pinguino:~$ ls -l newfile 
-rw------- 1 ian ian 0 2005-12-26 12:49 newfile

Phần tiếp theo cho bạn thấy làm thế nào để thay đổi chủ sở hữu và nhóm của một đối tượng hệ thống tập tin hiện có.


Thiết lập chủ sở hữu và nhóm của tập tin

Phần này trình bày các tư liệu cho chủ đề 1.104.6 cho kỳ thi quản trị trình độ sơ cấp (LPIC-1) 101. Chủ đề này có trọng số 1.

Trong phần này, bạn tìm hiểu về:

  • Thay đổi nhóm của tập tin.
  • Nhóm mặc định cho các tập tin mới.
  • Thay đổi chủ sở hữu của một tập tin.

Trong phần trước bạn đã biết rằng mọi đối tượng hệ thống tập tin có một chủ sở hữu và một nhóm như thế nào. Trong phần này bạn sẽ tìm hiểu cách làm thế nào để thay đổi chủ sở hữu hoặc nhóm của một tập tin hiện có và có thể thiết lập mặc định nhóm cho các tập tin mới như thế nào.

Nhóm của tập tin

Để thay đổi nhóm của một tập tin, sử dụng lệnh chgrp với một tên nhóm và một hoặc nhiều tên tập tin. Bạn cũng có thể sử dụng số hiệu nhóm nếu bạn thích. Một người dùng thông thường phải là thành viên của nhóm mà tập tin sẽ được đổi sang nhóm đó. Người sử dụng root có thể thay đổi các tập tin vào bất cứ nhóm nào. Liệt kê 55 cho thấy một ví dụ.

Liệt kê 55. Thay đổi quyền sở hữu nhóm
ian@pinguino:~$ touch file1 file2 
ian@pinguino:~$ ls -l file* 
-rw-r--r-- 1 ian ian 0 2005-12-26 14:09 file1 
-rw-r--r-- 1 ian ian 0 2005-12-26 14:09 file2 
ian@pinguino:~$ chgrp xml-101 file1
ian@pinguino:~$ chgrp 1001 file2 
ian@pinguino:~$ ls -l file*
-rw-r--r-- 1 ian xml-101 0 2005-12-26 14:09 file1 
-rw-r--r-- 1 ian xml-101 0 2005-12-26 14:09 file2

Cũng như nhiều lệnh được trình bày trong hướng dẫn này, lệnh chgrp có một tùy chọn -R để cho phép các thay đổi được áp dụng đệ quy cho tất cả các tập tin và thư mục con được chọn.

Nhóm mặc định

Trong phần trước bạn đã học được cách thiết lập chế độ sgid trên một thư mục làm cho các tập tin mới được tạo ra trong thư mục đó thuộc về nhóm của thư mục chứ không phải vào nhóm của người sử dụng tạo ra tập tin này.

Bạn cũng có thể sử dụng lệnh newgrp để tạm thay đổi nhóm chính của bạn sang một nhóm khác trong đó bạn là một thành viên. Một shell mới sẽ được tạo ra và khi bạn thoát khỏi shell đó, nhóm trước của bạn sẽ được phục hồi lại, như trong Liệt kê 56.

Liệt kê 56. Sử dụng lệnh newgrp để tạm thời thay đổi nhóm mặc định
ian@pinguino:~$ newgrp xml-101 
ian@pinguino:~$ groups 
xml-101 adm dialout cdrom floppy audio dip video plugdev lpadmin scanner admin ian 
ian@pinguino:~$ touch file3 
ian@pinguino:~$ ls -l file3 
-rw-r--r-- 1 ian xml-101 0  2005-12-26 14:34 file3 
ian@pinguino:~$ exit 
ian@pinguino:~$ groups 
ian adm dialout cdrom floppy audio dip video plugdev lpadmin scanner admin xml-101

Chủ sở hữu tập tin

Người sử dụng root có thể thay đổi quyền sở hữu của một tập tin bằng cách sử dụng lệnh chown. Dưới dạng đơn giản nhất, cú pháp giống như lệnh chown. Dưới dạng đơn giản nhất, cú pháp giống như lệnh chgrp, chỉ khác là một tên người dùng hoặc id số được sử dụng thay cho một tên nhóm hoặc id nhóm. Có thể cùng một lúc thay đổi luôn cả nhóm của tập tin đó bằng cách thêm một dấu hai chấm và một tên nhóm hay id nhóm, sát ngay sau tên người dùng hoặc id người dùng. Nếu chỉ có một dấu hai chấm, thì nhóm mặc định của người dùng được sử dụng. Đương nhiên, tùy chọn -R sẽ áp dụng sự thay đổi đệ quy. Liệt kê 57 cho thấy một ví dụ.

Liệt kê 57. Sử dụng newgrp để thay đổi tạm thời nhóm mặc định
root@pinguino:~# ls -l ~ian/file4 
-rw-r--r-- 1 ian ian 0 2005-12-26 14:44 /home/ian/file4
root@pinguino:~# chown greg ~ian/file4 
root@pinguino:~# ls -l ~ian/file4 
-rw-r--r-- 1 greg ian 0 2005-12-26 14:44 /home/ian/file4
root@pinguino:~# chown tom: ~ian/file4 
root@pinguino:~# ls -l ~ian/file4 
-rw-r--r-- 1 tom xml-101 0 2005-12-26 14:44 /home/ian/file4

Một dạng cũ hơn, chỉ rõ cả người sử dụng lẫn nhóm, sử dụng một dấu chấm thay vì dấu hai chấm. Dạng này không được khuyên dùng nữa do nó có thể gây nhầm lẫn khi các tên cũng có một dấu chấm.


Các liên kết cứng và biểu tượng

Phần này trình bày các tư liệu cho chủ đề 1.104.7 cho kỳ thi quản trị trình độ sơ cấp (LPIC-1) 101. Chủ đề này có trọng số 1.

Trong phần này, bạn tìm hiểu về:

  • Các liên kết cứng.
  • Các liên kết biểu tượng.

Các liên kết cứng

Trong hướng dẫn cho chủ đề 103, "Chuẩn bị cho kỳ thi LPI 101 (chủ đề 103): Các lệnh GNU và UNIX ," bạn biết được rằng một tập tin hoặc thư mục được chứa trong một tập hợp các khối và thông tin về các tập tin hoặc thư mục được chứa trong một inode.

Một liên kết cứng là một con trỏ đến một inode. Vì vậy, một tên tập tin thực sự là một liên kết đến inode có chứa thông tin về tập tin đó. Như bạn đã tìm hiểu, bạn có thể sử dụng tùy chọn -i của lệnh ls để hiển thị các số inode cho các mục tập tin và thư mục.

Bạn có thể sử dụng lệnh ln để tạo thêm các liên kết cứng cho một tập tin hiện có (nhưng không phải cho một thư mục, mặc dù hệ thống thiết lập dấu . và dấu .. như là các liên kết cứng). Nếu có nhiều liên kết cứng tới một inode, thì inode đó bị xóa chỉ khi số đếm liên kết đạt tới không.

Liệt kê 58 cho thấy cách để tạo một tập tin và sau đó tạo một liên kết cứng với nó. Nó cũng cho thấy mặc dù tên tập tin ban đầu được gỡ bỏ, liên kết cứng thứ hai ngăn inode khỏi bị xóa khi tên tập tin đầu tiên được gỡ bỏ.

Liệt kê 58. Các liên kết cứng
ian@pinguino:~$ echo testing > file1
ian@pinguino:~$ ls -l file* 
-rw-r--r-- 1 ian ian 8 2005-12-26 15:35 file1 
ian@pinguino:~$ ln file1 file2 
ian@pinguino:~$ ls -l file*
-rw-r--r-- 2 ian ian 8 2005-12-26 15:35 file1 
-rw-r--r-- 2 ian ian 8 2005-12-26 15:35 file2 
ian@pinguino:~$ rm file1 
ian@pinguino:~$ ls -l file* 
-rw-r--r-- 1 ian ian 8 2005-12-26 15:35 file2 
ian@pinguino:~$ cat file2 
testing

Các liên kết cứng chỉ có thể tồn tại trong một hệ thống tập tin cụ thể. Chúng không thể vượt qua hệ thống tập tin, vì chúng đề cập đến một inode bằng số và các số inode chỉ là duy nhất trong một hệ thống tập tin.

Tìm các liên kết cứng

Nếu bạn cần tìm các tập tin các tập tin nào liên kết đến một inode cụ thể, bạn có thể sử dụng lệnh find và tùy chọn -samefile với một tên tập tin hay tùy chọn -inum với một số inode, như trong Liệt kê 59.

Liệt kê 59. Tìm các liên kết cứng
ian@pinguino:~$ ln file2 file3 
ian@pinguino:~$ ls -il file2 172 
-rw-r--r-- 2 ian ian 8 2005-12-26 15:35 file2
ian@pinguino:~$ find . -samefile file2 
./file2 
./file3 
ian@pinguino:~$ find . -inum 172 
./file2 
./file3

Một dạng khác của liên kết hệ thống tập tin được sử dụng trong các hệ thống Linux là liên kết biểu tượng (thường được gọi đơn giản là symlink). Trong trường hợp này, liên kết tham chiếu đến tên của đối tượng hệ thống tập tin chứ không phải là inode của nó. Các liên kết biểu tượng có thể trỏ đến các thư mục và có thể trỏ đến các tập tin trên hệ thống tập tin khác. Chúng thường được sử dụng để cung cấp các bí danh cho các lệnh hệ thống. Khi liệt kê nội dung thư mục với định dạng kết quả dài, bạn có thể biết một đối tượng có phải là một liên kết biểu tượng không nếu ký tự đầu tiên của mục ứng với nó là ký tự l, chữ thường, như trong Liệt kê 60.

Liệt kê 60. Các ví dụ về liên kết biểu tượng
ian@pinguino:~$ ls -l /sbin/mkfs.* 
-rwxr-xr-x 1  root  root 14160 2005-09-20 12:43 /sbin/mkfs.cramfs 
-rwxr-xr-x 3  root  root 31224 2005-08-23 09:25 /sbin/mkfs.ext2 
-rwxr-xr-x 3  root  root 31224 2005-08-23 09:25 /sbin/mkfs.ext3 
-rwxr-xr-x 2  root root  55264 2005-06-24 07:48 /sbin/mkfs.jfs 
-rwxr-xr-x 1  root root  13864 2005-09-20 12:43 /sbin/mkfs.minix 
lrwxrwxrwx 1  root root      7 2005-12-14 07:40 /sbin/mkfs.msdos -> mkdosfs 
-rwxr-xr-x 2  root root 241804 2005-05-11 09:40 /sbin/mkfs.reiser4 
-rwxr-xr-x 2  root root 151020 2004-11-25 21:09 /sbin/mkfs.reiserfs 
lrwxrwxrwx 1  root root      7 2005-12-14 07:40 /sbin/mkfs.vfat -> mkdosfs 
-rwxr-xr-x 1  root root 303788 2005-04-14 01:27 /sbin/mkfs.xfs

Ngoài kiểu l, bạn có thể thấy ở bên phải một mũi tên -> tiếp theo là tên mà liên kết đó trỏ đến. Ví dụ, lệnh mkfs.vfat là một liên kết biểu tượng tới lệnh mkdosfs. Bạn sẽ tìm thấy nhiều liên kết khác như vậy trong /sbin và các thư mục hệ thống khác. Một ám chỉ khác là kích thước của nó sẽ là số các ký tự trong tên của đích liên kết.

Bạn tạo ra một liên kết biểu tượng bằng cách sử dụng lệnh ln với tùy chọn -s như trong Liệt kê 61.

Liệt kê 61. Tạo các liên kết biểu tượng
ian@pinguino:~$ touch file5 
ian@pinguino:~$ ln -s file5 file6 
ian@pinguino:~$ ln -s file5 file7 
ian@pinguino:~$ ls -l file* 
-rw-r--r-- 2 ian ian 8 2005-12-26 15:35 file2 
-rw-r--r-- 2 ian ian 8 2005-12-26 15:35 file3 
-rw-r--r-- 1 ian ian 0 2005-12-26 17:40 file5 
lrwxrwxrwx 1 ian ian 5 2005-12-26 17:40 file6 -> file5
lrwxrwxrwx 1 ian ian 5 2005-12-26 17:40 file7 -> file5

Lưu ý rằng các số đếm liên kết trong liệt kê nội dung thư mục không được cập nhật. Việc xóa liên kết này không ảnh hưởng đến tập tin ở đích. Các liên kết biểu tượng không ngăn cản một tập tin khỏi bị xóa; nếu tập tin ở đích bị di chuyển hoặc bị xóa, thì liên kết biểu tượng sẽ bị hỏng. Vì lý do này, nhiều hệ thống sử dụng các màu sắc trong liệt kê nội dung thư mục, thường là màu xanh dương nhạt cho một liên kết tốt và màu đỏ cho một liên kết bị hỏng.

Tìm các liên kết biểu tượng

Nếu bạn cần tìm các tập tin nào liên kết biểu tượng đến một tập tin cụ thể, bạn có thể sử dụng lệnh find và tùy chọn -lname với một tên tập tin, như minh họa trong Liệt kê 62. Các liên kết có thể sử dụng một đường dẫn tương đối hay tuyệt đối, vì vậy bạn có thể cần đến một dấu sao đứng trước tên tập tin để so khớp hết các trường hợp.

Liệt kê 62. Tìm các liên kết biểu tượng
ian@pinguino:~$ mkdir linktest1 
ian@pinguino:~$ ln -s ~/file3 linktest1/file8 
.ian@pinguino:~$ find . -lname "*file3"
./linktest1/file8 
ian@pinguino:~$ find . -lname "*file5" 
./file7
./file6

Các đường dẫn và các liên kết biểu tượng

Trong hầu hết các ví dụ mà chúng ta đã thấy cho đến nay, liên kết biểu tượng đã có trong cùng thư mục với đích và các đường dẫn trong liên kết đó ngầm hiểu là các đường dẫn tương đối. Trong Liệt kê 62 chúng ta đã tạo ra một liên kết trong thư mục con linktest1, sử dụng một đích với đường dẫn tuyệt đối (~/file3). Khi tạo các liên kết biểu tượng, bạn cần phải xem xét sử dụng các đường dẫn tương đối hay tuyệt đối, bởi vì bạn có thể sử dụng cả hai. Hình 3 minh họa ảnh hưởng của việc di chuyển một tập hợp các tập tin và các liên kết biểu tượng vào một thư mục con.

Hình 3. Các liên kết biểu tượng và các đường dẫn
Các liên kết biểu tượng và các đường dẫn

Màu đỏ biểu thị rằng liên kết linktest1/file8 bây giờ đã bị hỏng. Điều này không có gì đáng ngạc nhiên do không còn có một tập tin ~/file3 nữa. Tuy nhiên, hai liên kết biểu tượng tới file5 vẫn còn tốt do tập tin đó vẫn còn ở vị trí tương đối như cũ, mặc dù nó và hai đường liên kết tới nó đã di chuyển. Không có các quy tắc cứng và nhanh chóng nào về việc sử dụng các đường dẫn tương đối hay tuyệt đối trong các liên kết biểu tượng; nó phụ thuộc đâu đó vào việc liệu liên kết hoặc đích có nhiều khả năng bị di chuyển không. Chỉ cần nhớ xem xét vấn đề đó khi tạo các liên kết biểu tượng.

Các liên kết biểu tượng bị hỏng

Một điểm cuối cùng về liên kết biểu tượng bị hỏng của chúng ta. Các cố gắng để đọc các tập tin sẽ thất bại vì nó không tồn tại. Tuy nhiên, các nỗ lực để viết vào nó sẽ thực hiện được nếu bạn có quyền hạn thích hợp trên tập tin đích, như trong Liệt kê 63.

Liệt kê 63. Đọc ra và viết vào một liên kết biểu tượng bị hỏng
ian@pinguino:~$ cat linktest1/file8 
cat: linktest1/file8: No such file or directory
ian@pinguino:~$ echo "test file 8" >> linktest1/file8
ian@pinguino:~$ cat linktest1/file8 
test file 8 
ian@pinguino:~$ find . -name file3 
./linktest2/file3 
./file3

Vì tôi có thể tạo các tập tin trong thư mục nhà của tôi, việc viết vào liên kết bị hỏng đã tạo ra tập tin đích còn thiếu.


Tìm và đặt các tập tin hệ thống

Phần này trình bày các tư liệu cho chủ đề 1.104.8 cho kỳ thi quản trị trình độ sơ cấp (LPIC-1) 101. Chủ đề này có trọng số 5.

Trong phần này, bạn tìm hiểu về:

  • Tiêu chuẩn phân cấp hệ thống tập tin và làm thế nào để phân loại các tập tin và các thư mục.
  • Tìm các tập tin và các lệnh.

Tiêu chuẩn phân cấp hệ thống tập tin

Tiêu chuẩn phân cấp hệ thống tập tin (Filesystem Hierarchy Standard – FHS) là một tài liệu đặc tả cách bố trí các thư mục trên một hệ thống Linux hay hệ thống kiểu-UNIX khác. Nó được tạo ra để cung cấp một cách bố trí chung nhằm đơn giản hóa việc việc phát triển phần mềm độc lập với các bản phân phối, bằng cách đặt các tập tin tại địa điểm chung giống nhau trên các bản phân phối Linux. Nó cũng được sử dụng trong Cơ sở tiêu chuẩn Linux (Linux Standard Base) (xem Tài nguyên).

Hai loại FHS độc lập

Tại lõi của FHS có hai đặc tính độc lập của các tập tin:

Có khả năng chia sẻ dùng chung được so với không có khả năng chia sẻ được
Các tập tin có khả năng chia sẻ được (shareable) có thể được đặt trên một hệ thống và được sử dụng trên một hệ thống khác, trong khi các tập tin không có khả năng chia sẻ được (unshareable) phải nằm trên hệ thống chúng được sử dụng.
Thay đổi được so với tĩnh
Các tập tin tĩnh bao gồm tài liệu, các thư viện và các chương trình nhị phân không thay đổi nếu không có sự can thiệp của quản trị viên hệ thống. Các tập tin không phải tĩnh là các tập tin thay đổi được.

Những phân biệt này cho phép các tập tin với các tập hợp đặc tính khác nhau được lưu trữ trên các hệ thống tập tin khác nhau. Bảng 6 là một ví dụ từ tài liệu FHS cho thấy một cách bố trí sẽ tuân thủ FHS.

Bảng 6. Ví dụ về FHS
Có khả năng chia sẻ Không có khả năng chia sẻ được
Tĩnh/usr
/opt
/etc
/boot
Thay đổi được /var/mail
/var/spool/news
/var/run
/var/lock

Hệ thống tập tin gốc (root)

Mục tiêu của FHS là giữ cho hệ thống tập tin gốc càng nhỏ càng tốt. Nó phải chứa tất cả các tập tin cần thiết để khởi động, khôi phục, phục hồi hoặc sửa chữa hệ thống đó, bao gồm các tiện ích mà một quản trị viên có kinh nghiệm sẽ cần cho các nhiệm vụ này. Lưu ý rằng việc khởi động một hệ thống đòi hỏi có đủ những thứ đó trên hệ thống tập tin gốc (/) để cho phép lắp đặt các hệ thống tập tin khác.

Các thư mục trong thư mục gốc

Bảng 7 cho thấy mục đích của các thư mục mà FHS yêu cầu trong hệ thống tập tin gốc (hoặc /). Hoặc thư mục đó hoặc một liên kết biểu tượng tới nó phải có mặt, ngoài trừ những cái được đánh dấu là tùy chọn, chỉ cần thiết khi hệ thống con tương ứng có mặt.

Bảng 7. Hệ thống tập tin gốc của FHS
Thư mụcMục đích
bin Các tập tin lệnh nhị phân chủ yếu.
boot Các tập tin tĩnh của bộ nạp khởi động.
dev Các tập tin thiết bị.
etc Cấu hình hệ thống đặc thù riêng cho máy này.
lib Các mô đun nhân và các thư viện được chia sẻ chủ yếu.
media Điểm lắp đặt cho các phương tiện tháo lắp vật lý.
mnt Điểm lắp đặt để lắp đặt một hệ thống tập tin tạm thời.
opt Các gói phần mềm ứng dụng bổ sung.
sbin Các tập tin nhị phân hệ thống chủ yếu.
srv Dữ liệu cho các dịch vụ được hệ thống này cung cấp.
tmp Các tập tin tạm thời.
usr Hệ thống phân cấp thứ cấp.
var Dữ liệu biến đổi.
home Thư mục nhà của người dùng (tùy chọn).
lib<qual> Định dạng thay thế của các thư viện chia sẻ cốt yếu (tùy chọn).
root Thư mục nhà cho người dùng root (tùy chọn).

/usr và /var

Các hệ thống phân cấp /usr và /var/ là đủ phức tạp, xứng đáng có các phần đầy đủ của FHS dành cho chúng. Hệ thống tập tin /usr là phần chính thứ hai của hệ thống tập tin, chứa dữ liệu chỉ đọc, có thể chia sẻ được. Nó có thể được chia sẻ giữa các hệ thống, mặc dù thói quen thực thành hiện nay ít khi làm điều này. Hệ thống tập tin /var chứa các tập tin dữ liệu biến đổi, bao gồm cả thư mục và các tập tin spool, dữ liệu quản trị và dữ liệu ghi nhật ký và các tập tin tức thời và tạm thời. Một số phần của thư mục /var không thể chia sẻ được giữa các hệ thống khác nhau, nhưng những thư mục khác, chẳng hạn như /var/mail, /var/cache/man, /var/cache/ fonts và /var/spool/news có thể được chia sẻ.

Để hiểu đầy đủ tiêu chuẩn này, hãy đọc tài liệu FHS (xem Tài nguyên).

Tập tin đó ở đâu?

Các hệ thống Linux thường chứa hàng trăm ngàn tập tin. Hệ thống Ubuntu mới được cài đặt mà chúng ta đang sử dụng trong hướng dẫn này có gần 50000 tập tin chỉ trong một mình hệ thống phân cấp /usr. Một hệ thống Fedora mà tôi đã sử dụng một thời gian có khoảng 175000 tập tin. Phần còn lại của phần này sẽ xem xét các công cụ giúp bạn tìm thấy các tập tin, đặc biệt là các chương trình, trong biển dữ liệu mênh mông.

PATH của bạn

Nếu bạn đã sử dụng một số hệ thống Linux, bạn có thể nhận thấy rằng nếu bạn đăng nhập như root, bạn có thể thực hiện các lệnh như fdisk, mà bạn dường như không thể thực hiện nếu bạn là một người sử dụng bình thường. Điều đã xảy ra là khi bạn chạy một chương trình ở dòng lệnh, bash shell (hoặc shell khác) tìm kiếm khắp một danh sách các thư mục để tìm chương trình bạn cần dùng. Danh sách các thư mục được chỉ rõ trong biến môi trường PATH của bạn và danh sách đó thường cho các đường dẫn của người dùng root bao gồm cả /sbin, trong khi các đường dẫn của người dùng không là root thì không có. Liệt kê 64 cho thấy hai ví dụ về đường dẫn của người sử dụng khác nhau, cũng như một ví dụ đường dẫn root.

Liệt kê 64. Một số ví dụ về PATH
ian@pinguino:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/games
[ian@attic4 ~]$ echo $PATH
/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/ian/bin
[ian@attic4 ~]$ su - 
Password: 
[root@attic4 ~]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:
/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin

Như bạn có thể nhìn thấy, biến PATH chỉ là một danh sách tên các thư mục, cách nhau bằng các dấu hai chấm. Do lệnh fdisk thực tế nằm trong /sbin/fdisk, chỉ có đường dẫn đầu tiên và cuối cùng trong các đường dẫn này sẽ cho phép người dùng chạy nó bằng cách gõ fdisk mà không cần đưa ra một tên được phân biệt đầy đủ (/sbin/fdisk).

Thông thường, đường dẫn của bạn được đặt trong một tập tin khởi tạo như .bash_profile hoặc .bashrc. Bạn có thể thay đổi nó cho phiên làm việc hiện tại bằng cách xác định một đường dẫn mới. Hãy nhớ xuất khẩu biến PATH nếu bạn muốn giá trị mới sẽ có sẵn cho các tiến trình khác mà bạn bắt đầu. Một ví dụ được hiển thị trong Liệt kê 65.

Liệt kê 65. Thay đổi PATH của bạn
[ian@attic4 ~]$ fdisk 
-bash: fdisk: command not found 
[ian@attic4 ~]$ export PATH=/sbin:$PATH 
[ian@attic4 ~]$ fdisk
                              
Usage: fdisk [-l] [-b SSZ] [-u] device 
E.g.: fdisk /dev/hda (for the first IDE disk) 
  or: fdisk /dev/sdc (for the third SCSI disk) 
  or: fdisk /dev/eda (for the first PS/2 ESDI drive) 
  or: fdisk /dev/rd/c0d0 
  or: fdisk /dev/ida/c0d0 (for RAID devices)
  ...

Các lệnh which, type và whereis

Trong ví dụ trước, chúng ta phát hiện ra rằng lệnh fdisk không có sẵn chỉ bằng cách cố gắng để chạy nó. Có một số lệnh cũng có thể giúp bạn làm điều này.

Lệnh which

Bạn có thể sử dụng lệnh which để tìm kiếm trong đường dẫn của bạn và tìm ra lệnh sẽ được thi hành (nếu có) khi bạn gõ một lệnh. Liệt kê 66 cho thấy một ví dụ về việc tìm kiếm lệnh fdisk.

Liệt kê 66. Sử dụng lệnh which
[ian@attic4 ~]$ which fdisk 
/usr/bin/which: no fdisk in (/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:
/usr/X11R6/bin:/home/ian/bin) 
[ian@attic4 ~]$ export PATH=/sbin:$PATH
[ian@attic4 ~]$ which fdisk 
/sbin/fdisk

Lệnh which cho bạn thấy cá thể xuất hiện đầu tiên của một lệnh trong đường dẫn của bạn. Nếu bạn muốn biết nó có nhiều lần xuất hiện không, thì hãy thêm tùy chọn -a như trong Liệt kê 67.

Listing 67. Using which to find multiple occurrences
[root@attic4 ~]# which awk
/bin/awk 
[root@attic4 ~]# which -a awk 
/bin/awk 
/usr/bin/awk

Ở đây chúng ta tìm thấy lệnh awk trong thư mục /bin (có chứa các lệnh có thể được cả người quản trị hệ thống lần người dùng sử dụng, nhưng chỉ bắt buộc khi không có hệ thống tập tin khác được lắp đặt vào) và cũng trong thư mục /sbin (có các mã nhị phân cốt yếu để khởi động, khôi phục, phục hồi và/hoặc sửa chữa hệ thống).

Lệnh type

Có một số lệnh sẽ không được lệnh which tìm thấy, chẳng hạn như các lệnh shell dựng sẵn. Lệnh type dựng sẵn sẽ cho bạn biết cách một chuỗi ký tự biểu diễn lệnh đã cho sẽ được đánh giá để thi hành như thế nào. Liệt kê 68 cho thấy một ví dụ khi sử dụng chính lệnh type.

Liệt kê 68. Sử dụng lệnh type
[root@attic4 ~]# which type 
/usr/bin/which: no type in (/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:
/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin)
[root@attic4 ~]# type type 
type is a shell builtin

Lệnh whereis

Nếu bạn muốn tìm kiếm nhiều thông tin hơn chỉ là vị trí của một chương trình, thì bạn có thể sử dụng lệnh whereis. Ví dụ, bạn có thể tìm các trang hướng dẫn sử dụng hoặc các thông tin khác, như trong Liệt kê 69.

Liệt kê 69. Sử dụng lệnh whereis
[root@attic4 ~]# whereis awk 
awk: /bin/awk /usr/bin/awk /usr/libexec/awk /usr/share/awk
/usr/share/man/man1p/awk.1p.gz /usr/share/man/man1/awk.1.gz

Lưu ý rằng bản sao của lệnh awk trong thư mục /sbin đã không được tìm thấy bằng lệnh whereis. Các thư mục được sử dụng bởi lệnh whereis là cố định, do đó, lệnh này có thể không phải luôn luôn tìm thấy những gì bạn đang tìm kiếm. Lệnh whereis cũng có thể tìm kiếm các tập tin mã nguồn, chỉ rõ các đường dẫn tìm kiếm thay thế và tìm kiếm các mục khác thường. Tham khảo các trang hướng dẫn sử dụng để xem cách đè lên hành vi này hoặc thay đổi các đường dẫn cố định được lệnh whereis sử dụng.

Lệnh find

Trong hướng dẫn cho chủ đề 103, "Chuẩn bị cho kỳ thi LPI 101 (chủ đề 103): Các lệnh GNU và UNIX," bạn đã tìm hiểu cách để tìm kiếm các tập tin dựa vào tên (bao gồm cả ký tự đại diện), đường dẫn, kích thước hoặc dấu thời gian. Trong phần trên về Các liên kết cứng và biểu tượng, bạn đã tìm hiểu làm thế nào để tìm thấy các liên kết đến một tập tin cụ thể hoặc.

Lệnh find là con dao đa năng của quân đội Thụy Sĩ về các công cụ tìm kiếm tập tin trên các hệ thống Linux. Hai khả năng khác mà bạn có thể thấy có ích là khả năng tìm các tập tin dựa trên tên người dùng hoặc tên nhóm và khả năng để tìm các tập tin dựa vào các cho phép truy cập.

Liệt kê 70 cho thấy liệt kê nội dung thư mục của thư mục nhóm làm việc ~greg/xml101 ví dụ của chúng ta, cùng với một ví dụ về cách để tìm tất cả các tập tin thuộc sở hữu của người dùng ian và tất cả các tập tin khác không có nhóm xml-101. Lưu ý cách dấu chấm than, !, phủ định ý nghĩa của một phép kiểm tra khi sử dụng lệnh find.

Liệt kê 70. Tìm kiếm các tập tin của người dùng và nhóm
ian@pinguino:~$ ls -l ~greg/xml101/* 
-rw-r--r-- 1 greg xml-101 0 2005-12-27 07:38 /home/greg/xml101/file1.c 
-rw-r----- 1 greg xml-101 0 2005-12-27 07:39 /home/greg/xml101/file2.c 
-rw-r--r-- 1 tom  xml-101 0 2005-12-27 07:41 /home/greg/xml101/file3.c 
-rw-r--r-- 1 ian  ian     0 2005-12-27 07:40 /home/greg/xml101/file4.c 
-rw-r--r-- 1 tom  xml-101 0 2005-12-27 07:41 /home/greg/xml101/file5.c 
-rw-r--r-- 1 ian  xml-101 0 2005-12-27 07:40 /home/greg/xml101/file6.c 
-rw-r--r-- 1 tom  xml-101 0 2005-12-27 07:43 /home/greg/xml101/file7.c 
-rwxr-xr-x 1 tom  xml-101 0 2005-12-27 07:42 /home/greg/xml101/myprogram 
ian@pinguino:~$ find ~greg/xml101 -user ian 
/home/greg/xml101/file4.c 
/home/greg/xml101/file6.c
ian@pinguino:~$ find ~greg/xml101 ! -group xml-101
/home/greg/xml101/file4.c

Để tìm các tập tin theo quyền hạn, bạn có thể sử dụng phép kiểm tra -perm cùng với các biểu thức ký hiệu quyền hạn tương tự như các biểu thức được sử dụng với lệnh chmod hoặc umask. Bạn có thể tìm kiếm các tập tin với quyền hạn chính xác là gì, nhưng thường sẽ có ích hơn khi đặt một dấu gạch nối trước biểu thức quyền hạn để biểu thị rằng bạn muốn tìm các tập tin với các quyền đó, nhưng bạn không quan tâm đến các quyền khác. Khi sử dụng các tập tin của Liệt kê 70, Liệt kê 71 minh họa cách tìm các tập tin cho phép người dùng và nhóm thi hành được và hai cách khác nhau để tìm kiếm các tập tin mà những người khác không thể đọc được.

Liệt kê 71. Tìm kiếm tập tin theo quyền hạn
ian@pinguino:~$ find ~greg/xml101 -perm -ug=x 
/home/greg/xml101 
/home/greg/xml101/myprogram 
ian@pinguino:~$ find ~greg/xml101 ! -perm -o=r 
/home/greg/xml101/file2.c         
ian@pinguino:~$ find ~greg/xml101 ! -perm -0004
/home/greg/xml101/file2.c

Chúng ta đã trình bày một số các kiểu tìm kiếm chính mà bạn có thể thực hiện bằng lệnh find. Để thu hẹp hơn nữa kết quả đầu ra của bạn, bạn có thể kết hợp nhiều biểu thức và bạn có thể thêm các biểu thức chính quy vào hỗn hợp này. Để tìm hiểu thêm về lệnh đa năng này, hãy sử dụng trang hướng dẫn sử dụng, hoặc tốt hơn, sử dụng lệnh info find nếu bạn có hệ thống info đã cài đặt.

Liệt kê 72 cho thấy một ví dụ cuối cùng về việc tìm kiếm bằng lệnh find. Ví dụ này thực hiện một lệnh cd vào thư mục /usr/include để giữ cho độ dài liệt kê ở mức quản lý được, sau đó tìm tất cả các tập tin có chứa xt trong tên đường dẫn của chúng bất kể chữ thường hay chữ hoa. Ví dụ thứ hai hạn chế tiếp kết quả đầu ra này, chỉ còn các tập tin mà không phải là các thư mục và có kích thước ít nhất là 2 kilobyte. Kết quả đầu ra thực tế trên hệ thống của bạn có thể khác nhau tùy thuộc vào bạn đã cài đặt gói nào.

Liệt kê 72. Một ví dụ cuối cùng của lệnh find
ian@pinguino:/usr/include$ find . -iregex ".*xt.*" 
./X11/xterm 
./X11/xterm/ptyx.h
./irssi/src/fe-common/core/printtext.h
./irssi/src/fe-common/core/hilight-text.h 
ian@pinguino:/usr/include$ find . -iregex ".*xt.*" ! -type d -size +2k 
./X11/xterm/ptyx.h
./irssi/src/fe-common/core/printtext.h

Lưu ý rằng biểu thức chính quy phải khớp với đường dẫn đầy đủ được lệnh find trả về và hãy nhớ sự khác biệt giữa các biểu thức chính quy và các ký tự đại diện.

Lệnh locate và updatedb

Lệnh find tìm kiếm tất cả các thư mục mà bạn xác định, mỗi khi bạn chạy nó. Để tăng tốc độ tìm kiếm lên, bạn có thể sử dụng lệnh khác, locate, có sử dụng một cơ sở dữ liệu về thông tin đường dẫn được lưu trữ chứ không phải mỗi lần đều tìm kiếm trên hệ thống tập tin.

Lệnh locate và và slocate

Lệnh locate tìm kiếm các tập tin ăn khớp trong một cơ sở dữ liệu thường được một công việc định kỳ cập nhật hàng ngày. Trên các hệ thống Linux hiện đại, lệnh này thường được thay thế bằng lệnh slocate có lưu trữ các quyền truy cập cũng như các đường dẫn và do đó ngăn cản những người dùng khỏi tò mò vào các thư mục mà họ không thể nhìn thấy. Trên các hệ thống này bạn sẽ thường nhận thấy rằng lệnh locate là một liên kết biểu tượng đến lệnh slocate, vì vậy bạn có thể sử dụng cả hai lệnh.

Lệnh locate so khớp bất kỳ phần nào của một tên đường dẫn, chứ không chỉ riêng các tập tin. Liệt kê 73 cho thấy rằng lệnh locate là một liên kết biểu tượng tới slocate và sau đó cho thấy làm thế nào để tìm thấy các đường dẫn có chứa chuỗi bin/ls.

Liệt kê 73. Sử dụng lệnh locate
[ian@attic4 ~]$ ls -l $(which locate)
lrwxrwxrwx 1 root slocate 7 Aug 24 23:04 /usr/bin/locate -> slocate
[ian@attic4 ~]$ locate bin/ls 
/bin/ls 
/usr/bin/lsb_release
/usr/bin/lskatproc 
/usr/bin/lspgpot 
/usr/bin/lsattr 
/usr/bin/lskat
/usr/bin/lshal 
/usr/bin/lsdiff 
/usr/sbin/lsof 
/sbin/lsmod 
/sbin/lsusb
/sbin/lspci

Lệnh updatedb

Cơ sở dữ liệu mà lệnh slocate sử dụng được lưu trữ trong hệ thống tập tin /var, tại một ví trí như /var/lib/slocate/slocate.db. Nếu bạn nhìn thấy kết quả đầu ra như Liệt kê 74, thì hệ thống của bạn không phải đang chạy công việc này.

Liệt kê 74. Không có cơ sở dữ liệu nào cho lệnh slocate
[ian@attic4 ~]$ locate bin/ls
warning: locate: could not open database: /var/lib/slocate/slocate.db:
No such file or directory 
warning: You need to run the 'updatedb' command (as root) to create the database. 
Please edit /etc/updatedb.conf to enable the daily cron job.

Cơ sở dữ liệu được tạo ra hoặc được cập nhật bằng cách sử dụng lệnh updatedb. Lệnh này thường chạy hàng ngày như là một công việc định kỳ. Tập tin /etc/updatedb.conf là tập tin cấu hình cho lệnh updatedb. Để kích hoạt tính năng cập nhật hàng ngày, người dùng root cần phải chỉnh sửa /etc/updatedb.conf và thiết lập DAILY_UPDATE=yes. Để tạo cơ sở dữ liệu ngay lập tức, hãy chạy lệnh updatedb khi là người dùng root.

Tài nguyên

Học tập

Lấy sản phẩm và công nghệ

Thảo luận

Bình luận

developerWorks: Đăng nhập

Các trường được đánh dấu hoa thị là bắt buộc (*).


Bạn cần một ID của IBM?
Bạn quên định danh?


Bạn quên mật khẩu?
Đổi mật khẩu

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Ở lần bạn đăng nhập đầu tiên vào trang developerWorks, một hồ sơ cá nhân của bạn được tạo ra. Thông tin trong bản hồ sơ này (tên bạn, nước/vùng lãnh thổ, và tên cơ quan) sẽ được trưng ra cho mọi người và sẽ đi cùng các nội dung mà bạn đăng, trừ khi bạn chọn việc ẩn tên cơ quan của bạn. Bạn có thể cập nhật tài khoản trên trang IBM bất cứ khi nào.

Thông tin gửi đi được đảm bảo an toàn.

Chọn tên hiển thị của bạn



Lần đầu tiên bạn đăng nhập vào trang developerWorks, một bản trích ngang được tạo ra cho bạn, bạn cần phải chọn một tên để hiển thị. Tên hiển thị của bạn sẽ đi kèm theo các nội dung mà bạn đăng tải trên developerWorks.

Tên hiển thị cần có từ 3 đến 30 ký tự. Tên xuất hiện của bạn phải là duy nhất trên trang Cộng đồng developerWorks và vì lí do an ninh nó không phải là địa chỉ email của bạn.

Các trường được đánh dấu hoa thị là bắt buộc (*).

(Tên hiển thị cần có từ 3 đến 30 ký tự)

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Thông tin gửi đi được đảm bảo an toàn.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=70
Zone=Nguồn mở
ArticleID=509543
ArticleTitle=Chuẩn bị kỳ thi LPI 101: Các thiết bị, các hệ thống tập tin Linux và tiêu chuẩn phân cấp hệ thống tập tin
publish-date=04162006