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.txtSử 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.txtNế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.txtHoặc:
chmod +rwx /somedir/somefile.txtNế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 /somedirchown
Cú pháp của lệnh chown rất đơn giản. VD:
chown -R chungtran:admin /somedirLệ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.