어느 것이 더 안전합니까? 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를 일반 사용자의 ID로 삭제합니까? 그렇다면 sudo가 실행 중인 프로그램이 공격자에 의해 손상되면 위의 1번이 더 안전한 내기가 될 것입니다. 권한이 이미 삭제되었기 때문에 공격자가 루트로 실행되지 않을 가능성이 있기 때문입니다.

답변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

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

sudo여기서 다루지 않은 다른 장점도 있습니다. (예: sudoers파일을 사용하여 각 사용자가 수행할 수 있는 작업과 수행할 수 없는 작업을 더 효과적으로 제어할 수 있습니다.)

관련 정보