H th ng t p tin c a unix
16 Tháng 3
H th ng t p tin c a Linux và Unix đ c t ch c theo m t h th ng phân b c t ng t c u ượ ươ
trúc c a m t cây phân c p. B c cao nh t c a h th ng t p tin là th m c g c, đ c ký hi u ư ượ
b ng g ch chéo “/” (root directory). Đ i v i các h đi u hành Unix và Linux t t các thi t b ế
k t n i vào máy tính đ u đ c nh n d ng nh các t p tin, k c nh ng linh ki n thi t b nhế ượ ư ế ư
đĩa c ng, các phân vùng đĩa c ng và các USB. Đi u này có nghĩa là t t c các t p tin và
th m c đ u n m d i th m c g c, ngay c nh ng t p tin bi u t ng cho các đĩa c ng. ư ướ ư ượ
N m d i th m c g c (/) có m t lo t các th m c quan tr ng c a h th ng t p tin đ c ướ ư ư ượ
công nh n t t c các b n phân ph i Linux khác nhau. Sau đây là danh sách các th m c ư
thông th ng đ c nhìn th y d i th m c g c (/) :ườ ượ ướ ư
/bin – ch a các ng d ng quan tr ng (binary applications),
/boot – các t p tin c u hình cho quá trình kh i đ ng h th ng (boot configuration files),
/dev – ch a các t p tin là ch ng nh n cho các thi t b c a h th ng (device files) ế
/etc – ch a các t p tin c u hình c a h th ng, các t p tin l nh đ kh i đ ng các d ch
v c a h th ng…
/home – th m c này ch a các th m c cá nhân c a nh ng ng i có quy n truy c pư ư ườ
vào h th ng (local users’ home directories),
/lib – th m c này l u các th vi n chia s c a h th ng (system libraries)ư ư ư
/lost+found – th m c này đ c dùng đ l u các t p tin không có th m c m ư ượ ư ư
đ c tìm th y d i th m c g c (/) sau khi th c hi n l nh ki m tra h th ng t p tinượ ướ ư
(fsck).
/media – th m c này đ c dùng đ t o ra các t p tin g n (loaded) t m th i đ c hư ượ ượ
th ng t o ra khi m t thi t b l u đ ng (removable media) đ c c m vào nh đĩa CDs, ế ư ượ ư
máy nh k thu t s
/mnt – th m c này đ c dùng đ g n các h th ng t p tin t m th i (mountedư ượ
filesystems),
/opt – th m c dùng d ch a các ph n m m ng d ng (optional applications) đã đ cư ượ
cài đ t thêm,
/proc – đây là m t th m c đ c bi t linh đ ng đ l u các thông tin v tình tr ng c a ư ư
h th ng, đ c bi t v các ti n trình (processes) đang ho t đ ng, ế
/root – đây là th m c nhà c a ng i qu n tr h th ng (root),ư ườ
/sbin – th m c này l u l i các t p tin th c thi c a h th ng (system binaries)ư ư
/sys – th m c này l u các t p tin c a h th ng (system files),ư ư
/tmp – th m c này l u l i các t p tin đ c t o ra t m th i (temporary files),ư ư ượ
/usr – th m c này l u và ch a nh ng t p tin c a các ng d ng chính đã đ c cài đ tư ư ượ
cho m i ng i dùng (all users), ườ
/var – th m c này l u l i t p tin ghi các s li u bi n đ i (variable files) nh các t pư ư ế ư
tin d li u và t p tin b n ghi (logs and databases).
đĩa và các Partition đ c xác đ nh theo d ng t p tin có quy c nh sau: ượ ướ ư
/dev/hda đĩa c ng IDE đ u tiên (chính)
/dev/hdb đĩa c ng IDE th hai (th c p)
/dev/sda đĩa c ng SCSI đ u tiên
/dev/sdb đĩa c ng SCSI th hai
/dev/fd0 đĩa m m đ u tiên
/dev/fd1 đĩa m m th hai
Trong đó quy t c phân vùng có đ c đi m khá ph c t p đi n hình l y vd chúng ta có m t
c ng IDE chính s có tên t p tin là /dev/had tuy nhiên n u chúng ta phân vùng đĩa thì s ế
quy c theo mã s nh sau ph n vùng chính s có tên t p tin hda1 và phân vùng logic s coướ ư
tên t p tin là hda5. Hay đ n gi n h n ch có th có 4 phân vùng chính có s th t t 1 à 4 ơ ơ
(hda1, hda2, hda3, hda4) trong khi đó các phân vùng logic thì b t đ u t 5 (hda5,hda6…)ắầừ
Thông qua l nh ls chúng ta s có đ c thông tin c a m t t p tin trong h th ng. Ví d chúng ượ
ta có thông tin m t t p tin nh sau: ư
P/s: đ xem thông tin m t file dùng l nh ls-l <file path>
1. Xác đ nh thông tin các quy n truy c p t p tin
D u ‘-‘ đ u tiên xác đ nh lo i t p tin
Ký hi uÝ nghĩa
- T p tin thông th ng ườ
b T p tin đ c bi t Block
c T p tin đ c bi t ký t
d Th m cư
l T p tin liên k t (m m/c ng) ế
Chu i còn l i chia ra 3 đo n t ng ng v i m i đo n là quy n xác đ nh cho ch s ươ
h u, nhóm s d ng và ng i dùng khác đ i v i m i đ i t ng nh th t n t i 3 ườ ượ ư ế
quy n căn b n là read – writer – execute ký hi u t ng ng là r-w-e còn ký hi u ‘-‘ ươ
ch ng t không có quy n.
trên đã đ c p đ n 3 lo i quy n truy c p đ i v i file là read, write, execute; c th h n thì ế ơ
1. read: quy n đ c file và do đó có th sao chép l i file. Khi có quy n đ c file thì
không có nghĩa là có quy n ghi (s a đ i) file nh ng vì có th sao chép l i file ư
nên có th s a đ i b n sao chép.
2. write: quy n ghi file. Chú ý r ng có th có quy n ghi mà không có quy n đ c
m t file. Ví d : có file text “document.txt”. N u có quy n đ c và quy n ghi file ế
này thì ng i dùng có th dùng trình so n th o văn b n ườ vi, emacs, … đ hi n
th toàn b n i dung file và tìm nh ng ch không v a ý đ s a ch a. N u ch ế
có quy n ghi file mà không có quy n đ c thì ng i dùng không th dùng trình ườ
so n th o đ s a ch a file nh ng ng i dùng có th dùng l nh ư ườ cat
>>document.txt đ ghi thêm vào cu i file ho c cat >document.txt đ ghi đè
lên toàn b n i dung c a file.
3. execute: quy n th c thi file. Có hai lo i file có th th c thi đ c là: (1) file ượ
ch a các l nh máy mà CPU có th th c thi luôn đ c, nh ng file ki u này g i ượ
là executable file (2) file text ch a các l nh c n th c hi n, nh ng file ki u này
đ c g i là script. Quy n th c thi file đ c l p v i quy n đ c và ghi file. Ví dượ
có file script “Procedure” v i quy n th c thi mà không đ c, ghi; ng i dùng có ườ
th th c thi các l nh ch a trong file này nh ng không th m file ra xem các ư
l nh đó là gì và cũng không th thêm b t, s a ch a các l nh trong file này.
Vi c xóa, đ i tên m t file không đ c quy t đ nh b i quy n ghi v i file đó mà b i quy n ghi ượ ế
v i th m c ch a file đó. ư
Ba quy n read, write, execute cũng đ c áp d ng v i th m c nh ng ý nghĩa c a chúng thì ượ ư ư
khác hoàn toàn:
1. read: quy n đ c m t th m c là quy n li t kê các file, th m c con c a m t ư ư
th m c.ư
2. write: quy n ghi m t th m c là quy n t o m i, xóa, đ i tên file và th m c ư ư
con c a th m c. Có th x y ra tr ng h p: có quy n ghi m t file t c là s a ư ườ
ch a n i dung c a file nh ng l i không có quy n đ i tên, xóa file n u nh ư ế ư
không có quy n ghi v i th m c ch a file đó. ư
3. execute: quy n th c thi m t th m c là quy n “đi vào” th m c, ch ng h n ư ư
b ng l nh cd. Có th x y ra tr ng h p: có quy n th c thi nh ng l i không có ườ ư
quy n đ c m t th m c. Khi đó có th “cd” m t th m c nh ng l i không th ư ư ư
“ls” nó ra.
Khi th m c không có quy n excute thì không th truy c p n i dung các file trong th m c đó.ư ư
Ví d : gi s user U1 có file FileOfU1 đ t trong /home/U1 mu n chia s v i các user khác nên
đã đ t quy n r, w cho file. Tuy nhiên b n thân th m c /home/U1 khi đ c t o ra đã b m c ư ượ
đ nh là không có quy n excute nên các user khác không th đ c, ghi file /home/U1/FileOfU1
đ c.ượ
Ch s h u và root có quy n thay đ i quy n truy c p đ i v i c 3 lo i đ i t ng: ch s ượ
h u (user), nhóm ch s h u ( group), nh ng user khác không thu c 2 lo i trên ( others).
L nh thay đ i quy n truy c p: chmod <quy n> <file> (vi t t t chmod = change mode)ế
Có 2 cách bi u di n <quy n>: b ng kí t ho c b ng ch s
- Cách 1: Bi u di n quy n b ng kí t : quy n đ c bi u di n b ng t h p 3 lo i kí t sau ượ
Ví d :
chmod u+r,o+s myfile
chmod uo=rx,g=- myfile
chmod a=rwx myfile (ó chmod ugo=rwx myfile)
chmod +x myfile (ó chmod u+x,g+x,o+x myfile)
Chú ý: chmod u+r,o+x myfilechmod u=r,o=x myfile là hai l nh khác nhau
- Cách 2: Bi u di n quy n b ng ch s octal: dùng 3 ch s đ bi u di n quy n c a 3 lo i
đ i t ng u, g, o. Giá tr m i ch s octal bi u di n m t quy n theo b ng sau: ượ
Ví d :
chmod 567 myfile (ó chmod u=rx,g=wx,o=rwx myfile)
chmod 640 myfile (ó chmod u=wx,g=x,o=- myfile)
Ngoài 3 ch s cho quy n r, w, x còn có th có thêm ch s cho UID, GID, Sticky bit đ ng
đ u nh trong l nh ư chmod 1640 myfile
SUID, SGID, sticky bit
Ngoài 3 quy n c b n là là read, write, execute; còn có 3 quy n đ c bi t khác là setUID, ơ
setGID, sticky bit.
Set UID và Set GID cho file
SUID (set User ID) ho c SGID (set Group ID) là vi c c u hình cho m t file đ khi b t kì m t
user ho c m t process nào th c thi file đó đ u có quy n nh th user ho c process đó là ch ư
s h u ho c thu c nhóm ch s h u c a file.
Ví d : root s h u file “program” (executable file); root đ t quy n execute cho m i user. Do
đ c tính c a program mà khi đ c th c thi nó c n ng i th c thi là root. N u m t normal user ượ ườ ế
ch y (th c thi) program thì s b báo l i không là root. Do v y đ m t user b t kì có th ch y
đ c program thì root c n set user id cho program.ượ
Set user id cho m t file: chmod u+s myfile (ho c d ng t t chmod +s
myfile)
Set group id cho m t file: chmod g+s myfile
N u dùng l nh ls-l cho m t file đã đ c set UID ho c GID thì s th y kí t x ch quy nế ượ
execute đã đ c thay th b ng kí t s. Ví d :ượ ế
-rws–x–x 1 root root 14024 Sep 9 1999 file1
-rwxr-sr-x 1 root mail 12072 Aug 16 1999 file2