참고
리눅스 사용자 계정 관리
NOTE
리눅스는 사용자 계정이 있어야 접속이 가능하며, 각 계정은 권한을 부여받는데, 모든 것을 할 수 있는 관리자 권한의 계정을 root라고 한다!
root는 최초로 만들어져서 0번할당
•
리눅스에서는 사용자를 root(관리자)와 일반사용자로 구분한다.
•
각 계정은 흔히 사용되는 ID가 아니라 번호로 부여되는 UID(User Identity)로 관리한다.
UID(User ID) - 사용자 식별 번호
•
/etc/passwd에서 확인 가능
•
1~999 시스템을 제어하는 계정 → 로그인 되지 않도록 생성하는것이 원칙
•
1000~60000 까지 일반 계정
GID(Group ID) - 그룹 식별 번호
•
/etc/passwd와 /etc/group에서 확인 가능
•
리눅스는 그룹을 통해서 사용자를 묶을 수 있다.
계정 정보 한 눈에 보는 법
NOTE
linux는 자신이 갖고 있는 계정 정보를 텍스트 파일에 담아 관리한다.
기본적으로 계정의 목록은 /etc/passwd 파일에 저장되어 있다.
/etc/passwd 정보
•
root와 일반 사용자를 제외한 시스템 계정이 존재한다.
•
bin, daemon, adm, halt 등 여러가지가 존재하며 로그인이 불가능하다.
사용자 계정 명령어
id / who / whoami (계정 확인)
NOTE
계정에 대한 정보를 확인하는 명령어들이다!
id # 사용자 ID c
id ubuntu # 특정 사용자
who # 현재 로그인된 사용자
who -b # 마지막 부팅시간
whoami # 로그인한 사용자
last # 로그인 기록
uname -a # 커널정보 확인
Bash
복사
passwd, shadow, group, gshadow (사용자 구성과 관련된 파일)
NOTE
계정에 대한 정보를 확인하는 명령어들이다!
cat /etc/passwd # 사용자 계정 정보 (username:x:UID:GID:full_name:shell)
cat /etc/shells # 사용가능한 shell
cat /etc/shadow # 사용자의 보안 정보
cat /etc/group # 그룹 정보
cat /etc/gshadow # 그룹의 보안 정보
Bash
복사
useradd / adduser / userdel(사용자 추가/제거)
NOTE
사용자를 생성하는 명령어다!
# useradd(저수준, 세밀한설정), adduser(고수준, 자동처리)
adduser testuser1 # 자동으로 추가입력을 요구함
useradd testuser2 # s(쉘 제공), p(패스워드), m(홈 디렉토리 생성)
grep testuser /etc/passwd
useradd -s /bin/bash -m testuser3 # s(shell 지정), -m(홈 디렉토리 생성)
useradd -s/bin/opthershell --home-dir /home/otherdirectory testuser4
useradd --uid 1100 testuesr5 # uid 1100 지정
userdel john # 유저삭제
userdel --remove john # 홈, 스풀을 제거
ls -a /etc/skel # 새 사용자 계정을 생성할 때 사용자의 홈 디렉토리에 기본으로
# 복사될 파일들(예: 기본 쉘 설정 파일)을 포함하는 디렉토리입니다
Bash
복사
passwd, usermod (사용자 확인/수정(패스워드))
NOTE
passwd testuser # testuser 비밀번호 변경
grep testuser /etc/shadow # testuser 정보 확인
usermod testuser -d /home/newdir -m # d(홈디렉토리 생성), m(기존 홈 디렉토리 이동)
usermod --login changeuser testuser # 사용자 이름변경 john -> jane
usermod --shell /bin/othershell testuser # shell 변경
usermod testuser -g testgroup # test그룹으로 변경
usermod testuser -Ag testgroup # test그룹 추가
usermod --lock testuser # 계정잠금
usermod --unlock testuser # 계정잠금 해제
usermod --expiredate 2021-12-10 testuser
usermod --expiredate "" testuser # 만료기간 없음
Bash
복사
gpasswd, groupadd, groupdel, groupmod (그룹 확인/수정)
NOTE
gpasswd testgroup # 그룹 비밀번호 변경
gpasswd -a testuser testgroup # 유저에 그룹추가
gpasswd -d testuser testgroup # 유저에 그룹제거
groupadd testgroup # 그룹 생성
groupdel testgroup # 그룹 제거
group testuser # 유저 그룹확인
groupmod -n changetestgroup testgroup # 그룹이름 변경
groupdel -g 1100 testgroup # gid 변경
Bash
복사
su (Switch User, 계정 전환), sudo(Superuser Do, 관리자 권한), /etc/sudoers 파일구성
NOTE
su - # root 사용자 전환.
su - [유저 이름]
sudo [ 명령어 ] # 관리자 권한 실행
sudo -i # 해당 세션에 모든 명령어는 sudo로 실행된다.
sudo u 사용자명 # 특정 사용자로 쉘을 실행한다,.
vim /etc/sudoers . # vim으로 여는 방법
update-alternatives --config editor # 전용도구 (sudoers를 여는)
visudo
# user HOST=(RUN_AS_USER:RUN_AS_GROUP) COMMANDS
student1 ALL=(ALL:ALL) ALL # student1은 어디서든 sudo를 사용가능
Bash
복사
login(로그인)
NOTE
# login [option] [사용자명]
login test0124 # 0124 로그인
Bash
복사
chage(비밀번호 및 계정 만료설정)
NOTE
# chage [option] [username]
chage --lastday 0 jane # --lastday(변경날짜 지정)
chage --lastday -1 jane # 어제 수정함
chage --mindays 30 jane # 최소기한
chage --maxdays 30 jane # 최대기한
Bash
복사
limits.conf(사용자 리소스 제한)
NOTE
# 사용자 리소스 제한
# 특정 사용자의 CPU사용률을 제한한다.
sudo vim /etc/security/limits.conf # 리소스 제한파일
# <domain> <type> <item> <value>
trinity hard nproc 10
@developers soft nproc 20
Bash
복사
사용자 관리 실습
NOTE
시나리오
•
특정 사용자를 추가하고, 패스워드와 그룹, 권한을 설정해준다.
•
해당 유저에 대한 정보를 간단하게 수정하고, 현재 어떤 사용자가 있는지 모두 조회해라
•
사용자를 삭제해라
useradd testuser # 자동으로 그룹할당, 비밀번호 및 정보 설정한다.
cat /etc/passwd # 모든계정 확인
cat /etc/group # 모든그룹 확인
mkdir /home/test1/data/project -p
touch /home/test1/data/project/test
su test1 # 계정변경
chomod 666 /home/test1/data/project/test # 파일권한 수정
vi /home/test1/data/project/test # test1 (수정가능), test2(수정가능)
chown test1:test1 /home/test1/data/project/test # 파일 소유자 변경
vi /home/test1/data/project/test # test1 (수정불가), test2(수정불가)
usermod -l 새로운이름 기존이름
usermod -d 새홈디렉토리 -m 사용자이름
usermod -s 새로운 쉘 사용자이름
usermod -g 새기본그룹 사용자이름
usermod -e YYYY-MM-DD 사용자 이름
userdel test1 # test1 소유의 파일은 UID로 남는다.
sudo vim /etc/profile.d/lastlogin.sh # 계정 접속마다 실행
echo "Your last login was at : " > $HOME/lastlogin
date >> $HOME/lastlogin
cat lastlogin # 로그인 내역남음
sudo vim /etc/skel/README # 안내사항
Bash
복사