온라인 강좌를 수강 중인데 단계 중 하나는 인증서 서명 요청 또는 CSR 파일을 생성하여 자체 서명된 인증서를 생성하는 것입니다.
인증서를 생성해야 하는 명령은 다음과 같습니다.
sudo openssl req \
-out / root/certreq.csr \
-key /etc/ssl/private/priv.key \
-subj "/CN=server.lab" \
-reqexts SAN \
-config <(cat /etc/ssl/openssl.cnf <(printf "[SAN]\nsubjectAltName=DNS:server.lab")) \
-new
그러나 위 명령을 실행하는 동안 다음 오류가 발생합니다.
error on line -1 of /dev/fd/63
140520560354976:error:02001002:system library:fopen:No such file or directory:bs s _ file. c: 169: fopen( ' /dev/fd/63' , 'rb')
routinesI:B10 new file:no such file:bss file.c: 172:
140520560354976:error:OE078072:configuration file routines:DEF LOAD:no such file :conf def.c: 197:
오류 출력은 명령을 실행 중인 가상 머신에서 느슨하게 복사됩니다.
내가 여기서 뭘 잘못하고 있는 걸까?
답변1
sudo
0, 1, 2 이외의 파일 설명자를 명시적으로 닫습니다.
$ sudo ls -l /proc/self/fd 5< /dev/null
total 0
lrwx------ 1 root root 64 Dec 1 08:04 0 -> /dev/pts/7
lrwx------ 1 root root 64 Dec 1 08:04 1 -> /dev/pts/7
lrwx------ 1 root root 64 Dec 1 08:04 2 -> /dev/pts/7
lr-x------ 1 root root 64 Dec 1 08:04 3 -> /proc/5390/fd
따라서 여기에는 프로세스 교체로 생성된 파이프의 읽기 끝인 fd 63이 포함됩니다.
아니요 sudo
:
$ ls -l <(:) /proc/self/fd
lr-x------ 1 chazelas chazelas 64 Dec 1 08:07 /dev/fd/63 -> 'pipe:[146184]'
/proc/self/fd:
total 0
lrwx------ 1 chazelas chazelas 64 Dec 1 08:07 0 -> /dev/pts/7
lrwx------ 1 chazelas chazelas 64 Dec 1 08:07 1 -> /dev/pts/7
lrwx------ 1 chazelas chazelas 64 Dec 1 08:07 2 -> /dev/pts/7
lr-x------ 1 chazelas chazelas 64 Dec 1 08:07 3 -> /proc/7305/fd
lr-x------ 1 chazelas chazelas 64 Dec 1 08:07 63 -> 'pipe:[146184]'
그리고 sudo
:
$ sudo ls -l <(:) /proc/self/fd
ls: cannot access '/dev/fd/63': No such file or directory
/proc/self/fd:
total 0
lrwx------ 1 root root 64 Dec 1 08:07 0 -> /dev/pts/7
lrwx------ 1 root root 64 Dec 1 08:07 1 -> /dev/pts/7
lrwx------ 1 root root 64 Dec 1 08:07 2 -> /dev/pts/7
lr-x------ 1 root root 64 Dec 1 08:07 3 -> /proc/7929/fd
허용되는 경우 sudoers
( closefrom_override
기본값은 꺼짐) 옵션을 사용하여 비활성화할 수 sudo
있습니다 -C
.
$ sudo -C65536 ls -l <(:) /proc/self/fd
lr-x------ 1 root root 64 Dec 1 08:15 /dev/fd/63 -> 'pipe:[148888]'
/proc/self/fd:
total 0
lrwx------ 1 root root 64 Dec 1 08:15 0 -> /dev/pts/8
lrwx------ 1 root root 64 Dec 1 08:15 1 -> /dev/pts/8
lrwx------ 1 root root 64 Dec 1 08:15 2 -> /dev/pts/8
lr-x------ 1 root root 64 Dec 1 08:15 3 -> /proc/15147/fd
lr-x------ 1 root root 64 Dec 1 08:15 63 -> 'pipe:[148888]'
sudo
(여기서 나는 65536 이하의 fd를 닫지 말라고 말합니다 )
또는 사용하는 경우 파이프 대신 임시 파일을 사용하고 해당 경로를 전달하는 프로세스 대체 형식을 zsh
사용할 수 있습니다 .=(...)
/dev/fd/<its-fd>