CodeGym /행동 /Docker SELF /사용자 관리: 명령어 adduser, usermod, passwd

사용자 관리: 명령어 adduser, usermod, passwd

Docker SELF
레벨 2 , 레슨 1
사용 가능

사용자 관리: 명령어 adduser, usermod, passwd

1. 왜 사용자 관리를 이해하는 것이 중요할까?

오늘은 사용자 관리를 깊게 살펴볼 거야. 왜냐하면 이건 Linux 관리의 핵심 부분이거든. 사용자를 생성하고, 환경을 설정하고, 암호를 관리하는 건 작업에 있어 중요한 도구가 될 거야. 시작하자!

보통 Linux 서버에서는 여러 명의 사용자가 작업을 해. 시스템은 각 사용자에게 특정 권한을 제공해서 데이터를 보호하고 혼란을 피할 수 있도록 해줘. 새로운 사용자(예: 네 팀의 개발자)를 추가하거나 그들의 환경(예: shell)을 변경하고, 필요하면 접근 제한을 해야 하는 방법을 알아야 해.


2. adduser를 사용해서 사용자 생성하기

Linux는 adduser 명령어를 제공해. 이건 useradd 명령어의 좀 더 친화적인 버전인데, 새로운 사용자를 쉽고 빠르게 생성할 수 있어:

기본 문법

adduser 사용자_이름

사용자를 생성할 때 무슨 일이 일어날까?

  1. 사용자에 대한 새로운 기록이 /etc/passwd 파일에 생성돼.
  2. 홈 디렉토리가 생성돼 (예: /home/사용자_이름).
  3. 기본 설정값 (예: 기본 shell)이 설정돼.
  4. 비밀번호와 추가 정보를 입력하라는 요청을 받을 거야 (예: 이름, 전화번호 — 하지만 이 정보는 선택사항이야).

예제

dev_user라는 새로운 사용자를 만들어보자:

sudo adduser dev_user

이 명령어를 입력하면 다음을 요구할 거야:

  1. 사용자의 비밀번호를 설정해.
  2. 추가 정보를 입력하는데, 그냥 Enter를 눌러 건너뛸 수 있어.

확인

사용자가 생성됐는지 확인하려면, /etc/passwd 파일을 확인해봐:

cat /etc/passwd | grep dev_user

dev_user에 대한 정보를 포함하는 줄을 볼 수 있을 거야.


3. usermod을(를) 사용한 사용자 설정

사용자가 이미 생성된 경우, 해당 사용자의 매개변수를 변경해야 할 수 있어. 예를 들어 이름을 변경하거나, 다른 shell을 지정하거나, 그룹에 추가할 수도 있어.

사용자 이름 변경

먼저 사용자가 시스템에 로그인하지 않았는지 확인해. 그런 다음 아래 명령어를 실행해:

sudo usermod -l 새로운_이름 기존_이름

예시:

sudo usermod -l developer dev_user

이제 dev_user라는 사용자는 developer로 불리게 돼. 하지만 사용자의 홈 디렉토리는 여전히 이전 상태로 남아있을 거야.

기본 shell 변경

예를 들어, 사용자의 shell을 /bin/zsh로 변경해야 한다고 가정해. 이렇게 실행해봐:

sudo usermod --shell /bin/zsh developer

shell이 변경되었는지 확인하려면 다음 명령어를 사용해:

cat /etc/passwd | grep developer

홈 디렉토리 변경

새 사용자가 다른 홈 디렉토리에서 작업하도록 하려면 다음을 수행해야 해:

sudo usermod -d /새로운/경로 developer
중요:

디렉토리가 아직 존재하지 않는 경우, -m 옵션을 사용하여 디렉토리를 생성하고 기존 디렉토리 내용을 이동시킬 수 있어:

sudo usermod -d /home/new_developer -m developer

4. passwd로 비밀번호 관리하기

비밀번호 설정 및 변경

사용자의 비밀번호를 설정(또는 변경)하려면 다음 명령을 사용해:

sudo passwd 사용자_이름

예제:

sudo passwd developer

시스템이 새로운 비밀번호를 두 번 입력하라고 요청함. 이렇게 하면 틀리지 않도록 확인할 수 있어.

다음 로그인 시 비밀번호 변경 강제하기

사용자를 생성하고 첫 로그인에서 비밀번호를 스스로 설정하게 하고 싶을 때 유용할 수도 있어:

sudo passwd -e developer

이후 developer 사용자는 시스템에 로그인하면 비밀번호를 변경해야 한다는 메시지를 보게 될 거야.


5. 실습

과제 1: 새로운 사용자 생성

  1. 사용자 tester를 추가하자:

    sudo adduser tester
    
  2. 사용자가 생성되었는지 확인하자:

    cat /etc/passwd | grep tester
    

과제 2: 사용자 설정 변경

  1. 사용자 이름을 변경하자:

    sudo usermod -l test_user tester
    
  2. 사용자의 홈 디렉토리를 변경하자:

    sudo usermod -d /home/test_user -m test_user
    
  3. 변경 사항이 적용되었는지 확인하자:

    ls -l /home/
    
  4. 사용자의 shell을 변경하자:

    sudo usermod --shell /bin/zsh test_user
    
  5. 업데이트된 사용자 데이터를 확인하자:

    cat /etc/passwd | grep test_user
    

과제 3: 사용자 비밀번호 변경

  1. 사용자 비밀번호를 설정하자:

    sudo passwd test_user
    
  2. 다음 로그인 시 사용자가 비밀번호를 변경하도록 강제하자:

    sudo passwd -e test_user
    

6. Linux에서 파이프 | 사용하기

파이프 |는 Unix/Linux에서 한 명령어의 출력(stdout)을 다른 명령어의 입력(stdin)으로 전달할 수 있게 해주는 메커니즘이야. 데이터를 처리하는 "파이프라인"을 구성할 수 있어서 정말 강력한 도구라고 할 수 있어.

어떻게 작동하냐고?

명령어들 사이에 파이프를 사용하면, Linux는 첫 번째 명령어의 표준 출력을 다음 명령어의 표준 입력으로 보내. 이렇게 하면 임시 파일 없이도 대량의 데이터를 효율적으로 처리할 수 있어.

구문:

명령어1 | 명령어2 | 명령어3
  • 명령어1은 데이터를 생성해.
  • 명령어2는 생성된 데이터를 처리해.
  • 명령어3는 추가로 처리하거나 결과를 저장해.

예제:

파일 목록 출력하고 특정 패턴으로 필터링하기:

ls -l | grep ".txt"

여기서 ls -l은 파일 목록을 출력하고, grep은 확장자가 .txt인 파일만 필터링해.

특정 단어가 포함된 줄 세기:

cat file.txt | grep "Linux" | wc -l

파일 내용을 순차적으로 출력하고, "Linux"라는 단어가 포함된 줄을 찾은 뒤 그 개수를 셈.

파이프의 장점:

  • 복잡한 작업을 단순화.
  • 임시 파일 사용 최소화.
  • Linux의 강력한 유틸리티와 결합해 작업 자동화 가능.

7. Linux에서 grep 알아보기

grep (Global Regular Expression Print) — Unix/Linux에서 특정 패턴에 맞는 줄을 파일에서 검색할 수 있는 커맨드라인 유틸리티야. 정규 표현식을 지원하고 유연한 설정이 가능해서 데이터 필터링과 검색에 자주 사용돼.

grep은 어떻게 작동할까?

  • grep은 텍스트 파일(혹은 표준 입력)을 입력으로 받아, 지정된 패턴에 맞는 줄을 검색해서 출력해.
  • 패턴을 찾지 못하면 명령어는 아무것도 출력하지 않아.

예제

파일 목록을 출력하고 패턴으로 필터링하기:

ls -l | grep ".txt"
  1. 먼저 ls -l 명령어가 실행되며, 현재 디렉토리의 파일 목록을 출력해.
  2. 첫 번째 명령어 ls의 출력은 파이프 |를 사용해 두 번째 명령어 grep의 입력으로 전달돼.
  3. 두 번째 명령어가 전달받은 줄을 필터링해서 ".txt"를 포함하는 줄만 출력해.

특정 단어를 포함한 줄의 개수 세기:

cat file.txt | grep "Linux" | wc -l
  1. 먼저 cat file.txt 명령어가 실행되며 file.txt 파일의 내용을 화면에 출력해.
  2. 첫 번째 명령어 cat의 출력은 파이프 |를 사용해 두 번째 명령어 grep의 입력으로 전달돼.
  3. 두 번째 명령어가 전달받은 줄을 필터링해서 "Linux"를 포함하는 줄만 출력해.
  4. 그 다음 두 번째 명령어 grep의 출력은 파이프 |를 사용해 세 번째 명령어 wc의 입력으로 전달돼.
  5. 세 번째 명령어는 전달받은 줄의 개수를 세고 그 값을 출력해.

8. 일반적인 실수와 주의사항

  1. 사용자 이름 변경 시 "user is currently logged in" 오류. 사용자가 시스템에 로그인한 상태라면 이름을 변경할 수 없어. 사용자가 로그아웃했는지 확인해야 해.

  2. 홈 디렉토리 변경 시 발생하는 오류. -m 옵션을 쓰는 걸 잊으면, 이전 디렉토리의 내용이 새 디렉토리로 이동되지 않아. 사용자가 자신의 데이터를 잃을 수도 있어.

  3. 사용자 비밀번호 설정을 잊음. adduser로 사용자를 생성한 후 반드시 비밀번호가 설정되었는지 확인해. 비밀번호 없이는 로그인할 수 없어.

  4. UIDGID 값. 가끔 관리자가 사용자 생성 시 UID(사용자 ID)와 GID(그룹 ID) 값을 지정하고 싶을 때가 있어. 이 경우 useradd 명령어를 사용해야 하는데, 이는 Linux 심화 학습 주제야.


9. 실질적인 활용

상상해봐: 너는 회사 서버의 관리자야. 개발자들이 너에게 와서 각자 시스템에 개별 설정으로 접근 권한을 요청하고 있어. 너는 이렇게 할 수 있어:

  • 사용자를 생성하고 필요한 접근 권한을 부여한다.
  • 그들의 선호도에 따라 환경(shell 같은 걸) 설정한다.
  • 비밀번호를 관리하고 보안을 확인한다.

이러한 명령어들은 DevOps나 시스템 관리자 면접에서도 유용하게 쓰여. 면접관이 너에게 사용자 생성 및 설정 방법을 물어보거나, 그것을 직접 해보라고 요청할 수도 있어.


핵심 명령어: 요약

명령어 설명
sudo adduser 사용자_이름 새로운 사용자를 생성한다.
sudo usermod -l 새_이름 기존_이름 사용자 이름을 변경한다.
sudo usermod --shell 경로 이름 기본 shell을 설정한다.
sudo usermod -d 경로 이름 홈 디렉토리를 변경한다.
sudo passwd 이름 새 비밀번호를 설정한다.
sudo passwd -e 이름 다음 로그인 시 비밀번호 변경을 강제한다.

실습해봐! Linux는 항상 손으로 작업하는 것이 기본이야. 명령어로 더 많이 실험할수록 실제 시스템 작업이 더 쉬워질 거야.

코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION