-
Notifications
You must be signed in to change notification settings - Fork 2
Sudo가 계속 비밀번호를 요청함
Seungheon Han edited this page Nov 15, 2024
·
1 revision
- Ubuntu 서버에 root 계정으로 접속하는 것은 보안상 위험하기 때문에, 새로운 사용자 계정을 생성하여 sudo 그룹에 추가하고 사용하기로 결정했다.
- 수동으로 sudo 명령어를 입력하면 비밀번호를 한 번만 요구하지만, GitHub Actions의 자동화된 스크립트에서 SSH 접속 후 sudo 명령을 실행하면, 계속해서 비밀번호를 요구하는 문제가 발생했다.
- sudo 그룹에 사용자 추가만으로는 비밀번호 없이 sudo를 사용할 수 없다.
- sudo 그룹에 추가되면 사용자는 sudo 명령어를 실행할 수 있는 권한을 가지지만, 기본적으로 sudo 명령을 사용할 때 비밀번호 입력을 요구한다.
- 비밀번호 없이 sudo를 사용하려면 추가적인 설정이 필요하다.
-
/etc/sudoers 파일 편집
- sudo 명령어를 비밀번호 없이 사용하려면, /etc/sudoers 파일에서 특정 사용자나 그룹에 대해 NOPASSWD 옵션을 설정해야 한다.
- sudoers 파일을 직접 편집하는 대신, visudo 명령어를 사용하여 안전하게 편집할 수 있다.
visudo
-
NOPASSWD 설정 추가
- NOPASSWD 옵션을 사용하면 해당 사용자는 sudo 명령어 실행 시 비밀번호를 묻지 않는다.
- ubuntu 사용자에게 비밀번호 없이 sudo 명령어를 실행할 수 있도록 아래와 같이 sudoers 파일에 추가해야 한다.
# User privilege specification root ALL=(ALL:ALL) ALL ubuntu ALL=(ALL) NOPASSWD:ALL # 비밀번호 없이 sudo 허용 %admin ALL=(ALL) ALL %sudo ALL=(ALL:ALL) ALL @includedir /etc/sudoers.d
-
중간에 추가한 것이 문제가 된 이유
- sudoers 파일에서 NOPASSWD 설정은 가능한 한 마지막에 추가해야 한다.
- sudoers 파일은 순서가 중요하며, NOPASSWD 항목이 제대로 적용되지 않을 수 있다. 중간에 설정을 추가하면, 이전의 설정들이 영향을 미쳐 제대로 동작하지 않을 수 있다.
- sudoers 파일은 위에서부터 아래로 읽기 때문에, 특정 사용자나 그룹에 대한 권한을 마지막에 추가하여 sudo의 동작을 명확하게 지정하는 것이 중요하다.
# User privilege specification root ALL=(ALL:ALL) ALL %admin ALL=(ALL) ALL %sudo ALL=(ALL:ALL) ALL # Allow members of group sudo to execute any command @includedir /etc/sudoers.d ubuntu ALL=(ALL) NOPASSWD:ALL # 마지막에 추가
- sudoers 파일에서 NOPASSWD 설정은 맨 마지막에 추가해야 비밀번호 요청 없이 sudo 명령어를 정상적으로 실행할 수 있다.
- 이를 통해 GitHub Actions에서 비밀번호를 요구하지 않고 sudo 명령어를 실행할 수 있게 됐다.
- sudoers 파일은 매우 민감하므로, 항상 순서를 신경 쓰며 편집해야 하며, sudo visudo 명령어로 직접 편집해야 오류를 방지할 수 있다.
- Mediasoup 포트 매핑 문제
- swagger 같은 응답 코드에 다양한 응답 보여주기
- Sudo가 계속 비밀번호를 요청함
- Docker 이미지가 너무 크다
- Git action에서 도커 이미지 빌드 시간을 단축시켜보자
- Docker compose를 이용해서 메모리 사용률을 줄여보자
- 방송 녹화 시 CPU 과부하 문제를 해결해보자
- Release 브랜치? 너 필요해?
- 로딩이 너무 짧아…!
- NestJS ORM으로 무엇을 사용해야 할까?
- WebRTC를 이용한 1:N 스트리밍 서비스에서 시그널링 서버가 필요할까?
- 실시간 채팅 구현: 인메모리 방식을 선택한 이유
- MySQL 아키텍처 개선: DB 의존성 분리와 서버 역할 명확화
- 브라우저 창이 최소화되면 비디오 송출이 안된다…!
- Mediasoup 기본 개념
- DLTS와 Signaling
- Tell, Don't Ask (TDA) 원칙이란
- VPC(Virtual Private Cloud) 학습 정리
- 순환참조: A 서비스 ‐ B 서비스 vs. A 서비스 ‐ B 레포지토리
- Dto 메서드 전략
- WebRTC란?
- 자바스크립트 패키지 매니저(npm, yarn, pnpm)
- shadcn/ui을 이용해 UI 개발 생산성 높이기
- React 이벤트 핸들러 네이밍(on vs handle)
- React-router-dom의 createBrowserRouter을 사용해보기
- fetch vs axios