X에서 su 사용하기 하우투 Joshua Preston Hwang Joonhyung 이 하우투는 X에 일반 사용자로 로그인 되었을 때 su를 루트로서 시도하는 것에 대한 요점을 알려주도록 설계되었다. 1.1 K 2004년 7월 31일 소개
목적

우리는 일반 사용자로 로그인해 있으면서, 어떤 X 응용 프로그램을 루트로서 실행시킬 필요가 있다. 아마 우리는 단순히 커널을 make xconfig로 실행하고 싶었는데 이것을 하려고 할 때 에러를 받았을 수도 있다.

(xterm 실행 중)
 $ su -
Password:
 # xlogo -render
Xlib: connection to ":0.0" refused by server
Xlib: No protocol specified

Error: Can't open display: :0.0

우리에게 다행스럽게도, 이것을 할 수 있는 몇몇 방법들이 있다. 제안 중 몇몇은 안전하지 않은 해킹에 불과하기 때문에, 여러분은 어느 것이 여러분의 요구에 가장 적합한지를 결정해야만 한다.

루트로서 X 실행하기

이런 곳에 경고가 없다면 이런 문서가 왜 존재하겠는가? 우리는 시작하기 전에 몇몇 경고와 문제점을 간단히 다룰 것이다.

일반적으로 X를 루트(수퍼유저)로서 실행하는 것은 나쁜 생각이다. 심지어 X 프로그램을 루트로서 실행하는 것도 뜨거운 논쟁거리이다.

X를 루트로 실행하는 것은 다음 위험과 관련이 있다.

  • 자료 손실
  • 인증받지 않은 접근
  • 잠재적인 결함

이들의 대부분이 적절하지 않게 설정된 X 시스템에서 발생하지만, X를 루트로서 실행하는 것은 여전히 나쁜 생각이다.

X를 루트로 실행하는 잘못은 대개 리눅스를 처음 쓰는 사용자들이 저지른다.

예를 들어 살펴 보자. 나는 젠투 IRC 채널을 일주일에 몇 번 정도 방문해서 X를 루트로 실행하는 사람들이 있는지 확인하는 습관을 들였다. 거의 언제나 내 채널의 방문자 중에는 루트 사용자로서 IRC에 연결하는 사람들이 있었다. 보안 위험에 대해 말해 보자! 사용자가 연결할 때 쓰는 클라이언트에 따라 나는 더럽고 나쁜 짓을 할 수 있다. 예를 들어 나는 그들에게 .bashrc와 같은 파일을 DCC 할 수 있다.

#!/bin/sh
logout

이제 사용자가 DCC 전송 자동 시작 기능을 켜 놓았다면 어떻게 될까? 사용자가 기본 사용자 디렉토리를 ~/로 잡았다면 어떻게 될까? 우리의 작은 .bashrc는 기존의 파일을 덮어쓰게 될 것이다! 다음에 사용자가 로그인을 하면, 그들은 바로 로그아웃될 것이다.

상상력이 너무 풍부한 것 같은가? 생각해 보라! 이것은 왜 루트를 사용하는 것이 좋지 않은가에 대한 많은 예들 중 단 하나에 불과하다. 이제 내부 작업과 X의 복잡도도 생각해 보면 여러분은 우리의 딜레마를 알 수 있을 것이다.

해결
x11-misc/sux

Sux는 홈페이지에서 가장 잘 설명되어 있으며, 그것을 아래에 옮긴다.

Sux는 표준 su 명령의 래퍼(wrapper)로서 여러분의 X 신임장(credentials)을 대상 사용자에게 이송할 것이다. sux는 X11 라이선스의 조건 아래에서 릴리즈되었다.

Sux의 설치는 emerge 만큼이나 쉽다!

# emerge x11-misc/sux

다음은 Sux의 사용의 몇 예이다.

$ sux -c /usr/bin/X11/xlogo -render
Password: (루트 비밀번호를 입력하고 엔터를 누르라)
$ sux -
Password: (루트 비밀번호를 입력하고 엔터를 누르라)
# xlogo -render
sux를 써서 루트로서 셸을 호출하는 것으로 여러분은 X 어플리케이션의 이름을 입력하고 실행할 수 있게 된다.
KDE 사용자

KDE 사용자들은 또 다른 선택이 있다. kdesu는 su의 KDE 판이다. 이는 Sux와 비슷하게 여러분이 현재 사용자로 X를 사용하면서 X 응용 프로그램을 실행할 수 있게 해 주지만, 비밀번호를 묻는 팝업 창을 띄우고 콘솔 응용 프로그램은 실행하지 않는다.

kdesu는 X 응용 프로그램만을 실행하도록 설계되었다.

kdesu의 사용법은 다음과 같다.

# kdesu -c "/usr/bin/X11/xlogo -render"
(여러분은 diffuser와 같은 다른 사용자를 지정할 수도 있다)
# kdesu -u diffuser -c "/usr/bin/X11/xlogo -render"
# kdesu /usr/bin/X11/xlogo
(여러분은 diffuser와 같은 다른 사용자를 지정할 수도 있다)
# kdesu -u diffuser /usr/bin/X11/xlogo
결론
마치며(Wrapping it up)

위의 작업을 수행하는 수 많은 다른 방법들이 있지만, 나는 위의 방법들이 가장 쉽다고 생각한다.

여러분이 도움을 받았으면 좋겠고 여러분의 새로운 지식과 함께 행운을 빈다.