sudo를 사용하여 vim을 실행할 때 "지정된 프로토콜이 없습니다"

sudo를 사용하여 vim을 실행할 때 "지정된 프로토콜이 없습니다"

최근에 사용하는 동안 "프로토콜이 지정되지 않았습니다"라는 메시지가 나타나기 시작했습니다 sudo vim. 모든 것이 잘 작동하므로 이는 단지 경고일 뿐이라고 생각합니다(파일을 열고 편집하고 저장할 수 있습니다). 를 사용하면 메시지가 나타나지 않아서 sudo -E vim최근 편집에서 뭔가 잘못한 것 같은데 /etc/profile확실하지 않습니다. 이 문제를 어떻게 해결할 수 있나요?

답변1

최근 업그레이드로 인해 기본 설정이 변경되었습니다 sudo. 누구든지 이 문제가 발생하면 sudoer구성을 확인하십시오. 매뉴얼 페이지의 예:

# Run X applications through sudo; HOME is used to find the
# .Xauthority file.  Note that other programs use HOME to find
# configuration files and this may lead to privilege escalation!
Defaults env_keep += "DISPLAY HOME"

이와 같은 것이 있는지 확인하십시오 /etc/sudoers( visudo필요한 경우 파일 편집에 사용 가능).

편집: 이것이 언제 시작되었는지는 모르겠지만 적어도 xauth 1.0.9는 환경 변수를 지원합니다 XAUTHORITY. 이 값을 설정하고 HOME을 변경하지 않고 두면 프로토콜 경고도 수정되며 루트 리소스(권한 에스컬레이션 경로)를 가리키는 전역적으로 쓰기 가능한 IPC 리소스(소켓/파이프)가 생성되지 않으므로 더 나은 솔루션입니다. xauth는 변수를 환경으로 자동으로 내보내지 않으므로 가장 좋은 방법은 셸 초기화 중에 변수를 설정하는 것입니다.

답변2

~에 따르면이 스레드, 문제에 대한 가능한 해결책은 두 가지가 있습니다.

.bashrc내 루트 사용자 스크립트 에 다음 줄을 넣으십시오.

export XAUTHORITY=/home/<user>/.Xauthority

그런 다음 .Xauthority를 ​​루트에 복사했습니다.

sudo cp ~/.Xauthority /root

이제 경고가 사라졌습니다.

를 통해 실행해 볼 수도 있습니다 gksudo.

어쨌든 둘 다 시도해 볼 가치가 있습니다 ...

답변3

이 질문에 대한 몇 가지 답변이 이미 있지만 그 중 어느 것도 나에게 완벽하게 도움이 되지 않았습니다. 나는 위의 제안 중 일부를 데비안 배포판의 일부와 결합하여 이 문제를 해결했습니다.

.Xauthority루트와 다른 모든 사용자를 위한 파일 심볼릭 링크를 만들었습니다 . 루트에는 파일에 대한 액세스 권한이 있지만 다른 사용자에게는 액세스 권한이 없으므로 루트 사용자에 대한 문제가 해결되었습니다. 다른 모든 사용자를 위해 .Xauthority 파일에 읽기 전용 권한을 추가했습니다.

#do this for all other users who do not have .Xauthority file    
ln -s /home/userwithxauth/.Xauthority .Xauthority

#run the following command to give read only access permission to .Xauthority file
chmod 644 /home/userwithxauth/.Xauthority

관련 정보