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