sudo를 사용하는 것보다 수퍼 유저 권한을 더 오래 유지하는 방법은 무엇입니까?


25

sudo명령이 기본 시간보다 더 긴 시간 동안 권한을 부여 할 수있는 방법이 있습니까?

sudo많은 패키지를 설치해야 할 때 암호 를 계속 입력해야하는 번거 로움이 있으므로 사용 기간에 영향을 줄 수있는 명령이나 구성이 있으면 좋을 것입니다.


3
그래서 아무도 su더 이상 사용 하지 않습니까? 이제까지?
Mr Lister

9
@MrLister sudo -i그리고 당신은 루트 쉘을 가지고 있습니다. 누군가가 발을 쏘는 것을 도와 줄 준비가되어 있습니다.
Rmano

1
@DevRobot, 그 소스가 있습니까? Canonical이 그러한 중요한 명령을 제거한다고 믿기 어려워서 Google에서 찾을 수는 없습니다.
DJMcMayhem

9
@DevRobot su은 root가 있어야 암호를 가질 수 있습니다. 기본적으로 Ubuntu의 루트 사용자에게는 비밀번호가 없습니다. 따라서 su뿌리를 내릴 수 없습니다 . su여기서 의도 한대로 작동합니다. 비밀번호가있는 사용자에게 시도하십시오.
muru

3
@muru sudo su는 약간 반복적이지만 잘 작동합니다.
coteyr

답변:


27

동작은 파일 sudo에서 구성 /etc/sudoers됩니다. timestamp_timeout특정 시간이 지나면 사용자에게 암호를 다시 프롬프트하는 옵션 이 있습니다 .

에서 남자의 sudoers

timestamp_timeout
                       Number of minutes that can elapse before sudo will ask
                       for a passwd again.  The timeout may include a frac‐
                       tional component if minute granularity is insufficient,
                       for example 2.5.  The default is 15.  Set this to 0 to
                       always prompt for a password.  If set to a value less
                       than 0 the user's time stamp will never expire.

해당 설정을 변경하려면 다음을 수행하십시오.

  1. 터미널 실행에서 sudo visudo. 파일 visudo을 편집하는 데 사용 /etc/sudoers되며 기본적으로 nano텍스트 편집기를 사용 합니다.
  2. 로 시작하는 줄을 찾으십시오 Defaults. 다음 줄을 추가하십시오

    Defaults        timestamp_timeout=x
    

    여기서 x는 프롬프트 사이의 시간 (분)입니다.

  3. Ctrl+로 파일을 저장하십시오O


12

보낸 사람 man sudoers:

timestamp_timeout
                       Number of minutes that can elapse before sudo will ask
                       for a passwd again.  The timeout may include a frac‐
                       tional component if minute granularity is insufficient,
                       for example 2.5.  The default is 15.  Set this to 0 to
                       always prompt for a password.  If set to a value less
                       than 0 the user's time stamp will never expire.  This
                       can be used to allow users to create or delete their
                       own time stamps via “sudo -v” and “sudo -k” respec‐
                       tively.

보시다시피 기본 시간 제한 sudo은 15 분입니다. 에서이 값을 변경할 수 있습니다 /etc/sudoers.

직접 편집하지 말고 /etc/sudoers대신 사용 visudo하십시오.

보낸 사람 man visudo:

     visudo edits the sudoers file in a safe fashion, analogous to vipw(8).
     visudo locks the sudoers file against multiple simultaneous edits, pro‐
     vides basic sanity checks, and checks for parse errors.  If the sudoers
     file is currently being edited you will receive a message to try again
     later.

따라서 sudo visudo터미널을 입력 하면 텍스트 편집기 /etc/sudoers에서 파일 이 열립니다 nano.

이 줄을 찾으십시오.

Defaults    env_reset

그리고 추가 여기서 X는 당신이 분에 설정하고자하는 시간입니다.timestamp_timeout=X

예를 들어 :

Defaults    env_reset,timestamp_timeout=5

0을 지정하면 항상 비밀번호를 묻는 메시지가 표시됩니다. 음수 값을 지정하면 제한 시간이 만료되지 않습니다.

완료되면 저장하고 종료하십시오.

RootSudoTimeout 참조


29 초 나에게 이길 =)
Sergiy Kolodyazhnyy

1
잘 지내요 -_- b 저는 랩탑 위에 있습니다. . . 어쩌면 나는 커피가 더 필요하다
Sergiy Kolodyazhnyy

비밀번호 프롬프트를 트리거하지 않으려면 예를 들어 -1을 시간 초과로 설정할 수도 있습니다.
Michał Żywiecki

8

이 시도 .

  1. 터미널에서 다음 명령을 실행하십시오.

    sudo visudo
    
  2. 다음과 같은 줄로 스크롤하십시오.

    Defaults        env_reset
    
  3. 예를 들어 다음과 같이 변경하십시오.

    Defaults        env_reset,timestamp_timeout=30
    

시간이 초과되기 전에 대기 할 시간을 분 단위로 30으로 변경하십시오. sudo를 실행할 때마다 비밀번호 프롬프트를 원하면 0으로 변경하거나 비밀번호 프롬프트를 원치 않으면 -1을 눌러 편집을 마치고 Ctrl+ X를 눌러 변경 사항을 저장하고 Enter를 눌러 종료하십시오.

여기 소스가 있습니다 : http://lifehacker.com/make-sudo-sessions-last-longer-in-linux-1221545774


5

/etc/sudoers파일을 편집하고 ( sudo visudo주의하십시오)와 같은 줄을 추가하십시오

Defaults:myname timestamp_timeout=15 

myname사용자 ID는 어디에 있습니까 ? 시간 종료 값은 분입니다. -1 값을 사용하여 만료되지 않은 다음 입력 sudo -k하여 인증을 종료 할 수 있으므로 암호가 다시 필요합니다.

또는 특정 명령에 비밀번호가 전혀 필요하지 않다고 말하는 항목을 추가 할 수 있습니다.


1
sudo -k캐시 된 인증을 수동으로 무효화한다고 언급 하면 +1입니다 .
바이트 사령관

5

가장 간단한 명령은 믿을 수 없습니다.

sudo -s

여기에 언급되지 않았습니다. "-s"스위치는 루트 권한이있는 콘솔을 제공하며, 콘솔은 종료 할 때까지 지속됩니다. 기본 설정을 사용하지 않아도됩니다.


1
이것이 왜 투표에 실패합니까?
coteyr

3
나는 공감하지는 않았지만 이것은 사용의 이점 중 하나를 물리칩니다 sudo: 모든 단일 명령이 기록됩니다 (따라서 당신이 한 것을 볼 수 있습니다). 루트 셸을 열면 해당 로깅이 손실됩니다.
guntbert

1
@guntbert는 반드시 모든 명령이 기록되지만 루트 사용자의 기록에 있어야합니다.
Oliver Friedrich

@BeowulfOF는 반드시 그런 것은 아닙니다. bash 기록은 시스템 로그와 완전히 다릅니다.
guntbert

1
실제로 @guntbert, 이와 같이 인증 로그를 사용하면 다른 문제가 있습니다.
Oliver Friedrich

1

지금까지 다른 모든 답변은 기본 시간 제한을 변경하는 데 중점을 두는 것으로 보입니다 sudo. 그러나로 모든 명령을 추가하지 않고 루트로 명령을 실행하려면 다음을 사용 sudo하여 루트 쉘을 얻을 수 있습니다.

sudo -i

또는

sudo bash

또는

sudo <your preferred shell here>

이러한 모든 프로세스는 루트로 단일 프로세스를 시작하지만 문제의 단일 프로세스는 쉘이나 그렇기 때문에 더 이상 입력 sudo하거나 비밀번호 를 입력하지 않아도 루트만큼 원하는 다른 프로세스를 시작할 수 있습니다 . :)

물론 큰 힘으로 큰 책임을지고 바보 같은 일을하지 마십시오.


1
이것에 매우주의하십시오. 실제로 루트 셸을 실행하게됩니다.
hmayag

4
이것이 왜 다운 보트입니까?
coteyr

@hmayag 예, 루트 셸을 시작하면 실제로 루트 셸을 실행하게됩니다. 따라서 마지막 경고의 이유.
reirab

@coteyr BeoWulf의 답변과 같은 이유로 가능합니다.
guntbert

1

구성 파일을 수정하고 패키지 업그레이드 후 변경 사항을 덮어 쓰는 이유에 대해 혼란스러워하는 사용자의 질문이 너무 많으면 수정하려는 경우 timestamp_timeout파일을 만드는 /etc/sudoers.d대신 파일을 만드는 것이 좋습니다. /etc/sudoers직접 수정하십시오 .

그래서 당신은해야합니다

sudo visudo -f /etc/sudoers.d/timeout

(파일 이름은 마침표 ( .)를 포함하지 않거나 물결표 ( ~)로 끝나지 않는 한 원하는 이름이 될 수 있습니다 ). 대신 개방의 /etc/sudoers선택의 편집기에서, 그것은 열립니다 /etc/sudoers.d/timeout존재하지 않기 때문에 빈 파일로 일반적으로. 당신의

Defaults timestamp_timeout=X

평소대로 저장하십시오. 그런 다음 새 버전이 /etc/sudoers나오면 최신 버전을 설치하거나 변경 사항을 유지할 필요가 없습니다. 둘 다 자동으로 설정됩니다.


1

구성 파일을 변경하지 않는 솔루션을 찾고있는 경우 ( 예 : 특정 세션 동안 토큰을 더 오래 지속 시키거나 명시적인 조치 후에 만 ​​적용하려는 경우) 다음을 시도 할 수 있습니다.

# Work as is with Bash 4.1.2(1)-release and later, this might require some adaptation for other shells
(while [ true ]; do sudo -v; sleep $((60*4)); done)&

기본적으로 이전 코드 는 백그라운드에서 시작된 프로세스를 통해 4 분마다 sudo 토큰을 새로 고칩니다.

실제로 sudo매뉴얼 에 따르면 : "sudoers 보안 정책의 기본 비밀번호 프롬프트 시간 초과는 5 분 입니다." 따라서 시스템 특정 정책에 따라 루프 패스가 두주기 사이에 휴면 시간을 조정할 수 있습니다.

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