저는 두 명의 잘 알려진 사용자(root와 admin)와 함께 임베디드 Linux 시스템에서 작업하고 있습니다. SSH를 통해 관리자로 로그인할 수 있지만 루트(비밀번호 알 수 없음)로는 로그인할 수 없습니다. 시스템 제조업체는 관리자를 사용하여 루트로 실행되는 시작 스크립트를 생성할 수 있는 보안 허점을 일시적으로 열었습니다. 이 시작 스크립트를 사용하여 나중에 사용자 관리자를 사용하여 연결할 수 있는 루트 셸을 생성하고 싶습니다. 용어는 잘 모르겠지만 관리자가 열 수 있도록 권한이 설정된 대화형 셸에 연결하는 가상 tty를 만들고 싶은 것 같습니다. 이를 달성하기 위해 어떤 명령을 실행해야할지 모르겠습니다.
답변1
대화형 셸에 연결되는 가상 tty를 만들고 싶은 것 같습니다.
물론 그렇게 할 수 있습니다. 하지만 이 tty에 어떻게 연결하시겠습니까? 장치에 직렬 연결이 있는 경우 해당 장치에서 대화형 셸을 실행할 수 있습니다.
sh </dev/ttyS0 >/dev/ttyS0 2>/dev/ttyS0
로그인이 필요하지 않습니다. 직렬 케이블을 연결하기만 하면 루트 쉘을 얻을 수 있습니다. SSH를 통해 연결하는 경우 SSH가 로그인을 우회하도록 설계되지 않았기 때문에 쉽지 않습니다. 물론 루트 계정에 대해 빈 비밀번호를 설정하고 루트 로그인을 인증하도록 SSH를 구성할 수 있습니다.
그러나 장치에 연결할 수 있는 모든 사람이 루트로 명령을 실행할 수 있도록 허용하려는 경우에만 해당됩니다. 관리자가 권한을 루트로 승격하도록 허용하려는 경우 터미널을 사용할 필요가 없습니다.
가장 간단한 방법은 자신이 알고 있는 루트 계정의 비밀번호를 설정하는 것입니다. 또는 설치스도장치에서 파일에 다음 줄을 추가합니다 /etc/sudoers
.
admin ALL=(ALL:ALL) ALL
sudo mycommand
sudo -s
그런 다음 실행(셸 가져오기)을 통해 관리자 계정에서 루트로 명령을 실행할 수 있습니다 . admin
런타임 시 계정 비밀번호를 입력 하지 않으려면 sudo
닫는 NOPASSWD:
괄호 뒤에 추가하세요.
루트 파일 시스템이 읽기 전용이면 sudo
다른 곳에 마운트할 수 있습니다. 바이너리는 noexec
또는 옵션 없이 설치된 파일 시스템에 있어야 합니다 nosuid
.