Tôi đã cài đặt jailkittrên Ubuntu 12.04và 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.bashrcthay vì/etc/profile
Nếu bạn chưa sử dụng jailkittrướ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 testuserngười có một mục /etc/passwdnhư thế này:
testuser:x:1002:1003::/home/jail/./home/testuser:/usr/sbin/jk_chrootsh
Trong tập tin /home/jail/etc/passwdcó 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 bashnó thực sự đang được gọi bởi /usr/sbin/jk_chrootshnhưng tôi không hiểu làm thế nào để bashxá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.