답변:
추론은 단지 su
또는 sudo
필요할 때이다.
대부분의 일상적인 작업에는 루트 셸이 필요하지 않습니다. 따라서 권한이없는 쉘을 기본 동작으로 사용하고 특별한 작업을 수행해야 할 때만 루트로 상승하는 것이 좋습니다.
이렇게하면 사용하는 응용 프로그램의 위험한 실수 (잘못된 스크립팅, 잘못 배치 된 와일드 카드 등) 및 취약점의 범위가 줄어 듭니다. 특히 인터넷에 접속하는 사람들은 "IRC를 루트로하지 말아라" 라는 옛 말을 보라 .
sudo
이러한 권한의 사용을 세분화하고 감사 할 수 있기 때문에 종종 권장됩니다.
이러한 관행을 준수함으로써 원격 루트 로그인을 비활성화 할 수 있습니다. 이는 "휠"그룹의 구성원 인 일반 사용자 계정과 SSH 공개 키로 만 권한을 부여받은 루트 계정 자체를 손상시켜야하기 때문에 침입자가 침입 할 수있는 진입률을 높입니다.
sudo
우수 하지만 , 루트 터미널에있는 동안 환경 변수를 동일하게 유지하기 위해 플래그 su
를 사용할 수도 있습니다 -m
. 디렉토리 이름으로 su
무언가를 ~
하고 작동하지 않는 것만으로도 더 많은 bonkers 가 뿌리를 내리지 않습니다.
주된 이유는 감사 내역을 생성하는 것입니다. 시스템에 일반 사용자로 로그인 한 다음 su를 수행해야하는 경우 지정된 조치를 담당하는 사람을 추적 할 수 있습니다.
sudo는 모든 명령을 syslog에 자동으로 기록하며 각 사용자가 사용할 수있는 명령을 정의 할 수 있습니다.
sudo vim foo.txt
vim 내에서 쉘에 드롭하면 정기적 인 sudo 로깅없이 루트 쉘이 제공됩니다.
sudo -i
대화식 세션을 얻으려면 ...
감사 추적을 작성하고 여기에 언급 된 "sudo su-"또는 "sudo vim foo.txt"문제의 희생양이되지 않도록하려면 "sudosh"를 사용할 수 있습니다. sudo를 통해 루트 액세스를 전달하지만 "sudosh"를 실행할 수있는 유일한 명령을 만드십시오.
sudosh는 로깅 셸이며 나중에 전체 터미널 세션을 재생하여 사용자가 터미널에서 본 내용을 정확하게 표시 할 수 있습니다.
보안을 철저히 연습해야합니다.
원격 루트 액세스 (또는 비밀번호를 통한 루트 액세스)를 허용하지 마십시오. (키를 통한 루트 액세스를 허용하는 경우 해당 키를 신중하게 제어하거나 키의 중앙 집중식 취소를 허용하는 kerberos와 같은 것을 사용하는 것이 좋습니다).
su를 비활성화하고 sudo를 사용합니다. 이렇게하면 사용자는 키 (바람직하게는 암호화 된)를 사용하여 시스템에 액세스 한 다음 권한 에스컬레이션을 위해서만 비밀번호 를 사용 합니다 . 사람들이 sudo로 액세스하는 프로그램을 제한 할 수 있지만 대부분 루트 암호를 아는 사람 만 액세스 할 수 있습니다.
이상적인 세상에서는 인터넷에 루트 암호를 게시 할 수 있어야하며 사람들에게 컴퓨터에 대한 액세스 권한을 부여하더라도 (하지만 / etc / sudoers 파일에는 넣지 않아도) 중요하지 않습니다. 물론 루트 암호를 게시 해서는 안되지만 동심 보호 계층으로 시스템을 보호해야합니다.