현재 사용자에게 도커 접근 권한 주기
1. 현재 사용자 Docker 그룹에 추가하기
현재 사용자를 Docker 그룹에 추가하여 Docker 소켓에 액세스할 수 있는 권한을 부여한다. 이렇게 하면 sudo를 사용하지 않고도 Docker 명령을 실행할 수 있다.
sudo usermod -aG docker $USER
이 명령어는 현재 로그인한 사용자를 docker 그룹에 추가한다.
- $USER는 현재 로그인한 사용자를 가리킨다.
- docker 그룹은 Docker 명령어를 실행할 수 있는 권한을 가지고 있다.
사용된 옵션 의미 보기
- sudo : 리눅스나 맥 OS에서 관리자 권한으로 실행할 때 사용하는 명령어
- usermod : 사용자 계정을 수정하는 명령어
- -aG docker : 사용자를 "docker" 그룹에 추가하는 옵션
- $USER : 현재 로그인한 사용자 이름
따라서, 위의 명령어는
- “ 현재 로그인한 사용자 ($USER)" 를 Docker 그룹에 추가하여,
- 일반 사용자 권한으로도 Docker 명령어를 실행할 수 있도록 한다.
이렇게 함으로써, Docker 명령어를 실행하기 위해 항상 root 계정으로 로그인하지 않아도 되므로, 보안 상의 이점이 있다.
2. Docker 그룹의 변경 사항을 반영하기
현재 사용자(ubuntu)를 로그아웃한 다음 다시 로그인하거나, 새로운 터미널 세션을 시작하면 변경 사항이 적용된다.
즉, 현재 사용자(ubuntu)로 로그인된 상태에서 sudo를 사용하지 않고도 Docker 명령을 실행할 수 있게 된다.
특정 사용자를 Docker 그룹에 추가하기
사용자 ubuntu 가 현재 로그인되어 있지만, sudo 없이도 특정 작업을 수행하려면 사용자 ubuntu 를 Docker 그룹에 추가하여 Docker 명령을 실행할 수 있도록 권한을 부여할 수 있다.
이렇게 하면 sudo 를 사용하지 않고도 Docker 명령을 실행할 수 있다.
1. 특정 사용자 Docker 그룹에 추가하기
sudo usermod -aG docker 특정사용자이름
실습
ubuntu@ip-000-000-000-000:~$ sudo usermod -aG docker bu
usermod: user 'bu' does not exist
💥 에러 발생 💥
'bu' 사용자가 존재하지 않는다는 메시지가 나타났다.
user 'bu' does not exist
이는 사용자를 잘못 입력했거나 해당 사용자가 시스템에 존재하지 않는 경우 발생할 수 있다.
사용자를 Docker 그룹에 추가하려면 실제로 존재하는 사용자를 대상으로 명령을 실행해야 한다.
💥 의문 발생 💥
2. 현재 사용자 이름 확인하기
sudo whoami
실습
ubuntu@ip-000-000-000-000:~$ sudo whoami
root
💥 의문 해결 💥
❗여기에서 로그인된 사용자는 ubuntu인데 실제 사용자가 root로 나타나는 이유는?
사용자 ubuntu 는 현재 시스템에서 로그인된 사용자이다.
sudo 명령어는 일시적으로 root 권한을 얻어 특정 명령어를 실행할 수 있도록 하는 도구이다.
사용자 ubuntu 는 일반 사용자이며, 시스템 관리 작업과 같은 특정 작업을 수행하기 위해서는 일반적으로 root 권한이 필요하다.
따라서, sudo whoami를 실행하면 현재 사용자인 ubuntu 가 sudo 를 통해 일시적으로 root 권한을 얻어서 whoami 명령어를 실행한 것이다.
💥 에러 해결 💥
3. 현재 로그인한 실제 사용자의 정보 확인하기
실제 사용자 이름을 확인하려면 다음 명령을 사용하여 현재 로그인한 사용자의 정보를 확인할 수 있습니다.
whoami
실습
ubuntu@ip-000-000-000-000:~$ whoami
ubuntu
4. 현재 사용자를 명시적으로 Docker 그룹에 추가하기
현재 로그인한 실제 사용자 이름은 ubuntu이다.
ubuntu를 명시적으로 Docker 그룹에 추가하여 Docker를 사용할 수 있다.
sudo usermod -aG docker ubuntu
실습
ubuntu@ip-000-000-000-000:~$ sudo usermod -aG docker ubuntu
5. Docker 그룹의 변경 사항을 반영하기
현재 사용자(ubuntu)를 로그아웃한 다음 다시 로그인하거나, 새로운 터미널 세션을 시작하면 변경 사항이 적용된다.
즉, 현재 사용자(ubuntu)로 로그인된 상태에서 sudo를 사용하지 않고도 Docker 명령을 실행할 수 있게 된다.
ubuntu@ip-000-000-000-000:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
💥 의문 발생 💥
새로운 사용자를 생성하는 것과 현재 사용자인 ubuntu를 그대로 사용하여 Docker 접근 권한을 부여하는 것 간의 차이는?
새로운 사용자를 생성하고 해당 사용자를 Docker 그룹에 추가하여 Docker를 사용할 수 있도록 권한을 부여하는 것과
현재 사용자인 ubuntu를 Docker 그룹에 추가하는 것 간의 차이는 크게 없다.
두 경우 모두 Docker를 사용할 수 있는 사용자를 생성하고 권한을 부여하는 것이며, 이를 통해 보다 세분화된 사용자 관리 및 보안을 구현할 수 있다.
해당 사용자를 Docker 그룹에서 제거하기
사용자를 Docker 그룹에서 제거하려면 gpasswd 명령을 사용할 수 있다.
sudo gpasswd -d ${USER} docker
그러나 주의해야 할 점은,
Docker 그룹에서 사용자를 제거하더라도 해당 사용자가 이미 Docker 컨테이너를 실행하고 있는 경우에는 여전히 해당 컨테이너에 대한 접근이 허용될 수 있다.
따라서, Docker 그룹에서 사용자를 제거한 후에는 사용자가 이미 실행 중인 Docker 작업을 모니터링하고 관리해야 한다.
실습
ubuntu@ip-000-000-000-000:~$ sudo gpasswd -d ubuntu docker
현재 사용자 ubuntu를 Docker 그룹에서 제거할 수 있다.
'내맘대로 개발 일기 > 뽀모로 Do!' 카테고리의 다른 글
[인프라 구축] MySQL 새로운 계정 만들기 (0) | 2024.06.07 |
---|---|
[인프라 구축] Docker로 MySQL 데이터베이스 구축하기 (1) | 2024.06.07 |
[인프라 구축] Lightsail 인스턴스에 SSH로 액세스 (0) | 2024.06.05 |
[인프라 구축] Amazon Lightsail, Networking 설정 (0) | 2024.06.05 |
[인프라 구축] Amazon Lightsail 인스턴스 생성하기 (0) | 2024.06.04 |