본문 바로가기

별걸다하는 IT/리눅스 유닉스

[리눅스/유닉스] 사용자관리 usermod 명령어, 사용자 아이디 변경, 임시 계정 발급, usermod 옵션, 사용 예시

반응형

[리눅스/유닉스 LINUX/UNIX 포스팅 링크 모음 바로가기]

 

안녕하세요~! 오늘도 제 블로그를 방문해주시는 분들 반갑습니다.

오늘은 오랜만에 리눅스유닉스 카테고리 글을 작성해보려고 하는데요, 오늘은 관리자 역할 사용자계정을 관리하는 usermod에 대해 알아보도록 할거예요.

 

이번에는 이미 생성된 사용자들을 변경하는 시간입니다. 사용자 추가(useradd)에 대한 내용이 궁금하면 아래 포스팅을 참조해주세요!

 

[리눅스 / 유닉스]사용자 관리(사용자 추가 useradd, passwd파일, 시스템계정 )

리눅스 완전 정복 : 리눅스 목차 오늘도 제 블로그를 클릭해주시고 방문해주신 방문자님들 반갑습니다. 오늘은 관리자 역할 중 빼놓을 수 없는 사용자관리에 대해서 알아보는 시간을 가질거예요~! 사용자 계정 추..

jhnyang.tistory.com

USERMOD 사용 상황 알아보기 

내가 관리자라고 했을 때 신입사원이 올 때마다 계정을 하나씩 만든다고 생각합시다. 

입사하면 아마 신입사원이 계정신청서를 결제를 올릴거고, 그럼 그 아이디로 서버에 접속할 수 있도록 계정을 생성해줘야겠죠. 근데 내가 실수를 했던, 작성된 요청서에 실수가 있었던, 잘못된 계정을 생성했으면, 해당 계정 아이디를 변경해줘야 할 수도 있어요. [계정 아디이 변경]

 

또 잠깐 개발을 위해 외주를 고용해서 3개월동안만 외주가 온다고 합시다. 그러면 3개월만 사용할 수 있는 임시계정을 발급해줘야겠죠? 계정 만료일을 지정할 수도 있어요. [계정 만료일 지정]

 

이 외에도 해당 명령어로 사용자의 셸, 홈, 디렉터리, 그룹, UID, GID 등을 사용자 관련하여 대부분의 정보를 변경할 수 있습니다.

 

mod는 modify 변경하다의 약자라고 생각하면 명령어의 사용새를 쉽게 파악할 수 있어요.

"user - modify 유저를 변경하다"

USERMOD 사용 문법 / 기본 사용법 

# usermod [option] 사용자계정 

사용자 계정에 관련된 다양한 정보들을 변경하는 명령어

 

[사용하기전 요구사항]

사진출처:https://www.tecmint.com/usermod-command-examples/

usermod는 당연히 관리자만 사용할 수 있습니다 root계정이요!

그리고 usermod 사용자 변경을 하려면 이미사용자가 존재해야겠죠? 그래서 adduser 명령어도 같이 알고 있어야 한다느거~

usermod는 어느 리눅스 배포판에서든 다 실행 가능합니다. 그리고 usermod를 잘 사용하기 위해서는 옵션에 대한 기본 지식이 있어야해요.

 

[사용자 아이디 변경할 때]

login의 약자인 -l 옵션을 사용하면 로그인아이디 변경을 의미합니다. 

 

usermod -l <새로운계정> <기존계정> 

usermod -l jhnyang jhyang

사용자들이 누구누구 있는지 관리파일을 확인하고 싶으면 /etc/passwd 파일을 확인해보면 돼요.

먼저 jhyang라는 기존계정이 존재하는지 확인을 위해 passwd파일에서 'jhyang'를 키워드로 행이 존재하는지 끄집어볼게요.

3번째 라인 보면, jhyang사용자가 있는걸 잘 확인이 되었어요.

그 다음 usermod를 이용해서 jhyang라는 계정명을 jhnyang로 변경해봅시다.

(5라인) 만약 jhyang계정이 로그인되어서 사용중이거나 그럴 경우 'user jhynag is currently userd by process 2160'이란 명령어가 뜹니다. 로그아웃 되어있는거 다 확인하고 진행시켜줍시다.

 

jhyang가 jhnyang로 변경되었으면 grep jhyang 했을 경우 해당 키워드가 존재하는 행이 뽑이지 않아야 할 것 같은데 뽑혔어요. 

여길 보면 사용자계정은 jhyang -> jhnyang로 잘 변경된 것을 확인할 수 있습니다. (첫번째 필드)

그런데 홈디렉터리 필드의 경우 /home/jhyang로 동일한 것을 볼 수 있습니다. 여기서 확인할 수 있는 결론! -l 옵션은 계정만 변경해줄 뿐, 그에 관련된 홈 디렉터리를 같이 이관한다던가 하는 일은 수행해주지 않습니다.

사용자 ID 변경 시 유의해야 할 점 

위의 예시로 알 수 있는게 무엇일까요?

사용자 ID 변경할 경우에는 사용자의 홈 디렉터리도 같이 고려되어야 합니다. 보통 username의 홈 디렉터리는 /home/username 으로 지정되어 있어요. 만약 아이디를 변경한다면 관리자가 홈 디렉터리도 알아서 /home/id2 로 변경해줘야 하죠. 따라서 -l 옵션만 사용할 게 아니라 추가적으로 -d, -m 옵션도 같이 사용해줘야 합니다. 이런 부가적인 요소들을 위해 여러 옵션들이 존재하는데 어떤 옵션이 있고 어떻게 사용하는지에 대해서 밑에서 알아보도록 합시다~!

usermod -l jhnyang -d /home/jhnyang -m jhyang

USERMOD 옵션 및 사용 예시 

옵션들의 리스트들을 쭉 대강 읽고, 각각의 사용법은 예시를 통해 확인해봅시다.

OPTIONS [주요 옵션]

리눅스 man usermod
유닉스 man usermod

옵션 의미
-d (--home)

사용자의 홈 디렉터리를 변경한다. 변경할 디렉터리는 미리 생성되어야 한다. -m과 같이 사용하면 사용하던 홈 디렉터리 파일과 디렉터리도 같이 옮겨준다.

The user's new login directory.  (AIX UNIX, LINUX 공통)

-m

사용자의 홈 디렉터리 변경 시 기존에 사용하던 파일 및 디렉터리를 옮겨주는 옵션으로 -d와 함께 쓰인다. 

Movews the contents of the user's current home directory to the neww home directory. Only used with the -d flag (AIX UNIX, LINUX 공통)

-g  사용자의 그룹을 변경한다.  (AIX UNIX, LINUX 공통)
-s 사용자의 셸을 변경한다.  (AIX UNIX, LINUX 공통)
-u 사용자의 UID 값을 변경한다.  (AIX UNIX, LINUX 공통)
-e 계정만기일을 변경한다. YYYY-MM-DD 또는 MM/DD/YY 형태로 지정한다. (AIX UNIX, LINUX 공통)
-f 패스워드 만기일이 지난 후 패스워드에 Lock을 설정할 유예기간을 지정한다.
-c

사용자의 간단한 정보를 입력하거나 변경한다.  (AIX UNIX, LINUX 공통)

The new value of the user's password file comment field. It is normally modified using the chfn(1) utility.

-G 추가로 다른 그룹에 속하게 할 때 쓰인다.  (AIX UNIX, LINUX 공통)
-a (--append)

-G옵션과 같이 사용하는 옵션으로 기존의 2차 그룹 이외에 추가로 2차 그룹을 지정할 때 사용한다.

Add the user to the sumpplementary group(s). Use only with -G option.

-p /etc/shadow의 2번째 필드인 암호화된 패스워드 값을 변경할 때 쓴다. 이 옵션 사용할 때는 암호화된 값으로 값을 지정해야 한다.
-l 사용자 아이디를 변경한다 (--login)  (AIX UNIX, LINUX 공통)
-L 사용자의 패스워드에 LOCK을 걸어 로그인을 막는다. (--lock)
-U 사용자의 패스워드에 걸린 LOCK을 푼다. (--unlock)

 

사용 예시 examples

 

[사용자 계정 변경]

# usermod -l [변경후아이디] [변경전아이디] (명령어)

# usermod -l jhnyang jhyang  (명령어)

# grep [키워드] etc/passwd (확인 법) 

jhyang 아이디를 jhnyang로 변경합니다. 홈 디렉터리 관련 없이 계정만 변경!!

 

[홈 디렉터리 변경]

# usermod -d /develop/jhyang jhyang (명령어)

# grep jhyang /etc/passwd 또는 grep [키워드] etc/passwd (확인 법) 

jhyang의 홈 디렉터리를 /develop/jhyang로 변경한다. 

주의할 점은 디렉터리를 자동으로 생성해주지 않으니 해당 디렉터리가 있어야 합니다.

또 홈디렉터리의 위치가 변경되었지만 원래 있던 홈디렉터리 파일들이 삭제되거나 이동되는 것이 아니예요. 원래 있던 파일들은 모두 그대로 존재합니다. 

cf) 보통 /home/~이 사용자디렉터리이긴 하지만, 회사같은 경우에는 역할군에 따라서 홈디렉터리를 나누도록 하기도 하지요. jhyang 사용자가 개발자라서 /develop/jhyang로 홈디렉터리를 지정해줬어요 

 

[실습]

홈 디렉터리가 먼저 /home/jhyang로 되어 있는 것을 확인 후, usermod명령어로 /develop/jhyang로 변경했어요.

passwd파일에는 홈 디렉터리가 /develop/jhyang로 잘 변경은 되어 있는데 실제 해당 디렉터리로 가보려고 하면

'/develop: No such file or directory'라고 뜹니다. 디렉터리가 없다는거

또 jhyang로 로그인을 해주면 /develop/jhyang로 홈디렉터리를 변경해줬음에도 불구하고 

위 사진처럼 홈 디렉터리가 없다는 문구가 뜨고 홈디렉터리가 아닌 root 디렉터리로 로그인되었음을 알 수 있어요.

여기서 확인할 수 있는 내용은 -d옵션만으로는 사용자파일에 홈디렉터리 정보가 변경은 되지만 디렉터리까지 실제 생성되는 것은 아니라는거!

 

[홈 디렉터리 이동]

이렇게 -m옵션과 -d옵션을 함께 사용하면 파일을 옮겨올 수 있어요. 원래 server디렉토리와 client디렉터리는 /home/ubutu에 있던건데 이렇게 move옵션을 사용해주니까 /devhome/ubuntu에도 넘어왔네요!

 

[코멘트달기]

# usermod -c "IT department" jhyang (명령어)

# grep jhyang /etc/passwd 또는 grep [키워드] etc/passwd (확인 법)

-c 옵션으로 유저정보에 코멘트를 달 수 있어요.  passwd파일 5번째 필드가 user ID info인데 여기에 설정됩니다.

jhyang 계정에 "IT department"라는 코멘트를 달아줬어요.

 

[계정 유효기간 설정]

# usermod -e 2020-06-01 jhyang (명령어)

# chage -l jhyang (확인 법)

chage는 사용자 패스워드 관리에 사용되는 명령어인데, 패스워드 유효기간, 계정 유효기간 등을 확인할 수 있습니다.

[그룹 변경하기]

-g옵션으로 사용자 그룹을 변경해줄 수 있어요.

# usermod -g [변경후그룹] jhyang (명령어)

# id jhyang (확인 법)

id는 유저 정보를 알려주는 간단한 명령어입니다.

기존 그룹은 jhyang라는 그룹명에 1001이였는데, 그룹변경 옵션을 가진 usermod 명령어를 친 후에는 1002값을 갖는 develop 그룹으로 변경된 것을 확인할 수 있습니다.

 

[추가그룹]

# usermod -G IHD jhyang (명령어)

jhyang라는 사용자를 IHD라는 그룹에 추가로 속하게 합니다.

 

[사용자 셸 변경하기]

#usermod -s /bin/false jhyang (명령어)

jhyang 사용자의 셸을 /bin/false로 바꾸지만 실질적으로 존재하는 셀이 아니므로 일시적인 사용자 계정을 제한할 때 사용됩니다.

기출문제

[1902회 리눅스마스터 1급 1차 필기]

다음 중 joon이라는 아이디를 lin으로 변경하는 명령으로 알맞은 것은?

1. usermod -l joon lin

2. usermod -l lin joob

3. usermod -n joon lin

4. usermod -n lin joon

답: 2번 

 

[1901회 리눅스마스터 1급 2차 실기]

다음 조건에 맞게 사용자 정보를 변경하려고 할 때 (괄호) 안에 알맞은 내용을 적으시오.

# ( ① ) ( ② ) ( ③ ) ( ④ ) idhuser

■조건

- idhuser의 사용자명을 kaituser로 변경한다.

- 홈 디렉터리를 /home/idhuser 에서 /home/kaituser로 변경하고, 기존에 소유했던 파일이나 디렉터리도 그대로 이용 가능하도록 한다.

- ①번은 해당 명령어를 기재한다.

- ②~④번은 명령어의 옵션 또는 옵션과 관련된 인자 값을 기재한다.

답: 1. usermod 2. -l kaituser 3. -d /home/kaituser 4. -m

(2~4는 순서 무관, 1번 명령어를 틀렸을 경우 옵션 채점 제외) 

오늘은 여기까지입니다. 도움이 되셨다면 공감/댓글/광고보답은 어떤가요?! 정보공유 하는데 큰 힘이 됩니다! 그럼 다음 포스팅때 또 봐요 :) 

반응형