고전적인 사용자 관리 명령어 : 홈디렉토리 수동생성
useradd - 사용자 추가
usermod - 사용자 변경
userdel - 사용자 삭제
dragon 사용자 추가하기
$useradd dragon
dragon 사용자 추가
$cat /etc/passwd 또는 tail -n2 /etc/passwd
>> dragon:x:1001:1001::/home/dragon
사용자아이디:x:사용자식별자:그룹식별자::기본홈디렉토리
$sudo passwd dragon
패스워드 지정
$sudo mkdir /home/dragon
홈디렉토리 만들어주기 (안만들면 로그인 했을 때 홈디렉토리가 없어 프롬프트 기본설정이 사라진다)
Permission dinied 라고 뜨면 sudo 관리자 권한으로 명령하면 된다
기타) 그룹 보기
cat /etc/group
그룹 목록을 볼 수 있다
groups dragon
dragon이 포함된 group 목록을 볼 수 있다
$sudo mkdir /home/dragon
홈 디렉토리를 생성 후 ls -l 을 해보면
>> drwxr-xr-x 3 root root bytes date dragon
sudo로 만들었기 때문에 관리자 계정 root가 소유자로 나온다
소유권을 변경해야 파일 등을 생성할 수 있다
소유권 변경하기
~$sudo chown dragon ../dragon superuser do change owner dragon /home/dragon
~$ls -l ../
>> drwxr-xr-x 3 dragon root bytes date dragon
소유자, 소유자 그룹 한꺼번에 변경하기
~$sudo chown dragon:dragon ../dragon superuser do change owner dragon:dragon /home/dragon
~$ls -l ../
>> drwxr-xr-x 3 dragon dragon bytes date dragon
홈 디렉토리에 dragon 계정으로 파일이 잘 만들어지는지 확인
nano adduser 편집기로 adduser 파일 만들고 편집 실행
useradd testuser
tail -n2 /etc/passwd
mkdir /home/testuser
chown testuser:testuser /home/testuser
echo "testuser user added"
명령어로 하나하나 쳤던 것을 전부 작성해준다
저장하고 편집기 종료
이제 실행 할 수 있도록 권한 변경을 해줘야한다
현재 파일 상태 ( ls -l )
>> -rw-rw-r-- adduser
'[ugoa]*([-+=]([rwxXst]*|[ugo]))+|[-+=][0-7]+'
-rwxr-xr-x text.txt
(왼쪽부터 첫번째 - 제외 3비트씩 묶는다)
(현재 상태 111 101 101)
- 타입
rwx 소유권자의 권한
r-x 소유그룹의 권한
r-x Other 기타 다른 사람의 권한
r w x (권한은 3비트로 이루어져 있다)
1 0 0 Read
0 1 0 Write
0 0 1 eXecute
권한 변경 방법
$ chmod 644 test.txt 2진수를 10진수로 바꿔 설정한다 (110 100 100, -rw-r--r--)
$ chmod u=w test.txt user에 write만 설정
$ chmod u+s test.txt user execute bit에 특수권한 SetUID 설정
$ chmod u-s test.txt user execute bit에 특수권한 SetUID 삭제
$ chmod o -rwx test.txt other 유저에게 rwx 권한 삭제
$ chmod go+r test.txt group과 other 유저에게 read 권한 부여
$ chmod a+rwx test.txt 모든 유저에게 rwx 권한 부여
a = all, u = user, g = group, o = other, s = set?id (특수권한)
특수 권한에 대한 자세한 설명은 이분이 잘 설명해주심
https://wogh8732.tistory.com/74
참고로 현재 로그인한 계정의 uid, gid 등을 보려면 id 명령어를 쳐보면 된다
Unix 에서는 shell 자체 명령어에 adduser를 갖고있으므로 사용하려면 ./adduser 를 해줘야 한다
whereis adduser adduser 명령어가 존재하는 위치
which adduser 현재 사용자가 사용(리솔빙)하게 되는 adduser의 위치
환경변수는 시스템 환경변수가 아니라면 계정마다 다르다
ex)
sudo ./adduser
이제 매번 경로를 적는 것과 testuser로만 user를 생성할 수는 없으니
환경변수를 설정하고 스크립트 파일에 인자를 추가해줘야 한다
adduser를 사용자 환경변수가 지정된 home/계정/bin 폴더로 넣어주면 경로는 안적어줘도 된다
(home/계정/bin $PATH 우선순위가 가장 높기 때문에 다른 adduser는 실행되지 않는다)
(하지만 sudo를 쓰게 되면 관리자 권한이 되기 때문에 sbin 폴더의 미리 정의된 배치파일인 adduser가 실행된다)
mv ./adduser ~/bin
cd ~/bin; ls
인자를 넣을 수 있도록 파일을 변경
nano adduser
useradd $1
tail -n2 /etc/passwd
mkdir /home/$1
chown $1:$1 /home/$1
echo "$1 user added"
저장
sudo adduser bbb
이렇게 하게 되면 superuser의 adduser를 사용하게 되므로 (sudo which adduser)
sudo /home/계정/bin/adduser bbb
직접만든 adduser 파일의 경로를 명시화한다
제대로 추가되었는지 확인
ls /home
(# 는 superuser, root 권한을 뜻한다)
사용자 추가 옵션들
-c 사용자 설명 설정
-s 기본 쉘 설정
-r UID 설정(500 이하로)
-d 사용자 디렉토리 설정
-g 기본 그룹
-G 추가 그룹
# useradd -d /home/username -s /bin/bash username
# useradd -r number -c "..." -g groupname -G groupname
-d /home/username -s /bin/bash username
# useradd dragon
# passwd dragon
향상된 사용자 추가 명령어
# adduser dragon
# passwd dragon
사용자 제거하기
# userdel -r username
# deluser username