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

Tác giả sysadmin, T.Tám 19, 2023, 02:45:01 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

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


Tìm hiểu cách hoạt động của quyền đối với tệp Linux và cách sử dụng lệnh chmod.

  • Lệnh chmod của Linux được sử dụng để kiểm soát quyền của tệp, cho phép bạn chỉ định ai có thể truy cập tệp, tìm kiếm thư mục và chạy tập lệnh.
  • Quyền truy cập tệp Linux có thể được đặt trên cơ sở từng người dùng hoặc áp dụng cho mọi thành viên trong nhóm.
  • Lệnh chmod sử dụng cú pháp ai, cái gì và cái nào để đặt quyền. Bạn có thể sử dụng các chỉ báo như u, g, o và a để chỉ định mục tiêu và các dấu + và - để thêm hoặc xóa quyền. Các quyền được biểu thị bằng r, w và x để đọc, viết và thực thi.

Kiểm soát ai có thể truy cập tệp, tìm kiếm thư mục và chạy tập lệnh bằng chmodlệnh của Linux. Lệnh này sửa đổi các quyền của 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.

1. chmod Sửa đổi quyền đối với tệp

Trong Linux, ai có thể làm gì với 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ộ dành cho chủ sở hữu tệp, một bộ khác dành cho các thành viên trong nhóm của tệp và một bộ cuối cùng dành 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 chặn việc đọc, sửa đổi tệp hoặc thực thi nếu đó là tập lệnh hoặc chương trình. Đối với một thư mục, các quyền chi phối ai có thể cdvào thư mục và ai có thể tạo hoặc sửa đổi các tệp trong thư mục.

Bạn sử dụng chmodlệ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.

2. Xem và hiểu quyền của tệp

Chúng ta có thể sử dụng -ltùy chọn (định dạng dài) để liệt lskê các quyền đối với tệp và thư mục.

Mã nguồn [Chọn]
ls -l

Trên mỗi dòng, ký tự đầu tiên xác định loại mục đang được liệt kê. Nếu là dấu gạch ngang (-) thì đó là tệp. Nếu là chữ cái dthì đó là một thư mục.

Chín ký tự tiếp theo biểu thị cài đặt cho ba bộ quyền.

  • Ba ký tự đầu tiên hiển thị quyền cho người dùng sở hữu tệp (quyền của người dùng).
  • Ba ký tự ở giữa hiển thị quyền cho các thành viên trong nhóm của tệp (quyền của 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 là một dấu gạch ngang ( -) hoặc một chữ cái. Nếu ký tự là dấu gạch ngang, điều đó có nghĩa là quyền không được cấp. Nếu ký tự là một r, whoặc một x, quyền đó đã được cấp.

Các chữ cái đại diện cho:

  • r: Quyền đọc. Tệp có thể được mở và nội dung của nó được xem.
  • 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à tập lệnh hoặc chương trình, tệp có thể được chạy (thực thi).

Ví dụ:

  • ---có nghĩa là không có quyền nào được cấp cả.
  • rwxcó nghĩa là toàn quyền đã được cấp. Các chỉ báo đọc, viết 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 một d. Dòng này đề cập đến một thư mục có tên là "archive." Chủ sở hữu của thư mục là "dave" và tên của nhóm chứa thư mục đó cũng được gọi là "dave".

Ba ký tự tiếp theo là quyền của người dùng đối với thư mục này. Những điều này cho thấy chủ sở hữu có toàn quyền. Các ký tự r, w, và xđề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 đối với thư mục đó.

Bộ ba ký tự thứ hai là các quyền của nhóm, đây là các r-x. Những điều này cho thấy rằng các thành viên của nhóm dave đã đọc và thực thi các quyền đối với 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 nhóm quyền đầu tiên. Những người này (được gọi là "những người khác") có quyền đọc và thực thi trên thư mục này.

Vì vậy, để tóm tắt, các thành viên nhóm và những người khác có quyền đọc và thực thi. Chủ sở hữu, một người dùng tên là dave, cũng có quyền ghi.

Đối với tất cả các tệp khác (ngoài tệp tập lệnh   Đăng nhập để xem liên kết), dave và các thành viên của nhóm dave có các thuộc tính đọc và ghi trên các 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   Đăng nhập để xem liên kết, chủ sở hữu dave và các thành viên trong 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.

3. Hiểu cú pháp quyền

Để sử dụng chmodđể đặt quyền, chúng ta cần nói với nó:

  • Ai: Chúng tôi đang đặt quyền cho ai.
  • Cái gì: Chúng ta đang thực hiện thay đổi gì? Chúng tôi đang thêm hoặc xóa quyền?
  • Cái nào: Chúng ta đang đặt quyền nào?

Chúng tôi sử dụng các chỉ báo để biểu thị các giá trị này và tạo thành các "tuyên bố về quyền" ngắn chẳng hạn như, u+xtrong đó "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" chúng ta có thể sử dụng là:

  • u: Người dùng, nghĩa là người sở hữu tập tin.
  • g: Nhóm, 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 uvà gcác quyền.
  • a: Tất cả, nghĩa là tất cả những điều trên.

Nếu không cái nào trong số này được sử dụng, chmodhãy cư xử như thể " a" đã được sử dụng.

Các giá trị "cái gì" chúng ta có thể sử dụng là:

  • -: Dấu trừ. Loại bỏ sự cho phép.
  • +: 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ị " which " chúng ta có thể sử dụng là:

  • r: Quyền đọc.
  • w: Quyền ghi.
  • x: Quyền thực thi.

4. Đặt và sửa đổi quyền

Giả sử chúng ta có một tệp mà mọi người đều có toàn quyền đối với tệp đó.

Mã nguồn [Chọn]
ls -l new_ file.txt
Chúng tôi muốn người dùng dave có quyền đọc và ghi và nhóm cũng như những người dùng khác chỉ có quyền đọc. Chúng ta có thể làm bằng cách sử dụng lệnh sau:

Mã nguồn [Chọn]
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:

Mã nguồn [Chọn]
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 cách nào để thêm quyền mà không xóa cài đặt quyền hiện có? Chúng ta 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. Quyền hiện tại của nó trông như thế này:

Mã nguồn [Chọn]
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:

Mã nguồn [Chọn]
chmod a+x new_script.sh
Nếu 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 mọi người và các quyền hiện có vẫn còn hiệu lực.

Mã nguồn [Chọn]
ls -l new_script.sh
Chúng ta 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 cũng sẽ hoạt động tốt.

Mã nguồn [Chọn]
chmod +x new_script.sh
5. Đặ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:

Mã nguồn [Chọn]
ls -l

Giả sử chúng ta muốn xóa quyền đọc đối với người dùng "khác" khỏi các tệp có phần mở rộng ".page". Chúng ta có thể làm điều này với lệnh sau:

Mã nguồn [Chọn]
chmod o-r *.page
Hãy kiểm tra xem nó có tác dụng gì:

Mã nguồn [Chọn]
ls -l

Như chúng ta có thể thấy, quyền đọc đã bị xóa khỏi các tệp ".page" đối với danh mục người dùng "khác". Không có tập tin khác đã bị ảnh hưởng.

Nếu chúng tôi muốn đưa các tệp vào thư mục con, chúng tôi có thể sử dụng -R tùy chọn (đệ quy).

Mã nguồn [Chọn]
chmod -R o-r *.page
6. Số tốc ký

Một cách khác để sử dụng chmod là cung cấp các quyền mà 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 biểu thị quyền cho các thành viên trong nhóm. Chữ số ngoài cùng bên phải đại diện cho quyền đối với những người khác.

Các chữ số bạn có thể sử dụng và ý nghĩa của chúng được liệt kê ở đây:

  • 0: (000) Không được phép.
  • 1: (001) Cho phép thực thi.
  • 2: (010) Viết phép.
  • 3: (011) Viết và thực thi quyền.
  • 4: (100) Phép đọc.
  • 5: (101) Đọc và thực thi quyền.
  • 6: (110) Các phép đọc và ghi.
  • 7: (111) Quyền đọc, viết và thực thi.

Mỗi trong số ba quyền được biểu thị 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 ở dạng nhị phân, có nghĩa là đọc và thực thi. 2, là 010 ở dạng 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 đã có quyền đọc và ghi, 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 đặt 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, tức 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:

Mã nguồn [Chọn]
chmod 664 *.page
Điều này đặt các quyền mà chúng tôi yêu cầu đối với 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 về những gì họ đã có và những người khác được khôi phục quyền đọc.

Mã nguồn [Chọn]
ls -l

7. Tùy chọn nâng cao

Nếu bạn đọc trang hướng dẫn, chmodbạn sẽ thấy có một số tùy chọn nâng cao liên quan đến các bit SETUID và SETGID, cũng như việc xóa bị hạn chế hoặc bit "dính".

Đối với 99% các trường hợp bạn cần chmod, các tùy chọn được mô tả ở đây sẽ hỗ trợ bạn. Quá trình kết thúc với mã thoát 0.