mysql의 비밀번호가 포함된 "credential.txt" 파일이 있습니다. 이 텍스트 파일을 호출하고 여기에서 비밀번호를 검색하는 또 다른 스크립트가 있습니다. 보안상의 이유로 비밀번호를 직접 저장하고 싶지 않습니다. 이를 위해 Triple-DES Cipher 암호화를 사용하여 파일을 암호화했습니다.
openssl des3 -salt -in credential.txt -out credential.des3
이제 쉘 스크립트에서 credential.des3에서 암호화된 비밀번호를 가져와서 변수에 저장하려고 합니다. 인용된 기사에서는 파일을 해독하고 해독된 비밀번호를 다른 파일에 저장하는 방법을 보여줍니다.
openssl des3 -d -salt -in credential.des3 -out unencrypted-data.file
문제는 해독된 파일을 시스템에 저장하고 싶지 않다는 것입니다. 해독된 출력을 캡처하고 싶습니다. 내 쉘 스크립트는 cronjob을 사용하여 자동으로 실행되므로 사용자에게 비밀번호를 지정하도록 요청할 수 없습니다. 비밀번호를 해독하고 다음과 같은 변수에 저장하는 방법이 있습니까?
var = $(decrypted_pass)
쉘 스크립트에서 필요할 때 사용하십시오.
다음 명령을 시도했지만 작동하지 않습니다.
var=$(openssl das3 -salt -in credential.des3)
답변1
당신이 사용할 수있는
pass=$(openssl des3 -d -salt -in credential.des3)
(지정된 출력 파일 없음)
하지만 여기서 문제는 cron
. 환경 변수를 통해 일부 데이터를 스크립트에 전달할 수 있지만 파일 시스템( 대부분 파일) 에 저장하지 않고 cron
암호를 전달하는 쉬운 방법은 없습니다 .cron
crontab
영구 저장소에 대한 일반 텍스트 비밀번호 액세스를 방지하려면 이를 tmpfs
파일 시스템(Linux)에 저장하도록 구성할 수 있습니다. mount -t tmpfs tmpfs /path/to/mount/point
또는 에 해당하는 항목을 사용하여 설치할 수 있습니다 fstab
. 시스템에서 이미 /tmp
using 을 사용하고 있을 수도 있습니다 tmpfs
.
또 다른 옵션은 일반 텍스트 비밀번호를 저장하는 스크립트를 지속적으로 실행하고 sleep
적절한 시간에 실제 작업을 수행하는 것입니다. 하지만 이 경우 스크립트가 충돌하면 자동으로 다시 시작되지 않습니다. 어쨌든 다시 시작하려면 비밀번호를 수동으로 입력해야 합니다.
어쨌든 메모리의 비밀은 스왑을 위해 기록될 수 있습니다(있는 경우). (이런 이유로 암호화폐 거래소를 이용하는 이유가 있습니다.)