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

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

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

sudo명령줄을 사용하면 내가 무엇을 하고 있는지 알고 있다고 컴퓨터에 명시적으로 알리기 때문인가요 ? 사람들이 명시적으로 말하지 않는 한 자신이 슈퍼 사용자 계정에 있다는 사실을 잊어버릴 것이라고 생각합니까?

또한 사람들은 시스템이 손상되어 외국 사람이 침입한 경우 루트 계정에 있으면 내 시스템에 끔찍한 일을 할 수 있다고 말합니다. 하지만 그들이 이미 내 계정에 액세스할 수 있고 내 비밀번호를 알고 있다면 슈퍼유저의 비밀번호를 알 필요도 없기 때문에 sudo를 사용하고 내 비밀번호를 입력하면 똑같은 끔찍한 일을 할 수 있는 것 같습니다. 내가 여기서 얻지 못하는 것은 무엇입니까?

답변1

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

이점은 다음과 같습니다(특별한 순서 없음).

  • sudo는 로깅이 뛰어납니다. sudo는 각 명령을 기록합니다.
  • sudo를 사용하면 더 미세한 입자 제어가 가능합니다. 모든 명령이 아닌 일부 명령에 루트 액세스 권한을 부여하도록 sudo를 구성할 수 있습니다.
  • sudo는 로그인 비밀번호를 사용합니다. 이는 su와 마찬가지로 루트 비밀번호를 제공하지 않아도 되며 루트에 대한 보다 세부적인 제어/액세스에 관한 위의 요점과 관련됩니다.
  • Ubuntu에서는 기본적으로 루트 계정이 잠겨 있습니다. 이는 크래커가 로그인(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보다 우수하지 않습니다. IMHO

답변2

복잡한 일을 하는 데 20분이 있다고 상상해 보세요. 당신은 약간 숙취가 있어서 서둘러야 합니다. “su를 사용하자”라고 말합니다. “시간이 좀 절약될 거예요”가 당신의 추론입니다.

실수로 입력

rm -rf /*

대신에

rm -rf ./*

귀하의 시스템이 이제 자체적으로 차단되고 있으며 마감일까지 10분 남았습니다.

루트가 필요할 때를 명시적으로 선택하면 이런 일이 발생할 가능성을 최소화할 수 있습니다. 루트가 필요하지 않을 수도 있는데 rm -r ./*왜 사용합니까? 왜 위험을 감수합니까?

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

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

보안 측면에서 sudo가 더 나은 부분도 있습니다. 처럼@팬더가 말하길- 로깅, 제한, 루트 비밀번호는 SPOF 등)

답변3

다른 답변에 약간의 역사적 관점을 추가하고 싶습니다. 불행히도 유즈넷 토론과 잡지 기사에 대한 내 기억 외에는 준비된 소스가 없습니다.

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

따라서 일부 사용자는 다음과 같이 로그인했습니다.뿌리그리고 그 계정을 모든 일상 업무에 사용했습니다. 왜 타이핑 su을 해야 합니까?뿌리비밀번호를 계속해서 입력하거나 일부 관리자 명령을 위해 새 tty에 로그인하시겠습니까? 하지만뿌리물론 모든 것이 좋은 생각은 아닙니다. 잘못된 장소에서 부주의한 명령을 실행하면 시스템에 더 많은 해를 끼칠 수 있기 때문입니다. 이로 인해 일부 배포판(SuSE였나요?)이 데스크톱 배경을 수정하게 되었습니다.뿌리사용자는 해당 계정을 관리 작업에만 사용해야 한다는 큰 경고를 표시합니다.

따라서 Ubuntu 방식에는 sudo몇 가지 장점이 있습니다.Panther가 등록한).

  • 에 직접 로그인할 수 없습니다.뿌리계정.² :-)
  • 설치 프로세스에서는 (추가) 루트 비밀번호를 묻지 않으며, 하나의 (사용자) 비밀번호만 필요합니다.
  • sudo은(는) 자격 증명을 캐시하므로 여러 관리 명령을 연속적으로 입력하는 경우 비밀번호를 한 번만 입력하면 됩니다( 와는 대조적 su). 이렇게 하면 쉘이나 새 터미널을 열고 싶은 충동이 줄어듭니다.뿌리특권.
  • 또한 관리자로 입력해야 하는 명령과 입력하지 말아야 할 명령을 온라인과 문서에서 사용자에게 더 쉽게 알려줄 수 있습니다.³

¹ 그리고 스스로 할 용기가 없는 사람들을 위해 설치 파티도 있었습니다.
² 하지만 당신은~할 수 있다일반 사용자로 로그인한 후 루트 쉘을 얻으려면 sudo -i또는 같은 명령을 사용하십시오 . ³ 하지만 당신은 물론 당신이sudo su - root
단순히 인터넷에서 명령을 복사하여 붙여넣어서는 안 됩니다., 오른쪽?

답변4

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

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

관련 정보