쉘 스크립트에서 어떻게 gpg-agent --no-allow-external-cache --default-cache-ttl 10 --max-cache-ttl 20
설정하나요? 명령을 실행한 후에는 제공되지만 gpg-agent[4869]: gpg-agent running and available
캐시 ttl 값은 변경되지 않습니다. --decrypt로 확인 gpgconf --list-options gpg-agent | grep cache
하고 실제로 실행했는데 30초 후에도 키가 계속 캐시되었습니다.
나는 웹 리소스가 파일에서 이러한 구성을 변경하도록 제안한다는 것을 알고 있습니다 ~/.gnupg/gpg-agent.conf
. 왜 파일이 없는지 모르겠습니다. 루트인데도 vi /root/S.gpg-agent
파일을 열 수 없습니다. 어쨌든 저는 구성 파일에서 이러한 설정을 변경하는 것을 좋아하지 않습니다. 나는 다른 --decrypt에 대해 다른 캐시 TTL을 설정하는 것을 선호합니다. 따라서 쉘 스크립트에서 실행되어야 합니다.
# ls -al /root/.gnupg/
total 36
drwx------ 3 root root 4096 Jun 2 05:51 .
drwx------ 14 root root 4096 Jun 2 14:18 ..
-rw-r--r-- 1 root root 24 Jun 2 03:28 .#lk0x00005558d8861f30.gentoo_bazic.26472
-rw-r--r-- 1 root root 24 Jun 2 04:16 .#lk0x0000556c15e3ef30.gentoo_bazic.7432
-rw-r--r-- 1 root root 24 Jun 1 20:45 .#lk0x00005576e9d54f30.gentoo_bazic.29752
drwx------ 2 root root 4096 Jun 1 02:43 private-keys-v1.d
-rw------- 1 root root 32 Jun 1 02:43 pubring.kbx
-rw------- 1 root root 600 Jun 2 05:20 random_seed
srwx------ 1 root root 0 Jun 2 05:51 S.gpg-agent
srwx------ 1 root root 0 Jun 2 05:51 S.gpg-agent.browser
srwx------ 1 root root 0 Jun 2 05:51 S.gpg-agent.extra
srwx------ 1 root root 0 Jun 2 05:51 S.gpg-agent.ssh
-rw------- 1 root root 1200 Jun 2 03:19 trustdb.gpg
추신: 캐시를 삭제하면 가능하다는 것을 알고 있습니다 echo RELOADAGENT | gpg-connect-agent
. 그러나 이는 이상적이지 않습니다.
인용하다
https://www.gnupg.org/documentation/manuals/gnupg/Agent-Options.html
https://www.gnu.org/software/emacs/manual/html_node/pgg/Caching-passphrase.html
답변1
에이전트 시작 매개변수
gpg-agent[4869]: gpg-agent running and available
에이전트는 시작 후 즉시 종료되고 해당 프로세스 4869의 수명은 약 1초라고 가정합니다. 테스트가 gpgconf --list-options gpg-agent
실제로 기본 구성에서 이미 실행 중인 프록시에 연결 중일 수 있습니다.
일반적으로 gpg-agent는 적어도 캐시를 지우지 않고(옵션이 아님) 런타임에 구성을 변경하도록 설계되지 않은 것 같습니다.
구성 파일
~/.gnupg/gpg-agent.conf
해당 파일 은 기본적으로 생성되지 않기 때문에 해당 파일이 없습니다 .
오타 vi /root/S.gpg-agent
일 수도 있습니다 vi /root/.gnupg/S.gpg-agent
. S.gpg-agent
일반 파일이 아닌 소켓이기 때문에 편집할 수 없습니다 .
여러 프로필 관리
--decrypt
키 수나 사용 사례의 복잡성에 따라 다른 GPG 홈 디렉터리를 사용하도록 선택할 수 있습니다 .
/root/gnupg-home-1/
및 을 관리하는 경우 각 디렉터리는 서로 다른 캐시 TTL 값을 갖는 /root/gnupg-home-2/
자체 디렉터리를 가질 수 있습니다 . gpg-agent.conf
주문하다
gpg --homedir /root/gnupg-home-1/ --decrypt ...
gpg --homedir /root/gnupg-home-2/ --decrypt ...
각각 고유한 구성을 가진 다양한 에이전트 인스턴스의 시작을 트리거합니다.
테스트/검증
(이전과 마찬가지로) 검증 결과를 사용할 수 있으며 매개변수 gpgconf
만 추가하면 됩니다 .--homedir
gpgconf --homedir /root/gnupg-home-1/ --list-options gpg-agent |grep cache
gpgconf --homedir /root/gnupg-home-2/ --list-options gpg-agent |grep cache
방문 제한
루트의 umask가 이미 그룹 및 기타 디렉토리에 대한 액세스를 차단하지 않은 경우 사용해야 합니다 mkdir --mode=700 <directoryname>
.
청소하다
사용 후 살해 물질이 필요합니까?
보안 관점에서 볼 때 캐시가 올바르게 구현되고 구성된 TTL이 상당히 짧은 경우 이는 필요하지 않습니다.
시스템 유지 관리 관점에서 가동 시간이 높을 가능성이 있는 서버에서는 더 이상 필요하지 않을 때 에이전트 프로세스를 종료하는 것이 가장 좋습니다. 그렇지 않으면 사용하지 않는 에이전트 프로세스 수가 너무 많이 늘어날 수 있습니다.
소프트웨어 상태 관점에서 디렉터리를 삭제하고 에이전트 프로세스를 유지하는 것은 일관성이 없습니다. 내 테스트(gpg-agent 버전 2.2.35)에서는 디렉터리를 삭제한 후 에이전트 프로세스가 자동으로 사라졌습니다. 그러나 매뉴얼 페이지에서 이에 대한 정보를 찾을 수 없으므로 왜 이런 일이 발생하는지, 이것이 얼마나 신뢰할 수 있는지 모르겠습니다.
사용 사례 및 스크립트 구현 방법에 따라 디렉터리가 삭제된 후에도 에이전트 프로세스가 지속되면 실수로 이전 구성을 재사용할 위험이 있을 수 있습니다. uuidgen
이러한 유형의 오류는 .