노력하고있어암호를 설정하세요Debian 9 KVM 게스트에서 단계 중 하나는 www-data 사용자로 GPG 키를 생성하는 것입니다. 안타깝게도 ( gpg --gen-key
www-data 사용자로 실행하여) 이 작업을 시도할 때마다 다음과 같은 결과가 나타납니다.
...
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
gpg: agent_genkey failed: Permission denied
Key generation failed: Permission denied
사용자의 홈 디렉토리 www-data
는 이며 /var/www
, 사용자에게는 읽기 및 쓰기 권한이 있습니다. www-data 사용자로 미리 실행 하면 gpg --list-keys
디렉토리가 성공적으로 생성되므로 /var/www/.gnupg
사용자에게 올바른 권한이 없는 것과는 다릅니다.
www-data 사용자로서 GPG 키를 생성하려면 어떻게 해야 합니까?
부록
다음 명령을 사용하여 www-data에 로그인하면 환경이 출력됩니다 sudo su www-data
.
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
LANG=en_US.UTF-8
SUDO_GID=1000
USERNAME=root
SUDO_COMMAND=/bin/su www-data
USER=www-data
PWD=/home/stuart
HOME=/var/www
SUDO_USER=stuart
SUDO_UID=1000
MAIL=/var/mail/www-data
SHELL=/bin/bash
TERM=xterm-256color
SHLVL=1
LOGNAME=www-data
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
_=/usr/bin/env
다음을 사용하여 로그인하면sudo su - www-data
LANG=en_US.UTF-8
USER=www-data
PWD=/var/www
HOME=/var/www
MAIL=/var/mail/www-data
SHELL=/bin/bash
TERM=xterm-256color
SHLVL=1
LOGNAME=www-data
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
_=/usr/bin/env
다음을 사용하여 로그인하면ssh [email protected]
SSH_CONNECTION=192.168.16.155 50692 192.168.16.152 22
LANG=en_US.UTF-8
XDG_SESSION_ID=11
USER=www-data
PWD=/var/www
HOME=/var/www
SSH_CLIENT=192.168.16.155 50692 22
SSH_TTY=/dev/pts/0
MAIL=/var/mail/www-data
TERM=xterm-256color
SHELL=/bin/bash
SHLVL=1
LOGNAME=www-data
XDG_RUNTIME_DIR=/run/user/33
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
_=/usr/bin/env
답변1
pinentry
이는 사용자에게 tty 장치가 필요한 GPG 프로그램의 증상입니다. 이 예의 실패는 pinentry
새로 생성된 키의 비밀번호를 묻는 메시지가 표시될 때 발생합니다.
~에서건축 위키피디아:
사용 시에는
pinentry
사용하고 있는 단말 장치에 대한 적절한 권한(예:)이 있어야 합니다/dev/tty1
. 그러나 su(또는 sudo)를 사용하면 소유권은 새 사용자가 아닌 원래 사용자에게 유지됩니다. 이는Permission denied
루트 사용자라도 pinentry가 오류로 인해 실패함을 의미합니다....
해결책은 pinentry를 사용하기 전(즉, 프록시와 함께 gpg 사용) 어느 시점에서 장치의 권한을 변경하는 것입니다.
다음과 같은 방법으로 사용 중인 단말 장치의 권한을 확인할 수 있습니다.
ls -l $(tty)
sudo
su
현재 사용자가 아닌 /를 처음으로 사용하는 사용자가 파일을 소유하고 있음을 알 수 있습니다 .
최종 장치의 소유권 변경(루트로 수행해야 할 수도 있음;완료되면 다시 변경하는 것을 잊지 마세요.),예를 들어:
chown www-data /dev/pts/0
이제 이 작업이 pinentry
제대로 작동하고 키 생성 프로세스가 성공적으로 완료됩니다.
알아채다
사용자가 터미널 장치 파일을 읽고 쓸 수 있는 것만으로는 충분하지 않습니다.사용하려는 사용자에게 사용자 소유권을 설정해야 합니다.pinentry
.
새로운 GPG 설정은 모든 사용자가 생성하여 다른 사용자에게 전송할 수도 있습니다.
GNUPGHOME=/home/user/gpg-alt gpg --gen-key
정상적으로 설치를 실행하십시오. 그런 다음 새 설정을 다른 사용자에게 복사하고 권한이 올바르게 설정되었는지 확인하세요.
# run as root
mv /home/user/gpg-alt /home/www-data/.gnupg
chown -R www-data:www-data /home/www-data/.gnupg
답변2
로그인된 사용자 계정을 사용하는 경우에는 키를 생성할 수 없는 것 같습니다 sudo su [user]
. 그러나 예를 들어 해당 사용자로 SSH를 통해 서버에 연결하면 문제가 없습니다.ssh [email protected]
gpg --gen-key
답변3
사용자에게 권한이 없는 것 같아서 gpg 키를 생성할 수 없으며 다음과 같은 결과가 나타납니다.
gpg: agent_genkey failed: Permission denied
Key generation failed: Permission denied
현재 사용자(예: myuser)의 권한을 변경하여 이 문제를 해결할 수 있었습니다.
chown myuser /dev/pts/0
(이 작업은 루트 수준에서 수행되어야 합니다)
권한을 제공한 후 사용자를 위한 키를 생성할 수 있습니다.