Redhat 컴퓨터에 서비스 계정을 만들었습니다. 계정의 목적은 내가 만든 bash 스크립트를 실행하는 것입니다.
bash 스크립트는 기본적으로 cpuinfo, ifconfig, 네트워크 상태, 포트, 프로세스, 파일 권한 및 장치 상태 등과 같은 시스템 속성을 확인합니다.
이제 내가 만든 스크립트만 실행하도록 내 서비스 계정을 만드는 방법은 무엇입니까? 누군가가 서비스 계정 자격 증명으로 내 서버에 로그인하더라도 이 계정은 아무 작업도 수행할 수 없다는 것 외에는 할 수 없습니다. ls,cp,mv,date 등과 같은 기본 명령은 스크립트 실행을 제외합니다.
답변1
당신의 주제에 기초하여리눅스에서 계정 접근을 제한하는 방법,
예를 들어 해당 계정과 이에 대한 새 그룹을 생성할 수 있습니다. 여기서 그룹 이름은 계정 이름과 동일할 수 있습니다. 결과적으로 이 사용자 계정만 이 새 그룹에 속하게 되며 시스템의 다른 어떤 항목에도 이 새 서비스 계정 이름 및 서비스 계정 그룹과 관련된 소유자 또는 그룹 권한이 없는 완전히 고유하게 됩니다. 그런 다음 이 서비스 계정 및 서비스 그룹 이름이 소유하도록 bash 스크립트를 설정하십시오. 또한 이 계정의 로그인 셸을 또는 로 설정 /bin/false
합니다 /bin/nologin
.
/sbin/nologin과 /bin/false의 차이점은 무엇입니까?
그러나 스크립트 실행만을 목적으로 새 계정을 만들었다는 점을 명심하세요.너만들어진. 보안 관점에서 볼 때 당신은 거의 가치가 없는 추가 단계를 수행했으며 이제 이 새 서비스 계정이 백그라운드에서 실행되는 것을 알지 못한 채 보는 사람은 머리를 긁적이며 그게 도대체 무엇인지 궁금해할 것입니다.
더 좋은 방법은 귀하의 스크립트이기 때문에 귀하가 소유하도록 유지하는 것입니다.귀하는 유효한 사용자이며 실행 중인 프로세스에 연결되면 모든 사람이 귀하의 계정을 인식할 것입니다.- 그런 다음 시스템 속성 확인을 위해 언급한 대부분의 내용에는 루트 권한이 필요하므로 스크립트에서 setuid 비트를 사용하여 작업을 수행할 수 있는 권한을 부여합니다.
나는 SETUID를 활용한다고 언급했는데 당신이 SETUID를 사용하고 있기 때문에 그것은 틀렸습니다.쉘 스크립트, 여기에서 설명할 수 있는 이유는 다음과 같습니다. 쉘 스크립트에서 setuid 허용
그러나 필요한 작업을 수행하기 위해 프로그램을 작성하고 컴파일하는 경우 실행 파일을 소유하게 되면 해당 실행 파일에서 SETUID를 활용할 수 있습니다.