데비안 컴퓨터에 etcd를 설치하려고 합니다.
root@s1:/tmp/test-etcd# uname -a
Linux s1 3.16.0-4-amd64 #1 SMP Debian 3.16.36-1+deb8u2 (2016-10-19) x86_64 GNU/Linux
root@s1:/tmp/test-etcd# uname -m
x86_64
root@s1:/tmp/test-etcd# lshw -class cpu
*-cpu
product: Intel(R) Xeon(R) CPU X3430 @ 2.40GHz
vendor: Intel Corp.
physical id: 1
bus info: cpu@0
width: 64 bits
capabilities: fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp x86-64 constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt lahf_lm ida dtherm tpr_shadow vnmi flexpriority ept vpid
나는 github repo의 표준 절차를 따랐습니다.
ETCD_VER=v3.0.14
DOWNLOAD_URL=https://github.com/coreos/etcd/releases/download
curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
mkdir -p /tmp/test-etcd && tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/test-etcd --strip-components=1
/tmp/test-etcd/etcd --version
하지만 etcd --version 명령을 실행하면 권한 거부 오류가 발생합니다.
root@s1:/tmp/test-etcd# ./etcd --version
-bash: ./etcd: Permission denied
root@s1:/tmp/test-etcd# ls -l
total 37776
drwxrwxr-x 11 1000 1000 4096 Nov 4 20:52 Documentation
-rw-rw-r-- 1 1000 1000 29472 Nov 4 20:52 README-etcdctl.md
-rw-rw-r-- 1 1000 1000 5628 Nov 4 20:52 README.md
-rw-rw-r-- 1 1000 1000 7935 Nov 4 20:52 READMEv2-etcdctl.md
-rwxrwxr-x 1 1000 1000 20181952 Nov 4 20:52 etcd
-rwxrwxr-x 1 1000 1000 18444064 Nov 4 20:52 etcdctl
root@s1:/tmp/test-etcd# file etcd
etcd: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, stripped
동일한 운영 체제와 매우 유사한 하드웨어를 사용하는 다른 두 대의 컴퓨터에서도 동일한 프로세스가 작동합니다.
bash는 다른 시스템과 달리 '탭'을 통해 이름을 자동 완성하지 않기 때문에 실행 파일로 인식하지 못하는 것을 알 수 있지만 실제로 문제가 무엇인지는 알 수 없습니다.
어떤 제안이 있으십니까? 나는 뿌리를 뽑으려고 노력합니다. noexec를 사용하여 파일 시스템이 마운트되었는지 확인해 보았습니다.
해결 방법: 분명히 mount 출력을 무시했고 /tmp 유형 ext4에서 /dev/mapper/vg00-tmp (rw,nosuid,nodev,noexec,relatime,data=ordered) 줄을 볼 수 없었습니다.
실행 파일을 다른 디렉터리로 이동하면 문제가 해결되었습니다.
답변1
해결 방법: 분명히 mount 출력을 무시하고 해당 줄을 보지 못했습니다.
/dev/mapper/vg00-tmp on /tmp type ext4 (rw,nosuid,nodev,noexec,relatime,data=ordered)
실행 파일을 다른 디렉터리로 이동하면 문제가 해결되었습니다.