Thứ Sáu, 28 tháng 7, 2023

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.

Mục lục

  • 1. Các quyền của file trong Linux
    • Các đối tượng truy cập file
    • Các loại quyền trên file
  • 2. Cú pháp lệnh chmod trong Linux
  • 3. Phân quyền bằng symbolic trong Linux
  • 4. Phân quyền bằng Numeric Method trong Linux
  • 5. Phân quyền bằng Reference File trong Linux
  • 6. Lệnh chmod gán quyền đệ quy cho các file bên trong
  • 7. Lệnh chmod trên Symbolic Links
  • 8. Thay đổi quyền hàng loạt các file

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:

Bài viết này được đăng tại [tranvanbinh.vn]

  • 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 chown và chgrp.

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:

1
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:

1
2
3
4
5
6
7
8
9
10
-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:

PermissionCharacterMeaning on File
Read-Không có quyền đọc
rCó thể được đọc.
Write-Không được chỉnh sửa
wCó thể chỉnh sửa
Execute-Không thể thực thi.
xCó 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.
rCó 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.
wCó 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
xCó 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:

1
chmod [OPTIONS] MODE FILE...

Lệnh chmod cho phép bạn thay đổi quyền bằng cách sử dụng chế độ symbolicnumeric 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:

1
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.

1
chmod g=r filename

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

1
chmod a-x filename

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

1
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.

1
chmod og-rwx filename

Hoặc

1
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ả.

1
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.

1
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:

1
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.

1
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:

1
chmod --reference=REF_FILE FILE

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

1
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).

1
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:

1
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.

1
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:

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

Sử dụng symbolic:

1
2
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.

=============================
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master