저는 일반적으로 컴파일된 애플리케이션을 작성 중이며 특수 파일을 생성하고 그 안에 매직 쿠키를 작성해야 합니다. 응용 프로그램에서 직접 파일에 쓸 수 없습니다. 시스템 보안 모델에서는 이 작업을 수행하려면 높은 권한으로 도우미 도구를 실행해야 합니다. 도우미 도구에 원하는 만큼의 매개변수를 제공할 수 있습니다. 이제 도우미 도구로 몇 가지 매우 간단한 시스템 명령을 선택하고 파일을 생성하고 싶습니다. 이 같은:
/bin/sh -c "/bin/echo -n 'magic' > /some/where/file"
파일에 기록하려면 쿠키가 필요하기 때문에 Simple은 touch
잘리지 않습니다. echo
파일을 쓰려면 리디렉션이 필요하기 때문에 Shell Wrapper가 없는 Simple은 작동하지 않습니다. 저는 이러한 사소한 작업을 완료하기 위해 루트 권한을 사용하여 셸을 호출하는 데 익숙하지 않습니다. 파일을 작성하는 매우 간단하고 제한된 시스템 명령이 있습니까?
답변1
출력 리디렉션도 없고 파이프도 없지만 "이 문자열"은 다음과 같습니다.
dd of=/some/where/file <<<'magic'
답변2
이건 어때:
echo -n 'magic' | sudo tee /some/where/file > /dev/null
물론 리디렉션도 있지만 tee만 쉘이 아닌 루트로 실행되고 있습니다. 에도 적용됩니다 dd of=...
.
답변3
또 다른 고려 사항은 다른 사용자가 관찰할 수 있기 때문에 매직 쿠키의 값을 명령줄에 입력하고 싶지 않다는 것입니다. 프로그램이 임시적이라도(명령줄 문자열을 0으로 만드는 프로그램 포함) 공격의 기회가 있습니다. 따라서 이론적으로는 다음과 같습니다.
writestringtofile 'magic' /some/where/file
위험한 접근 방식입니다. 따라서 @stribika의 제안에 동의합니다. 값을 임시 파일에 쓰고 해당 위치에 복사합니다. 임시 파일( mkstemp()
)을 생성하려면 안전한 기능을 사용하여 경쟁 조건이 발생하지 않도록 하세요 .
답변4
이제 필요한 작업을 정확하게 수행하는 간단한 프로그램이 있습니다.