Với việc phát hành OpenSSH 4.9p1, bạn không còn phải dựa vào các bản hack của bên thứ ba hoặc các thiết lập chroot phức tạp để giới hạn người dùng vào thư mục chính của họ hoặc cấp cho họ quyền truy cập vào các dịch vụ SFTP.
chỉnh sửa / etc / ssh / sshd_config (/ etc / sshd_config trên một số bản phân phối) và đặt các tùy chọn sau:
Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
Đảm bảo chỉ thị của Match Match ở cuối tập tin. Điều này cho OpenSSH biết rằng tất cả người dùng trong nhóm sftp sẽ được chọn vào thư mục chính của họ (mà% h đại diện trong lệnh ChrootDirectory
Đối với bất kỳ người dùng nào bạn muốn chroot, hãy thêm họ vào nhóm sftp bằng cách sử dụng:
# usermod -G sftp joe
# usermod -s /bin/false joe
# chown root:root /home/joe
# chmod 0755 /home/joe
Lệnh usermod ở trên sẽ thêm joe người dùng vào nhóm sftp và đặt shell của họ thành / bin / false để họ hoàn toàn không thể có quyền truy cập shell. Các lệnh chown và chmod sẽ đặt các quyền cần thiết cho thư mục. Với các quyền này được đặt, người dùng sẽ được phép tải lên và tải xuống tệp, nhưng không thể tạo thư mục hoặc tệp trong thư mục gốc
Chroot tài khoản shell phức tạp hơn một chút vì nó yêu cầu một số tệp thiết bị nhất định và vỏ có sẵn trong thư mục nhà của người dùng. Các lệnh sau sẽ thiết lập một hệ thống chroot rất cơ bản trên Mandriva Linux:
# mkdir /chroot
# cd /chroot
# mkdir {bin,dev,lib}
# cp -p /bin/bash bin/
# cp -p /lib/{ld-linux.so.2,libc.so.6,libdl.so.2,libtermcap.so.2} lib/
# mknod dev/null c 1 3
# mknod dev/zero c 1 5
# chmod 0666 dev/{null,zero}
# mkdir -p /chroot/home/joe
Với những điều trên, người dùng joe có thể ssh in và sẽ bị giới hạn trong chroot. Thật không may, điều này không làm được gì nhiều, nhưng nó cho bạn ý tưởng về cách thiết lập nó. Tùy thuộc vào những gì bạn muốn cung cấp, bạn sẽ cần cài đặt thêm thư viện và nhị phân.
Tạo một chroot
Cài đặt các gói dchroot và debootstrap.
Là một quản trị viên (tức là sử dụng sudo), tạo một thư mục mới cho chroot. Trong thủ tục này, thư mục /var/chroot
sẽ được sử dụng. Để làm điều này, gõ sudo mkdir /var/chroot
vào một dòng lệnh.
Là một quản trị viên, mở
/etc/schroot/schroot.conf
trong một trình soạn thảo văn bản. Loại cd /etc/schroot
, theo sau gksu gedit schroot.conf
. Điều này sẽ cho phép bạn chỉnh sửa các tập tin.
Thêm các dòng sau vào schroot.conf
và sau đó lưu và đóng tệp. Thay thế
your_username
bằng tên người dùng của bạn.
[lucid] description = Ubuntu Lucid location = / var / chroot ưu tiên = 3 users = your_username Groups = sbuild root-Groups = root
Mở một thiết bị đầu cuối và gõ:
sudo debootstrap --variant=buildd --arch i386 lucid /var/chroot/ \
http://mirror.url.com/ubuntu/
Điều này sẽ tạo ra một 'cài đặt' cơ bản của Ubuntu 10.04 (Lucid Lynx) trong chroot. Có thể mất một lúc để các gói được tải xuống. Lưu ý: Bạn có thể thay thế lucid bằng phiên bản Ubuntu bạn chọn. Lưu ý: Bạn phải thay đổi ở trên mirror.url.com
với URL của máy nhân bản lưu trữ hợp lệ cục bộ với bạn. Một chroot cơ bản bây giờ đã được tạo ra. Gõ sudo chroot /var/chroot
để thay đổi thành một vỏ gốc bên trong chroot.
Thiết lập chroot
Có một số bước cơ bản bạn có thể thực hiện để thiết lập chroot, cung cấp các phương tiện như độ phân giải DNS và quyền truy cập /proc
.
Lưu ý: Nhập các lệnh này trong một vỏ nằm ngoài chroot.
Nhập thông tin sau để gắn /proc
hệ thống tập tin vào chroot (cần thiết để quản lý các quy trình):
sudo mount -o bind /proc /var/chroot/proc
Nhập thông tin sau để cho phép phân giải DNS từ trong chroot (cần thiết để truy cập Internet):
sudo cp /etc/resolv.conf /var/chroot/etc/resolv.conf
Rất ít gói được cài đặt theo mặc định trong một chroot (thậm chí sudo chưa được cài đặt). Sử dụng apt-get install package_name
để cài đặt các gói.