메인 루트 파일 시스템을 설치하기 전에 초기 사용자 공간에서 init 스크립트로 프로그램을 실행하고 있습니다.
루트 권한 없이 애플리케이션을 실행할 수 있나요?
명백한 문제는 시작 프로세스의 초기 단계에 "사용자"가 없다는 것입니다.
답변1
루트 권한 없이 애플리케이션을 실행할 수 있나요?
그게 다야. Linux가 MULTIUSER를 지원하도록 컴파일되었다고 가정합니다.)
명백한 문제는 시작 프로세스의 초기 단계에 "사용자"가 없다는 것입니다.
su
네, initramfs에 또는 를 추가하려고 하면 sudo
많은 구성 파일( /etc/passwd
, /etc/groups
등 /etc/shadow
) 을 추가해야 합니다. 그러나 이러한 복잡성은 Linux에 고유한 것이 아닙니다. 결국 UID는 단지 숫자일 뿐이므로 루트 권한을 제거할 수 있는 장난감 프로그램을 만드는 것이 목표라면 매우 쉽습니다.
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char** argv)
{
setuid(atoi(argv[1]));
execvp(argv[2], argv+2);
}
로 컴파일하면 toysu
다음과 같이 호출할 수 있습니다.
toysu 1234 touch /tmp/example
사용할 UID는 어디에 1234
있고 나머지는 실행할 명령입니다. 처음부터 루트가 아니면 작동하지 않으므로 sudo
일반 시스템에서 테스트하려면 명령 앞에 접두사를 붙입니다.