사용자에게 모든 명령에 대한 액세스 권한이 부여 된 경우 sudo를 직접 사용하는 것보다 sudo가 더 안전합니까?


40

그래서 su와 사용의 차이점을 읽었 sudo으며 모든 사람 sudo이 루트 계정 자체에 액세스하는 것보다 접근 방식이 더 안전 하다는 데 동의하는 것 같습니다 . 그들은 루트 계정으로 단 하나의 명령으로 전체 시스템을 망칠 수 있다고 말합니다. 이해합니다. 그러나 시스템에서 생성 된 초기 사용자는 sudo를 사용하여 모든 명령에 액세스 할 수도 있습니다. 이것을 실행하여 찾을 수 있습니다 su -l. 이 경우 sudo <game-ending command>시스템을 망칠 수 있습니다 . 그렇다면 어떻게이 접근 방식이 더 좋고 안전합니까? 그러면 슈퍼 유저 계정에 직접 액세스 할 수 있습니까? 동일한 명령을 모두 실행할 수 있습니다 ...

sudo명령 줄을 사용 하여 컴퓨터에 명시 적으로 내가하고있는 일을 알고 있다고 생각하기 때문입니까? 그들은 분명하게 말하지 않는 한 사람들이 자신이 슈퍼 유저 계정에 있다는 것을 잊게 될 것이라고 생각합니까?

또한 사람들은 시스템이 외국 사람에 의해 손상되어 침입 한 경우 루트 계정으로 인해 시스템에 끔찍한 일을 할 수 있다고 말합니다. 그러나 그들이 이미 내 계정에 액세스 할 수 있고 내 암호를 알고 있다면, sudo를 사용하고 내 암호를 입력하여 슈퍼 사용자의 암호를 알 필요가 없기 때문에 똑같은 끔찍한 일을 할 수 있습니다. 내가 오지 않는 것은 무엇입니까?



2
이 질문을 작성해 주셔서 감사합니다. 이제 sudo가 더 안전하지만 정당화 할 수 없다고 말하는 사람들에게 보여줄 것이 있습니다.
user253751

답변:


40

개인적으로 나는 그것이 더 안전하다고 생각하지 않으며 sudo의 대부분의 이점은 다중 사용자 시스템에 있습니다. 단일 사용자 시스템에서는 아마도 세척 일 것입니다.

장점은 다음과 같습니다 (특별한 순서는 아님).

  • sudo는 뛰어난 로깅 기능을 가지고 있습니다. sudo는 각 명령을 기록합니다.
  • sudo는 미세한 입자 제어를 허용합니다. 모든 명령이 아닌 일부에 루트 액세스를 제공하도록 sudo를 구성 할 수 있습니다.
  • sudo는 로그인 비밀번호를 사용합니다. 이렇게하면 루트 암호를 제공하지 않아도되고 (su 에서처럼) 세밀한 제어 / 루트 액세스와 관련하여 위의 요점과 관련이 있습니다.
  • 우분투에서는 기본적으로 루트 계정이 잠겨 있습니다. 이것은 크래커가 ssh를 통해 원격으로 로그인 할 때 사용자 이름과 비밀번호를 모두 추측 해야하는 것을 막습니다. su의 경우와 같이 루트 계정이 잠겨 있지 않으면 루트 암호 만 해독하면됩니다.
  • sudo -i아마도 루트 환경 변수를 사용자로부터 분리하는 가장 좋은 방법 일 것입니다. 이것은 때때로 발생하지만 약간 난해합니다. https://help.ubuntu.com/community/RootSudo#Special_notes_on_sudo_and_shells를 참조 하십시오
  • 어떤 사람들 은 루트로 실행하고자하는 모든 명령이나 sudo 타임 아웃을 갖기 전에 sudo를 입력해야 더 명확하게 생각하고 오류를 줄이거 나 잘못된 명령을 실행할 수 있다고 생각합니다. 그렇게하면 도움이 될 것입니다.

아마도 더 많은 이점이있을 수 있지만 IMHO의 주요 이점입니다.

참조-https: //help.ubuntu.com/community/RootSudo

다른 생각들에 답하려고한다면 :

  • 암호를 알고있는 한 악의적 인 코드를 실행하지 못하게하는 su 또는 sudo는 없습니다. 더 안전하거나 더 나은 것도 아닙니다.
  • 크래커는 다양한 방법을 통해 쉘 액세스를 얻을 수 있습니다. 보안 공지 ( https://usn.ubuntu.com/usn/)에 "임의 코드 실행"이 표시되면 크래커가 / bin / bash 또는 다른 코드를 실행할 수 있다는 의미입니다. 따라서 크래커는 다양한 익스플로잇을 통해 로그인 이름이나 암호를 몰라도 쉘 액세스를 얻을 수 있습니다. sudo 나 su는 이것으로 도움이되지 않습니다.
  • 크래커에 쉘 액세스 권한이 있으면 루트 액세스 권한없이 많은 피해를 입을 수 있습니다. 예를 들어 모든 개인 데이터를 암호화하는 랜섬웨어입니다.
  • 크래커가 su 또는 sudo를 통해 루트 액세스 권한이있는 계정에 대한 쉘 액세스 권한을 가진 경우, 크래커는이 논의 범위를 벗어나는 여러 가지 방법을 통해 루트 액세스 권한을 얻을 수 있습니다. sudo 나 su도이 점에서 우수하지 않습니다.

따라서 sudo의 문제점이나 결함을 관찰했지만 su는 동일한 취약점을 가지고 있으며 su는 sudo보다 우수하지 않습니다.


sudoers 항목이나 그룹 이름이 아닌 모든 사용자가 전원 차단시 전원 차단 (재부팅 및 재부팅) 제어를 허용하도록 옵트 인하는 것이 좋습니다.
mckenzm

8
가장 큰 장점은 수퍼 유저 권한이 필요한 것으로 각 명령을 정당화해야한다는 것입니다. 나는 리눅스에 대한 초기 경험에서 시스템에 문제가 생길 때 적어도 하나의 터미널에서 항상 루트로 실행되는 경향이 있다는 것을 알았습니다. 불행히도, 오해 나 잘못 이해함으로써 터미널에서 파괴적인 명령을 내리는 것은 매우 쉽습니다. '루트 터미널'에있는 경우 백업에서 복원하거나 다시 설치할 수 있습니다. sudo는 저를 여러 번 보호했습니다!
rolinger

14
루트 암호를 손상시키지 않으면 sudo의 가장 큰 장점 일 것입니다. 비밀을 밝히지 않고 루트 권한을 부여 할 수 있습니다.
Thorbjørn Ravn Andersen 님

명령을 제한 할 수있을뿐만 아니라 지정된 인수를 제한 할 수도 있습니다. 그러나 나는 뿌리가 잠기는 것이 그것과 관련이 있다는 것에 동의하지 않는다. 루트 로그인을 허용하지 않도록 ssh를 구성 할 수 있기 때문입니다. su vs sudo에는 다른 것이 있습니다 : sudo 당신은 사용자 암호를 사용합니다.이 암호는 훼손되는 암호가 적으며 일반적으로 좋지 않습니다. 이 세상의 모든 것과 마찬가지로 무언가를 추구하는 다른 방법이 있으며, 이것이 한 가지 방법이 다른 시간보다 100 % 더 정확하다는 것을 의미하지는 않습니다. 그런 다음 환경 설정이 있습니다.
Pryftan 2019

그러나 루트 액세스가 필요한 사용자가 두 명 이상인 경우 (이것은 단지 열띤 토론이기 때문에 내가 얻을 수있는 것이 아닙니다) sudo는 이점이 있습니다.
Pryftan 2019

10

복잡한 일을 할 시간이 20 분이라고 상상해보십시오. 약간 숙취가 있고 서두를 필요가 있습니다. “Su를 사용합시다”라고 말합니다. "시간을 절약 할 수 있습니다"는 당신의 추론입니다.

실수로 입력

rm -rf /*

대신에

rm -rf ./*

귀하의 시스템은 이제 그 자체로 어려움을 겪고 있으며 마감일까지 10 분이 남았습니다.

루트가 필요할 때 명시 적으로 선택하면 이러한 일이 발생할 가능성을 최소화 할 수 있습니다. 루트가 필요하지 않은 rm -r ./*이유는 무엇입니까? 왜 위험을 감수합니까?

이것이 바로 "안전"의 의미입니다. 치명적인 실수를하는 사용자 (초보자가 아닌 모든 사용자)의 위험을 최소화합니다.

물론 이것은 프로덕션 환경에서 발생해서는 안되는 극단적 인 예입니다 (프로 듀드 환경에서 발생했음을 보증합니다).

보안 현명한 sudo도 더 나은 것들이 있습니다. @ Panther가 말한 것처럼 -로깅, 제한 사항, 루트 암호는 SPOF 등)


4
지옥, 당신은 그냥 chown -R nobody:nobody /또는 chown -R nobody ../루트로 그렇게 오래 기다릴 필요가 없습니다 . chmod물론 재귀 모드에서도 비슷한 문제가 있습니다. 그러나 가장 좋은 점은 필요할 때만 근본이되어야한다는 것입니다. 로그인 권한이 적을수록 정상적인 사용에 좋습니다.
Pryftan

2
숙취 상태 일 때 프로그래밍 +1
abhicantdraw 8:22에

4
그래서 이것은 어떻게 다른 sudo가요? 당신은 sudo rm -rf /*대신 쓰고 sudo rm -rf ./*다시 활기를 씁니다 .
ilkkachu

2
실제 명령의 관점에서 @ilkkachu, 그것은 일어나는 일에 최소한의 차이를 만듭니다. 그러나 루트로 이것을하고 싶다고 명시 적으로 언급해야했습니다. 그게 요점입니다. 안전은 위험 관리에 관한 것입니다. 물론 여전히 시스템을 브릭 할 수 있습니다. 그러나 루트 권한이 적을수록 치명적인 실수를 할 가능성이 줄어 듭니다. 안전은 가능성을 최소화하는 것입니다.
dijksterhuis

2
@ilkkachu 입력 하지 않기 때문 입니다 sudo rm -rf ./*. 아마도 현재 디렉토리의 내용에 대한 쓰기 액세스 권한이 있으므로 해당 명령에 대해 sudo가 필요하지 않습니다. 되는 최대 typoed 명령이 종료 그래서 rm -rf /*당신은 당신이 필요 알려주는 메시지를 "사용 권한이 거부되었습니다"의 긴 문자열 산출, ctrl-c당신이 실제로 삭제할 수 있습니다 물건에 도달하기 전에, 대신 그냥 모든 것을 삭제 /bin, /boot, /dev, 절반의 /etc이전을 심지어 무언가 잘못되었다는 것을 깨달았습니다.
Ray

9

다른 답변에 약간의 역사적 관점을 추가하고 싶습니다. 유감스럽게도 유즈넷 토론과 잡지 기사에 대한 기억을 제외하고는 어떤 소스도 준비되어 있지 않습니다.

얼마 전, 1990 년대에 배포를 통해 컴퓨터 지식이 많지 않아도 자신의 하드웨어에 Linux를 쉽게 설치할 수있었습니다 .¹ 따라서 Linux는 이전에 시스템 관리자로 훈련받지 않은 사람들을 점점 더 많이 끌어 들이기 시작했습니다. 일부 UN * X 방언. 대신 많은 사람들이 Windows 95/98과 같은 (단일 사용자) 시스템에 익숙했습니다. 그리고 그들은 대부분의 Linux 시스템 관리 작업이 그 이상한 "루트"계정으로 작동해야한다는 것을 알게되었습니다.

따라서 일부 사용자는 방금 루트 로 로그인하여 모든 일상 업무에 해당 계정을 사용했습니다. 왜 관리자 명령을 사용 su하여 루트 암호를 반복해서 입력하거나 새 tty에 로그인해야합니까? 그러나 모든 것에 루트 를 사용 하는 것은 좋은 생각이 아닙니다. 잘못된 위치에서 약간의 명령으로 시스템에 더 많은 해를 끼칠 수 있습니다. 이로 인해 루트 사용자가 데스크탑을 수정하여 관리자 작업에만 해당 계정을 사용해야한다는 큰 경고가 표시되도록 일부 배포판 (SuSE입니까?)이 발생했습니다 .

따라서 우분투 방법 sudo에는 몇 가지 장점이 있습니다 ( Panther에 이미 나열된 것 외에도 ).

  • 루트 계정에 직접 로그인 할 수 없습니다 .² :-)
  • 설치 프로세스는 (추가) 루트 암호를 요구하지 않으며 하나의 (사용자의) 암호 만 필요합니다.
  • sudo자격 증명을 캐시하므로 여러 관리 명령을 순서대로 사용하는 경우 비밀번호와 한 번만 입력하면됩니다 su. 이것은 루트 권한을 가진 쉘이나 새로운 터미널을 열어야 할 필요성을 줄 입니다.
  • 또한 온라인 및 문서에서 사용자가 관리자로 입력해야하는 명령과 그렇지 않은 명령을보다 쉽게 ​​알 수 있습니다 .³

¹ 대담하지 않은 사람들을 위해 설치 당사자가있었습니다.
²하지만 당신은 할 수 같은 명령을 사용 sudo -i하거나 sudo su - root사용자가 일반 사용자로 로그인 한 후 루트 쉘을 얻을 수 있습니다.
³ 그러나 물론 인터넷에서 단순히 명령을 복사하여 붙여 넣어서는 안된다는 것을 알고 있습니까?


당신은 당신이 할 수없는 우분투 건가요 : sudo su -sudo su - root? 내가 비슷한 주장을 보았 기 때문에 MacOS X에는 루트가 없지만 첫 번째 명령 만 수행하면 완전히 잘못됩니다 ...
Pryftan

2
물론 루트 계정이 있습니다. "직접 로그인"할 수 없다고 말 root했는데, 이는 로그인 프롬프트 또는 X 로그인 대화 상자에 사용자 와 비밀번호를 입력하고 세션을 루트 로 시작할 수 없음을 의미 합니다. 그러나 sudo -i루트 쉘을 얻기 위해 명령 중 하나를 사용할 수 있습니다 ( 짧고 선호합니다 ).
Dubu

1
내 의견을 다시 읽어보십시오.) MacOS X에는 루트 계정이 없지만 실제로는 계정이 있다고 말하면서이 사실 을 상기시킵니다 (우분투에는 루트 계정이 없다는 것과 동일하지 않습니다). 그러나 우분투의 개발자들은 sudo를 패치하여 내 질문을 허용하지 않을 정도로 미쳤다는 것을 알고 있습니다.
Pryftan

1
@Pryftan 위의 의견에서 말했듯이 두 명령이 모두 작동하고 루트 쉘을 얻습니다. 나는 그것을 내 대답에 추가 할 것입니다.
Dubu

예. 나는 :) 나는 그것이 거짓인지 아닌지 말하지 않았다. 나는 그것이 어떤 사람들이 말하는 것을 생각 나게했지만 말이 잘못되었다고 말하고 있었다. 따라서 그 부분을 대담하게 만듭니다.
Pryftan

2

수십 년 동안 ssh를 통해 루트 로그인을 비활성화 할 수있었습니다. 루트 계정을 비활성화하고 사람들이 모든 것을 sudo하게 만드는 우분투 방법은 단순한 특수 효과입니다. "sudo -s"만 있고 루트 쉘이 있습니다. ssh를 통한 루트 로그인을 비활성화하고 그대로 두십시오.


8
... 그런 점에서 루트 계정뿐만 아니라 모든 ssh 로그인에 키만 사용하는 것이 좋습니다.
rackandboneman

예. 나는 몇 분 전에 주석으로 이것을 언급했습니다. 권한이 가장 적은 Otoh가 가장 우수하므로 필요할 때만 권한이 상승하며 ssh 또는 로컬로 로그인했는지 여부에 관계없이 적용됩니다. 그리고 @rackandboneman이 말하는 것은 물론 절대적으로 정확하지만 나에게는 시스템에 관계없이 ssh 키로도 원격 루트 완전 정지를 비활성화합니다.
Pryftan

0

구성에 따라 sudo <game ending command>반드시 작동하지는 않습니다. 물론 sudoers구성에 "user ALL = (ALL) ALL"이 표시되면 sudo추가 보호 기능이 제공되지 않습니다. 그러나 새 패키지 설치와 같이 자주 실행해야하는 권한있는 명령 목록을 지정하고 위험한 명령을 생략 할 수 rm있습니다.

이 방법으로로 로그인하면 모든 명령을 실행할 수 root있지만 가끔 필요하므로 실행 위험 <game ending command>이 크게 줄어 듭니다.


1
명령에 대한 구체적인 주장도 있습니다.
Pryftan 2019

1
그리고 사용자가 아닌 그룹별로. 그룹을 사용하는 것은 직원이 출입 할 수 있고 특정 역할이 필요할 수있는 다중 사용자 환경에서 매우 중요합니다.
Panther

0

sudo를 사용하면 특정 명령 만 허용 할 수 있지만 sudo에 대한 sudo의 유일한 이점은 아닙니다.

대부분의 상점에서 가장 중요한 혜택은 아닙니다.

sudo를 사용하면 누가 특정 명령을 수행했는지 알 수 있습니다.

아마 이것은 당신에게 중요하지 않을 것입니다. 예를 들어 컴퓨터의 유일한 사용자 일 수 있습니다. 그렇다면 sudo가 su보다 나을 수도 있습니다.

그러나 많은 호스트에는 둘 이상의 관리자가 있습니다.

sudo는 누군가가 잘못된 일을하면 누가 그 일을했는지 ​​알려주기 때문에 매우 유용하게됩니다.

이를 통해 오류가 발생한 이유를 이해하고 오류가 반복되는 것을 방지하거나 필요한 경우 누군가에게서 도구를 제거하도록 사람들을 교육 할 수 있습니다.

보너스로, 사람들은 자신의 행동이 기록된다는 것을 알면 종종 더 조심스럽게 행동합니다.

Sudo는 완벽하지 않습니다.

두 사람이 동시에 "sudo sh"를 수행하면 명령을 다른 사람에게 귀속시키기가 어려울 수 있습니다.

악의적 인 관리자는 항상 로그를 제거하거나 편집 할 수 있습니다. 특히 중앙 집중식 로깅을 사용하는 경우 사람들이 생각하는 것만 큼 깨끗하게하는 것이 항상 쉬운 것은 아닙니다.

sudo는 원래 질문에서 확인 된 모든 이유로 인해 어리 석거나 악의적 인 행동을 반드시 중단하지는 않습니다.

그러나 재발을 예방할 가능성이 훨씬 높습니다.


1. 올바르게 구성하는 데 시간이 걸리는 경우에만. 기본 우분투 시스템이 수행하지 않는 것과 수행 할 수없는 것. 2. 사용자가 사후 기록 로그를 편집 할 수있는 방법이없는 경우에만 실행할 수있는 명령이 제한되지 않는 한 가능합니다. (기본 우분투 사용 사례가 아닌 경우)
ilkkachu

@ilkkachu, 비록 당신이 좋은 점이 있지만, 여기에서의 주장은 여기에서 의미가 없습니다. 포인트는 기본 설정이 아니며 포인트는 sudo를 구성하고 미세 조정할 수 있습니다. 이러한 방식으로 작동하도록 su를 구성 할 수 없습니다. su는 모두 또는 전혀 없으며, 명령을 제한 할 방법이 없으며 sudo가 우수한 로깅을 제공한다는 사실입니다. su 또는 sudo는 크래커가 손상된 시스템에서 수행 할 수있는 작업과 수행하지 않는 작업에 대해 어떠한 보안도 제공하지 않으며, 이러한 방법으로 sudo를 보유한 사람은 없습니다. sudo 로그는 일상적인 작업에서 큰 가치가 있습니다.
Panther

@Panther, 질문 제목에 "... 사용자에게 모든 명령에 대한 액세스 권한이 부여 되었습니까?" 그래서 sudo모든 것이 허용 되는 일반적인 기본 우분투 구성을 의미한다고 가정했습니다 . 물론 사용자가 실행할 수있는 명령을 제한하도록 구성 할 는 있지만 그 질문에 해당되는 것은 아닙니다.
ilkkachu

답변이 확장되었습니다.
벤 Aveling

@ilkkachu-나의 대답을 다시 읽으십시오. "개인적으로 나는 그것이 더 안전하다고 생각할 필요는 없으며 sudo의 대부분의 이점은 다중 사용자 시스템에 있습니다. 단일 사용자 시스템에서는 아마도 씻을 것입니다." 그런 다음 sudo의 다른 장점에 대해 설명했습니다. 그 중 하나는 구성 가능하다는 것입니다.
Panther
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.