Kiểm soát ai có thể truy cập tệp, thư mục tìm kiếm và chạy tập lệnh bằng cách sử dụng Linux chmod
. Lệnh này sửa đổi quyền đối với tệp Linux, thoạt nhìn có vẻ phức tạp nhưng thực sự khá đơn giản khi bạn biết cách chúng hoạt động.
chmod – Modifies File Permissions
Trong Linux, ai có thể làm những gì đối với một tệp hoặc thư mục được kiểm soát thông qua các bộ quyền. Có ba bộ quyền. Một bộ cho chủ sở hữu của tệp, một bộ khác cho các thành viên của nhóm tệp và một bộ cuối cùng cho những người khác.
Các quyền kiểm soát các hành động có thể được thực hiện trên tệp hoặc thư mục. Chúng cho phép hoặc ngăn không cho một tệp được đọc, sửa đổi hoặc, nếu đó là một tập lệnh hoặc chương trình, được thực thi. Đối với một thư mục, các quyền chi phối ai có thể cd
vào thư mục và ai có thể tạo hoặc sửa đổi tệp trong thư mục.
Bạn sử dụng chmod
lệnh để đặt từng quyền này. Để xem những quyền nào đã được đặt trên một tệp hoặc thư mục, chúng ta có thể sử dụng ls
.
Xem và hiểu quyền đối với tệp
Chúng ta có thể sử dụng -l
(định dạng dài) tùy chọn để có ls
liệt kê các quyền đối với tệp và thư mục.
ls -l
Trên mỗi dòng, ký tự đầu tiên xác định loại mục nhập đang được liệt kê. Nếu nó là một dấu gạch ngang (-
) nó là một tập tin.
Chín ký tự tiếp theo đại diện cho cài đặt cho ba quyền.
- Ba ký tự đầu tiên hiển thị các quyền cho người dùng sở hữu tệp (Quyền Người dùng).
- Ba ký tự ở giữa hiển thị các quyền dành cho các thành viên của nhóm tệp (quyền nhóm).
- Ba ký tự cuối cùng hiển thị quyền cho bất kỳ ai không thuộc hai danh mục đầu tiên (các quyền khác).
Có ba ký tự trong mỗi bộ quyền. Các ký tự là chỉ báo cho sự hiện diện hoặc vắng mặt của một trong các quyền. Chúng hoặc là một dấu gạch ngang (-
). Nếu ký tự là một dấu gạch ngang, điều đó có nghĩa là quyền đó không được cấp. Nếu nhân vật là một r
, w
, hoặc một x
, quyền đó đã được cấp.
Các chữ cái đại diện cho:
- r: Quyền đọc. Có thể mở tệp và xem nội dung của tệp.
- w: Quyền ghi. Tệp có thể được chỉnh sửa, sửa đổi và xóa.
- x: Thực thi quyền. Nếu tệp là một tập lệnh hoặc một chương trình, nó có thể được chạy (thực thi).
Ví dụ:
---
có nghĩa là không có quyền nào đã được cấp.rwx
có nghĩa là toàn quyền đã được cấp. Tất cả các chỉ báo đọc, ghi và thực thi đều có mặt.
Trong ảnh chụp màn hình của chúng tôi, dòng đầu tiên bắt đầu bằng d
. Dòng này đề cập đến một thư mục được gọi là “archive”. Chủ sở hữu của thư mục là “dave” và tên của nhóm mà thư mục đó thuộc về cũng được gọi là “dave”.
Ba ký tự tiếp theo là quyền của người dùng cho thư mục này. Những điều này cho thấy chủ sở hữu có đầy đủ quyền. Các r
, w
và x
các ký tự đều có mặt. Điều này có nghĩa là người dùng dave có quyền đọc, ghi và thực thi cho thư mục đó.
Bộ ba ký tự thứ hai là các quyền của nhóm, đây là r-x
. Những điều này cho thấy các thành viên của nhóm dave đã đọc và thực thi các quyền cho thư mục này. Điều đó có nghĩa là họ có thể liệt kê các tệp và nội dung của chúng trong thư mục và họ có thể cd
(thực thi) vào thư mục đó. Họ không có quyền ghi, vì vậy họ không thể tạo, chỉnh sửa hoặc xóa tệp.
Bộ ba ký tự cuối cùng cũng là r-x
. Các quyền này áp dụng cho những người không bị chi phối bởi hai bộ quyền đầu tiên. Những người này đã đọc và thực thi các quyền trên thư mục này.
Vì vậy, tóm lại, các thành viên trong nhóm và những người khác đã đọc và thực thi quyền. Chủ sở hữu, một người dùng được gọi là dave, cũng có quyền ghi.
Đối với tất cả các tệp khác (ngoại trừ tệp tập lệnh mh.sh), dave và các thành viên của nhóm dave có thuộc tính đọc và ghi trên tệp và những người khác chỉ có quyền đọc.
Đối với trường hợp đặc biệt của tệp tập lệnh mh.sh, chủ sở hữu dave và các thành viên nhóm có quyền đọc, ghi và thực thi, còn những người khác chỉ có quyền đọc và thực thi.
Hiểu cú pháp quyền
Để sử dụng chmod
để đặt quyền, chúng tôi cần cho nó biết:
- WHO: Chúng tôi đang đặt quyền cho ai.
- Gì: Chúng tôi đang thực hiện thay đổi nào? Chúng tôi đang thêm hoặc xóa quyền?
- Nào: Chúng tôi đang đặt những quyền nào?
Chúng tôi sử dụng các chỉ báo để đại diện cho các giá trị này và hình thành các “tuyên bố quyền” ngắn, chẳng hạn như u+x
, trong đó “u” có nghĩa là “người dùng” (ai), “+” có nghĩa là thêm (cái gì) và “x” có nghĩa là quyền thực thi (cái nào).
Các giá trị “ai” mà chúng ta có thể sử dụng là:
- u: Người dùng, có nghĩa là chủ sở hữu của tệp.
- g: Nhóm, có nghĩa là các thành viên của nhóm mà tệp thuộc về.
- o: Những người khác, nghĩa là những người không bị chi phối bởi
u
vàg
quyền. - a: Tất cả, nghĩa là tất cả những điều trên.
Nếu không có cái nào trong số này được sử dụng, chmod
sử dụng như thể “a
” đã được sử dụng.
Các giá trị mà chúng tôi có thể sử dụng là:
- –: Dấu trừ. Xóa quyền.
- +: Dấu cộng. Cấp quyền. Quyền được thêm vào các quyền hiện có. Nếu bạn muốn có quyền này và chỉ được đặt quyền này, hãy sử dụng
=
tùy chọn, được mô tả bên dưới. - =: Dấu bằng. Đặt quyền và xóa những người khác.
Các giá trị “mà” chúng tôi có thể sử dụng là:
- r: Quyền đọc.
- w: Quyền ghi.
- x: Quyền thực thi.
Đặt và sửa đổi quyền
Giả sử chúng ta có một tệp trong đó mọi người có toàn quyền đối với nó.
ls -l new_ file.txt
Chúng tôi muốn người dùng có quyền đọc và ghi và nhóm và những người dùng khác chỉ có quyền đọc. Chúng ta có thể thực hiện bằng lệnh sau:
chmod u=rw,og=r new_file.txt
Sử dụng toán tử “=” có nghĩa là chúng tôi xóa mọi quyền hiện có và sau đó đặt những quyền được chỉ định.
hãy kiểm tra quyền mới trên tệp này:
ls -l new_file.txt
Các quyền hiện có đã bị xóa và các quyền mới đã được đặt, như chúng tôi mong đợi.
Làm thế nào về việc thêm một quyền không có xóa cài đặt quyền hiện có? Chúng tôi cũng có thể làm điều đó một cách dễ dàng.
Giả sử chúng ta có một tệp kịch bản mà chúng ta đã chỉnh sửa xong. Chúng tôi cần làm cho nó có thể thực thi được cho tất cả người dùng. Các quyền hiện tại của nó trông như thế này:
ls -l new_script.sh
Chúng ta có thể thêm quyền thực thi cho mọi người bằng lệnh sau:
chmod a+x new_script.sh
Nếu chúng ta xem xét các quyền, chúng ta sẽ thấy rằng quyền thực thi hiện đã được cấp cho tất cả mọi người và các quyền hiện có vẫn còn nguyên.
ls -l new_script.sh
Chúng tôi đã có thể đạt được điều tương tự nếu không có “a” trong câu lệnh “a + x”. Lệnh sau sẽ hoạt động tốt.
chmod +x new_script.sh
Đặt quyền cho nhiều tệp
Chúng tôi có thể áp dụng quyền cho nhiều tệp cùng một lúc.
Đây là các tệp trong thư mục hiện tại:
ls -l
Giả sử chúng tôi muốn xóa quyền ghi cho người dùng “khác” khỏi các tệp có phần mở rộng “.page”. Chúng ta có thể thực hiện việc này bằng lệnh sau:
chmod o-r *.page
Hãy kiểm tra xem nó đã có tác dụng gì:
ls -l
Như chúng ta có thể thấy, quyền đọc đã bị xóa khỏi tệp “.page” cho danh mục người dùng “khác”. Không có tệp nào khác bị ảnh hưởng.
Nếu chúng tôi muốn bao gồm các tệp trong các thư mục con, chúng tôi có thể đã sử dụng -R
(đệ quy) tùy chọn.
chmod -R o-r *.page
Tốc ký số
Một cách khác để sử dụng chmod
là cung cấp các quyền bạn muốn cấp cho chủ sở hữu, nhóm và những người khác dưới dạng số có ba chữ số. Chữ số ngoài cùng bên trái đại diện cho quyền đối với chủ sở hữu. Chữ số ở giữa thể hiện quyền cho các thành viên trong nhóm. Chữ số ngoài cùng bên phải thể hiện quyền cho những người khác.
Các chữ số bạn có thể sử dụng và những gì chúng đại diện được liệt kê ở đây:
- 0: (000) Không được phép.
- 1: (001) Thực thi quyền.
- 2: (010) Phép viết.
- 3: (011) Viết và thực thi quyền.
- 4: (100) Quyền đọc.
- 5: (101) Quyền đọc và thực thi.
- 6: (110) Quyền đọc và ghi.
- 7: (111) Quyền đọc, ghi và thực thi.
Mỗi quyền trong số ba quyền được biểu diễn bằng một trong các bit ở dạng nhị phân tương đương với số thập phân. Vì vậy, 5, là 101 trong nhị phân, có nghĩa là đọc và thực thi. 2, là 010 trong hệ nhị phân, có nghĩa là quyền ghi.
Sử dụng phương pháp này, bạn đặt các quyền mà bạn muốn có; bạn không thêm các quyền này vào các quyền hiện có. Vì vậy, nếu quyền đọc và ghi đã có sẵn, bạn sẽ phải sử dụng 7 (111) để thêm quyền thực thi. Sử dụng 1 (001) sẽ xóa quyền đọc và ghi và thêm quyền thực thi.
Hãy thêm lại quyền đọc trên các tệp “.page” cho danh mục người dùng khác. Chúng tôi cũng phải thiết lập quyền của người dùng và nhóm, vì vậy chúng tôi cần đặt chúng về những gì chúng đã có. Những người dùng này đã có quyền đọc và ghi, là 6 (110). Chúng tôi muốn “những người khác” có quyền đọc và quyền, vì vậy chúng cần được đặt thành 4 (100).
Lệnh sau sẽ thực hiện điều này:
chmod 664 *.page
Điều này đặt các quyền mà chúng tôi yêu cầu cho người dùng, thành viên nhóm và những người khác theo những gì chúng tôi yêu cầu. Người dùng và thành viên nhóm được đặt lại quyền của họ về những gì họ đã có và những người khác được khôi phục quyền đọc.
ls -l
Bài viết này đã giải quyết được vấn đề của bạn chưa? Hãy để lại cảm nhận dưới comment để chúng tôi có thể giúp bạn giải quyết thêm thắc mắc nhé!