sudo 서비스는 무엇을합니까?


17

내가 아는 한 다른 사람들이 동일한 의견을 가지고있는 것으로 보이는 것은 sudo관리 권한으로 무언가를 실행하는 명령입니다.

그러나 내가 달리면 rcconf이 줄을 볼 수 있습니다 :

[*] sudo    Provide limited super user privileges to specific users

이 서비스의 요점은 무엇입니까? 아니면 이것은 서비스입니까?


이것은 내가 찾을 것입니다 동안 검색 google-> 도우
ADI

"여기서 sudo가 등장합니다. 인증 된 사용자 (일반적으로"관리자 "사용자입니다. 자세한 내용은 AddUsersHowto를 참조하십시오)는 루트 암호를 몰라도 특정 프로그램을 루트로 실행할 수 있습니다." -정확히 제가 질문 한 내용입니다.
s3v3n

3
문제는 서비스가 아닌 명령에 관한 것입니다
s3v3n

답변:


22

짧은 답변

재부팅시 사용자의 '캐시 된'인증 작업을 취소합니다. 데몬이 아니며 부팅시 스크립트가 실행됩니다.


광범위한 답변

/etc/init.d/sudo'서비스를 시작하는' init 파일 을 검사하면 수행중인 작업을 쉽게 확인할 수 있습니다.

case "$1" in
  start)
        # make sure privileges don't persist across reboots
        if [ -d /var/lib/sudo ]
        then
                find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
        fi
        ;;
  stop|reload|restart|force-reload)
        ;;
  *)
        echo "Usage: $N {start|stop|restart|force-reload}" >&2
        exit 1
        ;;
esac

따라서 기본적으로 /var/lib/sudo시스템 시작시 일부 파일을 만져서 매우 오래된 수정 시간 소인을 갖습니다. 결과적으로 '캐시 된'부여 된 인증 작업은 서비스 시작시 (부팅시 발생) 취소됩니다.

/var/lib/sudo디렉토리와 타임 스탬프 에 대한 자세한 내용은 ? 글쎄요 sudo(8):

[...]
Once a user has been authenticated, a time stamp is updated and the
user may then use sudo without a password for a short period of time
(15 minutes unless overridden in sudoers).
[...]
Since time stamp files live in the file system, they can outlive a
user's login session.  As a result, a user may be able to login, run a
command with sudo after authenticating, logout, login again, and run
sudo without authenticating so long as the time stamp file's
modification time is within 15 minutes (or whatever the timeout is set
to in sudoers).
[...]
/var/lib/sudo           Directory containing time stamps

정답 :)
s3v3n 14:44에

12

sudo서비스 파일은 확인을 요구 권한을 다시 부팅 한 후 유지되지 않는 것을 확인하기 위해 존재한다. 기본적으로 재부팅 후 루트 권한을 요청한 일반 사용자는 일반 사용자로 유지됩니다.


sudo에 대한 자세한 설명

아래의 모든 설명은이 질문을 읽는 모든 사람에 대한 모든 정보를 얻고 서비스 폴더의 sudo 파일이 무엇을하고 있는지 설명하는 것입니다.

당신은 우분투 또는 사용하는 다른 배포판 설치하면 sudo되는의 차이 루트 및 사용하는 사용자 인 sudo권한 (관리자 또는 슈퍼 유저 권한) "와 같은 루트"를 얻기위한 다음이입니다 :

루트로

  • 세션에서 실행하는 각각 또는 모든 명령에 대한 비밀번호를 요구하지 않습니다
  • 실행하는 모든 명령이 기본적으로 기록되는 것은 아닙니다
  • 시스템은 수행중인 작업을 알고 있다고 가정합니다 (명령을 실행할 때마다 암호를 요구하지 않는 이유)
  • 실수를 한 경우 두 번째 기회 또는 막판 옵션이 없습니다

sudo로

  • 세션에서 실행하는 각 또는 모든 명령에 대한 비밀번호를 묻는 메시지가 표시됩니다. 예를 들어 터미널을 열고 관리자 권한이 필요한 명령을 실행하면 터미널을 닫거나 로그 아웃 할 때까지 해당 세션에 대해 암호를 한 번 요청합니다. 사용하는 명령과 위치에 따라 다릅니다. 한 번 또는 여러 번 요청할 수 있습니다.
  • 실제로 수퍼 유저 권한 명령을 사용할 권한을 요청하기 때문에 실행하는 모든 명령이 기록됩니다.
  • 시스템은 사용자가 일시적으로 권한을 요청한다고 가정하고 관리 권한은 일시적으로 대여됩니다 (로그 아웃 할 때까지 터미널을 닫는 등).
  • 실수를 바로 잡을 수있는 마지막 순간 옵션이 있습니다. 이것은 암호를 묻는 순간에 이루어집니다.

SUDO가 만들어진 이유

과거 SUDO 의 작성은 루트를 사용하여 솔루션보다 많은 문제점을 작성했기 때문에 수행되었습니다. 사용자는 모든 권한을 가졌습니다. 즉, 일부 봄 정리를 수행하고 문자 및 폴더를 삭제 한 /usr경우 (폴더가 필요하지 않다고 생각했기 때문에) 무슨 일이 일어날 지 추측했습니다. 과거의 많은 문제는 사용자가 루트를 사용할 때의 힘을 알지 못했기 때문입니다. 기본적으로 그들은 루트를 가지고 있었지만 Linux, 파일 시스템 계층 구조, 중요한 파일 등을 이해하지 못했습니다. (페라리를 가지고 고속도로에서 운전하는 법을 모르는 것과 같은 것!)/lib/bin

SUDO 는 또한 GUI 응용 프로그램 (Update Manager와 같은)이 작업을 수행하기 위해 임시 관리 권한이 필요할 때 사용됩니다. 특정 양의 명령 (일반적으로 1)에만 필요하며 사용자 수준 권한으로 돌아갑니다. 이것은 루트 권한을 항상 갖지 않고 사용자가 시스템의 중요한 부분을 제거하기로 결정한 경우 실수를 피하기위한 것입니다.

또한 루트 사용자는 기본적으로 비활성화되어 있기 때문에 더 나은 보안을 제공합니다.

마지막으로, 데스크탑 PC 또는 서버가있는 경우, 모든 사람이 루트 권한을 갖거나 모든 관리자 권한을 갖기를 원하지 않습니다. 당신의 여동생이나 남동생이 경우 무슨 일이 일어날 지 궁금 시작하면 아주 나쁜 생각 /boot만난 DEL키를 누릅니다. 이것은 sudo나쁜 일이 일어날 가능성을 줄이기 위해 오는 곳 입니다.

무엇 않는 특정 사용자가 제한 슈퍼 유저 권한을 제공 의미?

sudo 사용자 또는 sudoers에는 실제로 특정 사용자에 대한 sudo 명령의 제한 또는 열린 정도를 알려주는 구성 파일이 있습니다. 파일 /etc/sudoers에는 sudo 사용자에 대한 액세스를 제한하거나 액세스 할 수있는 모든 정보가 있습니다. 기본적으로 모든 것에 액세스 할 수 있지만 원하는대로 구성하거나 제한 할 수 있습니다.

man sudoers터미널에서 sudoers 파일 유형을 사용하는 방법에 대한 정보 . 예를 들어 일반적인 형식은 다음과 같습니다.

사용자 호스트 = 명령

예를 들어 cyrex server1 = /bin/ls호스트 server1의 사용자 cyrex는 ls 명령을 실행할 수있는 액세스 권한을 부여합니다.

예를 들어 cyrex server1 (root) = /bin/ls, 호스트 server1의 사용자 cyrex는 ls 명령을 루트로 실행할 수있는 액세스 권한을 부여합니다.

예를 들어 cyrex ALL = /bin/ls, 모든 호스트의 사용자 cyrex는 ls 명령을 실행할 수있는 액세스 권한을 부여합니다.

예를 들어 cyrex ALL = ALL모든 호스트의 사용자 cyrex는 모든 명령을 실행할 수있는 액세스 권한을 부여합니다.

예를 들어 비밀번호를 묻지 않고 and 명령에 luis ALL=(root) NOPASSWD: /bin/kill, /usr/bin/killall대해 sudo를 root로 실행할 수 있습니다.killkillall

여기에 이미지 설명을 입력하십시오


2
그는 sudo 명령의 기능에 대해 알고 있습니다. 문제는 sudo의 시스템 서비스에 관한 것입니다.
gertvdijk

1
@gertvdijk-나는이 질문을 볼 것이기 때문에 기본 사항을 먼저 설명해야했습니다. 마지막 부분에는 서비스 폴더의 sudo 파일에 대한 유일한 이유가 포함됩니다.
Luis Alvarado

감사합니다 Luis Alvarado-The Wolver는 광범위한 정보를 제공하고 뱅뱅 연산자를 참조하는 재미있는 수정 된 xkcd에 감사 !!하지만 서비스sudo 는 무엇입니까 ( 명령이 아님) ? 질문에 실제로 답변하기 위해 답변을 업데이트 할 수 있다면 좋을 것입니다.
s3v3n

1
약간의 잔인한 말은 결국 문구에 대한 모든 것을 설명하지만 내 질문에 대답합니다.)
s3v3n

1
@ LuisAlvarado-TheWolverine Haha, 당신의 권리. 그것은 당신이 나에게 응답하는 것이 좋은 있었다 그래, 내가 한 .. 감사합니다
루시오
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.