<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 + và - 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:
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.
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ề.
Lượ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 và 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:
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.
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 và 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-.
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
Tệ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.
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 và 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ạn chế
Trên hầu hết các hệ thống, việc sử dụng chown và 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.
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ư
/ 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.
• 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.
Cá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.
<Trước | Nội dung | Tiếp theo>