bash 전용 chroot 환경을 설정하려고 합니다. 이것이 내가 지금까지 가지고 있는 것입니다:
[root@free]# tree .
.
├── bin -> usr/bin/
├── dev
├── etc
│ ├── bash.bash_logout
│ ├── bash.bashrc
│ ├── inputrc
│ └── profile
├── lib -> usr/lib/
├── lib64 -> usr/lib64/
├── proc
├── sys
└── usr
├── bin
│ └── bash
├── lib
│ ├── libc.so
│ ├── libc.so.6
│ ├── libdl.so
│ ├── libdl.so.2
│ ├── libncursesw.so.6
│ ├── libreadline.so
│ ├── libreadline.so.7
│ ├── libreadline.so.7.0
│ ├── libtinfo.so
│ └── libtinfo.so.6
└── lib64
└── ld-linux-x86-64.so.2
11 directories, 16 files
ldd
다음을 나열하십시오 bash
.
[root@free]# ldd /bin/bash
linux-vdso.so.1 (0x00007ffd388a3000)
libreadline.so.7 => /usr/lib/libreadline.so.7 (0x00007fa6e0baa000)
libdl.so.2 => /usr/lib/libdl.so.2 (0x00007fa6e09a6000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007fa6e05ea000)
libncursesw.so.6 => /usr/lib/libncursesw.so.6 (0x00007fa6e037d000)
/lib64/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007fa6e10d8000)
chroot 환경으로 들어가는 것은 이미 작동합니다( I have no name!
passwd 파일을 스프레이 복사하지 않았기 때문에 좋습니다):
[root@free jail]# chroot .
[I have no name!@jail]#
질문
이 줄을 입력하면 p
e
backspace
w
d
다음과 같이 표시됩니다.
[I have no name!@jail]#pe wd
Enter로 실행하면 실행되고 pwd
인쇄 됩니다.
/
화살표 키(왼쪽 및 오른쪽)도 이상하게 작동합니다. 커서를 이동하지 않고 여러 문자를 인쇄하면 p
d
left
w
chroot 외부에서는 pdwd
이런 일이 발생하지 않습니다 .bash
이 문제를 어떻게 해결할 수 있나요?
내가 도서관 같은 것을 복사하는 것을 잊었나요? 질문 이 있으신가요 ? libreadline
(복사했습니다 ) etc/inputrc
아니면 이것이 libncursesw
문제일까요?
답변1
나는 살펴보았다최소 chroot를 생성하는 스크립트/usr/share/terminfo/
그리고 libcurses가 터미널 명령 시퀀스를 사용하고 처리하는 디렉터리가 누락되었음을 확인했습니다 . 필요할 수 있는 몇 가지 추가 파일(등)을 제외하고 /etc/resolv.conf
이것이 제가 하려는 작업입니다.
답변2
/etc/terminfo/README
위에 표시된 대로 읽기http://web.archive.org/web/20120621035133/http://www.ibb.net/~anne/keyboard/keyboard.html, terminfo가 어디에 있는지 알아내도록 도와주세요:
고양이/etc/terminfo/README
이 디렉토리는 시스템 로컬 용어 정보 설명에 사용됩니다. 기본적으로 ncurses는 ${HOME}/.terminfo를 먼저 검색한 다음 /etc/terminfo(이 디렉터리), /lib/terminfo, 마지막으로 /usr/share/terminfo를 검색합니다.
비어 있기 때문에 (그러나 많은 사이트에서 일반적인 답변임) 이곳은 /usr/share/terminfo/
최근 릴리스에 있는 /lib/terminfo/
좋은 장소인 것 같습니다.
따라서 비어 있지 않은 디렉토리를 다음과 같이 chroot 디렉토리에 복사하십시오.
- /etc/terminfo/
- /lib/terminfo/
- /usr/share/terminfo/