코딩마을방범대

ubuntu에서 사용자에게 특정 포트 제한하기 - (1) 유저 관리 본문

💡 백엔드/우분투

ubuntu에서 사용자에게 특정 포트 제한하기 - (1) 유저 관리

신짱구 5세 2024. 1. 11. 16:12

 

 

특정 사용자에 대해 포트를 제한해야 할 일이 생겼다.

이를 위해 유저를 추가하는 절차가 필요하다!

이번 포스팅엔 유저를 관리하는 방법을 다루고, 다음 포스팅엔 포트를 제한하는 방법을 다룰 것이다!

 

 

 

기존 유저 확인

cat /etc/passwd

 

 

위 명령어 입력 시 아래와 같이 복잡한 형식으로 여러개가 나열된다.

여기서 찾는 방법도 있지만, 직접 추가하지 않은 시스템 사용자 부분까지 나열되기 때문에 직접 추가한 유저를 찾기는 어렵다.

 

username:x:UID:GID:full name:home directory:default shell

 

 

시스템 사용자를 제외한 일반 유저만 확인하고 싶은 경우 아래 명령어를 사용하면 된다.

아래 명령어 실행 시 일반 사용자들 이름만 확인 가능하다.

 

awk -F: '$3 >= 1000 {print $1}' /etc/passwd
nobody
dbkim
user01
일반적으로 시스템 그룹의 GID(그룹 ID)는 일정 범위 내에 있다.
리눅스 시스템에서 시스템 그룹의 GID는 1000 미만이므로 이를 이용해서 해당 내용만 출력하는 것이다.

awk -F: awk는 텍스트를 처리하는 데 사용되며, -F: 옵션은 필드 구분자를 콜론(:)으로 설정한다.
{if ($3 >= 1000) print $1} 세 번째 필드(즉, GID)가 1000 이상인 경우에만 첫 번째 필드(username)를 출력한다.

 

 

 

 


 

 

 

 

 

 

그룹 추가

 

1. 그룹 확인하기

서버에 등록된 사용자 그룹 리스트를 확인할 수 있다.

getent group
getent group | grep [텍스트]
위와 같이 사용 시 [텍스트]가 포함되는 그룹 리스트만 확인할 수 있다.

 

 

위 명령어 실행 시 유저 확인과 동일하게 복잡한 형식으로 나열된다.

이것도 동일하게 GID를 이용해 시스템 사용자 그룹 외에 일반 사용자 그룹만 확인이 가능하다.

 

groupname:x:GID:

 

 

 

아래 명령어를 사용하면 일반 사용자 그룹만 확인이 가능하다.

 

awk -F: '{if ($3 >= 1000) print $1}' /etc/group
일반적으로 시스템 그룹의 GID(그룹 ID)는 일정 범위 내에 있다.
리눅스 시스템에서 시스템 그룹의 GID는 1000 미만이므로 이를 이용해서 해당 내용만 출력하는 것이다.

awk -F: awk는 텍스트를 처리하는 데 사용되며, -F: 옵션은 필드 구분자를 콜론(:)으로 설정한다.
{if ($3 >= 1000) print $1} 세 번째 필드(즉, GID)가 1000 이상인 경우에만 첫 번째 필드(groupname)를 출력한다.

 

 


 

 

2. 그룹 추가하기

새로운 그룹을 추가할 수 있다.

sudo groupadd [그룹명]
그룹 삭제는 아래 명령어를 사용하면 된다.
sudo groupdel [그룹명]​

 


 

 

3. 사용자를 그룹에 추가하기

이미 생성된 사용자를 그룹에 추가할 수 있다.

sudo usermod -aG [그룹명] [사용자명]
-aG는 사용자를 속해 있는 그룹들을 유지하면서 새로운 그룹에 추가(부가 그룹 추가)
-g
는 사용자를 메인 그룹을 이동(부가 그룹 삭제)

그룹에서 사용자를 삭제하려면?
sudo gpasswd -d [사용자명] [그룹명]

 

 

 


 

 

4. 사용자가 속한 그룹 확인하기

사용자가 속한 그룹을 확인할 수 있다.

groups [사용자명]
그룹에 속한 사용자를 확인하는 방법은 아래 명령어를 이용하면 된다.
grep '그룹명' /etc/group​

 

 

 

 

 


 

 

 

 

 

 

유저 추가

 

1. 기본적인 설정을 포함한 유저 생성

 

기본적인 설정(비밀번호, full name 등) 을 수행하는 명령어로,

완료 후 /home/[사용자명] 에 홈디렉토리가 생성된다!

sudo adduser [사용자명] --ingroup [그룹명]

 

 

 


 

 

2. 설정 없이 유저만 생성

 

기본적인 설정없이 사용자만 생성하므로, 그룹도 지정할 수 없다.

이후 추가적인 명령어로 설정이 가능하다.

sudo useradd -g [그룹명] [사용자명]

 

 

홈 디렉토리 설정하기

자동으로 /home/[사용자명] 이 홈디렉토리로 설정된다.

만약 홈디렉토리를 수동으로 지정하고 싶다면, 아래에 설명되어 있다.

sudo useradd -m [사용자명]

 

 

패스워드 설정하기

sudo passwd [사용자명]

 

 

 

 


 

 

 

유저 삭제

sudo userdel -r [사용자명]
-r을 붙이지 않을 경우 사용자 홈과 디렉토리가 삭제되지 않는다

 

 

 


 

 

 

 

 

 

 

홈 디렉토리 설정하기

 

자동으로 설정되는 홈디렉토리를 사용해도 되지만, 임의로 폴더를 지정해주고 싶은 경우의 방법이다.

 

 

1. 유저를 생성과 동시에 홈디렉토리 설정

홈디렉토리가 이미 설정되어있다면 useradd: user '사용자명' already exists 이라는 문구가 출력되므로 2번 방법을 사용하면 된다.

sudo useradd -d [폴더위치] -m [사용자명]

 

 


 

 

2. 기존 사용자의 홈 디렉토리 설정

sudo usermod -d [폴더명] [사용자명]

 

 

 

 


 

 

3. 설정된 홈 디렉토리 확인 방법

텍스트에 검색할 유저명이나 디렉토리명을 넣어 확인이 가능하다.

cat /etc/passwd | grep [텍스트]

 

 

 

 

 

 

 


 

 

 

 

 

 

 

사용자에게 sudo 권한 부여하기

 

1. root 사용자로 접속

sudo su

 

 

2. visudo 실행

visudo

 

 

3. 파일 수정

[사용자명] ALL=(ALL:ALL) ALL

 

 

 

 

 

 

 


 

 

 

 

 

 

마지막으로 정상적으로 실행되는지 확인한다.

유저 변경을 위해 아래 명령어를 입력해 준 뒤

sudo su [사용자명]

 

 

아래 명령어 실행 시 현재 사용 중인 쉘 정보를 알 수 있다.

/bin/sh 로 출력될 경우 정상적인 명령어 입력이 어렵다!

 

echo $SHELL

 

 

따라서 /bin/bash 로 바꾸기 위해 아래 명령어를 실행해주면 된다.

첫 번째는 현재 로그인 중인 사용자의 쉘을 바꾸는 것이고, 두 번째는 sudo 권한을 통해 다른 사용자의 쉘을 바꾸는 것이다.

 

chsh -s /bin/bash

sudo chsh -s /bin/bash [사용자명]

 

 

 

SMALL