OnWorks Linux và Windows Online WorkStations

Logo

Lưu trữ trực tuyến miễn phí cho máy trạm

<Trước | Nội dung | Tiếp theo>

3.4.2. Công cụ


3.4.2.1. Lệnh chmod


Một hệ quả bình thường của việc áp dụng các quyền đối với tệp nghiêm ngặt và đôi khi gây phiền toái là các quyền truy cập sẽ cần phải được thay đổi vì mọi lý do. Chúng tôi sử dụng chmod lệnh để làm điều này, và cuối cùng đến chmod đã trở thành một động từ tiếng Anh gần như được chấp nhận, có nghĩa là sự thay đổi chế độ truy cập của một tệp. Các chmod lệnh có thể được sử dụng với các tùy chọn chữ và số, bất kỳ tùy chọn nào bạn thích nhất.


Ví dụ dưới đây sử dụng các tùy chọn chữ và số để giải quyết vấn đề thường xảy ra với người dùng mới:


asim: ~> ./Xin chào

bash: ./hello: thông dịch viên tồi: Quyền bị từ chối


asim: ~> mèo xin chào

#! / bin / bash

echo "Xin chào, Thế giới"


asim: ~> ls -l xin chào

-rw-rw-r-- 1 asim asim 32 Jan 15 16:29 xin chào asim: ~> chmod u + x xin chào

asim: ~> ./Xin chào

Chào thế giới


asim: ~> ls -l xin chào

-rwxrw-r-- 1 asim asim 32 Jan 15 16:29 xin chào *

asim: ~> ./Xin chào

bash: ./hello: thông dịch viên tồi: Quyền bị từ chối


asim: ~> mèo xin chào

#! / bin / bash

echo "Xin chào, Thế giới"


asim: ~> ls -l xin chào

-rw-rw-r-- 1 asim asim 32 Jan 15 16:29 xin chào asim: ~> chmod u + x xin chào

asim: ~> ./Xin chào

Chào thế giới


asim: ~> ls -l xin chào

-rwxrw-r-- 1 asim asim 32 Jan 15 16:29 xin chào *

Sản phẩm + - các toán tử được sử dụng để cấp hoặc từ chối một quyền nhất định cho một nhóm nhất định. Các kết hợp được phân tách bằng dấu phẩy được cho phép. Các trang Thông tin và người đàn ông chứa các ví dụ hữu ích. Đây là một tệp khác, làm cho tệp từ ví dụ trước trở thành tệp riêng tư cho người dùng asim:


hình ảnh

asim: ~> chmod u + rwx, go-rwx xin chào


asim: ~> ls-l

xin chào

-rwx ------

1 người

asim

32 tháng 15 16 29:XNUMX xin chào *

Loại sự cố dẫn đến thông báo lỗi nói rằng quyền bị từ chối ở đâu đó thường là vấn đề với quyền truy cập trong hầu hết các trường hợp. Ngoài ra, các nhận xét như "Nó hoạt động ngày hôm qua" và "Khi tôi chạy nó ở chế độ root, nó hoạt động", rất có thể là do cấp quyền tệp sai.


Khi đang sử dụng chmod với các đối số số, các giá trị cho mỗi quyền truy cập được cấp phải được đếm cùng nhau cho mỗi nhóm. Do đó, chúng tôi nhận được một số có 3 chữ số, là giá trị tượng trưng cho các cài đặt chmod phải thực hiện. Bảng sau liệt kê các kết hợp phổ biến nhất:


Bảng 3-9. Bảo vệ tệp với chmod


Lệnh

Ý nghĩa

chmod 400 hồ sơ

Để bảo vệ tệp khỏi việc ghi đè ngẫu nhiên.

chmod 500

thư mục

Để bảo vệ bạn khỏi việc vô tình xóa, đổi tên hoặc di chuyển tệp khỏi thư mục này.


chmod 600 hồ sơ

Một tệp riêng tư chỉ có thể thay đổi bởi người dùng đã nhập lệnh này.

chmod 644 hồ sơ

Một tệp có thể đọc công khai mà chỉ người dùng phát hành mới có thể thay đổi được.

chmod 660 hồ sơ

Người dùng thuộc nhóm của bạn có thể thay đổi tệp này, những người khác hoàn toàn không có quyền truy cập vào tệp.

chmod 700 hồ sơ

Bảo vệ tệp khỏi bất kỳ quyền truy cập nào từ những người dùng khác, trong khi người dùng phát hành vẫn có toàn quyền truy cập.

chmod 755

thư mục

Đối với các tệp mà người khác có thể đọc và thực thi được nhưng chỉ người dùng phát hành mới có thể thay đổi được.

chmod 775 hồ sơ

Chế độ chia sẻ tệp tiêu chuẩn cho một nhóm.

chmod 777 hồ sơ

Mọi người có thể làm mọi thứ với tệp này.

Nếu bạn nhập một số có ít hơn ba chữ số làm đối số cho chmod, các ký tự bị bỏ qua được thay thế bằng các số không bắt đầu từ bên trái. Thực sự có một chữ số thứ tư trên các hệ thống Linux, đứng trước ba chữ số đầu tiên và đặt các chế độ truy cập đặc biệt. Mọi thứ về những thứ này và nhiều thứ khác đều nằm trong các trang Thông tin.


hình ảnh

3.4.2.2. Đăng nhập vào nhóm khác


Khi bạn gõ id trên dòng lệnh, bạn sẽ nhận được danh sách tất cả các nhóm mà bạn có thể thuộc về, trước tên người dùng và ID của bạn cũng như tên và ID nhóm mà bạn hiện đang kết nối. Tuy nhiên, trên nhiều hệ thống Linux, bạn chỉ có thể chủ động đăng nhập vào một nhóm tại thời điểm đó. Theo mặc định, điều này hoạt động hoặc nhóm chính là cái mà bạn được chỉ định từ / etc / passwd tập tin. Trường thứ tư của tệp này chứa ID nhóm chính của người dùng, được tra cứu trong / etc / group tập tin. Một ví dụ:


asim: ~> id

uid=501(asim) gid=501(asim) groups=100(users),501(asim),3400(web)


asim: ~> grep asim / etc / passwd

asim: x: 501: 501: Asim El Baraka: / home / asim: / bin / bash


asim: ~> grep 501 / etc / group

asim: x: 501:

asim: ~> id

uid=501(asim) gid=501(asim) groups=100(users),501(asim),3400(web)


asim: ~> grep asim / etc / passwd

asim: x: 501: 501: Asim El Baraka: / home / asim: / bin / bash


asim: ~> grep 501 / etc / group

asim: x: 501:

Trường thứ tư trong dòng từ / etc / passwd chứa giá trị "501", đại diện cho nhóm asim trong ví dụ trên. Từ / etc / group chúng ta có thể lấy tên phù hợp với ID nhóm này. Khi kết nối ban đầu với hệ thống, đây là nhóm asim sẽ thuộc về.


hình ảnhLược đồ nhóm riêng tư của người dùng

Để cho phép linh hoạt hơn, hầu hết các hệ thống Linux tuân theo cái gọi là lược đồ nhóm riêng tư của người dùng, chỉ định mỗi người dùng chủ yếu vào nhóm của riêng họ. Nhóm này là một nhóm chỉ chứa người dùng cụ thể này, do đó có tên là "nhóm riêng tư". Thông thường nhóm này có cùng tên với tên đăng nhập của người dùng, điều này có thể hơi khó hiểu.

Ngoài nhóm riêng tư của mình, người dùng asim cũng có thể ở trong các nhóm Người sử dụng web. Bởi vì đây là các nhóm phụ đối với người dùng này, anh ta sẽ cần sử dụng newgrp để đăng nhập vào bất kỳ nhóm nào trong số này (sử dụng gpasswd để đặt mật khẩu nhóm trước). Trong ví dụ, asim cần tạo các tệp thuộc sở hữu của nhóm web.


asim: / var / www / html> newgrp web


asim: / var / www / html> id

uid=501(asim) gid=3400(web) groups=100(users),501(asim),3400(web)

asim: / var / www / html> newgrp web


asim: / var / www / html> id

uid=501(asim) gid=3400(web) groups=100(users),501(asim),3400(web)

Thời Gian asim tạo tệp mới ngay bây giờ, chúng sẽ thuộc quyền sở hữu nhóm của nhóm web thay vì thuộc sở hữu của nhóm asim:


hình ảnh


asim: / var / www / html> kiểm tra cảm ứng


asim: / var / www / html> ls -l kiểm tra

-rw-rw-r-- 1 web asim 0 Jun 10 15:38 kiểm tra

asim: / var / www / html> kiểm tra cảm ứng


asim: / var / www / html> ls -l kiểm tra

-rw-rw-r-- 1 web asim 0 Jun 10 15:38 kiểm tra

Đăng nhập vào một nhóm mới giúp bạn không phải sử dụng chown (xem Phần 3.4.2.4) hoặc gọi cho quản trị viên hệ thống của bạn để thay đổi quyền sở hữu cho bạn.


Xem trang chủ cho newgrp để biết thêm thông tin chi tiết.


hình ảnh

3.4.2.3. Mặt nạ tệp


Khi một tệp mới được lưu ở đâu đó, trước tiên nó phải tuân theo quy trình bảo mật tiêu chuẩn. Các tệp không có quyền không tồn tại trên Linux. Quyền tệp tiêu chuẩn được xác định bởi mặt nạ để tạo tệp mới. Giá trị của mặt nạ này có thể được hiển thị bằng cách sử dụng cái ô chỉ huy:


bert: ~> cái ô

0002

bert: ~> cái ô

0002

Thay vì thêm các giá trị biểu tượng cho nhau, như với chmod, để tính toán quyền trên một tệp mới, chúng cần được trừ khỏi tổng số quyền truy cập có thể có. Tuy nhiên, trong ví dụ trên, chúng tôi thấy 4 giá trị được hiển thị, nhưng chỉ có 3 danh mục quyền: người sử dụng, nhóm khác. Số 3.4.2.4 đầu tiên là một phần của cài đặt thuộc tính tệp đặc biệt, mà chúng ta sẽ thảo luận trong Phần 4.1.6 và Phần XNUMX. Cũng có thể là số XNUMX đầu tiên này không được hiển thị trên hệ thống của bạn khi nhập cái ô và bạn chỉ thấy 3 số đại diện cho mặt nạ tạo tệp mặc định.


Mỗi hệ thống giống UNIX có một chức năng hệ thống để tạo tệp mới, chức năng này được gọi mỗi khi người dùng sử dụng chương trình tạo tệp mới, chẳng hạn như khi tải xuống tệp từ Internet, khi lưu tài liệu văn bản mới, v.v. Chức năng này tạo cả tệp mới và thư mục mới. Toàn quyền đọc, ghi và thực thi được cấp cho mọi người khi tạo một thư mục mới. Khi tạo một tệp mới, chức năng này sẽ cấp quyền đọc và ghi cho mọi người, nhưng đặt quyền thực thi thành không cho tất cả các danh mục người dùng. Điều này, trước khi mặt nạ được áp dụng, một thư mục có quyền 777 or rwxrwxrwx, một tập tin đơn giản 666 or rw-rw-rw-.


hình ảnh

Sản phẩm cái ô giá trị bị trừ khỏi các quyền mặc định này sau khi hàm đã tạo tệp hoặc thư mục mới. Do đó, một thư mục sẽ có quyền của 775 theo mặc định, một tệp 664, nếu giá trị mặt nạ là (0) 002. Điều này được chứng minh trong ví dụ dưới đây:


bert: ~> mkdir newdir


bert: ~> ls -ld newdir

drwxrwxr-x 2 bert bert

4096 28 tháng 13 45:XNUMX newdir /

bert: ~> mkdir newdir


bert: ~> ls -ld newdir

drwxrwxr-x 2 bert bert


bert: ~> chạm vào tệp mới


bert: ~> ls -l tập tin mới

-rw-rw-r-- 1 bert bert

0 28 tháng 13 52:XNUMX newfile

bert: ~> chạm vào tệp mới


bert: ~> ls -l tập tin mới

-rw-rw-r-- 1 bert bert


hình ảnhTệp so với thư mục

Theo mặc định, một thư mục có nhiều quyền hơn: nó luôn có thi hành sự cho phép. Nếu nó không có điều đó, nó sẽ không thể truy cập được. Hãy thử điều này bằng cách chmodding một thư mục 644!

Nếu bạn đăng nhập vào một nhóm khác bằng cách sử dụng newgrp lệnh, mặt nạ vẫn không thay đổi. Do đó, nếu nó được đặt thành 002, các tệp và thư mục mà bạn tạo khi ở trong nhóm mới cũng sẽ có thể truy cập được đối với các thành viên khác của nhóm đó; bạn không cần phải sử dụng chmod.


Sản phẩm nguồn gốc người dùng thường có quyền tạo tệp mặc định chặt chẽ hơn:


[root @ estoban root] # umask 022

[root @ estoban root] # umask 022

Ví dụ: các giá trị mặc định này được đặt trên toàn hệ thống trong các tệp cấu hình tài nguyên shell / Etc / .bashrc or

/ etc / profile. Bạn có thể thay đổi chúng trong tệp cấu hình shell của riêng mình, xem Chương 7 về cách tùy chỉnh môi trường shell của bạn.


hình ảnh

3.4.2.4. Thay đổi quyền sở hữu người dùng và nhóm


Khi một tệp được sở hữu bởi người dùng hoặc nhóm sai, lỗi có thể được sửa chữa bằng chown (thay đổi chủ sở hữu) và chgrp (thay đổi nhóm) lệnh. Thay đổi quyền sở hữu tệp là tác vụ quản trị hệ thống thường xuyên trong môi trường nơi tệp cần được chia sẻ trong một nhóm. Cả hai lệnh đều rất linh hoạt, vì bạn có thể tìm hiểu bằng cách sử dụng --Cứu giúp tùy chọn.


Sản phẩm chown lệnh có thể được áp dụng để thay đổi cả quyền sở hữu của người dùng và nhóm của một tệp, trong khi chgrp chỉ thay đổi quyền sở hữu nhóm. Tất nhiên hệ thống sẽ kiểm tra xem người dùng đưa ra một trong các lệnh này có đủ quyền đối với (các) tệp mà họ muốn thay đổi hay không.


Để chỉ thay đổi quyền sở hữu tệp của người dùng, hãy sử dụng cú pháp sau:


chown người dùng mới hồ sơ


Nếu bạn sử dụng dấu hai chấm sau tên người dùng (xem trang Thông tin), quyền sở hữu nhóm cũng sẽ được thay đổi đối với nhóm chính của người dùng ban hành lệnh. Trên hệ thống Linux, mỗi người dùng có nhóm riêng của mình, do đó, biểu mẫu này có thể được sử dụng để đặt tệp ở chế độ riêng tư:


Jacky: ~> id

uid = 1304 (jacky) gid = (1304) groups = 1304 (jacky), 2034 (pproject)


Jacky: ~> ls -l my_report

-rw-rw-r-- 1 jacky project 29387 15/09 34:XNUMX my_report jacky: ~> chown jacky: my_report

Jacky: ~> chmod hoặc my_report


Jacky: ~> ls -l my_report

-rw-rw ---- 1 jacky jacky 29387 ngày 15 tháng 09 34:XNUMX my_report

Jacky: ~> id

uid = 1304 (jacky) gid = (1304) groups = 1304 (jacky), 2034 (pproject)


Jacky: ~> ls -l my_report

-rw-rw-r-- 1 jacky project 29387 15/09 34:XNUMX my_report jacky: ~> chown jacky: my_report

Jacky: ~> chmod hoặc my_report


Jacky: ~> ls -l my_report

-rw-rw ---- 1 jacky jacky 29387 ngày 15 tháng 09 34:XNUMX my_report

If jacky muốn chia sẻ tệp này, mà không cần phải cho phép mọi người viết nó, anh ta có thể sử dụng

lệnh chgrp:


Jacky: ~> ls -l báo cáo-20020115.xls

-rw-rw ---- 1 jacky jacky 45635 Jan 15 09:35 report-20020115.xls jacky: ~> báo cáo dự án chgrp-20020115.xls

Jacky: ~> chmod o = report-20020115.xls


Jacky: ~> ls -l báo cáo-20020115.xls

-rw-rw ---- 1 jacky project 45635 Jan 15 09:35 report-20020115.xls

Jacky: ~> ls -l báo cáo-20020115.xls

-rw-rw ---- 1 jacky jacky 45635 Jan 15 09:35 report-20020115.xls jacky: ~> báo cáo dự án chgrp-20020115.xls

Jacky: ~> chmod o = report-20020115.xls


Jacky: ~> ls -l báo cáo-20020115.xls

-rw-rw ---- 1 jacky project 45635 Jan 15 09:35 report-20020115.xls

Bằng cách này, người dùng trong nhóm dự án sẽ có thể làm việc trên tệp này. Người dùng không thuộc nhóm này không có công việc gì với nó cả.


Cả hai chown chgrp có thể được sử dụng để thay đổi quyền sở hữu một cách đệ quy, bằng cách sử dụng -R lựa chọn. Trong trường hợp đó, tất cả các tệp cơ bản và thư mục con của một thư mục nhất định sẽ thuộc về người dùng và / hoặc nhóm nhất định.


hình ảnhHạn chế

Trên hầu hết các hệ thống, việc sử dụng chown chgrp các lệnh bị hạn chế đối với người dùng không có đặc quyền. Nếu bạn không phải là quản trị viên của hệ thống, bạn không thể thay đổi quyền sở hữu của người dùng cũng như nhóm vì lý do bảo mật. Nếu việc sử dụng các lệnh này không bị hạn chế, người dùng độc hại có thể gán quyền sở hữu tệp cho người dùng và / hoặc nhóm khác và thay đổi hành vi trong môi trường của những người dùng đó và thậm chí gây ra thiệt hại cho tệp của người dùng khác.


hình ảnh

3.4.2.5. Các chế độ đặc biệt


Để quản trị viên hệ thống không bị làm phiền lúc nào cũng phải giải quyết các vấn đề về quyền, các quyền truy cập đặc biệt có thể được cấp cho toàn bộ thư mục hoặc cho các chương trình riêng biệt. Có ba chế độ đặc biệt:


• Chế độ bit cố định: Sau khi thực hiện một công việc, lệnh được lưu trong bộ nhớ hệ thống. Ban đầu đây là một tính năng được sử dụng rất nhiều để tiết kiệm bộ nhớ: các công việc lớn chỉ được tải vào bộ nhớ một lần. Nhưng ngày nay bộ nhớ không tốn kém và có nhiều kỹ thuật tốt hơn để quản lý nó, vì vậy nó không được sử dụng nữa để tối ưu hóa khả năng của nó trên các tệp đơn lẻ. Tuy nhiên, khi được áp dụng cho toàn bộ thư mục, bit dính có một ý nghĩa khác. Trong trường hợp đó, người dùng chỉ có thể thay đổi tệp trong thư mục này khi cô ấy là chủ sở hữu người dùng của tệp hoặc khi tệp có quyền thích hợp. Tính năng này được sử dụng trên các thư mục như

hình ảnh

/ var / tmp, phải có thể truy cập được cho tất cả mọi người, nhưng không thích hợp để người dùng thay đổi hoặc xóa dữ liệu của nhau. Bit dính được biểu thị bằng t ở cuối trường quyền tệp:


đánh dấu: ~> ls -ld / var / tmp

root root drwxrwxrwt 19

8192 16 tháng 10 37:XNUMX / var / tmp /

đánh dấu: ~> ls -ld / var / tmp

root root drwxrwxrwt 19

Bit dính được đặt bằng lệnh chmod o + t thư mục. Nguồn gốc lịch sử của chữ "t" là trong UNIX ' lưu quyền truy cập Văn bản tính năng này.

SUID (đặt ID người dùng) và SGID (đặt ID nhóm): được đại diện bởi ký tự s trong trường quyền của người dùng hoặc nhóm. Khi chế độ này được đặt trên tệp thực thi, chế độ này sẽ chạy với quyền của người dùng và nhóm trên tệp thay vì quyền của người dùng ban hành lệnh, do đó cấp quyền truy cập vào tài nguyên hệ thống. Chúng ta sẽ thảo luận thêm về vấn đề này trong Chương 4.

hình ảnh

• SGID (đặt ID nhóm) trên một thư mục: trong trường hợp đặc biệt này, mọi tệp được tạo trong thư mục sẽ có cùng chủ sở hữu nhóm với chính thư mục đó (trong khi hành vi bình thường là các tệp mới được sở hữu bởi người dùng tạo chúng). Bằng cách này, người dùng không cần phải lo lắng về quyền sở hữu tệp khi chia sẻ thư mục:


mimi: ~> ls -ld / opt / docs

drwxrws --- 4 người dùng root

4096 25 thg 2001, XNUMX docs /

mimi: ~> ls -ld / opt / docs

drwxrws --- 4 người dùng root


mimi: ~> ls -l / opt / docs

-rw-rw ---- 1 người dùng mimi

345672 30/2001/XNUMX-Council.doc

mimi: ~> ls -l / opt / docs

-rw-rw ---- 1 người dùng mimi

Đây là cách tiêu chuẩn để chia sẻ tệp trong UNIX.


hình ảnhCác tệp hiện có được giữ nguyên!

Các tệp đang được chuyển đến thư mục SGID nhưng được tạo ở nơi khác vẫn giữ nguyên người dùng và chủ sở hữu nhóm ban đầu của chúng. Điều này có thể gây nhầm lẫn.


hình ảnh


Điện toán đám mây hệ điều hành hàng đầu tại OnWorks: