Lệnh chmod (change mode) và chown (change owner) được sử dụng để kiểm soát truy cập vào các tệp trong Linux.
chmod cho phép thay đổi quyền (read, write, execute) của các tệp và thư mục. chown cho phép thay đổi chủ sở hữu (user, group) của một tệp hoặc thư mục nhất định.
chmod
Lệnh chmod có một vài cách sử dụng khác nhau với các quyền được đặt theo số hoặc bằng chữ cái.
Có thể bạn đã từng gặp cú pháp dạng như thế này:
<?php
chmod("/somedir/somefile.txt", 764);
chmod("/somedir/somefile2.txt", "u+rwx,go+rx");
?>
Đây là đoạn mã phân quyền sử dụng php, hãy để ý các ký tự 764
và u+rwx,go+rx
, chúng ta sẽ tìm hiểu ý nghĩa của chúng.
Sử dụng số
Khi sử dụng số ví dụ 764
thì vị trí đầu tiên (số 7) là quyền của người dùng, vị trí thứ 2 (số 6) là quyền của nhóm, vị trí thứ 3 (số 4) là quyền của người dùng khác.
Quyền được tạo ra sẽ được tính bằng tổng của các con số được quy ước như sau:
Number | Permission |
---|---|
4 | Read |
2 | Write |
1 | Execute |
Như vậy với 764
ta có:
- Người dùng: 7 = 4 + 2 + 1 = read + write + execute
- Nhóm: 6 = 4 + 2 = read + write
- Người dùng khác: 4 = read
Cú pháp:
chmod 764 /somedir/somefile.txt
Sử dụng chữ cái
Sử dụng lệnh chmod với các quyền được đặt bằng chữ cái có vẻ tường minh dễ nhớ hơn =)).
Quy ước:
- u = người dùng
- g = nhóm
- o = người khác
- a = tất cả
- Và các quyền cơ bản được cung cấp bao gồm read (r), write (w) và execute (x).
Cú pháp:
Thay vì sử dụng 764
, ta có thể sử dụng u+rwx,g+rw,o+r
cũng đều có ý nghĩa giống nhau.
chmod u+rwx,g+rw,o+r /somedir/somefile.txt
Nếu muốn tất cả người dùng đều có thể read + write + execute. Ta có thể thực hiện như sau:
chmod a+rwx /somedir/somefile.txt
Hoặc:
chmod +rwx /somedir/somefile.txt
Nếu muốn phân quyền bao gồm luôn cho các thư mục con, ta bổ sung option -R
(recursive)
chmod -R u+rwx,g+rw,o+r /somedir
chown
Cú pháp của lệnh chown rất đơn giản. VD:
chown -R chungtran:admin /somedir
Lệnh này có ý nghĩa như sau:
Hey babe, cho người dùng chungtran từ nhóm admin làm chủ sở hữu của thư mục /somedir và các thư mục con của nó giúp tôi nha.