chroot fail - không thể chạy lệnh `/ bin / bash ': Không có tệp hoặc thư mục như vậy


16

Tôi là một người mới chroot đang cố gắng tạo ra một nhà tù chroot đơn giản nhưng lại đập đầu vào cùng một vấn đề hết lần này đến lần khác ... Bất kỳ trợ giúp nào cũng sẽ được đánh giá cao

Tôi đã tạo một thư mục /usr/chrootmà tôi muốn sử dụng như một nhà tù và tạo các thư mục con bên dưới nó và sao chép các phụ thuộc của /bin/bashnó vào đó:

[root@WIG001-001 ~]# cd /usr/chroot/
[root@WIG001-001 chroot]# ls
[root@WIG001-001 chroot]# mkdir bin etc lib var home


[root@WIG001-001 chroot]# ldd /bin/bash        
linux-vdso.so.1 =>  (0x00007fff99dba000)        
libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00000037a2000000)        
libdl.so.2 => /lib64/libdl.so.2 (0x000000379fc00000)        
libc.so.6 => /lib64/libc.so.6 (0x000000379f800000)        
/lib64/ld-linux-x86-64.so.2 (0x000000379f400000)

[root@WIG001-001 chroot]# cp /lib64/libtinfo.so.5 /usr/chroot/lib/  
[root@WIG001-001 chroot]# cp /lib64/libdl.so.2 /udr/csr/chroot/lib/  
[root@WIG001-001 chroot]# cp /lib64/libc.so.6 /usr/chroot/lib/  
[root@WIG001-001 chroot]# cp /lib64/ld-linux-x86-64.so.2 /usr/chroot/lib/  
[root@WIG001-001 chroot]# cp /bin/bash bin  
[root@WIG001-001 chroot]# pwd  
/usr/chroot  
[root@WIG001-001 chroot]# /usr/sbin/chroot .  
/usr/sbin/chroot: cannot run command `/bin/bash': No such file or directory  


it looks like the /bin/bash created under /usr/chroot is fine as the below works:  
[root@WIG001-001 chroot]# su - nobody -s /usr/chroot/bin/bash  
-bash-4.0$ 

Bất cứ ai có thể cho tôi biết bất cứ nơi nào để đi từ đây?


Đây có phải là một lỗi đánh máy trong câu hỏi hoặc một lỗi trong các bước bạn thực hiện? cp /lib64/libdl.so.2 /udr/csr/chroot/lib/(nên /usrthay vì /udr)
Tạm dừng cho đến khi có thông báo mới.

Đó là một vật phẩm từ việc sử dụng Putty để ghi lại phiên telnet, xin lỗi. Như bạn đề xuất, lệnh thực tế được nhập là cp /lib64/libdl.so.2 / usr / chroot / lib /
Mike Atkinson

Câu trả lời:


30

Thông báo lỗi là sai lệch : /bin/bash: No such file or directorycó thể có nghĩa là /bin/bashkhông tồn tại hoặc trình tải động được sử dụng bởi /bin/bashkhông tồn tại. (Bạn cũng sẽ nhận được thông báo này cho tập lệnh nếu trình thông dịch trên #!dòng không tồn tại.)

/bin/bashđang tìm kiếm /lib64/ld-linux-x86-64.so.2nhưng bạn cung cấp /lib/ld-linux-x86-64.so.2. Tạo /usr/chroot/lib64một biểu tượng cho libhoặc ngược lại.


Xin lỗi, tôi thực sự đánh giá cao sự giúp đỡ & tôi chắc chắn rằng bạn đúng, nhưng tôi vẫn bối rối! Tôi không chắc chắn nơi bạn thấy / bin / bash đang được cung cấp với /lib/ld-linux-x86-64.so.2 và tôi càng bối rối vì / usr / chroot / lib64 không tồn tại. Sẽ là quá táo tợn khi yêu cầu một danh sách các lệnh? Tôi hiểu các liên kết sym & cách tạo chúng, nhưng thực sự bối rối bởi những gì đang xảy ra ở đây và những gì bạn đang đề xuất để sửa nó. Cảm ơn rất nhiều về sự giúp đỡ của bạn!
Mike Atkinson

1
@Mike: Nhìn vào các cplệnh của bạn : bạn đã sao chép các tệp từ /lib64trong hệ thống cơ sở vào /libtrong chroot. Nhưng nhị phân bash là vẫn đang tìm kiếm ld-linux-x86-64.so.2tại /lib64(mà bạn chưa tạo), không /lib. Bạn sẽ tự cứu mình khỏi những cơn đau đầu bằng cách thực hiện /lib/lib64tương đương trong chroot, vì vậy hãy chạy ln -s lib /usr/chroot/lib64. Về lý do tại sao thông báo lỗi là về bashvà không về ld-linux-x86-64.so.2, xem đoạn đầu tiên của tôi.
Gilles 'SO- đừng trở nên xấu xa'

Điều đó hoạt động hoàn hảo, cảm ơn bạn rất nhiều vì đã dành thời gian, nó được đánh giá cao!
Mike Atkinson

Câu trả lời chính xác. Trong trường hợp của tôi, sự cố xảy ra do rsync mà không có cờ bảo vệ liên kết
gtsouk

1
@miyalys Nếu /liblà một symlink để /usr/libsau đó đặt một tập tin /usr/libvào /lib, vì đó là cùng một thư mục! Lúc đầu, nó không hoạt động lúc đầu vì trình tải giữ bộ đệm của nội dung /lib/usr/libvà nó bắt đầu hoạt động khi bộ đệm được xây dựng lại. Chạy ldconfigxây dựng lại bộ đệm và nó có thể được thực hiện bởi bạn hoặc tự động, ví dụ như bởi người quản lý gói khi bạn cài đặt bản cập nhật phần mềm.
Gilles 'SO- ngừng trở thành ác quỷ'


-1

Tôi cũng gặp phải lỗi tương tự. Cách tốt nhất là tìm sự khác biệt giữa nội dung hình ảnh cứu hộ (CD trực tiếp) "/" và nội dung "/ mnt / sysimage".

Vấn đề đã được giải quyết bằng cách đối phó / bin và / sbin từ thư mục "/" đến "/ mnt / sysimage" khi nó vô tình bị xóa.

#cp -r /bin /sbin /mnt/sysimage
#reboot

-4

bạn hãy thử sao chép tập tin .bashrc trong thư mục chính. và nó sẽ giúp chắc chắn.


3
Thật vô nghĩa.
Sven
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.