여러 사용자와 터미널 공유(화면 또는 기타 수단을 통해)

여러 사용자와 터미널 공유(화면 또는 기타 수단을 통해)

여러 개발자가 여러 응용 프로그램을 작업하는 서버를 설정하고 있습니다.

나는 특정 개발자에게 필요한 애플리케이션 디렉토리에 대한 공유 액세스를 사용 setgid bit하고 default ACLs그룹의 모든 사람에게 액세스 권한을 부여하는 방법을 알아냈습니다.

이러한 애플리케이션 중 다수는 개발 중에 쉽게 액세스할 수 있도록 터미널에서 실행됩니다. 혼자 작업할 때는 애플리케이션에 대한 사용자를 설정하고 그 사용자로 화면을 실행합니다. 단점은 이를 사용하는 모든 개발자가 screen session비밀번호를 알아야 하고 사용자 계정과 애플리케이션 계정을 분리하기 어렵다는 것입니다.

이를 수행하는 한 가지 방법은 화면 다중 사용자 기능을 사용하는 것입니다. 기본적으로 작동하지 않지만 화면이 필요하다고 불평합니다 suid root. 단점이 있습니까? 나는 내가 사용하는 모든 것에 매우 주의를 기울인다 suid root. 어쩌면 기본값이 아닌 이유가 있을까요?

이 작업을 수행해야 합니까 screen, 아니면 제가 원하는 작업을 수행하는 다른 합리적인 방법이 있습니까?

답변1

screen예, 다중 사용자 지원을 사용하면 이 작업을 수행할 수 있습니다.

먼저 새 세션을 만듭니다.

screen -d -m -S multisession

그것에 추가하십시오:

screen -r multisession

다중 사용자 지원을 켜십시오:

누르고 Ctrl-a입력하세요(참고: Ctrl+a모든 명령 앞에 필요함, 즉 여기서는 두 번).

:multiuser on
:acladd USER ← use username of user you want to give access to your screen

이제 Ctrl-a d세션을 나열하십시오.

$ screen -ls
There is a screen on:
    4791.multisession   (Multi, detached)

이제 다중 사용자 스크린 세션이 생겼습니다. acl'd 사용자에게 이름을 할당하여 multisession사용자가 연결할 수 있도록 합니다.

screen -x youruser/multisession

그게 다야.

유일한 단점은 screen루트로 실행해야 한다는 것입니다 suid. 그러나 내가 아는 한 이것은 기본적이고 정상적인 상황입니다.

또 다른 옵션은 다음과 같습니다 screen -S $screen_id -X multiuser on.screen -S $screen_id -X acladd authorized_user

도움이 되었기를 바랍니다.

답변2

@Scyld de Fraud의 답변 단계를 따른 후에도 이 질문에 대해 다른 사람들이 다중 사용자 작업을 수행할 수 없는 이유는 SELinux를 활성화해야 하기 때문이라고 판단했습니다(참조https://phoenixnap.com/kb/enable-selinux-centos). 다중 사용자 디스플레이에서 개별 사용자에게 액세스를 제한하거나 부여하기 위해 액세스 제어 목록(화면 acladd및 명령을 통해) 권한을 할당하고 좀비 세션을 다시 시작하는 등의 기능을 사용하려면 Screen에 이 기능이 필요합니다.aclchg

답변3

원본 포스트-이 답변도착하다스크린 세션에서 명령을 실행하는 방법:

시간이 좀 걸렸지만 내가 찾은 것은 다음과 같습니다.화면 4.06 오류가 있습니다. 공유 화면 세션을 통해 이와 같은 명령을 보내려는 경우 실패합니다.

screen -S shared_session_name -X stuff "command \n"

다음 오류로 인해 화면이 실패합니다.

Cannot opendir /run/screen/S-$USER: Permissions denied

버전 업데이트 후화면 4.09효과가있다.

관련 정보