시스템 관리자 (루트)로 명령을 실행하는 방법


66

관리자 권한으로 명령을 실행해야합니다. 누군가 내가 루트로 명령을 실행해야한다고 말했다. 어떻게해야합니까?


2
이 질문에 대한 메타 토론을 참조하십시오
Stefan

답변:


94

주요 두 가지 명령 줄 가능성은 다음과 같습니다.

  • su프롬프트가 표시되면 루트 비밀번호를 사용 하고 입력하십시오.
  • 넣고 sudo명령 앞에, 그리고 메시지가 표시되면 암호를 입력합니다.

루트로 쉘 명령 실행

sudo (그래픽 디스플레이를 실행하지 않을 때 권장)

이것은 Ubuntu, Linux Mint, (아마도) 데비안 등 대부분의 시스템에서 선호되는 방법입니다. 별도의 루트 암호를 모르면이 방법을 사용하십시오.

Sudo는 자신의 암호를 입력해야합니다. (이 목적은 키보드를 무인 상태로 두거나 잠금을 해제 한 경우 손상을 제한하고 해당 명령 을 실제로 실행하고 오타가 아닌지 확인하기위한 것입니다 .) 종종 몇 가지를 다시 묻지 않도록 구성됩니다. 여러 sudo명령을 연속해서 실행할 수 있습니다 .

예:

sudo service apache restart

루트로 여러 명령을 실행해야하는 경우 각 명령 앞에 접두사를 붙이십시오 sudo. 때때로, 대화식 쉘을 루트로 실행하는 것이 더 편리합니다. 당신은 sudo -i그것을 위해 사용할 수 있습니다 :

$ sudo -i
# command 1
# command 2
...
# exit

대신을 sudo -i사용할 수 있습니다 sudo -s. 차이는 즉 -i다시 반면, 제정신 기본값으로 환경을 nitializes -s좋든 나쁘 구성 파일을 사용합니다.

자세한 내용은 sudo 웹 사이트를 참조 하거나 man sudo시스템에서 입력 하십시오. Sudo는 매우 구성 가능합니다. 예를 들어 특정 사용자가 루트로 특정 명령 만 실행하도록 구성 할 수 있습니다. 자세한 내용 은 sudoers매뉴얼 페이지 를 읽으십시오 . sudo visudosudoers 파일을 편집하는 데 사용 하십시오.

su명령은 대부분의 유닉스 계열 시스템에 존재합니다. 해당 사용자의 비밀번호를 알고 있으면 다른 사용자로 명령을 실행할 수 있습니다. 사용자를 지정하지 않고 실행 su하면 기본적으로 루트 계정이 사용됩니다.

예:

su -c 'service apache restart'

실행할 명령은 -c옵션을 사용하여 전달해야합니다 . 셸에서 명령을 구문 분석하지 않고 su실행 되는 루트 셸로 그대로 전달하려면 따옴표가 필요합니다 .

여러 명령을 루트로 실행하려면 대화식 쉘을 시작하는 것이 더 편리합니다.

$ su
# command 1
# command 2
...
# exit

일부 시스템에서는을 사용하려면 그룹 번호 0 ( wheel)에 있어야합니다 su. (루트 암호가 실수로 누군가에게 유출 된 경우 피해를 제한하는 것이 중요합니다.)

루트로 로그인

루트 암호가 설정되어 있고 소유하고 있다면 root로그인 프롬프트에 간단히 입력하고 루트 암호를 입력하면됩니다. 복잡한 응용 프로그램은 의도하지 않은 작업을 수행 할 수 있으므로 루트로 실행하지 마십시오. 루트로 직접 로그인하는 것은 디스크 장애와 같은 비상 상황이나 계정에서 자신을 잠근 경우에 주로 유용합니다.

단일 사용자 모드

단일 사용자 모드 또는 실행 수준 1도 루트 권한을 제공합니다. 이는 주로 다중 사용자 실행 수준으로 부팅 할 수없는 비상 유지 관리 상황을위한 것입니다. 커널 명령 행 을 전달 single하거나 통해 단일 사용자 모드로 부팅 할 수 있습니다 emergency. 단일 사용자 모드로 부팅하는 것은 시스템을 정상적으로 부팅하고 루트로 로그인하는 것과 다릅니다. 오히려 시스템은 실행 레벨 1에 대해 정의 된 서비스 만 시작합니다. 일반적으로 이는 사용 가능한 시스템을 갖추기 위해 필요한 가장 적은 수의 서비스입니다.

telinit 명령을 사용하여 단일 사용자 모드로 전환 할 수도 있습니다. telinit 1; 그러나이 명령을 실행하려면 다른 방법을 통해 이미 루트 권한을 가지고 있어야합니다.

많은 시스템에서 단일 사용자 모드로 부팅하면 사용자에게 암호를 묻지 않고 루트 셸에 액세스 할 수 있습니다. 특히, systemd이 방법으로 부팅 할 때 기반 시스템이 루트 암호를 묻는 메시지를 표시합니다.

다른 프로그램

Calife

Calife를 사용하면 인증 된 경우 자신의 암호를 입력하여 다른 사용자로 명령을 실행할 수 있습니다. 훨씬 더 널리 퍼진 sudo와 비슷합니다 (위 참조). Calife는 sudo보다 가벼우면서도 구성 할 수 없습니다.

Op

Op를 사용하면 루트를 포함하여 다른 사용자로 명령을 실행할 수 있습니다. 이 아닌 본격적인 도구는 임의의 명령을 실행하려면 다음과 같이 입력 op다음에 니모닉 특정 명령을 실행하려면 시스템 관리자가 구성한.

감독자

Super를 사용하면 루트를 포함하여 다른 사용자로 명령을 실행할 수 있습니다. 시스템 관리자가 명령을 허용해야합니다.

루트로 그래픽 명령 실행

Wikipedia 도 참조하십시오 .

PolicyKit (그놈 사용시 권장)

원하는 명령어 앞에 command를 붙이십시오 pkexec. 이것이 대부분의 경우 작동하지만 보편적으로 작동하지는 않습니다.

자세한 내용 man pkexec은 참조하십시오.

KdeSu, KdeSudo (KDE 사용시 권장)

kdesukdesudo그래픽 기반 프론트 엔드이다 susudo각각이. X 윈도우 프로그램을 번거 로움없이 루트로 실행할 수 있습니다. 그들은 KDE의 일부입니다 . 유형

kdesu -c 'command --option argument'

루트 비밀번호를 입력하거나

kdesudo -c 'command --option argument'

암호를 입력하십시오 (실행 권한이있는 경우 sudo). KdeSu에서 "암호 유지"옵션을 선택하면 로그인 세션마다 루트 암호를 한 번만 입력하면됩니다.

다른 프로그램

쿠츠

Ktsuss ( "su를 간단하고 어리석게 유지")는 su의 그래픽 버전입니다.

비수

Beesu 는 su 명령의 그래픽 프론트 엔드로 Red Hat 기반 운영 체제에서 Gksu를 대체했습니다. RHEL 및 Fedora를 위해 주로 개발되었습니다.

사용되지 않는 방법

gksugksudo

gksugksudo그래픽 기반 프론트 엔드이다 susudo각각이. X 윈도우 프로그램을 번거 로움없이 루트로 실행할 수 있습니다. 그들은 그놈의 일부입니다 . 유형

gksu command --option argument

루트 비밀번호를 입력하거나

gksudo command --option argument

암호를 입력하십시오 (실행 권한이있는 경우 sudo).

gksu그리고 gksudo더 이상 사용되지 않습니다. 그놈에서는 PolicyKit으로 대체되었으며 많은 배포판 (예 : 우분투)은 더 이상 기본적으로 설치하지 않습니다. 사용 가능하거나 올바르게 작동하는 데 의존해서는 안됩니다.

쉘 기반 방법 중 하나를 통해 수동으로

"쉘 명령을 루트 섹션으로 실행"의 방법 중 하나를 사용하십시오. 루트로 전환하는 동안 DISPLAY환경 변수 나 XAUTHORITY환경이 재설정 되지 않도록해야 합니다. 이 질문의 범위를 벗어난 방법을 추가로 구성해야 할 수도 있습니다.

전반적으로 이것은 그래픽 응용 프로그램이 구성 파일을 루트로 읽고 쓸 수 있기 때문에 일반적으로 나쁜 생각이며, 해당 응용 프로그램을 일반 사용자로 다시 사용하려고하면 해당 응용 프로그램에 자체 구성을 읽을 권한이 없습니다.

루트로 파일 편집

파일을 루트로 편집하는 방법을 참조하십시오 .


2
주목해야한다 sudo전용 (1)이 설치되어있는 경우 일 것 (2) 사용은의 sudoers 파일이며이 작업을 수행 할 수있는 경우.
n0pe

2
업데이트해야합니다. 요즘 많은 배포판에서 / 를 pkexec대체 하고 있습니다. gksugksudo
strugee

1
@ strugee-이것을 시도하고 업데이트하려고 했습니까? Redhat 아래의 내용도 올바르지 않습니다.
slm


3

질문은 Linux에만 국한된 것이 아니므로 Solaris 9 이상 (또는 Trusted Solaris 8)에서 동일한 목표를 달성하는 방법은 다음과 같습니다.

버전 9 이후 Solaris에는 RBAC (역할 기반 액세스 제어)라고하는 도구 모음이 포함되어 있습니다.

RBAC의 요점은 권한 부여 및 권한 부여, 사용자 및 / 또는 역할 부여 또는 사용자에게 역할 부여를 통해 누가 어떤 권한으로 무엇을 실행할 수 있는지에 대한 엄청나게 세밀한 모델을 만들 수 있다는 것입니다.

기본적으로 / etc / security / auth_attr에서 권한을 식별 한 다음 / etc / user_attr의 사용자 또는 역할에 권한을 부여하십시오.

/ etc / security / prof_attr에서 프로파일을 정의합니다. 그런 다음 명령을 / etc / security / exec_attr의 해당 프로파일과 연관시킨 후 / etc / user_attr 파일의 사용자에게 해당 프로파일을 지정하십시오.

그 일이 완료되면, 당신은 실제로 실행 pfexec <command>에 부여 된 특권이나 권한으로 명령을 실행 하는 사용자 명령을.

RBAC의 좋은 점은 명령 자체 또는 사용자에게 user + command의 조합에만 부여되는 추가 권한이 없다는 것입니다. 따라서 바이너리 + s를 만들거나 sudo를 사용하여 사용자가 거의 모든 것을 실행할 수 있도록하는 것보다 안전합니다. (나는 당신이 sudo를 잠글 수 있다는 것을 알고 있지만 내 경험상 대부분의 사람들은 그렇지 않습니다)

RBAC의 또 다른 장점은 루트를 역할 계정으로 만들고 'su'명령과 루트 암호를 사용하여 루트가 될 수있는 사용자에게 해당 역할을 할당 할 수 있다는 것입니다. 루트 사용자는 단일 사용자 모드로 로그인 할 수 있습니다.이 방법은 루트 비밀번호를 비활성화 passwd -d root하거나 루트 계정을 잠글 수있는 Linux 모델보다 낫습니다 (제 생각 에 루트 계정 passwd -l root으로 로그인하십시오). 무언가 잘못되면 힘들어.

Ben Rockwood는 RBAC에 관한 훌륭한 블로그 게시물을 보유하고 있으며 (Open) Solaris 에서 RBAC 사용 에서 읽을 수 있습니다 .


3

또는 일부 명령에 초강력을 부여 할 수 있습니다. 소유자의 권한으로 명령을 실행하는 특수 권한에 대해 이야기하고 있습니다.

명령 경로를 가져와 해당 경로에 #which <command>대해 SUID 또는 SGID를 설정하십시오.

PS-SUID 및 SGID 비트는주의해서 제공해야합니다. 시스템이 안전하지 않을 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.