새로운 시작을 위한 준비
이곳을 너무 소홀히 대한 것 같다.
이상과 현실의 차이를 인정하지 못한 채 제법 긴 방황의 시간이 흘러간 듯 하다.
생각을 정리하고, 다시 시작!!
새 프로젝트에 DBus / session bus 연동으로 몇일을 고생한 듯 하다.
init process 또는 console에서 동작시킨 process에서는 문제가 없는데,
system 권한을 가진 process는 아래와 같은 [Error Log] 발생.
[ Error Log ]
Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.
session bus를 사용하는 방법이 일반적이지 않은걸까?
자료를 찾다 보니 config option 중에 <allow_anonymous>가 있다.
configuration파일 (session.conf) 에 <allow_anonymous /> 추가하니 문제는 해결이 된다.
하지만, anonymous 에서 좀 걸린다.
dbus-daemon configuration file에 대한 내용을 찾아보니. 역시나 위험성에 대해 경고하고 있다. ( https://dbus.freedesktop.org/doc/dbus-daemon.1.html )
<allow_anonymous>
If present, connections that authenticated using the ANONYMOUS mechanism will be authorized to connect. This option has no practical effect unless the ANONYMOUS mechanism has also been enabled using the <auth> element, described below.
Using this directive in the configuration of the well-known system bus or the well-known session bus will make that bus insecure and should never be done. Similarly, on custom bus types, using this directive will usually make the custom bus insecure, unless its configuration has been specifically designed to prevent anonymous users from causing damage or escalating privileges.
보안과 안정성 관련된 내용은 추가 검토 필요!!
Jenkins Server 설치 후 마음먹고 version update 시도 했으나, error message 부터 만났다.
[ Error case ]
$ sudo apt-get update
.....
W: GPG error: https://pkg.jenkins.io binary/ Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY FCEF32E745F2C3D5
[ Resolve ]
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys FCEF32E745F2C3D5
Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --homedir /tmp/tmp.FjsBEAHsJi --no-auto-check-trustdb --trust-model always --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyserver keyserver.ubuntu.com --recv-keys FCEF32E745F2C3D5
gpg: requesting key 45F2C3D5 from hkp server keyserver.ubuntu.com
gpg: key 45F2C3D5: public key "Jenkins Project <jenkinsci-board@googlegroups.com>" imported
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
$ sudo apt-get update
.....
Fetched 833 B in 20s (41 B/s)
Reading package lists... Done
Error case는 간단한 명령어 한줄로 해결되었으니..
명령어의 의미가 궁금해졌다.
--------------------------------------------
$ apt-key -help
"apt-key는 apt가 패키지를 인증하는데 사용하는 키 리스트를 관리하는데 사용하는 유틸" 이라고 설명하고 있다. (http://manpages.ubuntu.com/manpages/bionic/man8/apt-key.8.html)
그럼 apt는?? (평소에 아무런 의심없이 사용해왔던 명령어(?기능) 들에 대한 정의를 모르고 있었다. 반성하자..ㅜ.ㅜ )
apt는 패키지 관리를 위한 high-level command line 인터페이스라고 정의가 되어 있다.
(http://manpages.ubuntu.com/manpages/hirsute/en/man8/apt.8.html)
처음으로 돌아가서.. 명령어에 대한 의미에 대한 정리를 해보자.
"sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys [Key]"
"gpg(GunPG, the GNU Privacy Guard)명령을 통해 keyserver.ubuntu.com에서 [Key] 에 대한 public key를 apt가 패키지를 인증하는데 사용하는 key list에서 추가한다." 의 의미가 된다.
ubuntu man page에는 --keyserver option 이 나오지 않는다.
gnupg.org(https://www.gnupg.org/documentation/manuals/gnupg/GPG-Configuration-Options.html) GPG Opitons page 에 deprecated 되었다고 나온다. ( 옵션 리스트에 나오지 않는 이유가 있었다.)
dirmngr.conf 사용에 대한 방법은 다시 정리를 해 봐야겠다.
--keyserver name
This option is deprecated - please use the --keyserver in dirmngr.conf instead.
Use name as your keyserver. This is the server that --receive-keys, --send-keys, and --search-keys will communicate with to receive keys from, send keys to, and search for keys on. The format of the name is a URI: ‘scheme:[//]keyservername[:port]’ The scheme is the type of keyserver: "hkp" for the HTTP (or compatible) keyservers, "ldap" for the LDAP keyservers, or "mailto" for the Graff email keyserver. Note that your particular installation of GnuPG may have other keyserver types available as well. Keyserver schemes are case-insensitive. After the keyserver name, optional keyserver configuration options may be provided. These are the same as the global --keyserver-options from below, but apply only to this particular keyserver.