Lệnh chmod (change mode)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ự 764u+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.