어느 것이 더 안전합니까? sudo dnf 업데이트 또는 su - dnf 업데이트

어느 것이 더 안전합니까? sudo dnf 업데이트 또는 su - dnf 업데이트

이렇게 하는 것이 더 안전한가요?

  1. $ sudo dnf update[사용자 비밀번호를 입력하세요]

또는

  1. $ su - [enter root password]
    # dnf update
    
    

sudo는 setuid-root를 사용하기 때문에 나는 항상 그것들이 똑같다고 가정합니다. 따라서 sudo에 대한 첫 번째 인수로 실행되는 프로세스는 sudo의 유효 ID(예: 루트)로 실행됩니다.

내 질문은 다음과 같습니다.sudo는 결국 일반 사용자에게 유효 ID를 포기하게 될까요? 따라서 이 경우 위의 1번이 더 안전한 선택이 될 것입니다. 왜냐하면 sudo로 실행되는 프로그램이 공격자에 의해 손상되면 권한이 제거되었기 때문에 공격자가 루트로 실행되지 않을 가능성이 있기 때문입니다.

답변1

첫 번째 명령에는 (아마도) 올바른 비밀번호가 필요하며 dnf update루트로 실행하고 종료합니다.

$ sudo dnf update [enter user password]

두 번째 명령은 루트의 비밀번호를 요구한 다음 루트 쉘을 시작합니다. 이 셸에서 다음을 실행합니다 dnf update.

$ su - [enter root password]
# dnf update

실제로 사과와 사과를 비교하는 것이 아닙니다. 이 두 명령을 비교할 수 있습니다. 둘 다 적어도 명령을 실행하는 루트 셸을 시작합니다.dnf update

sudo -s
dnf update

su -
dnf update

또는 두 명령을 비교할 수도 있습니다. 두 명령 모두 루트 권한 있는 인스턴스를 시작한 dnf update다음 호출자의 셸로 다시 종료됩니다.

sudo dnf update

su root -c 'dnf update'

실제로 귀하가 묻는 것은 루트 권한으로 단일 명령을 호출하는 것이 더 나은지, 아니면 하나 이상의 명령을 실행하기 위해 루트 셸을 시작하는 것이 더 나은지 여부입니다.

  • 기능이나 다운로드가 어떤 식으로든 손상된 경우 dnf실행 방법은 중요하지 않습니다. 문제는 전혀 실행된다는 것입니다.
  • 시스템 손상에 관해 이야기하는 경우 사용자 비밀번호( sudo)와 루트 비밀번호( )의 su보안 수준 에 따라 달라집니다.
  • 이 사용자를 신뢰할 수 있는지 고려하고 있다면 여러 명령을 실행하는 루트 셸을 얻거나 한 번에 하나의 명령을 실행하는 루트 셸을 얻는지는 중요하지 않습니다. 문제는 명령을 루트로 실행할 수 있다는 것입니다.

개인적으로 필요에 따라 사용법을 혼합하고 일치시킵니다. 나는 거의 사용하지 않지만 여러 명령(예: 데비안 패키지 관리 도구, 이어서 ) 을 실행해야 하는 빠른 일회성 또는 짧은 세션에 사용 su합니다 .sudo {command....}sudo -sapt-get updateapt-get upgrade

답변2

예는 sudo하위 프로세스가 종료되면 권한을 포기합니다. 이 경우에는 dnf. su하위 프로세스가 종료되면 권한이 제거됩니다. 이 경우 대화형 쉘입니다. 따라서 이 sudo예에서는 권한을 더 빨리 포기합니다.

sudo여기에 언급되지 않은 다른 장점도 있습니다. (예를 들어 sudoers, 이 파일을 사용하면 각 사용자가 할 수 있는 것과 할 수 없는 것을 더 효과적으로 제어할 수 있습니다.)

관련 정보