사용자 관리: 명령어 adduser
, usermod
, passwd
1. 왜 사용자 관리를 이해하는 것이 중요할까?
오늘은 사용자 관리를 깊게 살펴볼 거야. 왜냐하면 이건 Linux 관리의 핵심 부분이거든. 사용자를 생성하고, 환경을 설정하고, 암호를 관리하는 건 작업에 있어 중요한 도구가 될 거야. 시작하자!
보통 Linux 서버에서는 여러 명의 사용자가 작업을 해. 시스템은 각 사용자에게 특정 권한을 제공해서 데이터를 보호하고 혼란을 피할 수 있도록 해줘. 새로운 사용자(예: 네 팀의 개발자)를 추가하거나 그들의 환경(예: shell)을 변경하고, 필요하면 접근 제한을 해야 하는 방법을 알아야 해.
2. adduser
를 사용해서 사용자 생성하기
Linux는 adduser
명령어를 제공해. 이건 useradd
명령어의 좀 더 친화적인 버전인데, 새로운 사용자를 쉽고 빠르게 생성할 수 있어:
기본 문법
adduser 사용자_이름
사용자를 생성할 때 무슨 일이 일어날까?
- 사용자에 대한 새로운 기록이
/etc/passwd
파일에 생성돼. - 홈 디렉토리가 생성돼 (예:
/home/사용자_이름
). - 기본 설정값 (예: 기본 shell)이 설정돼.
- 비밀번호와 추가 정보를 입력하라는 요청을 받을 거야 (예: 이름, 전화번호 — 하지만 이 정보는 선택사항이야).
예제
dev_user
라는 새로운 사용자를 만들어보자:
sudo adduser dev_user
이 명령어를 입력하면 다음을 요구할 거야:
- 사용자의 비밀번호를 설정해.
- 추가 정보를 입력하는데, 그냥
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: 새로운 사용자 생성
사용자
tester
를 추가하자:sudo adduser tester
사용자가 생성되었는지 확인하자:
cat /etc/passwd | grep tester
과제 2: 사용자 설정 변경
사용자 이름을 변경하자:
sudo usermod -l test_user tester
사용자의 홈 디렉토리를 변경하자:
sudo usermod -d /home/test_user -m test_user
변경 사항이 적용되었는지 확인하자:
ls -l /home/
사용자의 shell을 변경하자:
sudo usermod --shell /bin/zsh test_user
업데이트된 사용자 데이터를 확인하자:
cat /etc/passwd | grep test_user
과제 3: 사용자 비밀번호 변경
사용자 비밀번호를 설정하자:
sudo passwd test_user
다음 로그인 시 사용자가 비밀번호를 변경하도록 강제하자:
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"
- 먼저
ls -l
명령어가 실행되며, 현재 디렉토리의 파일 목록을 출력해. - 첫 번째 명령어
ls
의 출력은 파이프|
를 사용해 두 번째 명령어grep
의 입력으로 전달돼. - 두 번째 명령어가 전달받은 줄을 필터링해서 ".txt"를 포함하는 줄만 출력해.
특정 단어를 포함한 줄의 개수 세기:
cat file.txt | grep "Linux" | wc -l
- 먼저
cat file.txt
명령어가 실행되며 file.txt 파일의 내용을 화면에 출력해. - 첫 번째 명령어
cat
의 출력은 파이프|
를 사용해 두 번째 명령어grep
의 입력으로 전달돼. - 두 번째 명령어가 전달받은 줄을 필터링해서 "Linux"를 포함하는 줄만 출력해.
- 그 다음 두 번째 명령어
grep
의 출력은 파이프|
를 사용해 세 번째 명령어wc
의 입력으로 전달돼. - 세 번째 명령어는 전달받은 줄의 개수를 세고 그 값을 출력해.
8. 일반적인 실수와 주의사항
사용자 이름 변경 시 "user is currently logged in" 오류. 사용자가 시스템에 로그인한 상태라면 이름을 변경할 수 없어. 사용자가 로그아웃했는지 확인해야 해.
홈 디렉토리 변경 시 발생하는 오류.
-m
옵션을 쓰는 걸 잊으면, 이전 디렉토리의 내용이 새 디렉토리로 이동되지 않아. 사용자가 자신의 데이터를 잃을 수도 있어.사용자 비밀번호 설정을 잊음.
adduser
로 사용자를 생성한 후 반드시 비밀번호가 설정되었는지 확인해. 비밀번호 없이는 로그인할 수 없어.UID
와GID
값. 가끔 관리자가 사용자 생성 시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는 항상 손으로 작업하는 것이 기본이야. 명령어로 더 많이 실험할수록 실제 시스템 작업이 더 쉬워질 거야.
GO TO FULL VERSION