비밀번호 변경이 실패한 이유는 무엇입니까? chpasswd: 권한이 거부되었습니다

비밀번호 변경이 실패한 이유는 무엇입니까? chpasswd: 권한이 거부되었습니다

내 Dockerfile

FROM ubuntu:latest
RUN apt update
RUN apt install -y openssh-server sudo 
RUN useradd -ms /bin/bash -g root -G sudo -u 1000 remote_user
USER remote_user
WORKDIR /home/remote_user
RUN mkdir /home/remote_user/.ssh && chmod 700 /home/remote_user/.ssh
COPY remotecentos.pub /home/remote_user/.ssh/authorized_keys
RUN stat /etc/passwd
RUN  echo 'remote_user:*****2599*****' | chpasswd -c SHA256
RUN service ssh start
EXPOSE 22
CMD ["/usr/sbin/sshd","-D"]

오류가 발생했습니다.

Step 9/13 : RUN stat /etc/passwd
 ---> Running in 7147677000bd
  File: /etc/passwd
  Size: 1325        Blocks: 8          IO Block: 4096   regular file
Device: 37h/55d Inode: 22961332    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2022-10-06 12:45:10.000000000 +0000
Modify: 2022-10-06 12:45:10.000000000 +0000
Change: 2022-10-06 12:45:11.197943157 +0000
 Birth: 2022-10-06 12:45:11.197943157 +0000
Removing intermediate container 7147677000bd
 ---> 7b37835f7f2c
Step 10/13 : RUN  echo 'remote_user:******' | chpasswd -c SHA256
 ---> Running in faae63d7fd92
chpasswd: Permission denied.
chpasswd: cannot lock /etc/passwd; try again later.

컨테이너 내부의 권한을 수정하는 방법은 무엇입니까?

비밀번호 라인을 어떻게 변경해야 합니까?

답변1

Dockerfile은 호출하기 전에 현재 사용자를 remote_user사용자 로 변경합니다 chpasswd. 을(를 ) 사용하려면 chpasswd루트 권한이 있어야 합니다. RUN이 줄(및 수퍼유저 권한이 필요한 다른 명령)을 USER이 줄 앞으로 옮기고 싶을 수도 있습니다 . 또한 ssh비슷한 이유로 서비스 시작이 실패할 것으로 예상합니다 .

관련 정보