사용자당 하나의 스크린 세션을 갖고 이를 로그인 셸로 설정하려면 어떻게 해야 합니까?

사용자당 하나의 스크린 세션을 갖고 이를 로그인 셸로 설정하려면 어떻게 해야 합니까?

사용자가 CLI 인터페이스를 사용하여 로그인할 때마다 자동으로 화면이 실행되도록 설정하려면 어떻게 해야 합니까? 해당 사용자에 대해 이미 실행 중인 스크린 세션이 있는 경우 해당 스크린 세션에 새 로그인을 연결하고 싶습니다. 스크린 세션에 연결할 때마다 새 로그인마다 새 창이 생성된다면 정말 좋을 것입니다.

답변1

먼저, 이 작업을 수행할 사용자에 대해 해당 ~/.screenrc라인이 있는지 확인하십시오.

shell /bin/bash

(또는 사용자가 현재 사용하는 다른 쉘). 이 설정을 지정하지 않고 우리처럼 쉘을 변경하면 사용자는 로그인할 수 없습니다. 이 줄을 사용하여 화면 시작 메시지를 없애는 것을 고려할 수도 있습니다.

startup_message off

좋아, 이제 이미 실행 중인 첫 번째 화면 세션이 종료되고 이미 실행 중인 화면이 없으면 세션을 시작하는 실행 가능한 스크립트를 만들어 보겠습니다. 터미널에서 실행

sudo nano /bin/screenlogin.sh

다음 두 줄을 입력하세요.

#!/bin/bash
screen -x -r || screen

을 누른 Ctrl x다음 y파일을 저장하세요. 달리다

sudo chmod 755 /bin/screenlogin.sh

chsh마지막으로 대상 사용자에서 실행 하고 /bin/screenlogin.sh요청 시 셸에 입력합니다.

답변2

달리기는 screen -xR기본적으로 달리기와 동일합니다 screen -xr || screen.

문제는 내가 아는 한 로그인 쉘에 플래그를 전달할 수 없다는 것입니다. 또한 로그인 셸로 화면과 같은 셸이 아닌 것을 사용하면 SFTP와 같은 문제가 발생할 수 있습니다.

따라서 우리가 할 일은 bash를 로그인 쉘로 설정하는 것입니다. 그런 다음 .bashrc(시작할 때 bash가 실행되는 파일) 끝에 screen을 실행하는 코드를 추가합니다. 그러면 Screen은 에 지정된 모든 쉘을 실행합니다 .screenrc.

우리는 이 명령이 특별한 조건에서만 실행되도록 만들 것입니다: 현재 실행 중인 bash 복사본이 다른 bash 복사본에 의해 (아마도 간접적으로) 시작되지 않은 경우에만. 이렇게 하면 사용자가 bash를 쉘로 원하고 화면이 그 안에서 bash를 시작하는 경우 컴퓨터가 실행될 때까지 사용자는 bash 내부 화면 내부 bash 내부 화면 내부에서 러시아 인형의 폭발적인 bash를 얻지 못하게 됩니다. 메모리가 부족합니다.

먼저 를 실행하여 셸을 /bin/bash로 변경한 chsh다음 비밀번호를 입력하고 /bin/bashEnter 키를 누릅니다.

다음으로 홈 폴더의 숨겨진 .bashrc파일을 편집하여 끝에 다음을 추가합니다.

if [ ${SHLVL} -eq 1 ]; then
    ((SHLVL+=1)); export SHLVL
    exec screen -xR
fi

.screenrc이제 홈 폴더의 숨겨진 파일을 편집(종료하지 않으면 생성)합니다 . 다음 설정을 추가하거나 편집합니다.

shell /bin/zsh
startup_message off

(물론, Zsh가 아닌 다른 쉘을 원한다면 대신에 넣으십시오. Bash에서도 작동할 것입니다.)

관련 정보