의사 터미널 오류:: "mesg: /dev/pts/2를 열 수 없습니다: 권한이 거부되었습니다."

의사 터미널 오류:: "mesg: /dev/pts/2를 열 수 없습니다: 권한이 거부되었습니다."

userA내 Ubuntu 20.04.5 시스템에는 계정으로 Perl 스크립트가 실행되고 있습니다 . 스크립트는 다음 명령을 실행합니다.

sudo su - userB -c "ssh -l userB 10.0.0.1 ls -tr /some/remote/directory"

(즉, 원격 호스트에 SSH를 통해 연결 userB하고 모든 파일을 나열합니다 /some/remote/directory.)

명령은 잘 실행됩니다. 단, 명령줄에 오류가 표시됩니다.

me@ubuntu1$ sudo su - userB -c "ssh -l userB 10.0.0.1 ls -tr /some/remote/directory"
mesg: cannot open /dev/pts/2: Permission denied
Welcome to 10.0.0.1!  You have logged in.
file1.txt
file2.txt
file3.txt
me@ubuntu1$

mesg: cannot open /dev/pts/2: Permission denied그 메시지는 무엇입니까? ? ?

약간의 인터넷 조사드러내다:

/dev/pts의 항목은 의사 터미널(pty라고 함)입니다. Unix 커널에는 범용 터미널 개념이 있습니다. 터미널은 애플리케이션이 터미널 장치를 통해 출력을 표시하고 입력을 받는 방법을 제공합니다.

의사 터미널을 통해 읽고 있다고 가정해 보겠습니다.

프로그램이 읽기 위해 터미널을 열면 사용자의 입력이 프로그램에 전달됩니다. 여러 프로그램이 동일한 터미널에서 읽는 경우 각 문자는 프로그램 중 하나로 독립적으로 라우팅됩니다. 이는 권장되지 않습니다. 일반적으로 주어진 시간에 하나의 프로그램만 터미널에서 적극적으로 데이터를 읽고 있습니다. 프로그램이 포그라운드에 있지 않을 때 제어 터미널에서 데이터를 읽으려는 시도는 SIGTTIN 신호에 의해 자동으로 중단됩니다.

흥미롭긴 한데... 왜 그걸 보고 있는지 아직도 헷갈립니다 mesg: cannot open /dev/pts/2: Permission denied. 저는 아직 스크립트를 개발 중이며 여러 번 실행했습니다. 처음 실행했을 때 이 오류 메시지가 나타났는지 기억이 나지 않습니다. 내 스크립트가 실행될 때마다 /dev/pts/2매번 액세스를 시도하지만 내 코드가 연결을 제대로 닫지 못하는 것이 가능합니까 ?

userA아니면 이것은 run 명령을 사용하는 것과 관련이 있습니까 userB? 다른 사용자 계정에 접속하면 의사단말기가 작동하지 않죠?

어떤 통찰력이나 피드백이라도 환영합니다. 감사합니다.

답변1

장치에 할당된 그룹이 "tty"인 경우 사용자를 tty 그룹(/etc/group)에 추가하기만 하면 됩니다.

인사

관련 정보