Một vỏ bị hạn chế giới hạn những gì một tài khoản người dùng có thể làm trên Linux. Người dùng bị hạn chế không thể thay đổi thư mục của họ và bạn kiểm soát các lệnh mà họ có quyền truy cập. Đây là cách thiết lập một vỏ hạn chế trên Linux.
Vỏ hạn chế
Một vỏ bị hạn chế không phải là một cái vỏ khác. Đó là một chế độ khác của một vỏ tiêu chuẩn [số 8] . Các Bash. [số 8] Cái gì Korn. [số 8] Cái gì Cá [số 8] và tất cả các vỏ khác đều có thể được bắt đầu trong chế độ vỏ bị hạn chế. Chúng tôi sẽ sử dụng Bash trong bài viết này, nhưng các nguyên tắc tương tự áp dụng cho các vỏ khác.
Bởi vì vỏ bị hạn chế chỉ là một cách khác để sử dụng vỏ tiêu chuẩn của bạn, chúng dễ dàng thiết lập. Không có gì để cài đặt, và chúng có sẵn ở bất cứ nơi nào Linux.
Vỏ hạn chế cũng có thể được áp dụng cho các kịch bản. Điều đó đảm bảo rằng bất kỳ thiệt hại nào họ có thể gây ra nếu họ được viết không chính xác được giới hạn ở giới hạn của thế giới bị hạn chế của họ và họ không có quyền truy cập vào toàn bộ máy tính của bạn.
Mặc dù vậy, hãy chú ý rằng vỏ bị hạn chế không hoàn toàn thoát khỏi. Một người có đủ kiến thức có thể thoát khỏi một vỏ bị hạn chế. Chúng rất tuyệt khi đặt ranh giới an toàn trên một người dùng thông thường, nhưng đừng dựa vào vỏ bị hạn chế cho bất kỳ bảo mật trong thế giới thực nào trên hệ thống sản xuất.
CÓ LIÊN QUAN: Sự khác biệt giữa bash, zsh và các vỏ linux khác là gì? [số 8]
Bash bị hạn chế
Khi bạn chạy bash như một vỏ bị hạn chế, người dùng có một số khả năng bị xóa khỏi chúng. Cụ thể, người dùng không thể :
-
Sử dụng
đĩa CDđể thay đổi thư mục làm việc. -
Thay đổi giá trị của
$ PATH.Cái gì$ Shell.Cái gì$ Bash_env., hoặc$ Env.biến môi trường (nhưng họ có thể đọc các giá trị hiện tại). -
Đọc hoặc thay đổi
$ Shellopts.Shell tùy chọn môi trường. - Chuyển hướng đầu ra của một lệnh.
-
Gọi các lệnh yêu cầu một đường dẫn để xác định vị trí của chúng. Đó là, bạn không thể phát lệnh có một hoặc nhiều dấu gạch chéo về phía trước "
/ / / / / / / / /" trong đó. -
Gọi.
enec.để thay thế một quá trình khác nhau cho vỏ. - Sử dụng bất kỳ tính năng bị hạn chế trong một kịch bản.
Bạn có thể gọi một vỏ bash bị hạn chế bằng cách sử dụng
-NS
(hạn chế) tùy chọn. Cố gắng thực hiện một nhiệm vụ đơn giản như thay đổi thư mục làm việc bị cấm. Một tin nhắn cho bạn biết rằng
đĩa CD
bị hạn chế.
bash -r
Tài liệu CD
Vỏ bash cũng có thể phát hiện khi nó đã được gọi bằng cách sử dụng "rbash" thay vì "bash". Điều này cũng khiến nó bắt đầu như một vỏ bị hạn chế. Điều này cung cấp một cách thuận tiện để đặt shell mặc định cho một người dùng cụ thể, chúng ta sẽ sớm sử dụng.
Nếu chúng ta sử dụng
ở đâu
lệnh trên Ubuntu để tìm kiếm
rbash.
Các tệp, chúng ta sẽ thấy rằng tệp thực thi nằm trong thư mục "USR / BIN". Trang Man nằm trong thư mục "/ usr / share / man / man1".
Sử dụng
ls.
mệnh lệnh với.
-tất cả
(dài) tùy chọn tiết lộ rằng
rbash.
Là
thực sự là một liên kết biểu tượng
[số 8]
đến
bash.
.
Incutis Rbash
ls -l / usr / bin / rbash
Trên Manjaro và Fedora,
rbash.
liên kết tượng trưng phải được tạo ra. Điều này hoạt động trên cả hai bản phân phối:
Incutis Rbash
sudo ln -s / bin / bash / bin / rbash
Incutis Rbash
Lần thứ hai chúng ta sử dụng
ở đâu
lệnh, nó tìm thấy
rbash.
trong thư mục "/ usr / bin".
Hạn chế người dùng
Hãy
Tạo một tài khoản người dùng mới
[số 8]
được đặt tên là Minnie. Chúng tôi sẽ đặt vỏ của chúng là vỏ bị hạn chế bằng cách sử dụng
-NS
(vỏ) tùy chọn của
UserAdd.
chỉ huy. Chúng tôi cũng sẽ
Đặt mật khẩu của tài khoản
[số 8]
sử dụng
passwd.
lệnh, và chúng tôi sẽ tạo một thư mục nhà cho họ.
Các
-P
(cha mẹ) cờ trong
mkdir.
lệnh nói
mkdir.
Để tạo thư mục đích và bất kỳ thư mục mẹ nào cũng cần tạo. Vì vậy, bằng cách tạo thư mục "/ home / minnie / bin", chúng tôi tạo thư mục "/ home / minnie" cùng một lúc.
sudo useradd minnie -s / bin / rbash
sudo passwd minnie
sudo mkdir -p / home / minnie / bin
Khi Minnie đăng nhập, cô ấy sẽ chạy trong một vỏ bị hạn chế.
CD
Cô ấy không thể gọi các lệnh cần bao gồm một dấu gạch chéo về phía trước
/ / / / / / / / /
":
/ usr / bin / ping
Tuy nhiên, cô ấy vẫn có thể thực hiện các lệnh được tìm thấy trong đường dẫn.
Ping
Đó không phải là hành vi bạn có thể mong đợi, và nó chắc chắn không phải là những gì chúng ta muốn. Để thắt chặt các hạn chế hơn nữa, chúng ta cần thay đổi đường dẫn mà vỏ của Minnie sẽ sử dụng để tìm các lệnh.
Thắt chặt các hạn chế
Khi chúng tôi tạo thư mục chính của Minnie "/ home / Minnie", chúng tôi cũng đã tạo thư mục "/ home / minnie / bin". Đây là nơi mà thư mục đó phát vào.
Chúng tôi sẽ chỉnh sửa tệp ".bash_profile" của Minnie và đặt đường dẫn của cô ấy chỉ trỏ đến thư mục đó. Chúng tôi cũng sẽ hạn chế tệp ".bash_profile" của Minnie để chỉ root mới có thể chỉnh sửa nó. Điều đó có nghĩa là không có người dùng nào khác có thể chỉnh sửa tệp đó và thay đổi đường dẫn của cô ấy.
sudo gedit /home/minnie/.bash_profile
Hoặc chỉnh sửa "PATH =" hiện có hoặc thêm dòng sau:
Path = $ home / bin
Lưu các tập tin. Tốt
Thay đổi chủ sở hữu của tập tin
[số 8]
để root bằng cách sử dụng
Chown.
lệnh và
Thay đổi quyền tệp
[số 8]
sử dụng
chmod.
chỉ huy. Chỉ người dùng root sẽ có thể chỉnh sửa tệp.
Chown Sudo Root: root /home/minnie/.bash_profile
sudo chmod 755 /home/minnie/.bash_profile
ls -l /home/minnie/.bash_profile
Lần sau, người dùng Minnie đăng nhập, đường dẫn của cô trỏ đến một thư mục duy nhất.
Người dùng bị hạn chế của chúng tôi Minnie chỉ có thể sử dụng các lệnh tích hợp bash như
echo.
Cái gì
bí danh.
, và
đăng xuất
. Cô ấy thậm chí không thể sử dụng
ls.
Những
ls
Chúng ta sẽ cần phải giảm bớt sự siết cổ của chúng ta một chút nếu chúng ta muốn họ có thể làm bất cứ điều gì hữu ích. Chúng tôi sẽ tạo một số liên kết tượng trưng từ thư mục "bin" của Minnie vào các lệnh mà chúng tôi muốn Minnie có thể sử dụng.
sudo ln -s / bin / ls / home / minnie / bin
sudo ln -s / bin / top / home / minnie / bin
sudo ln -s / bin / thời gian hoạt động / nhà / minnie / bin
sudo ln -s / bin / pinky / home / minnie / bin
Khi Minnie tiếp theo đăng nhập, cô ấy sẽ thấy rằng cô ấy có thể sử dụng các lệnh tích hợp bash, cộng với các lệnh đã được liên kết đến.
ls
hồng hào dave
thời gian hoạt động
Hạn chế người sử dụng hiện tại
Chúng tôi tạo ra minnie như một người dùng mới. Đến
thay đổi vỏ của một hiện
[số 8]
người sử dụng, chúng ta có thể sử dụng
-NS
(vỏ) tùy chọn của
usermod.
chỉ huy.
sudo usermod -s / bin / rbash mary
Bạn có thể dùng
ít hơn
lệnh trên “/ etc / passwd” tập tin để nhanh chóng xem những gì shell được thiết lập như vỏ mặc định của người dùng.
ít / etc / passwd
Chúng ta có thể thấy rằng mary dùng sẽ sử dụng vỏ bị hạn chế khi cô ghi tiếp theo trong.
Hãy nhớ để áp dụng các thay đổi khác để hạn chế họ
$ PATH.
biến môi trường và thiết lập các lệnh bạn muốn mary sử dụng để có thể thực thi.
Hạn chế Scripts
Một người dùng thông thường, không bị hạn chế có thể khởi chạy các tập lệnh được thực thi trong một shell bị hạn chế. Sao chép các dòng sau và dán chúng vào một trình soạn thảo. Lưu tệp dưới dạng "Hạn chế." Và đóng trình chỉnh sửa.
#! / Bin / bash # Script bắt đầu trong vỏ bash bình thường echo "## trong chế độ không giới hạn! ##" echo. echo "Thư mục hiện tại:` pwd` " echo "thay đổi thư mục" CD / usr / chia sẻ echo "Bây giờ trong thư mục:` pwd` " echo "thay đổi thành thư mục nhà" CD ~. echo "Bây giờ trong thư mục:` pwd` " # Cài đặt chế độ hạn chế Đặt -r. echo. echo "## ở chế độ hạn chế! ##" echo. echo "Thư mục hiện tại:` pwd` " echo "Thay đổi thư mục đến / home /" CD / HOME. echo "vẫn còn trong thư mục:` pwd` " echo. echo "cố gắng khởi động một shell khác" / bin / bash echo. echo "cố gắng chuyển hướng đầu ra lệnh" LS -L $ HOME & GT; my_files.txt. Cat my_files.txt. echo. thoát 0
Chúng ta cần sử dụng
chmod.
mệnh lệnh với.
+ X.
(Thực thi) cờ để thực hiện kịch bản.
chmod + x bị hạn chế.
Phần đầu tiên của tập lệnh chạy trong một vỏ bình thường.
./ Hạn chế.
Phần thứ hai của tập lệnh-bit sau khi dòng "set -r" chạy trong một shell bị hạn chế.
Không có hành động đã cố gắng thành công trong phần bị hạn chế của kịch bản.
Toàn bộ kịch bản có thể được thực hiện để chạy trong một vỏ bị hạn chế bằng cách thêm
-NS
đến dòng đầu tiên:
! # / Bin / bash -r
Nhớ Houdini.
Vỏ hạn chế rất hữu ích, nhưng không hoàn toàn không thể sai lầm. Một người dùng đủ lành nghề có thể thoát khỏi chúng. Nhưng khi được sử dụng một cách thận trọng, chúng là một cách hữu ích để thiết lập một tập hợp các giới hạn cho một tài khoản cụ thể.