내맘대로 개발 일기/뽀모로 Do!

[인프라 구축] 현재 사용자에게 Docker 접근 권한 부여하기

bu119 2024. 6. 5. 23:00
728x90
반응형

 

현재 사용자에게 도커 접근 권한 주기

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 그룹에서 제거할 수 있다.

728x90
반응형