Cách Thiết Lập Quyền Truy Cập File & Thư Mục trên Linux bằng chmod – Giải Thích Đầy Đủ cho Người Mới

目次

1. Giới thiệu

Quyền truy cập trên Linux là gì?

Trên các hệ thống Linux hoặc Unix, việc quản lý đúng “quyền truy cập” (permission) của tệp tin và thư mục là cực kỳ quan trọng. Đây là yếu tố không thể thiếu để đảm bảo cả về khía cạnh bảo mật lẫn sự ổn định trong vận hành hệ thống.

Có lẽ nhiều bạn từng nhìn thấy các ký hiệu lạ như -rw-r--r-- khi liệt kê danh sách tệp tin trong terminal và tự hỏi: “Những ký hiệu này có ý nghĩa gì?”

Mối liên hệ giữa chmod và -rw-r–r–

Những ký hiệu này biểu thị quyền truy cập của tệp tin. Để thiết lập hoặc thay đổi quyền này, bạn sẽ sử dụng lệnh chmod. Kết quả của việc gán quyền bằng chmod sẽ được thể hiện dưới dạng ký hiệu như -rw-r--r--.

Mục tiêu bài viết & Đối tượng đọc

Bài viết này sẽ giải thích dễ hiểu cho người mới bắt đầu về ý nghĩa của -rw-r--r-- cũng như cách sử dụng chmod để thiết lập/chỉnh sửa quyền truy cập. Ngoài ra, bài viết còn đề cập đến các lưu ý về bảo mật và ví dụ thực tiễn.

Đối tượng là cả những ai mới dùng Linux và những bạn đã có chút kinh nghiệm thao tác terminal – mục tiêu là giúp bạn nắm chắc kiến thức ứng dụng vào thực tiễn.

年収訴求

2. chmod là gì? [Kiến thức cơ bản]

Chức năng của lệnh chmod

chmod (đọc là “chờ-mốt” hoặc “change mode”) là viết tắt của “change mode”, dùng để thay đổi quyền truy cập (permission) của tệp hoặc thư mục trên hệ điều hành Linux/Unix.
Với lệnh này, bạn có thể linh hoạt kiểm soát “ai được phép làm gì” (đọc, ghi, thực thi) đối với các tệp/thư mục.

Thiết lập permission phù hợp không chỉ đảm bảo bảo mật mà còn ngăn chặn các sự cố liên quan đến chia sẻ hoặc thực thi tệp – vì vậy, đây là thao tác rất quan trọng.

Cú pháp cơ bản của chmod

chmod [tùy chọn] [quyền] tên_tệp

Ví dụ, bạn có thể sử dụng như sau:

chmod 644 sample.txt

Lệnh này sẽ thay đổi quyền của sample.txt thành:

-rw-r--r--  1 user group 1234 Apr 13 20:00 sample.txt
  • Chủ sở hữu (user): có quyền đọc & ghi (rw-)
  • Nhóm (group): chỉ được đọc (r–)
  • Khác (others): chỉ được đọc (r–)

2 cách chỉ định quyền: Số và Ký hiệu

Với chmod, bạn có hai cách để chỉ định quyền truy cập:

  • Chỉ định bằng số (số mode)
  • Ví dụ: chmod 755 script.sh
  • Chỉ định quyền cho từng loại người dùng bằng số.
  • Chỉ định bằng ký hiệu (symbolic mode)
  • Ví dụ: chmod u=rw,g=r,o=r file.txt
  • u (user), g (group), o (others) kết hợp r (đọc), w (ghi), x (thực thi).

Cả hai cách đều cho kết quả cuối giống nhau; dùng số để thiết lập nhanh, ký hiệu để thay đổi linh hoạt – bạn nên chọn theo tình huống sử dụng.

Phân biệt giữa chmod và chown

Lệnh chown cũng thường gây nhầm lẫn.

  • chmod: Thay đổi quyền truy cập (permission)
  • chown: Thay đổi “chủ sở hữu” hoặc “nhóm” của tệp/thư mục

Chức năng khác nhau, cần phân biệt rõ để thao tác đúng.

3. Phân tích ý nghĩa của -rw-r–r–

Cấu trúc ký hiệu quyền truy cập

Khi chạy lệnh ls -l trên Linux, thông tin tệp tin sẽ hiển thị như sau:

-rw-r--r--  1 user group  1234 Apr 13  2025 sample.txt

Trong đó, phần bên trái -rw-r--r--quyền truy cập (permission) của tệp tin. Hiểu đúng phần này giúp bạn biết được ai có thể làm gì với tệp.

Giải thích chi tiết từng phần

① Ký tự đầu tiên: Loại tệp tin

Ký hiệuÝ nghĩa
-Tệp tin thông thường
dThư mục (directory)
lLiên kết tượng trưng (symbolic link)
bThiết bị khối (block device)
cThiết bị ký tự (character device)

Trong -rw-r--r--, ký tự đầu là - nghĩa là “tệp tin thông thường”.

② 9 ký tự tiếp theo: Quyền truy cập (3 ký tự × 3 nhóm)

  • Chủ sở hữu (user)rw-
    → Được đọc (r), ghi (w), không được thực thi (x).
  • Nhóm (group)r--
    → Chỉ được đọc.
  • Khác (others)r--
    → Chỉ được đọc.

Tức là, chỉ chủ sở hữu được chỉnh sửa, các người dùng khác chỉ được xem.

Ý nghĩa của dạng số: 644 là gì?

Trên Linux, quyền truy cập cũng được thể hiện bằng số (dạng bát phân – octal).

-rw-r--r-- tương ứng với số 644.

Loại người dùngKý hiệuSốÝ nghĩa
Chủ sở hữurw-6Đọc + ghi
Nhómr--4Chỉ đọc
Khácr--4Chỉ đọc

Cách tính số này:

  • Đọc (r) = 4
  • Ghi (w) = 2
  • Thực thi (x) = 1

Do đó: rw- = 4 + 2 = 6, r-- = 4, r-- = 4, tổng là 644.

Tại sao quyền này thường được sử dụng?

-rw-r--r-- (644) là quyền rất phổ biến cho tệp tin công khai hoặc tệp tĩnh trên web server (như HTML, CSS).
Lý do như sau:

  • Chỉ chủ sở hữu được chỉnh sửa → Ngăn ngừa thay đổi ngoài ý muốn
  • Các người dùng khác được phép đọc → Phù hợp cho chia sẻ/công khai dữ liệu

Sử dụng đúng giúp cân bằng giữa bảo mật và sự tiện lợi trong quản lý tệp.

4. Cách thiết lập -rw-r–r– bằng chmod [Thực hành]

Thay đổi quyền bằng lệnh chmod

Bạn có thể dễ dàng thay đổi quyền truy cập bằng lệnh chmod. Nếu muốn trạng thái -rw-r--r--, chỉ cần đặt quyền “644”.

Cách chỉ định bằng số

Dùng cú pháp: chmod 644 tên_tệp

chmod 644 document.txt

Lệnh này sẽ thay đổi quyền của document.txt thành:

-rw-r--r--  1 user group 1234 Apr 13 20:00 document.txt
  • Chủ sở hữu (user): đọc & ghi (rw-)
  • Nhóm (group): chỉ đọc (r–)
  • Khác (others): chỉ đọc (r–)

Cách chỉ định bằng ký hiệu (symbolic)

Nếu muốn linh hoạt hơn, hãy dùng ký hiệu:

chmod u=rw,g=r,o=r document.txt

Lệnh này có nghĩa là:

  • u=rw: Chủ sở hữu được đọc và ghi
  • g=r: Nhóm chỉ đọc
  • o=r: Khác chỉ đọc

Kết quả cuối cùng giống hệt 644.

Lưu ý khi áp dụng cho thư mục

Khác với tệp, thư mục cần quyền “thực thi” (x) để truy cập bên trong.

Ví dụ, nếu dùng lệnh:

chmod 644 my_folder

Thư mục chỉ cho phép đọc, nhưng không thể “truy cập vào” (thiếu quyền x).

Thiết lập đúng:

chmod 755 my_folder
  • Chủ sở hữu: đọc, ghi, thực thi
  • Nhóm và khác: đọc, thực thi

Làm vậy người khác có thể xem nội dung trong thư mục.

Thay đổi đệ quy: Tùy chọn -R

Nếu muốn đổi quyền cho nhiều tệp và thư mục cùng lúc, hãy dùng tùy chọn -R (recursive).

chmod -R 644 my_folder

Lệnh này áp dụng quyền 644 cho tất cả tệp trong my_folder. Tuy nhiên, hãy chú ý với cách làm này.

5. Cách kiểm tra quyền truy cập với lệnh ls -l

Làm thế nào để kiểm tra quyền truy cập của tệp/thư mục?

Để kiểm tra quyền truy cập (permission) của tệp hoặc thư mục, hãy sử dụng lệnh quen thuộc ls -l trên Linux. Lệnh này sẽ hiển thị chi tiết: quyền, chủ sở hữu, kích thước, thời gian sửa đổi cuối cùng, v.v.

Cách sử dụng cơ bản

ls -l

Kết quả có dạng như sau:

-rw-r--r--  1 naoya devs  2048 Apr 13 20:00 index.html

Ý nghĩa từng trường như sau:

TrườngÝ nghĩa
-rw-r--r--Quyền truy cập (permission)
1Số hard link (thường là 1)
naoyaChủ sở hữu (user)
devsNhóm (group)
2048Kích thước file (byte)
Apr 13 20:00Thời gian sửa cuối cùng
index.htmlTên file

Cách đọc phần permission

Phần cần chú ý là -rw-r--r--. Bạn có thể phân tích như sau:

  • Ký tự đầu: Loại file
  • -: File thông thường
  • d: Thư mục
  • l: Liên kết tượng trưng
  • 9 ký tự còn lại: Quyền truy cập (3 nhóm × 3 ký tự)
  • Chủ sở hữu (user): rw- (đọc & ghi)
  • Nhóm (group): r-- (chỉ đọc)
  • Khác (others): r-- (chỉ đọc)

Như vậy, có thể hiểu: “Chỉ chủ sở hữu được chỉnh sửa file này, những người khác chỉ được xem”.

Kiểm tra riêng lẻ từng file

Nếu muốn kiểm tra permission của một file cụ thể, hãy chỉ định tên file:

ls -l index.html

Cách này rất hữu ích khi thư mục có nhiều file.

Kiểm tra thư mục cũng tương tự

Thư mục cũng kiểm tra được với ls -l. Nếu chỉ muốn xem permission của thư mục, dùng thêm tùy chọn -d:

ls -ld my_folder

Lệnh này chỉ hiển thị thông tin về bản thân thư mục (không hiện danh sách các file con).

Quản lý permission an toàn khi xác nhận lại

Sau khi thiết lập quyền bằng chmod, bạn nên kiểm tra lại bằng ls -l để đảm bảo không có lỗi hoặc nguy cơ bảo mật.

Nếu muốn lọc kiểm tra nhiều file cùng lúc, bạn có thể dùng kết hợp với pipe:

ls -l | grep '.sh'

Lệnh này sẽ chỉ hiện các file kết thúc bằng .sh (script shell).

6. Kiểm tra và thay đổi permission bằng công cụ GUI (dành cho người mới)

Lựa chọn cho người không quen dùng lệnh

Trên Linux, thao tác chủ yếu là qua terminal, nhưng nhiều người mới thấy màn hình dòng lệnh khó và dễ nhầm.
Để hỗ trợ bạn, các phương pháp sử dụng giao diện đồ họa (GUI) cũng có thể kiểm tra/thay đổi quyền file dễ dàng.

Sử dụng Trình quản lý tệp của Ubuntu (Nautilus)

Ubuntu và nhiều bản phân phối Linux cài sẵn trình quản lý tệp “Nautilus” (giống File Explorer của Windows).

Cách kiểm tra:

  1. Nhấp chuột phải vào file/thư mục muốn kiểm tra
  2. Chọn “Properties” (Thuộc tính)
  3. Mở tab “Permissions” (hoặc “Quyền truy cập” tùy bản dịch)

Các thao tác có thể làm:

  • Xem hoặc đổi chủ sở hữu, nhóm (cần quyền admin)
  • Chuyển đổi quyền đọc, ghi, thực thi
  • Thay đổi sẽ áp dụng ngay

GUI hiển thị dưới dạng “chỉ đọc”, “đọc & ghi”… thay vì ký hiệu, rất dễ hiểu cho người mới bắt đầu.

WinSCP (phần mềm SFTP cho Windows)

Nếu bạn dùng Windows để truy cập server Linux từ xa, WinSCP là phần mềm SFTP giúp chỉnh permission bằng GUI.

Cách thao tác:

  1. Đăng nhập vào server bằng WinSCP
  2. Nhấp phải vào file bất kỳ → Chọn “Properties”
  3. Thay đổi số permission (ví dụ: 644) hoặc tick vào các quyền tương ứng
  4. Bấm “OK” để áp dụng

Ưu điểm:

  • Có thể kiểm tra cả số và ký hiệu
  • Đổi quyền đệ quy (cho thư mục) cũng làm được qua GUI

Lưu ý:

  • Các file yêu cầu quyền root thì phải có quyền sudo mới đổi được
WinSCP - Free SFTP and FTP client

WinSCP is a popular free file manager for Windows supporting…

FileZilla (phần mềm SFTP đa nền tảng)

Trên Mac và Linux, phần mềm SFTP FileZilla cũng hỗ trợ đổi permission bằng GUI tương tự.

Cách thao tác:

  1. Kết nối đến server, nhấp phải vào file
  2. Chọn “File Permissions” (Quyền tệp)
  3. Đặt quyền bằng checkbox hoặc số, rồi bấm OK

Ưu nhược điểm khi dùng GUI

Ưu điểm:

  • Người mới khó bị nhầm lẫn
  • Có thể kiểm tra trực quan ngay kết quả
  • Không cần biết lệnh cũng thao tác được

Lưu ý:

  • Một số server hoặc môi trường không cho phép đổi quyền qua GUI
  • Kết quả hiển thị đôi khi khác thực tế – nên kiểm tra lại bằng ls -l

FileZilla - The free FTP solution for both client and server…

7. Các lưu ý khi thiết lập chmod và xử lý sự cố

Đã thiết lập đúng mà vẫn không chạy? Nguyên nhân thường gặp

Sau khi đổi quyền truy cập bằng chmod, đôi khi tệp vẫn không hoạt động như mong muốn. Nguyên nhân phổ biến là sai sót khi thiết lập permission hoặc hiểu nhầm về quyền truy cập.
Dưới đây là các trường hợp thường gặp trong thực tế và cách xử lý.

Nguyên nhân & cách xử lý lỗi “Permission denied”

Dấu hiệu:

bash: ./script.sh: Permission denied

Nguyên nhân:

  • Tệp cần thực thi nhưng chưa cấp quyền “x” (thực thi)

Cách xử lý:

chmod +x script.sh

Hoặc dùng cách chỉ định số:

chmod 755 script.sh

Lưu ý: Chỉ có quyền đọc/ghi chưa đủ, muốn chạy được cần có quyền thực thi.

Không truy cập được thư mục nếu thiếu quyền thực thi

Nếu bạn thiết lập chmod 644 cho thư mục, đôi khi sẽ không xem được nội dung bên trong.

Lý do:

  • Quyền “thực thi” (x) với thư mục là bắt buộc để “truy cập vào” hoặc liệt kê nội dung.

Ví dụ:

chmod 644 my_folder
ls my_folder

→ Khi đó, sẽ có thể báo lỗi và không hiển thị nội dung.

Cách xử lý:

chmod 755 my_folder

Rủi ro khi thay đổi quyền đệ quy (-R)

chmod -R rất tiện nhưng tất cả tệp và thư mục đều nhận cùng một quyền nên dễ phát sinh lỗi ngoài ý muốn.

Lỗi phổ biến:

chmod -R 644 /var/www/html

→ Các thư mục không còn quyền thực thi, không thể truy cập bên trong.

Cách đúng:

# Thư mục cần quyền thực thi
find /var/www/html -type d -exec chmod 755 {} ;

# File thông thường đặt 644
find /var/www/html -type f -exec chmod 644 {} ;

Nhầm lẫn giữa quyền sở hữu và quyền truy cập

Bên cạnh chmod, bạn cũng cần chú ý đến “chủ sở hữu” (user) và “nhóm” (group) của tệp.
Ví dụ, nếu user apache cần đọc file nhưng file lại thuộc về user khác và không cấp quyền đọc cho người khác, web sẽ báo lỗi.

Cách xử lý:

  • Đổi chủ sở hữu: sudo chown www-data:www-data index.html
  • Cấp quyền cho nhóm: chmod 640 index.html (khi nhóm đã đúng)

777 là nguy hiểm! Đừng mở quá nhiều quyền

Nhiều người gặp sự cố thường nghĩ “cứ set 777 là xong”, nhưng đây là việc cực kỳ nguy hiểm.

Lý do:

  • Bất kỳ ai cũng có thể đọc, ghi, thực thi tệp
  • Dễ bị chỉnh sửa trái phép, tấn công, chèn mã độc…

Nguyên tắc cơ bản:

  • Tệp thông thường: 644 hoặc 600
  • Thư mục: 755 hoặc 700
  • Script hoặc file thực thi: 755 (nếu cần thiết)

8. Ví dụ thực tế – các kịch bản thường gặp

Quyền truy cập với chmod được áp dụng như thế nào trong thực tiễn?

Các lệnh chmod và quyền -rw-r--r-- được sử dụng rất nhiều trong quá trình quản trị server hoặc phát triển phần mềm.
Dưới đây là 3 tình huống thực tế phổ biến cho bạn tham khảo.

1. Quản lý tệp HTML trên máy chủ web

Kịch bản:
Khi bạn đăng tải file HTML lên máy chủ web (Apache, Nginx…), quyền thường được đặt là -rw-r--r-- (644).

chmod 644 index.html

Lý do chọn 644?

  • Chủ sở hữu (quản trị viên) cần quyền ghi để cập nhật file
  • Máy chủ web (user www-data, nginx…) chỉ cần quyền đọc
  • Không ai khác cần quyền ghi

Thiết lập này giúp đảm bảo an toàn khi công khai nội dung web với quyền tối thiểu cần thiết.

2. Cấp quyền thực thi cho file script

Kịch bản:
Bạn viết script backup.sh nhưng khi chạy lại gặp lỗi “Permission denied”.

chmod 755 backup.sh

Ý nghĩa của thiết lập này:

  • Chủ sở hữu: đọc, ghi, thực thi (rwx)
  • Nhóm & người khác: đọc, thực thi (rx)

Nhờ đó, người khác chỉ được chạy script, chỉ chủ sở hữu mới chỉnh sửa được.

3. Hạn chế đọc file mật khẩu, API key

Kịch bản:
Bạn lưu API key hoặc mật khẩu trong file secrets.txt và không muốn ai khác đọc được.

chmod 600 secrets.txt

Ý nghĩa:

  • Chỉ chủ sở hữu được đọc & ghi (rw-)
  • Nhóm & người khác: không có quyền nào (—)

Rất quan trọng về bảo mật; file cá nhân nên để 600 hoặc 400 (chỉ đọc).

4. Chia sẻ thư mục an toàn cho nhiều lập trình viên

Kịch bản:
Bạn cần chia sẻ thư mục shared_folder cho nhiều lập trình viên cùng làm việc.

chmod 770 shared_folder

Ý nghĩa:

  • Chủ sở hữu & nhóm: toàn quyền (rwx)
  • Người khác: không có quyền nào (—)

Đặt nhóm là team phát triển, dùng thêm chgrp để quản lý user truy cập.

5. Tránh lỗi khi lỡ cấu hình sai quyền

Kịch bản:
Lỡ tay chạy chmod -R 777 . và tất cả file đều có quyền ghi.

Cách tránh lỗi:

  • Luôn dùng find để chọn đúng loại file/thư mục khi đổi quyền
  • Kiểm tra trước bằng ls -l
  • Thử trước trên môi trường test

9. Câu hỏi thường gặp (FAQ)

Q1. chmod 644-rw-r--r-- khác nhau ở điểm nào?

A. Chỉ khác về cách thể hiện, ý nghĩa hoàn toàn giống nhau.

  • chmod 644: lệnh thiết lập permission bằng số
  • -rw-r--r--: dạng ký hiệu kiểm tra được bằng ls -l

Cả hai đều nghĩa là “chủ sở hữu được đọc & ghi, người khác chỉ được đọc”.

Q2. Nếu file không có quyền thực thi sẽ ra sao?

A. Không thể chạy script hoặc file thực thi, sẽ báo lỗi.

Ví dụ các file .sh, .py muốn chạy cần có quyền thực thi (x). Nếu không sẽ lỗi như sau:

bash: ./script.sh: Permission denied

Cách khắc phục:

chmod +x script.sh

Q3. Có nên đặt 644 cho thư mục không?

A. Thường là không nên.

Thư mục bắt buộc phải có quyền thực thi (x) mới truy cập vào được.

Thiết lập đúng:

chmod 755 tên_thư_mục

Q4. Dùng chmod -R có lưu ý gì không?

A. Hãy cẩn thận vì quyền của file và thư mục đều bị đổi giống nhau.

Ví dụ:

chmod -R 644 my_project/

→ Thư mục không có quyền thực thi, không truy cập được.

Cách an toàn:

find my_project/ -type d -exec chmod 755 {} ;
find my_project/ -type f -exec chmod 644 {} ;

Q5. Không biết vì sao lại bị “Permission denied”?

A. Hãy kiểm tra các điểm sau:

  • File thực thi mà thiếu quyền x
  • Không phải chủ sở hữu mà cố ghi file
  • Thư mục thiếu quyền x
  • User không có quyền sudo

Hãy dùng ls -l hoặc whoami để xác nhận quyền và user hiện tại.

Q6. Muốn chia sẻ file nhưng không cho người khác chỉnh sửa thì làm sao?

A. Đặt permission là “644” hoặc “444” để chỉ cho phép đọc.

chmod 644 share.txt
  • 644: Người khác được đọc, không được ghi
  • 444: Ai cũng chỉ đọc, không ai ghi được

Tùy vào mức độ bảo mật mà bạn chọn phù hợp.

Q7. Nếu lỡ đổi permission sai, làm sao trả lại như cũ?

A. Nếu chưa ghi chú lại, hãy so sánh với file đúng khác để đặt lại.

ls -l /path/to/file_chuan

Dựa vào output, dùng chmod thiết lập lại như cũ.
Tốt nhất là ghi lại trạng thái ban đầu hoặc tài liệu hóa permission chuẩn cho hệ thống.

10. Tổng kết

Tầm quan trọng của việc hiểu chmod và permission

Bài viết này đã giải thích chi tiết về lệnh chmod trên Linux/Unix và ý nghĩa của ký hiệu -rw-r--r--.
Đây không chỉ là kiến thức kỹ thuật mà còn là yếu tố quan trọng đảm bảo an toàn hệ thống, hiệu quả vận hành, và chia sẻ file đúng cách.

Tóm tắt các điểm đã học

  • chmod dùng để thay đổi quyền truy cập (permission) cho file/thư mục
  • -rw-r--r-- nghĩa là “chủ sở hữu được đọc & ghi, người khác chỉ được đọc”
  • Biểu diễn số 644 và ký hiệu -rw-r--r-- hoàn toàn tương đương
  • Có 2 cách thiết lập: chỉ định bằng số hoặc ký hiệu
  • Có thể kiểm tra permission bằng lệnh ls -l
  • Công cụ GUI (Nautilus, WinSCP, FileZilla) cũng hỗ trợ kiểm tra và đổi quyền
  • Cần chú ý lỗi “Permission denied” khi thiết lập sai permission
  • Việc chọn permission phù hợp luôn có lý do cụ thể về bảo mật và mục đích sử dụng

Không có “một đáp án duy nhất” cho mọi tình huống

Quan trọng nhất: không có một thiết lập permission nào là tối ưu cho mọi loại file/thư mục.
Hãy cân nhắc kỹ mục đích sử dụng, đối tượng truy cập, mức độ bảo mật rồi chọn permission tối thiểu cần thiết.

Lời khuyên cho người mới làm quen với permission

Ban đầu có thể thấy phức tạp, nhưng khi đã quen với chmod và logic về permission, bạn sẽ
phòng tránh được rủi ro và vận hành hệ thống một cách an toàn, chuyên nghiệp hơn.

Hãy luôn tự hỏi: “Ai, vì mục đích gì, cần được truy cập đến mức nào?” – giữ vững tư duy này và nâng cao kỹ năng qua thực tiễn!