Dự án mới của mình là gamehow.net, mời anh em ghé thăm và góp ý ạ.

Cách dùng lệnh Chmod trong Linux

Trong bài này chúng ta sẽ tìm hiểu lệnh chmod trong Linux, đây là lệnh dùng để phân quyền vào các file và thư mục trên Linux.

Trong Linux, để truy cập được vào file thì bạn phải được thiết lập quyền trên file đó, thông qua các thuộc tính và quyền sở hữu file. Điều này đảm bảo rằng chỉ những người dùng và quy trình được ủy quyền mới có thể truy cập vào file và thư mục.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

1. Các quyền của file trong Linux

Trước khi học cách sử dụng lệnh chmod để phân quyền thì chúng ta hãy xem danh sách các quyền có trên file đã nhé.

Các đối tượng truy cập file

Trong Linux, mỗi file sẽ được liên kết với một chủ sở hữu và nhóm sở hữu, và được gán quyền thông qua ba cấp độ người dùng khác nhau như sau:

  • Chủ sở hữu file (owner).
  • Các thành viên trong nhóm (group).
  • Những người khác (other user)

Quyền sở hữu file có thể được thay đổi bằng lệnh chownchgrp.

Các loại quyền trên file

Có ba loại quyền trên một file gồm:

  • Quyền đọc - read (r)
  • Quyền viết / sửa - write (w)
  • Quyền thực thi - execute (x)

Dựa vào hai khái niệm này bạn có thể thiết lập các quyền cho các đối tượng.

Để xem thông tin chi tiết phân quyền của một file thì bạn sử dụng lệnh ls như sau:

ls -l filename.txt

Kết quả sẽ trả về một chuỗi gồm các thông tin về phân quyền, tên file, và các thông tin hữu ích khác như sau:

-rw-r--r-- 12 freetuts users 12.0K Apr  8 20:51 filename.txt
|[-][-][-]-   [------] [---]
| |  |  | |      |       |
| |  |  | |      |       +-----------> 7. Group - nhóm sở hữu
| |  |  | |      +-------------------> 6. Owner - chủ sở hữu
| |  |  | +--------------------------> 5. Alternate Access Method
| |  |  +----------------------------> 4. Other users Permissions
| |  +-------------------------------> 3. Group Permissions
| +----------------------------------> 2. Owner Permissions
+------------------------------------> 1. File Type

Giải thích cụ thể như sau:

Ký tự đầu tiên hiển thị loại file (File Type). Nó có thể là một file thông thường (-), thư mục (d), một symbolic link (l) hoặc bất kỳ loại file đặc biệt nào khác.

Chín ký tự tiếp theo đại diện cho việc phân quyền đối truy cập file đối với ba nhóm Owner (chủ sở hữu), Group (nhóm sở hữu), Other Users (người dùng khác). Chúng ta có ba loại quyền là r - w - x nên mỗi đối tượng sẽ có 3 ký tự, 3 nhóm là 9 ký tự.

Nếu quyền nào không có thì sẽ sử dụng dấu - để thay thế. Như trong ví dụ trên thì (rw-r--r--) có nghĩa là chủ sở hữu có quyền đọc và ghi (rw-), group và những người dùng khác chỉ có quyền đọc (r--).

Tham khảo bảng quyền trên file và thư mục dưới đây nhé.

Bảng quyền trên file Linux:

Permission Character Meaning on File
Read - Không có quyền đọc
r Có thể được đọc.
Write - Không được chỉnh sửa
w Có thể chỉnh sửa
Execute - Không thể thực thi.
x Có thể thực thi

Bảng quyền trên thư mục Linux:

Read - Không thể hiển thị nội dung của thư mục.
r Có thể hiện thị nội dung của thư mục
Write - Không thể thay đổi nội dung của thư mục.
w Có thể thay đổi nội dung của thư mục
Execute - Không thể thay đổi thư mục hiện tại bằng lệnh cd
x Có thể thay đổi thư mục bằng cd

2. Cú pháp lệnh chmod trong Linux

Cú pháp lệnh chmod trong Linux như sau:

chmod [OPTIONS] MODE FILE...

Lệnh chmod cho phép bạn thay đổi quyền bằng cách sử dụng chế độ symbolic, numeric hoặc reference file. Chúng ta sẽ lần lượt tìm hiểu ba loại này ở phần tiếp theo nhé.

Chỉ có tài khoản root, chủ sở hữu file (owner) hoặc người dùng có đặc quyền sudo mới có thể thay đổi quyền của file. Hãy hết sức cẩn thận khi sử dụng chmod, đặc biệt là khi gán quyền cho các file trong thư mục nhiều cấp sử dụng đệ quy -R..

3. Phân quyền bằng symbolic trong Linux

Cú pháp của lệnh chmod khi sử dụng chế độ symbolic như sau:

chmod [OPTIONS] [ugoa…][-+=]perms…[,…] FILE...

Tham số ugoa là nhóm đối tượng nào sẽ được xử lý quyền:

  • u = Chủ sở hữu (owner)
  • g = Nhóm người dùng (group)
  • o = Người dùng khác (other)
  • a = Tất cả user (all)

Nếu bạn không truyền tham số này vào lệnh thì nó sẽ lấy giá trị mặc định là a.

Tham số thứ hai là [-+=], dùng để xác định quyền sẽ được xóa, thêm hoặc thiết lập mới.

  • Dấu - là xóa bớt quyền
  • Dấu + là thêm quyền
  • Dấu = là gán lại quyền

Ví dụ 1: Cấp cho các thành viên nhóm sở hữu có quyền đọc file nhưng không được ghi và thực thi.

chmod g=r filename

Ví dụ 2: Cấp quyền thực thi cho tất cả users

chmod a-x filename

Ví dụ 3: Loại bỏ quyền ghi vào nhóm người dùng khác.

chmod -R o-w dirname

Ví dụ 4: Loại bỏ tất cả quyền đọc / ghi / thực thi cho tất cả người dùng.

chmod og-rwx filename

Hoặc

chmod og= filename

Ví dụ 5: Cấp quyền đọc, ghi và thực thi cho chủ sở hữu (owner), cấp quyền đọc cho nhóm sở hữu (group), và các đối tượng user khác không có quyền gì cả.

chmod u=rwx,g=r,o= filename

Ví dụ 6: Thêm các quyền của chủ sở hữu vào danh sách quyền của các thành viên trong nhóm sở hữu.

chmod g+u filename

4. Phân quyền bằng Numeric Method trong Linux

Cú pháp của lệnh chmod trong Linux khi sử dụng phương thức Numeric có định dạng sau:

chmod [OPTIONS] NUMBER FILE...

Khi sử dụng Numeric bạn có thể đặt quyền cho cả ba lớp người dùng (chủ sở hữu, nhóm và tất cả những người khác) cùng một lúc. Các con số có thể là 3 hoặc 4 chữ số cùng.

Khi sử dụng số có 3 chữ số thì chữ số đầu tiên thể hiện quyền của chủ sở hữu file, chữ số thứ hai là nhóm của file và chữ số cuối cùng cho tất cả những người dùng khác.

Mỗi quyền ghi, đọc và thực thi có giá trị số sau:

  • r (read) = 4
  • w (write) = 2
  • x (execute) = 1
  • no permissions = 0

Số quyền của một lớp người dùng được thể hiện bằng tổng giá trị của các quyền cho nhóm đó. Vậy để tìm hiểu các quyền của file ở chế độ Numeric ta chỉ cần tính tổng số cho tất cả các lớp người dùng.

Ví dụ 1: Để cấp quyền đọc, ghi và thực thi cho chủ sở hữu file, đọc và thực thi đối với nhóm của file và chỉ quyền đọc cho tất cả người dùng khác, bạn sẽ làm như sau:

  • Owner: rwx=4+2+1=7
  • Group: r-x=4+0+1=5
  • Others: r-x=4+0+0=4

Sử dụng phương pháp cộng chuỗi như trên chúng ta tính được quyền của file đó là 754.

Ví dụ 2: Cấp quyền cho owner là đọc và viết (4 + 2), quyền của group là chỉ đọc (4), các user còn lại cũng có quyền đọc (4).

Vậy tổng quyền của file này là 644.

chmod 644 dirname

5. Phân quyền bằng Reference File trong Linux

Lệnh chmod trong Linux có một tùy chọn tên là --reference, công dụng của nó là cấp quyền cho file y chang như file được chỉ định. Cú pháp như sau:

chmod --reference=REF_FILE FILE

Ví dụ: lệnh sau sẽ gán quyền của file1 cho file2.

chmod --reference=file1 file2

6. Lệnh chmod gán quyền đệ quy cho các file bên trong

Bạn muốn lệnh gán quyền áp dụng cho tất cả các file nằm bên trong thư mục đang gán quyền thì hãy sử dụng thêm tham số -R (--recursive).

chmod -R MODE DIRECTORY

Ví dụ: Để thay đổi quyền của tất cả các file và thư mục con trong thư mục /var/www thành 755 thì ta chạy lệnh sau:

chmod -R 755 /var/www

7. Lệnh chmod trên Symbolic Links

Trên Symbolic Links thì các quyền luôn là 777.

Theo mặc định, khi thay đổi quyền cho Symbolic Links thì file mà Symbolic Links liên kết tới cũng thay đổi theo.

Cách sử dụng lệnh chmod trên Symbolic Links cũng tương tự như trên file.

chmod 755 symlink

8. Thay đổi quyền hàng loạt các file

Đôi khi bạn cũng muốn thay đổi quyền cho hàng loạt các file và thư mục.

Tình huống phổ biến nhất là thay đổi đệ quy quyền của các file file trong trang web thành 644 và quyền của thư mục thành 755.

Chúng ta sử dụng numeric:

find /var/www/my_website -type d -exec chmod 755 {} \;
find /var/www/my_website -type f -exec chmod 644 {} \;

Sử dụng symbolic:

find /var/www/my_website -type d -exec chmod u=rwx,go=rx {} \;
find /var/www/my_website -type f -exec chmod u=rw,go=r {} \;

Như vậy là chúng ta đã tìm hiểu xong cách sử dụng lệnh chmod trong Linux, đây là lệnh dùng để phân quyền rất phổ biến và được sử dụng rất nhiều khi quản trị Linux server.

Cùng chuyên mục:

Cách dùng lệnh Users trong Linux để xem user đang online

Cách dùng lệnh Users trong Linux để xem user đang online

Nếu bạn đang là quản trị viên thì việc quản lý thông tin / xem…

Cách sử dụng lệnh Wall trong Linux

Cách sử dụng lệnh Wall trong Linux

Wall là một công cụ dòng lệnh giúp hiển thị thông báo đến tất cả…

Cách dùng lệnh Whereis trong Linux

Cách dùng lệnh Whereis trong Linux

Whereis là một tiện ích dòng lệnh command line, nó cho phép bạn tìm ..

Cách sử dụng lệnh Which trong Linux

Cách sử dụng lệnh Which trong Linux

Linux dùng lệnh which để xác định vị trí file thực thi của lệnh mà…

Cách sử dụng lệnh whoami trong Linux

Cách sử dụng lệnh whoami trong Linux

Giống như tên gọi của nó, lệnh whoami in tên người dùng đang chạy ...

Cách dùng lệnh zcat trong Linux

Cách dùng lệnh zcat trong Linux

Mặc dù tính năng nén file rất hữu ích vì nó giúp ta tiết kiệm…

Hiểu rõ hơn về chmod 777 trong Linux

Hiểu rõ hơn về chmod 777 trong Linux

Bạn đang xây dựng một website và sử dụng tính năng upload ...

Cách sử dụng lệnh tail trong Linux

Cách sử dụng lệnh tail trong Linux

Mặc định thì lệnh tail sẽ hiển thị 10 dòng cuối cùng của file, thông…

Cách sử dụng lệnh Head trong Linux

Cách sử dụng lệnh Head trong Linux

Trong quá trình quản trị dữ liệu trên Linux đôi khi bạn muốn xem nhanh…

Cách sử dụng lệnh Whatis trong Linux

Cách sử dụng lệnh Whatis trong Linux

Trong bài này chúng ta sẽ tìm hiểu lệnh whatis trong ...

Cách sử dụng lệnh kill trong Linux

Cách sử dụng lệnh kill trong Linux

Linux là một hệ điều hành rất nhanh nhưng không phải lúc nào nó không…

Cách dùng lệnh who trong Linux

Cách dùng lệnh who trong Linux

Who là một công cụ dòng lệnh command-line, được ...

Cách dùng lệnh basename trong Linux

Cách dùng lệnh basename trong Linux

basename là một tiện ích dòng lệnh (command line) dùng để lấy ...

Cách sử dụng lệnh gzip trên Linux

Cách sử dụng lệnh gzip trên Linux

Gzip là một trong những thuật toán nén file phổ biến nhất, nó cho phép…

Cách dùng lệnh wait trong Linux

Cách dùng lệnh wait trong Linux

Wait là lệnh dùng để đợi một thời gian cho tới khi công việc nào…

Cách dùng lệnh ping trong Linux

Cách dùng lệnh ping trong Linux

Lệnh ping là một trong những công cụ được sử dụng nhiều nhất để khắc…

Cách dùng lệnh sleep trong Linux

Cách dùng lệnh sleep trong Linux

sleep là một tiện ích command line cho phép lập trình viên ..

Các ví dụ học Bash Script trong Linux cơ bản nhất

Các ví dụ học Bash Script trong Linux cơ bản nhất

Bash Script đuọc xem là mã code lập trình trên Linux ...

Vòng lặp until trong Shell Script

Vòng lặp until trong Shell Script

Vòng lặp while trong Shell Script

Vòng lặp while trong Shell Script

Trong Linux script, vòng lặp while được sử dụng trong ...

Top