Tôi đã cài đặt jailkit
trên Ubuntu 12.04
và tôi đã thiết lập shell của người dùng để /bin/bash
- nhưng khi nó được gọi nó chạy /etc/bash.bashrc
thay vì/etc/profile
Nếu bạn chưa sử dụng jailkit
trước đây thì đây là ý chính của nó:
- Một phiên bản "bỏ tù" của root hệ thống được tạo ở đâu đó, như / home / jail
- Thư mục nhà của người dùng bị bỏ tù được di chuyển bên trong thư mục đó như / home / jail / home / testuser
- Các tệp cấu hình liên quan được sao chép vào / home / jail / etc / - bao gồm giới hạn / etc / passwd
- Các chương trình mà bạn muốn cho phép truy cập được sao chép vào các thư mục tương ứng, như / bin / bash
- Khi một người dùng bị bỏ tù đăng nhập, họ sẽ được chọn vào / etc / jail / và không thể thấy bất kỳ tệp nào ở trên
Vì vậy, tôi có một testuser
người có một mục /etc/passwd
như thế này:
testuser:x:1002:1003::/home/jail/./home/testuser:/usr/sbin/jk_chrootsh
Trong tập tin /home/jail/etc/passwd
có một mục như:
testuser:1001:1003::/home/testuser:/bin/bash
Tôi đã đọc mặc dù bash(1)
và vì vậy tôi nghĩ rằng vấn đề là bash nghĩ rằng nó không được gọi như một vỏ đăng nhập:
Khi bash được gọi dưới dạng shell đăng nhập tương tác hoặc dưới dạng shell không tương tác với tùy chọn --login, đầu tiên nó sẽ đọc và thực thi các lệnh từ tệp / etc / profile, nếu tệp đó tồn tại.
Tôi hiểu rằng bash
nó thực sự đang được gọi bởi /usr/sbin/jk_chrootsh
nhưng tôi không hiểu làm thế nào để bash
xác định loại vỏ đó là gì và tập hợp các tệp khởi động nào sẽ chạy.
Tôi muốn xem liệu tôi có thể khắc phục sự cố này không - nhưng tôi không hiểu:
Làm thế nào để bash biết làm thế nào nó đang được gọi?
ps: Tôi cũng nhìn vào login(1)
mà không gặp nhiều may mắn.