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

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

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

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



답변

개인적으로 나는 그것이 더 안전하다고 생각하지 않으며 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보다 우수하지 않습니다.


답변

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

실수로 입력

rm -rf /*

대신에

rm -rf ./*

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

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

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

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

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


답변

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

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

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

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

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

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


답변

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


답변

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

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


답변

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

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

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

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

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

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

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

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

Sudo는 완벽하지 않습니다.

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

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

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

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