4.5 Quyền truy cập đến tập tin và thư mục
75
bit này chia thành ba nhóm, mỗi nhóm 3 bit. Ba bit đầu tiên xác định quyền của
chủ sở hữu, ba bit tiếp theo – quyền của nhóm sở hữu, ba bit cuối cùng – quyền
của những người dùng còn lại (tức là tất cả những người dùng, trừ chủ sở hữu và
nhóm sở hữu tập tin). Khi này nếu bit tương ứng có giá trị bằng “1”, thì có quyền
đó, còn nếu bằng “0” thì quyền đó bị tước mất. Ở dạng chữ cái thì “1” được thay
thế bằng các chữ cái tương ứng (r, w hoặc x), còn “0” thể hiện ở dạng dấu gạch
ngang.
Quyền đọc r tập tin có nghĩa là người dùng có thể xem nội dung tập tin bằng
các chương trình xem khác nhau, ví dụ more, hoặc bằng các trình soạn thảo văn
bản. Nhưng khi soạn thảo bạn sẽ không thể lưu những thay đổi trong tập tin lên
đĩa, nếu không có quyền ghi w vào tập tin này. Quyền thực thi (tôi thích dùng
thuật ngữ
quyền gọi) có nghĩa là bạn đọc có thể nạp tập tin vào bộ nhớ và thử
chạy mã này giống như trường hợp chương trình. Tất nhiên nếu trên thực tế tập
tin không phải là chương trình (hoặc các script shell, perl, . . . ) thì không thể gọi
tập tin, nhưng ngược lại nếu tập tin là chương trình mà không có quyền gọi thì
cũng không thể chạy chương trình đó.
Như vậy là chúng ta đã biết được trên Linux những tập tin nào là có thể thực
thi. Bạn thấy không, phần mở rộng của tập tin ở đây không có liên quan gì, tất
cả đều do tính chất “thực thi” đặt ra, và khác với các HĐH của Microsoft không
phải ai cũng có quyền gọi tập tin.
Nếu vẫn thực hiện câu lệnh ls -l nhưng tham số không phải là tên tập tin
mà là tên thư mục thì chúng ta sẽ thấy thư mục cũng có quyền truy cập và cũng
vẫn những chữ cái r, w, x nói trên được dùng để xác định quyền truy cập đến
thư mục. Ví dụ, nếu thực hiện câu lệnh:
[user]$ ls -l /usr
thì sẽ thấy dòng tương ứng với thư mục share như sau:
drwxr-xr-x 128 root root
4096 2006-09-07 02:20 share
Tất nhiên là đối với thư mục thì ý nghĩa của các khái niệm “
quyền đọc”, “quyền
ghi” và “quyền gọi” có thay đổi một chút. Quyền đọc đối với thư mục thì hết sức
dễ hiểu, nếu chúng ta nhớ rằng thư mục cũng chỉ là tập tin lưu danh sách các
tập tin khác trong thư mục đó. Cho nên nếu người dùng có quyền đọc thư mục,
thì tức là có thể xem nội dung của thư mục (có thể nói khác là xem danh sách
tập tin trong thư mục). Quyền ghi cũng dễ hiểu. Khi có quyền này, người dùng
có thể tạo và xóa các tập tin trong thư mục, tức là thêm vào hoặc xóa khỏi thư
mục dòng lưu thông tin về một tập tin nào đó và các liên kết tương ứng. Quyền
gọi đối với thư mục có hơi khó hiểu một chút. Trong trường hợp này quyền gọi chỉ
quyền chuyển vào thư mục này. Nếu bạn đọc là chủ sở hữu thư mục và muốn cho
những người dùng khác quyền xem một tập tin nào đó trong thư mục của mình
thì cần phải cho họ quyền truy cập (chuyển) vào thư mục này, tức là cho những
người dùng khác “quyền gọi” (thực thi) thư mục. Hơn nữa còn cần phải cho người
dùng “quyền gọi” đối với tất cả các thư mục nằm trước thư mục này trong cây thư
mục. Chính vì vậy mà theo mặc định tất cả các thư mục có đặt quyền gọi cho chủ
sở hữu cũng như nhóm và những người dùng khác. Và tất nhiên nếu muốn ngăn
chặn truy cập vào thư mục thì chỉ cần bỏ đi quyền chuyển vào thư mục (r) của