Kiến Thức Cơ Bản Slackware Linux

5.2 Cấu trúc hệ thống tệp tin(Filesystem Structure)

Chúng ta đã làm quen với cấu trúc catalog trong Slackware Linux.Bạn biết cách tìm kiếm các tệp tin,catalog cần thiết.Linux là một hệ thống đa tài khoản.Tất cả các thành phần coi như là một hệ thống tệp tin.Hệ thống này cất giữ thông tin của từng người riêng biệt không xâm phạm lẫn nhau(nếu không cho phép).Và no còn cho phép sử dụng ảnh và kết nối NFS.Ở trong phần này chúng ta chủ yếu xem xét các khía cạnh khác nhau của tính đa tài khoản trên cấu trúc hệ thống tệp tin.

5.2.1 Quyền chủ sở hữu

Hệ thống tệp tin lưu trữ thông tin về quyền chủ sở hữu cho từng tệp tin cũng như catalog.Bao gồm thông tin về tài khoản,nhóm mà nó trực thuộc.Phương pháp đơn giải để xem những thông tin ấy là dung lệnh ls:

$ ls -l /usr/bin/wc
-rwxr-xr-x   1 root     bin    7368 Jul 30  1999 /usr/bin/wc

Chúng ta không quan tâm tới cột thứ ba và thứ tư.Chúnh chứa thông tin về tên và nhóm mà tệp tin trực thuộc.Trong ví dụ trên file thuộc tài khoản root và nhóm bin.

Chủ của file có thể thay đổi  bởi lệnh chown(1)(có nghĩa là "change owner"- thay đổi chủ sở hữu),còn nhóm thì có thể bằng lệnh chgrp("change group -Thay đổi nhóm sở hữu").Để thay đổi chủ sở hữu là "daemon" thì cần lam như sau:

#chown daemon /usr/bin/wc

Còn muốn chuyển nhóm sang "root" thì làm như sau:

#chgrp root /usr/bin/wc

Lênh chown có thể sử dụng  theo cách sau:

# chown daemon.root /usr/bin/wc

Tính sở hữu files được coi là một phần quan trọng trên hệ thống Linux thậm chí ngay cả khi có duy nhất một tài khoản trên hệ thống mà đôi khi bạn vẫn phải cần chỉnh lại quyền sở hữu các files và các nodes thiết bị.

5.2.2 Quyền truy cập

Quyền truy cập - cũng là một trong những phát sinh trên hệ thống đa tài khoản Linux.Nhờ có nó mà bạn có thể đọc,ghi,xoá chúng.

Quyền truy cập được lưu trữ ở dạng bốn con số thuộc cơ số tám.Mỗi số đại diện cho một quyền hạn với một block riêng.Block chủ sở hữu,block nhóm,và block cho các đối tượng còn lại.Bốn số hệ tám này sử dụng để lưu lại thông tin đặc biệt như :ID chủ sở hữu,ID nhóm sở hữu,"sticky" bits.Giá trị các số này tương ứng với quyền hạn sử dụng(Nó có thể sử dụng chữ để diễn tả và được hiển thị bởi các chương trình như ls và có thể sử dụng với chmod:
Kiểu
Giá trị (cơ số 8)
Chữ
"sticky" bits
1
t
set user ID
4
s
set group ID
2
s
read
4
r
write
2
w
execute
1
x

Gía trị của các nhóm quyền hạn có thể cộng lại.Chẳng hạn bạn muốn quyền hạn của nhóm là "read" và "write" thì bạn có thể sử dụng giá trị "6".Quền hạn theo ngầm địng của bash:

$ ls -l /bin/bash
-rwxr-xr-x   1 root     bin  477692 Mar 21 19:57 /bin/bash

Trong ví dụ trên ta thấy tiền tố đầu "-" là dùng chỉ định rằng đấy là tệp tin,còn nếu là "d" - dành cho catalog.Bạn nhìn thấy ba nhóm quền hạn sử dụng(chủ sở  hữu,nhóm sở hữu,nhóm còn lại),trong đó chủ sở hữu có quền hạn "rwx"(đọc,ghi,thực thi),còn nhóm sở hữu có quyền hạn "r-x"(đọc,thực thi) và các nhóm còn lại có quyền hạn "r-x"(đọc,thực thi).

Vậy chúng ta sẽ gán quền hạn sử dụng cho các tệp tin như thế nào.Bạn hãy quan sát ví dụ sau:

$ touch /tmp/example
$ ls -l /tmp/example
-rw-rw-r-  1 david    users    0 Apr 19 11:21 /tmp/example

Chúng ta sử dụng chmod(1)("change mode"- thay đổi cách thức) để tiến hành gán quền hạn sử dụng cho tệp tin

Hãy cộng các số(trong cơ số 8) để có được quền hạn mà bạn muốn.Để cho chủ sở hữu có đủ quền hạn(đọc,ghi,thực thi) thì bạn cần sử dụng số 7,(đọc và thực thi) là số 5.Chúng ta hãy tiến hành gán chúng cho tệp tin:

$ chmod 755 /tmp/example
$ ls -l /tmp/example
-rwxr-xr-x   1 david    users    0 Apr 19 11:21 /tmp/example

Tuy nhiên bạn có thể ghĩ rằng tại sao lại không xác định ngay quền hạn theo ngầm định cho các tệp tin mới được tạo ra?.Câu trả lời rất đơn giản.Bash có thể thực hiện được điều này với sự giúp đỡ của umask.Đây là một trong các ứng dụng tiêu chuẩn trên các phiên bản Unix.Nó xác định quền hạn mặc định cho các tệp tin mới được sinh ra.Giá trị ngầm định của nó là 0022.

$umask
0022

Bây giờ hãy xác định giá trị mặc định cho hệ thống là 0077

#umask 0077
$touch tempfile
$ls -l tempfile
-rw-------- 1 david    users     0 Apr  19 11:21  tempfile

Bạn có thể xem man-pages để có thêm thông tin.
Để tạo ra quền hạn đặc biệt thì bạn hãy cộng các số lại và đặt chúng ở cột đầu tiên.

$ chmod 6755 /tmp/example
$ ls -l /tmp/example
-rwsr-sr-x   1 david    users    0 Apr 19 11:21 /tmp/example 

Tuy nhiên nếu bạn khó khăn trong việc nhớ các số thì hãy sử dụng các chữ in.

chủ sở hữu         u
nhóm                  g
nhóm còn lại      a

Để làm giống như trên bạn cần thực hiện những lệnh sau:

$ chmod a+rx /tmp/example
$ chmod u+w /tmp/example
$ chmod ug+s /tmp/example

Một vài thích làm việc với các chữ in,tuy nhiên kết qủa vẫn là như nhau.Tóm lại chúng ta phải nhớ  cách gán quền hạn sử dụng tệp tin cho tài khoản và nhóm tài khoản.Có khi nào đó bạn không hiểu nó là cái gi?Có thể nói thông thường như sau:Khi bạn khởi động một tệp tin mà có các quền hạn như trên,còn bạn chỉ là một người sử dụng  thông thường.Thật là công bằng,nó sẽ được thực hiện với các quền hạn có sẵn mà bạn có.Tuy nhiên với sự giúp đỡ của "set user ID" thì bạn có thể bắt nó chạy với quền chủ sở hữu(ví dụ "root"),còn "set group ID" cũng tương tự nhưng dành cho nhóm.
Hãy cận thận,bởi vì "set user ID và set group ID" có thể làm ảnh hưởng đến an toàn của hệ thống.Nếu như bạn cài đặt quền hạn bằng root thì tất cả các tài khoản khác cũng có thể sử dụng nó như root.Nó là cả một vấn đề an toàn trên hệ thống của bạn.

5.2.3 Liên kết(link)

Link chính là một ảnh lên files.Sử dụng link khi bạn tạo ra các tệp tin mà có thể truy cập được từ nhiều vị trí khác nhau,với nhiều tên khác nhau.Có hai loại link khác nhau:Liên kết trực tiếp(Link hard),Liên kết gián tiếp(link soft).

Link trực tiếp:Đấy đơn giản chỉ là những tên khác nhau của cùng một tệp tin.Nó thực hiện được chỉ trong cùng một catalog và bị  xoá khi mà tệp tin gốc xoá.Trong một vài trường hợp có lợi nhưng hầu như đông đảo đều sử dụng liên kết gián tiếp.

Link gián tiếp: Có thể kết nối với những tệp tin ở bên ngoài catalog hiện hành.Khách quan thì nó là một tệp tin nhỏ chứa đầy đủ các thông tin cần thiết.Bạn có thể bổ sung,xoá bổ liên kết mà không ảnh hưởng đến tệp tin gốc.

Hầu như các Link không được gán quyền hạn truy cập,mà thay vào đó nó hiển thị quyền hạn của tệp tin mà nó kết nối đến.Trong Slackware sử dụng liên kết gián tiếp là chủ yếu:

$ ls -l /bin/sh
lrwxrwxrwx   1 root     root     4 Apr  6 12:34 /bin/sh -> bash

Vỏ lệnh sh trong Slackware trên thực tế chính là bash.Bạn có thể xóa bỏ link bằng rm.Còn tạo link bằng ln.Bạn có thể đọc man-pages của chúng để có thêm thông tin.

5.2.4 Mount devices(Kết nối các thiết bị)

Như đã nói trong phần "Cấu trúc hệ thống tệp tin",tất cả các disk cũng như các thiết bị khác trong Linux được xem như là một hệ thống các tệp tin.Những phân vùng đĩa cứng,CD-ROM,ổ đĩa compact....chúng thuộc trên cùng một cây thư mục.Để kết nối chúng với các hệ thống tệp tin bạn cần sử dụng lệnh mountumount.

Một vài hệ thống tự kết nối trong quá trình khởi động máy tính.Chúng được liệt kê ở file /etc/fstab.Bạn muốn chúng tự động kết nối ,hãy khai báo chúng ở đây(trên một dòng).Còn các thiết bị khác thì hãy sử dụng bằng lệnh nếu muốn sử dụng chúng.

$cat /etc/fstab
dev/sda1     /       ext2  defaults 1  1
/dev/sda2   /usr/local   ext2 defaults 1  1
/dev/sda4 /home ext2 defaults 1  1
/dev/sdb1 swap swap defaults 0  0
/dev/sdb3 /export ext2 defaults 1  1
none /dev/pts devpts gid=5,mode=620  0  0
none /proc proc defaults 0  0
/dev/fd0 /mnt ext2 defaults 0  0
/dev/cdrom /cdrom iso9660   ro 0  0

Ở cột đầu tiên chỉ ra tên thiết bị.Trong trường hợp này có năm phần  của hai đĩa cứng SCSI và hai hệ thống files đặc biệt(không cần tới hệ thống  files),floppy và ổ đĩa CD-ROM.Cột thứ hai cho biết các thiết bị sẽ kết nối đi đâu.Catalog đó nhất thiết là phải tồn tại(trừ phân vùng swap).Cột thứ ba cho biết định dạng hệ thống tệp tin cho thiết bị.Thông thường  định dạng cho Linux là ext2(hệ thống tệp tin mở rộng thứ hai).Còn đối với CD-ROM sẽ là iso9660,còn đối với Windows là vfat hoặc msdos.

Cột thứ tư  liệt kê các chọn lựa mà sử dụng khi mount các thiết bị.Thông thường là "defaults".Tuy nhiên khi mà gán quền truy cập cho thiết bị chỉ đọc thì khuyến khích là "ro".Có rất nhiều các chọn lựa khác nhau nữa,bạn có thể xem man-pages để biết thêm thông tin.Hai cột cuối cùng sử dụng cho chương trình fsck và các lệnh khác.

Khi cài đặt Slackware Linux,chương trình sẽ xây dựng lên tệp tin fstab một cách tối thiểu.Bạn có thể bổ sung,soạn thảo lại theo mục đích của mình.

mount và umount

Trong Linux việt kết nối các thiết bị rất đơng giản.Công việc phải làm là chạy ứng dụng mount và chỉ ra một vài tham biến đi kèm với nó.Sử dụng lệnh này trên thực tế nhỏ gọn hơn so với việc ghi chép vào /etc/fstab.Giả sử bạn muốn kết nối với CD-ROM (tất nhiên fstab như trong ví dụ trên),hãy thực hiện lệnh sau:

#mount /cdrom

Để làm được điều này thì rõ ràng trong fstab phải đã có sẵn một dòng cho thiết bị CD-ROM rồi,mount chỉ việc lấy các tham số trong đó và thực hiện công việc của mình.Nếu như trong fstab không có các thông tin về CD-ROM thì bạn phải chỉ ra bằng tay trên lệnh

# mount -t iso9660 -o ro /dev/cdrom /cdrom

Dòng lệnh này cũng như trong fstab nhưng trong một dạng hình khác.Chúng ta hãy xem xét kĩ hơn các tham biến.

"-t iso9660" đây là định dạng hệ thống files cho thiết bị cd-rom
"-o ro" thiết bị kết nối chỉ dùng cho đọc
/dev/cdrom tên của thiết bị mà sẽ kết nối tới /cdrom(catalog này mình có thể thay đổi)

Cách ngắt kết nối với các thiết bị như thế nào(tại thời điểm hiện tại chúng đang mounted).Bạn cần phải ngắt chúng ra bằng lệnh umount.Tuy nhiên tai sao không phải là unmount.Hic..câu này khó quá chúng tôi không thể nào trả lời được có lẽ tác giả không muốn như vậy.Bạn có thể sử dụng tên của thiết bị hoặc là tên của điểm mounted sau lệnh umount.Ví dụ sau dùng để ngưng kết nối với đĩa cd-rom của bạn:

# umount /dev/cdrom
# umount /cdrom

5.2.5 NFS ( Network Filesystem)

NFS không là hệ thống tệp tin hiện thực nhưng mà có thể sử dụng để kết nối với các thiết bị khác qua mạng.

Hầu như trong các mạng Unix lớn,công việc phân chia tài nguyên là rất cần thiết.Vấn đề đó được giải quyết bởi NFS.Nó có thể phân chia một tổ hợp catalog home giữa các trạm với nhau.Khi đó các tram này kết nối(mount) với catalog này và sử dụng nó như là nó trực thuôc của trạm.Xem phần 4.2.6 và man-pages để có thêm thông tin về exports(5),nfsd(5) và mount.

Mục Lục

Biên dịch: Vũ Dũng(vudung@mail.ru)
website:http://khigiacmoquayve.narod.ru
1-9-2005 Voronezh Russian
Hosted by uCoz