78
Làm quen với hệ thống tập tin ext3fs
Nếu bạn biết về mã đôi của hệ cơ số tám, thì hiểu rằng những số đứng sau tên
lệnh không phải gì khác mà chính là bản ghi ở hệ cơ số tám của 9 bit xác định
quyền truy cập cho chủ sở hữu, nhóm sở hữu và những người dùng còn lại.
Chỉ có chủ sở hữu tập tin hoặc người dùng cao cấp mới có khả năng thay đổi
quyền truy cập bằng câu lệnh chmod. Để có thể thay đổi quyền của nhóm sở hữu,
thì chủ sở hữu (không phải root) phải là thành viên của nhóm đó.
Để kết thúc bài học về quyền truy cập đến tập tin cần nói thêm về những tính
chất khác có thể gặp của tập tin mà cũng xác định bằng lệnh chmod. Đó là những
tính chất cho các tập tin thực thi. Trong mô tả inode, phần cấu trúc 2 byte xác
định tính chất tập tin, chúng chiếm các vị trí 5 – 7 ngay sau mã cho biết dạng
tập tin. Tính chất đầu tiên đó là “
bit thay đổi ID
người dùng”. Ý nghĩa của bit
này như sau.
Thông thường, khi người dùng gọi thực hiện một chương trình nào đó, thì
chương trình này nhận được những quyền truy cập đến tập tin và thư mục của
người dùng đã chạy nó. Nếu như có đặt “bit thay đổi ID người dùng”, thì chương
trình nhận được quyền truy cập đến tập tin và thư mục của chủ sở hữu tập
tin chương trình. Như vậy bit này còn có thể gọi là “
bit thay đổi ID chủ sở hữu
tiến trình”. Điều này cho phép giải quyết một số vấn đề khó thực hiện. Ví dụ
điển hình nhất là câu lệnh thay đổi mật khẩu passwd. Tất cả mật khẩu được
lưu trong tập tin /etc/passwd (hoặc một tập tin mã hóa nào khác, trong đa số
trường hợp là /etc/shadow) mà chủ sở hữu là người dùng cao cấp root. Vì thế
chương trình nếu do người dùng chạy sẽ không thể thực hiện lệnh ghi vào tập tin
này. Có nghĩa là người dùng không thể thay đổi mật khẩu của mình. Nhưng tập
tin /usr/bin/passwd có “bit thay đổi ID người dùng”, và root là chủ sở hữu tập
tin chương trình này. Do đó chương trình thay đổi mật khẩu passwd được chạy
với quyền root và nhận được quyền ghi vào tập tin /etc/passwd. Tất nhiên là
trong chương trình passwd đã có mã để người dùng chỉ được phép thay đổi một
dòng trong tập tin này – dòng tài khoản của người dùng đó.
Người dùng cao cấp root có thể đặt “bit thay đổi ID người dùng” bằng lệnh:
[root]# chmod +s tên_tập_tin
Tương tự như vậy chúng ta có “
bit thay đổi ID nhóm”. Ý nghĩa của bit này
cũng giống như trên nhưng chỉ thay thế “người dùng” bằng “nhóm”.
Một tính chất nữa của tập tin thực thi đó là “
bit dính” (chính xác hơn là “bit
lưu chương trình”) hay thuật ngữ tiếng Anh là “sticky bit”. Chúng ta sẽ dùng
thuật ngữ “bit lưu chương trình” vì đúng với ngữ cảnh này hơn. Bit này chỉ hệ
thống biết sau khi dừng chương trình cần lưu lại nó trong bộ nhớ. Rất thuận tiện
khi đặt bit này cho những chương trình thường gọi, vì trong trường hợp này sẽ
tiết kiệm được thời gian nạp chương trình vào bộ nhớ mỗi lần chạy. Bit này chỉ
cần thiết trên những máy cũ. Trên những máy “top model” (high end) hiện đại
thì rất hiếm khi sử dụng.
Nếu sử dụng phương án xác định tính chất ở dạng số của lệnh chmod, thì giá
trị của ba tính chất vừa nói phải nằm trước những số xác định quyền truy cập
(tức là số đầu tiên trong dãy 4 số xác định tất cả các tính chất của tập tin). Ví dụ:
10
Identificator, mỗi người dùng có một ID dạng số như vậy. ID của người dùng là duy nhất, không trùng lặp.
Ví dụ ID của người dùng cao cấp root là 0.