사용자에게 tmux의 효과 부여

사용자에게 tmux의 효과 부여

당신이 보면STIG 참조 번호 V-230349원문을 보시고 요약해드리도록 하겠습니다.

초기 문 또는 규칙 제목은 다음과 같습니다.RHEL 8은 셸이 초기화될 때 세션 제어가 자동으로 시작되도록 해야 합니다.

다음이 필요합니다.

# /etc/profile.d/tmux.sh

if [ "$PS1" ]; then
  parent=$(ps -o ppid= -p $$)
  name=$(ps -o comm= -p $parent)
  case "$name" in (sshd|login) tmux ;; esac
fi

어떤 경우에는 다음 정보만 제공됩니다.

토론: Tmux는 단일 화면에서 여러 터미널을 생성, 액세스 및 제어할 수 있는 터미널 멀티플렉서입니다. Red Hat은 tmux를 권장 세션 제어 패키지로 승인합니다.

보안에 대한 이유나 근거에 대한 언급은 없지만 규칙에 대해 웹 검색을 하면 이를 정당화하려는 것으로 보이는 자세한 내용을 읽을 수 있습니다. 또한 후속 관련 안전 규정에도

#  /etc/tmux.conf

set -g lock-command vlock
bind X lock-session
set -g lock-after-time 900 

따라서 이 설정을 사용 /etc/profile.d/tmux.sh하면 15분 동안 문자가 입력되지 않으면 모든 tmux 세션에 비밀번호 프롬프트가 표시됩니다. 그 tmux 창.tmuxtmux.conf

tmux내 질문은 그것을 [예상대로] 사용하고 이해하는 사람들을 위한 것입니다 (나는 tmux를 사용하지 않기 때문에).이것이 tmux를 사용하는 좋은 방법인가요, 아니면 나쁜 방법인가요? Linux의 모든 터미널 창에 비밀번호 프롬프트가 표시되도록 하는 것 외에도, 즉 사용자가 직접 입력하지 않은 경우 exitkill tmux를 사용하고 정상적으로 계속 진행합니다. 그러나 내 경험에 따르면 99%의 사용자는 Linux나 심지어 tmux도 이해하지 못합니다. 첫 번째 불만은 종료를 입력했지만 이제 창이 닫히지 않는다는 것입니다.

그러나 tmux지적인 마음 의 경우 tmux, 모든 곳에서 그러한 사용을 시행하면 많은 tmux 세션이 열리고 잊혀질 위험이 있지 않을까요? ...Tmux는 터미널 멀티플렉서이므로 하나의 화면에서 여러 터미널을 생성, 액세스 및 제어할 수 있습니다.;그래서 관리자로서 나는 사용자가 자신이 전혀 모르는 일이나 관리 방법을 실행하는 것을 원하지 않습니다.

답변1

STIG의 온라인 버전 요구 사항exec tmux;이렇게 하면 tmux시작하자마자 로그아웃하는 문제가 해결되지 않으며 사용자가 두 번 로그아웃할 필요도 없습니다.

이를 모르는 사용자는 tmux결국 세션을 떠나서는 안 됩니다 tmux. 내부에서 더 많은 창을 시작하지 않으므로 tmux셸을 종료할 때 tmux또한 종료됩니다.

이와 같은 설정을 사용하면 일부 사용자는 결국 불이익을 받게 됩니다.하다그것에 대해 배우고 tmux장기 세션에 사용하십시오. 이러한 사용자는 시스템이 강제로 시작될 때마다 tmux이전 세션( Ctrlb() 으로 수동으로 전환해야 합니다.그것들사용자는 tmux최소한의 오버헤드에도 불구하고 결국 세션을 떠날 수 있습니다.

개인적으로 로그인한 사용자에게 속한 분리된 세션에 자동으로 다시 참여하도록 변경되는 한 이와 같은 설정은 마음에 들지 않습니다. (비슷하다 tmux has-session && exec tmux attach-session || exec tmux.)

답변2

screen수년 동안 비슷한 구성을 사용했지만 이전 세션에 로그인을 다시 연결할 수 있었습니다. (보안 조치가 아닌 편의 조치이므로 세션에 비밀번호가 적용되지 않습니다.)

일반적으로 말하면 매우 잘 작동합니다. 일반적으로 네트워크 연결이 중단될 때 세션이 "분리됨" 대신 "활성"으로 표시되는 경우가 있습니다.그리고세션이 유휴 상태입니다(입력/출력 없음). 이 문제는 셸이나 자체(지원되는 경우)에서 유휴 시간 제한을 설정하여 해결할 수 있습니다 tmux.

내가 사용한 한 버전은 exec screen직접 쉘에서 완전히 실패했습니다. 이것이 클라이언트(프로그램)가 호출하는 것입니다:

ssh -q -tt "$host" \
        "screen -dr $session || screen -S $session -l $* || screen -l $* || screen || bash -i || sh -i"

여기서는 $host원격 대상 호스트를 참조하며 $session연결이 끊긴 세션을 일치시키는 데 사용하는 알려진 접두사를 사용하여 형식화된 세션 이름입니다.

관련 정보