환경 변수의 파일 내용

환경 변수의 파일 내용

자격 증명을 디스크에 완전히 쓰는 것을 피하고 싶습니다. 환경 변수에서 자격 증명을 읽고 싶습니다. 그러나 일부 스크립트에서는 해당 자격 증명을 읽으려면 디스크에 자격 증명 파일이 필요합니다. 바이너리 파일인 경우 특히 다루기가 어렵고 스크립트를 수정할 방법도 없습니다. 그리고 다른 곳에서 읽을 수 있는 cli 옵션도 없습니다. gam(Google App Manager)이 그러한 예 중 하나입니다.

질문: 저장된 자격 증명 값을 기대하는 바이너리를 어떻게든 환경 변수에서 추출하도록 할 수 있는 방법이 있습니까?

이상적인 솔루션은 Linux/Unix에서 작동해야 합니다.

답변1

카니발프로세스 교체파일처럼 동작합니다:

some-program-that-reads-a-file <(echo "$MY_ENV_VAR")
#..............................^^..................^

다음은 프로그램이 프로세스 대체를 어떻게 보는지에 대한 데모입니다. awk를 사용하여 인수를 인쇄하세요.

$ awk 'BEGIN {for (i=0; i<ARGC; i++) print i, ARGV[i]}' <(echo $HOME)
0 awk
1 /dev/fd/63

다른 쉘은 프로세스 교체를 위해 다른 구문을 사용합니다.

  • 다루기 힘든
    some-program =(echo $VAR)
    
  • 물고기
    some-program (echo $VAR | psub)
    
  • ksh, bash와 동일

특정 파일이 필요한 경우 FIFO를 사용하세요.

mkfifo ~/tmp/creds-file.pem
printf '%s' "$var" > ~/tmp/creds-file.pem &

cat ~/tmp/creds-file.pem

답변2

이 작업이 안전하게 수행될 수 있는지 확실하지 않지만(예: 다른 프로세스가 FIFO를 먼저 읽을 수 있음) 시도해 볼 가치가 있을 수 있습니다. FIFO를 사용하여 한 echo단계씩 실행해 보세요.

mkfifo ~/tmp/creds-file.pem
echo "$env_var" > ~/tmp/creds-file.pem & run_application_that_reads_from_file
rm ~/tmp/creds-file.pem

관련 정보