읽기 전용 모드에서 "화면"을 실행하는 방법이 있습니까?

읽기 전용 모드에서 "화면"을 실행하는 방법이 있습니까?

screen사용자 오류로 인한 문제를 방지하기 위해 읽기 전용 모드에서 기존 세션의 진행 상황과 출력을 확인할 수 있도록 하고 싶습니다 . 이를 수행할 수 있는 방법이 있습니까?

답변1

불행히도 대답은 '아니요'라고 생각합니다. 질문자는이 문제로 전환멀티플렉서특히 해당 기능(연결 시 플래그 전달)이 있으므로 -r다중화기를 전환할 수 있는 옵션이 있는 경우 최선의 선택이 될 수 있습니다.

답변2

당신은 시도 할 수 있습니다:

aclchg username -w "#"

다중 사용자 모드에서 실행 중인 경우 screen(그러나 단일 추가 사용자로 테스트할 때는 작동하기 위해 특별한 작업을 수행할 필요가 없었습니다). 다중 사용자 모드로 들어가야 하는 경우에는 를 사용하십시오 multiuser on.

*이 사용자 이름을 사용하여 모든 사용자에게 영향을 미칠 수 있습니다 .

쓰기 모드를 활성화하는 +w대신 사용하세요 .-w

~에서man screen:

aclchg 사용자 이름 권한 목록
chacl 사용자 이름 권한 목록

쉼표로 구분된 사용자 목록에 대한 권한을 변경합니다. 권한 비트는 "r", "w" 및 "x"로 표시됩니다. 접두사 "+"는 권한을 부여하고 "-"는 권한을 제거합니다. 세 번째 인수는 쉼표로 구분된 명령 및/또는 창 목록입니다(번호나 제목으로 지정). 특수 목록 "#"은 모든 창을 나타내고 "?"는 모든 명령을 나타냅니다. 사용자 이름이 단일 "*"로 구성되면 알려진 모든 사용자가 영향을 받습니다. 사용자에게 "x" 비트가 있으면 명령을 실행할 수 있습니다. 사용자가 "w" 비트를 설정하고 다른 사용자가 창에 대한 쓰기 잠금을 획득하지 않은 경우 사용자는 창에 입력을 입력할 수 있습니다. 다른 비트는 현재 무시됩니다. 창 2에서 다른 사용자의 쓰기 잠금을 취소하려면: "aclchg 사용자 이름 -w+w 2". 세션에 대한 읽기 전용 액세스를 허용하려면: 'aclchg 사용자 이름 -w "#"'. 화면의 사용자 이름이 알려지면 세션에 연결할 수 있으며 (기본적으로) 모든 명령과 창에 대한 전체 권한을 갖게 됩니다. acl 명령, "at" 및 기타 명령에 대한 실행 권한도 제거해야 합니다. 그렇지 않으면 사용자가 쓰기 권한을 다시 얻을 수 있습니다. 특수 사용자 이름 none의 권한은 변경할 수 없습니다("su" 명령 참조). "Chacl"은 "aclchg"의 동의어입니다. 다중 사용자 모드에만 해당됩니다.

답변3

출력을 안전하게 모니터링하는 매우 간단한 해결 방법을 찾았습니다.

screen 세션에 들어간 후 즉시 다음 명령을 실행하십시오.

echo /tmp/$STY
touch /tmp/$STY
chmod 0600 /tmp/$STY
script -a -f /tmp/$STY

스크립트 출력을 사용하여 세션을 분리 Ctrl-A d하고 스크립트 출력을 따릅니다. 예:

tail -f /tmp/10751.test

답변4

방금 "추가 공지가 있을 때까지 일시 중단됨"에서 제공한 답변을 테스트했습니다. 작동하지만 컨텍스트가 필요할 수 있습니다. Debian 10에서 제가 따랐던 단계는 다음과 같습니다.

# chmod 4755 /usr/bin/screen        # screen requires setuid for multiuser mode
# chmod 0755 /run/screen            # screen requires this if setuid

$ screen -dR oneway                 # run as normaluser
^A:multiuser on                     # enable multiuser mode
^A:acladd readonlyuser              # allow access by readonlyuser
^A:aclchg readonlyuser -w '#'       # drop write access for readonlyuser
$ 

$ screen -x normaluser/oneway       # run as readonlyuser
$ [enter]                           # try to enter text - should fail
write: permission denied (user readonlyuser)

관련 정보