/etc/tmux.conf를 통해 세션을 잠그도록 구성된 tmux를 실행 중입니다.
set-option -g lock-command "/usr/bin/vlock -c"
set-option -g lock-after-time 300
(의도는 GNU를 대체하여 screen
내가 사용하는 다양한 터미널 에뮬레이터에서 더 나은 성능을 발휘하는지 확인하는 것입니다. GNU는 idle 300 lockscreen
구성에 포함되어 있습니다.)
때때로 세션을 잠그고 며칠 동안 그대로 두면 세션으로 돌아가서 세션이 vlock
내 CPU를 대부분 소비하고 있음을 확인할 수 있습니다( 96-98로 top
표시 ).%CPU
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
19002 root 20 0 48176 8888 1040 R 98.7 1.8 13:00.60 vlock
이런 일이 발생하면 /var/log/secure 및 /var/log/audit/audit.log 모두에 많은 수의 로그 항목이 나타납니다. 예를 들면 다음과 같습니다.
==> /var/log/audit/audit.log <==
type=USER_AUTH msg=audit(1502738594.043:4705): pid=19002 uid=0 auid=0 ses=14 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 msg='op=PAM:authentication grantors=? acct="root" exe="/usr/bin/vlock" hostname=? addr=? terminal=pts/0 res=failed'
==> /var/log/secure <==
Aug 14 20:23:14 hostname.local vlock[19002]: pam_unix(vlock:auth): auth could not identify password for [root]
Aug 14 20:23:14 hostname.local vlock[19002]: pam_succeed_if(vlock:auth): requirement "uid >= 1000" not met by user "root"
tty 콘솔 중 어느 것도 잠긴 것으로 나타나지 않습니다. 모두 로그아웃된 것으로 나타납니다. 이 프로세스는 (적어도 에 따르면 ) tmux
프로세스의 소유자인 것 같습니다 .vlock
ps
# ps -ef | grep vlock
root 19002 4102 0 Aug09 ? 00:21:35 /usr/bin/vlock -c
root 25318 24147 0 20:41 pts/7 00:00:00 grep --color=auto vlock
# ps -ef | grep 4102
root 4102 1 0 Aug02 ? 00:00:00 tmux new-session -t root
root 19002 4102 0 Aug09 ? 00:22:25 /usr/bin/vlock -c
나는 이것이 tmux와 vlock이 각각의 터미널에서 어떻게든 "분리"되었음을 의미한다고 생각 ?
하지만, 이를 수정하는 방법을 모르겠습니다 kill -9 19002
.
또한 audit.log 항목이 SELinux 예외 누락을 의미한다고 추측했지만 이는 vlock이 실행된 지 며칠 후에만 발생하는 것처럼 보였으며 이것이 문제가 될 것이라고 생각했습니다.언제나발생하다.
다시 말하지만, pam_succeed_if
보안 메시지는 다음과 같습니다.무엇사용자 이름/비밀번호를 확인하려고 시도했지만 루트의 UID가 1000 미만이기 때문에 실패했지만 이를 수행하는 프로세스를 찾을 수 없습니다. 또한 아직 다른 사용자를 설정하지 않았기 때문에 UID가 1000보다 큰 사용자가 없습니다. 다시 한번 말하지만, 이는 단지 며칠 후에 나타나는 것이 아니라 계속해서 문제가 될 것으로 예상됩니다.
SSH를 통해 연결하고 tmux가 세션을 다시 연결하거나 병합하도록 허용하면( tmux new-session -t $USER
) 이전과 동일한 세션을 볼 수 있습니다. 세션이 5분 동안 유휴 상태이면 다른 SSH 세션을 사용하여 두 번째 인스턴스를 볼 수 있습니다 .vlock
, 그리고 :tmux
sshd
root 26751 22688 0 21:02 pts/4 00:00:00 /usr/bin/vlock -c
root 22688 22681 0 20:22 pts/4 00:00:00 tmux new-session -t root
root 22681 838 0 20:22 ? 00:00:00 sshd: root@pts/4
root 838 1 0 Aug02 ? 00:00:00 /usr/sbin/sshd -D
내가 생각할 수 있는 관련 버전:
- /etc/redhat-release:
CentOS Linux release 7.3.1611 (Core)
- 이름-a:
Linux server.local 3.10.0-514.26.2.el7.x86_64 #1 SMP Tue Jul 4 15:04:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
- tmux-V:
tmux 1.8
- vlock -v:
1.15.5
vlock
Base나 EPEL에 더 적합한 대안이 있는지는 신경 쓰지 않습니다 . 그렇지 않다면 잠금보다는 강제 연결 해제 lock-command
로 설정해 볼까 생각 하지만 잠금 패러다임이 마음에 듭니다.tmux detach-client
이 회전 대기 문제를 방지하려면 어떻게 해야 합니까? 명백한 결함으로 인해 GNU Screen은 그 어느 때보다 리소스 집약적인 것처럼 보였습니다.
업데이트 #1
좋습니다. 이제 안정적으로 다시 만들 수 있습니다.
- SSH를 통해 서버에 로그인
- 세션 생성/연결
tmux
(FWIW 로그인 스크립트에서 이 작업을 수행함) - 세션이 유휴 상태가 되도록 허용하고 잠금을 시작합니다.
- 내 워크스테이션에서 SSH 클라이언트를 종료합니다(예: 클라이언트를 완전히 종료하지 않음).
vlock
회전하기 시작할 것이다
매분 cron 작업을 사용하여 실행하는 스크립트에서 다음을 사용하면 이 문제를 해결할 수 있을 것 같습니다.
ps -ef \
| grep -F '/usr/bin/vlock' \
| grep -Fv 'grep' \
| awk '$6 == "?" { print $2 }' \
| xargs -r kill -9
...하지만 약간 해킹처럼 느껴집니다.
더 나은 제안을 환영합니다.
답변1
나도 재현할 수 있다. SSH를 상자에 넣고 vlock하고 SSH를 종료하고 vlock을 열어 두십시오. 잠시 후 우리는 이것을 얻었습니다 ...
cat /etc/os-release
NAME="Amazon Linux"
VERSION="2"
ID="amzn"
ID_LIKE="centos rhel fedora"
VERSION_ID="2"
PRETTY_NAME="Amazon Linux 2"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2"
HOME_URL="https://amazonlinux.com/"