다음은 간단한 문장입니다. X 서버가 루트 또는 사용자로 실행되고 있는지 확인하는 방법/명령이 있습니까?
이것은 재치 있는 말이었지만 아쉽게도... 최근에 Arch Linux 상자를 업그레이드했습니다. 업그레이드 후 X
이제 루트 없이도 실행할 수 있다는 말을 들었습니다 . 공식 Arch Linux 페이지를 확인했는데 다음과 같이 나와 있습니다.
systemd-logind의 도움으로 X는 이제 뿌리가 없습니다 [...][1]
이로 인해 X
루트 없이 실행되는지 확인하는 방법에 관심이 생겼습니다. 이것이 어떻게 달성될 수 있습니까?
답변1
사용자 ID(UID)를 출력하는 방법에는 여러 가지가 있습니다 ps
. 간단한 방법은 다음과 같습니다 -f
.
ps -fC X
이는 실행 중인 모든 X 서버에 대한 정보를 제공합니다(하나 이상이 있을 수 있음).
이는 실행 파일이 호출된다고 가정합니다 X
. 그러한 프로세스가 없으면 다른 것을 대상으로 지정해야 합니다. 최소한 대문자 X(예: Xorg
, X11
)가 포함되어 있는 것이 거의 확실하므로 또 다른 접근 방식은 grep으로 필터링하는 것입니다.
ps -o uid,comm -A | grep X
이렇게 하면 열 헤더가 제거되지만 UID는 왼쪽에 있는 숫자입니다. 그렇다면 0
프로세스는 루트로 실행되고 있는 것입니다. 아무 결과도 나오지 않으면 시도해 보십시오 ps -fA | grep X
. 더 혼란스럽습니다.
X
마지막으로 이름에 대문자가 있는 프로세스가 없으면 최소한 또는 와 x
같은 제어 명령을 찾을 수 있습니다 . 당신도 그것을 시도해 볼 수 있습니다 . 왜냐하면 디스플레이 관리자는 종종 이름( 등)에 이 단어를 포함하기 때문입니다. 그러나 이들 중 어느 것도 실제로 X 서버가 아니며 서버가 시작되더라도 서버 실행 파일은 일반적으로startx
xinit
dm
gdm
xinit
setuid 비트 세트즉, xinit
권한이 없는 UID를 사용 하더라도X는 여전히 루트로 실행됩니다.