이렇게 하는 것이 더 안전한가요?
$ sudo dnf update
[사용자 비밀번호를 입력하세요]
또는
$ 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 -s
apt-get update
apt-get upgrade
답변2
예는 sudo
하위 프로세스가 종료되면 권한을 포기합니다. 이 경우에는 dnf
. su
하위 프로세스가 종료되면 권한이 제거됩니다. 이 경우 대화형 쉘입니다. 따라서 이 sudo
예에서는 권한을 더 빨리 포기합니다.
sudo
여기에 언급되지 않은 다른 장점도 있습니다. (예를 들어 sudoers
, 이 파일을 사용하면 각 사용자가 할 수 있는 것과 할 수 없는 것을 더 효과적으로 제어할 수 있습니다.)