Computer >> 컴퓨터 >  >> 체계 >> Linux

Su, Sudo Su, Sudo -s 및 Sudo -i의 차이점

Su, Sudo Su, Sudo -s 및 Sudo -i의 차이점

Linux 터미널에서 루트 세션을 얻는 방법에는 여러 가지가 있습니다. 루트 권한을 얻으려는 대부분의 초보 사용자는 각 명령이 루트 액세스 권한을 얻는 방법, 명령이 다른 방법 및 이러한 차이가 중요한 경우에 익숙하지 않을 수 있으므로 이로 인해 약간의 혼란이 발생할 수 있습니다. 여기에서는 터미널에서 루트 액세스 권한을 얻는 데 사용되는 다양한 명령을 각각 분리하여 루트 권한을 얻는 방법, 사용 시기 및 그 사이의 모든 것을 설명합니다.

su 명령은 시스템이 쉘에서 사용하고 있는 현재 사용자를 대체합니다.

Su, Sudo Su, Sudo -s 및 Sudo -i의 차이점

su를 입력하여 모든 사용자로 전환할 수 있습니다. 그리고 그 뒤에 사용자 이름을 추가합니다. 이것은 현재 사용자를 지정된 사용자로 전환(및 기본적으로 로그아웃)하도록 시스템에 지시합니다. 또는 su 명령은 su를 입력하여 루트 액세스 권한을 얻을 수 있습니다. 명령 뒤에 아무 것도 지정하지 않고.

"su"는 사용자가 시스템의 루트 계정에 직접 액세스하기를 원할 때 가장 잘 사용됩니다. sudo를 거치지 않습니다. 또는 그런 것. 대신 문자 그대로 로그인하기 때문에 루트 사용자의 비밀번호를 입력하라는 메시지가 표시됩니다. 또한 루트 액세스 권한을 얻는 다른 방법은 루트 홈 디렉토리 및 루트 환경에 대한 액세스 권한도 얻지 못합니다.

sudo su

이 명령은 루트가 아닌 현재 사용자의 비밀번호를 묻습니다.

Su, Sudo Su, Sudo -s 및 Sudo -i의 차이점

본질적으로 su를 실행하는 것과 동일합니다. 쉘에서 한 가지 중요한 차이점을 저장하십시오. 시스템에 "사용자 전환"을 직접 지시하는 대신 "su" 명령을 루트로 실행하도록 지시하는 것입니다. sudo su일 때 su를 실행하는 것처럼 ".profile", ".bashrc" 및 "/etc/profile"이 시작됩니다. (또는 su root ). 명령이 sudo로 실행되는 경우 그 앞에 루트 권한이 부여됩니다.

"sudo su"와 "su" 사이에는 큰 차이가 없지만 sudo su 한 가지 중요한 이유 때문에 여전히 매우 유용한 명령입니다. 사용자가 시스템에서 루트 액세스 권한을 얻기 위해 "su"를 실행할 때 루트 암호를 알아야 합니다. 루트는 sudo su로 제공됩니다. 현재 사용자의 비밀번호를 요청하여 이렇게 하면 보안을 강화하는 루트 암호 없이 루트를 얻을 수 있습니다.

sudo -i

sudo -i 사용 sudo su와 거의 동일합니다. 한 가지 예외가 있는 명령:루트 사용자와 직접 상호 작용하지 않습니다.

Su, Sudo Su, Sudo -s 및 Sudo -i의 차이점

sudo su와 매우 유사합니다. , -i 플래그를 사용하면 루트 계정 암호를 몰라도 루트 환경을 얻을 수 있습니다. sudo -i sudo su를 사용하는 것과도 매우 유사합니다. , 모든 환경 파일(.profile 등)을 읽고 쉘 내부에 환경을 설정하기 때문입니다.

"sudo su"와 다른 점은 sudo -i입니다. 루트 사용자와 직접 상호 작용하지 않고 루트 및 루트 환경을 얻는 훨씬 깨끗한 방법입니다. 명확히 하기 위해:sudo su 사용 둘 이상의 루트 setuid를 사용 중입니다. 백그라운드에서 명령. 이것은 유지될 환경 변수와 변경될 환경 변수를 파악하는 것을 훨씬 더 어렵게 만듭니다(루트 환경으로 교체할 때). sudo -i에서는 그렇지 않습니다. . 이 때문에 대부분의 사람들은 직접 로그인하지 않고 루트를 얻는 방법으로 선호합니다.

sudo -s

이 명령은 $SHELL 변수로 쉘을 호출합니다.

Su, Sudo Su, Sudo -s 및 Sudo -i의 차이점

-s "sudo" 명령에 대한 스위치는 명령을 실행하는 현재 사용자의 $SHELL 변수를 읽습니다. 이 명령은 사용자가 sudo /bin/bash를 실행하는 것처럼 작동합니다. . Sudo -s "비 로그인" 스타일 셸입니다. sudo -i와 같은 명령과 달리 또는 sudo su , 시스템은 환경 파일을 읽지 않습니다. 사용자가 쉘에 sudo -s를 실행하도록 지시할 때 , 루트를 얻지만 사용자 또는 사용자 환경을 변경하지 않습니다. 귀하의 집은 루트 집이 아닙니다.

Su, Sudo Su, Sudo -s 및 Sudo -i의 차이점

이 명령은 사용자가 루트로 전환하고 싶지 않지만 $SHELL 환경 값이 있는 대화형 셸을 원할 때 가장 잘 사용됩니다. 위에서 언급한 다른 명령은 루트 액세스 권한을 얻지만 루트 환경 파일을 터치하고 사용자에게 루트에 대한 완전한 액세스를 허용합니다(보안 문제일 수 있음).

자주 묻는 질문

1. 어떤 명령어를 사용해야 하나요?

각 명령에는 사용 사례가 있습니다. 여기서 중요한 것은 각 명령이 무엇을 하고 언제 사용해야 하는지 이해하는 것입니다. 그대로 sudo -i 루트 환경을 얻는 가장 실용적이고 깨끗한 방법입니다. 반면에 sudo -s를 사용하는 사람들은 보안 이점이 추가된 루트 환경을 건드릴 수 없는 루트 셸을 얻을 수 있습니다.

2. 루트에 액세스하면 시스템이 손상될 수 있습니까?

어떤 경우에는 그렇습니다. 특정 터미널 세션의 모든 항목에 대해 루트에 액세스해야 하는지 절대적으로 확신하지 않는 한 sudo를 입력하는 것이 더 나은 경우가 많습니다. 특정 명령에 대해 루트에 액세스하려는 경우 명령이 뒤에 옵니다. 예를 들어 sudo apt install vlc를 입력합니다. 데비안 기반 Linux 버전에서는 운영 체제에 루트에 액세스하여 APT 패키지 관리자를 실행하여 VLC를 설치하도록 지시합니다.

sudo -i 실행 시 매우 중요한 주의 사항 또는 sudo를 입력하는 것과 대조적으로 앞에서 논의한 다른 변형 루트로 실행하려는 각 명령 앞에는 전자가 명령 기록을 /var/log/auth.log에 기록하지 않는다는 것입니다. . 당신이 엉망이라면, 당신은 그것을 고칠 수 있도록 당신이 한 일을 되돌아 볼 수 없습니다. 루트 세션은 기록되지 않으므로 메모리 부족으로 작업해야 합니다.

3. 명령 앞에 "sudo"를 입력하면 "sudo su"의 어떤 변형이 실행되나요?

sudo를 입력하여 명령을 실행하려면(즉, 실행하려는 명령과 같은 줄에 명령을 입력해야 함) 기본적으로 대화형 루트 셸에서 명령을 실행하는 것입니다. 이것은 sudo -s 독립 실행형 명령은 수행합니다.

마무리

이 목록에는 100% 최고인 명령이 하나도 없습니다. 사용자가 명령줄에 익숙해짐에 따라 루트를 얻는 각 방법(및 많은 방법이 있음)을 고려하고 장단점을 따져보고 그에 따라 행동해야 합니다. 이 기사의 도움으로 이러한 결정을 더 쉽게 내릴 수 있기를 바랍니다. 명령에 대해 자세히 알아보려면 디렉토리 내용을 나열하는 유용한 Linux 명령에 대한 이 기사를 읽으십시오.