Linux에서 모든 터미널 명령을 기록해야합니다. 나는 제대로 C에서 라이브러리 작업 발견했다,하지만 난 LD_PRELOAD=/usr/local/bin/bashpreload.so /bin/bash
실행하는 경우에만 작동합니다서버에 로그인 할 때마다 LD_PRELOAD가 표시됩니다.
[[email protected] ~]# LD_PRELOAD=/usr/local/bin/bashpreload.so /bin/bash
[[email protected] ~]# ldd /bin/bash
linux-vdso.so.1 => (0x00007ffe481f6000)
/usr/local/bin/bashpreload.so (0x00007f3f1b808000)
libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00007f3f1b5e7000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f3f1b3e3000)
libc.so.6 => /lib64/libc.so.6 (0x00007f3f1b04f000)
/lib64/ld-linux-x86-64.so.2 (0x00007f3f1ba09000)
[[email protected] ~]# exit
[[email protected] ~]# logout
Connection to XXX closed.
[[email protected] ~]$ ssh [email protected]
[email protected]'s password:
Last login: Tue Dec 19 11:28:22 2017 from YYY
[[email protected] ~]# ldd /bin/bash
linux-vdso.so.1 => (0x00007ffca2f98000)
libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00007f19a13ff000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f19a11fb000)
libc.so.6 => /lib64/libc.so.6 (0x00007f19a0e67000)
/lib64/ld-linux-x86-64.so.2 (0x00007f19a1620000)
:이 후 시스템에 다시 로그인하면
# ldd /bin/bash
linux-vdso.so.1 => (0x00007ffef59f8000)
/usr/local/bin/bashpreload.so (0x00007fe691323000)
libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00007fe691102000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fe690efe000)
libc.so.6 => /lib64/libc.so.6 (0x00007fe690b6a000)
/lib64/ld-linux-x86-64.so.2 (0x00007fe691524000)
, 내가 LDD와 lib 디렉토리를 볼 수 없습니다를
그리고 또 하나의 문제 :이 라이브러리를 사용하는 경우, 내 현재의 PID가 변화 : 그래서
Last login: Tue Dec 19 11:28:54 2017 from YYY
[[email protected] ~]# echo "Library is not uploaded"
Library is not uploaded
[[email protected] ~]# echo $$
4639
[[email protected] ~]# LD_PRELOAD=/usr/local/bin/bashpreload.so /bin/bash
[[email protected] ~]# echo $$
4654
[[email protected] ~]# ps awwufx | grep -B5 [4]654
root 1706 0.0 0.0 66256 1192 ? Ss 10:54 0:00 /usr/sbin/sshd
root 4517 0.0 0.0 104636 4644 ? Ss 11:27 0:00 \_ sshd: [email protected]/1
root 4519 0.0 0.0 108320 1872 pts/1 Ss+ 11:27 0:00 | \_ -bash
root 4637 0.0 0.0 104636 4624 ? Ss 11:30 0:00 \_ sshd: [email protected]/0
root 4639 0.0 0.0 108320 1872 pts/0 Ss 11:30 0:00 | \_ -bash
root 4654 0.0 0.0 110376 1956 pts/0 S 11:31 0:00 | \_ /bin/bash
, 나는 두 가지가 필요합니다
- 각 로그인 사용자에 대해
LD_PRELOAD
을 조용히 수행하는 방법을 찾으십시오. - 이유가 무엇인지 알고 난 후에 자식
/bin/bash
과정에서 일하고 있습니다.
고마워요!
스택 오버플로는 프로그래밍 및 개발 질문을위한 사이트입니다. 이 질문은 프로그래밍이나 개발에 관한 것이 아니기 때문에 주제와는 거리가 먼 것처럼 보입니다. 도움말 센터에서 [여기에서 내가 질문 할 수있는 항목은 무엇입니까?] (http://stackoverflow.com/help/on-topic)를 참조하십시오. 아마도 [Super User] (http://superuser.com/) 나 [Unix & Linux Stack Exchange] (http://unix.stackexchange.com/)가 더 나은 곳이 될 것입니다. – jww