상세 컨텐츠

본문 제목

[Linux] 사용자 계정 관리 part 1

개발/R.Pi3 + Linux

by 똘똘이박사 2016. 7. 29. 10:58

본문


· 최초작성 : 2016. 07. 27.

최종수정 : 2016. 07. 29.

· 작성/수정내용 :

  - 리눅스 사용자 계정 확인 방법, 사용자 계정 등록 시 옵션 정리




시작하기에 앞서


라즈베리파이를 들여온지도 벌써 한달이 넘었네요.

이제야 라즈베리파이를 활용한 리눅스 서버 공부 시작해 볼까 합니다.

내용이 실제 운영 환경과 많이 다를 수 있습니다.

실제 업무에서 어떻게 사용하는지 조언을 주시면 반영하도록 하겠습니다.

 테스트 설정

 - OS : 라즈비안(데비안계열)

 - 사용툴 : Putty




# 사용자 계정 관리에 대하여 - part 1


리눅스는 윈도우즈와 다르게 대부분 서버용으로 사용이 되고 있고

서버의 성능 향상을 위해 GUI 환경 보다는 일반적으로 TEXT 환경에서 작업을 하게 됩니다.


리눅스에 많은 종류가 있지만 대부분의 경우 명령어가 거의 동일하죠.


첫번째 포스팅으로 사용자 계정 관리에 대하여 정리해 볼까 합니다.

사용자 등록을 하기 앞서, 등록하려는 계정과 동일한 계정이 있는지 확인해 보고

사용자 계정 등록시 여러 옵션을 어떻게 활용하는지 확인해 볼까 합니다.



사용자 계정 확인


사용자를 등록 하기 전에 먼저 할일은 등록해야 할 계정이 이미 존재하는지 안하는지 확인하는 일이 겠지요.


사용자 계정 관리의 핵심 파일은 /etc/passwd 파일 입니다.

/etc/passwd 파일은 일반 편집기 파일로 열어 볼 수도 있고 편집도 가능합니다.

해당 파일을 vi 편집기로 보면 보통 이런 내용들 입니다.





몇 줄만 내용을 추려서 보면...



root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin

sync:x:4:65534:sync:/bin:/bin/sync


/etc/passwd 파일은 : 기준으로 데이터들을 구분하는데 이 것에 대해 살펴 보면


root : x : 0 : 0 : root : /root : /bin/bash

 1     2   3   4   5      6       7


이렇게 7개의 필드로 구분됩니다.

각각의 필드에 대한 설명은 아래와 같습니다.

1. 사용자 계정 ID

2. 패스워드

3. 사용자 UID

4. 그룹 GID

5. 계정정보(보통은 사용자 이름)

6. 홈 디렉토리

7. 쉘 환경


위의 정보는 사용자 계정 등록 시 등록 할 수 있지만 별도로 지정하거나 /etc/passwd 를 수정하여 설정할 수도 있습니다.

(비밀번호는 아니구요)


두번째 필드는 비밀번호 필드인데 몽땅 x로 되어 있습니다.

이것은 보안 유지를 위해 비밀번호 관리 부분은 별도로 처리한 부분인데요

비밀번호를 관리하는 파일은 /etc/shadow 파일 입니다.


이 파일은 특별한 일이 없는한 수정하지 않는게 좋을거 같네요.

그 이유는 조금 이따 설명을 드릴께요.



사용자 계정을 확인할때 /etc/passwd 파일을 확인해도 되지만 원하지 않는 정보가 많이 포함이 되어 있고

잘못하여 /etc/passwd 파일을 수정하기라도 한다면, 다른 계정에 심각한 문제가 발생 할 수 있습니다.

가장 좋은 방법은 원하는 정보를 찾아 내는 것이겠죠.



그럼 내가 알고 싶은 계정만 뽑아 내 보도록 하겠습니다.



cut  -f1 -d: /etc/passwd




위와 같이 명령을 실행하면 사용자 계정 ID만 출력이 되어 좀더 심플한 결과를 얻을 수 있습니다.



위 결과 화면은 ' | grep ' 명령을 추가하여 검색 조건을 사용한 명령입니다.

계정중에 'us'가 들어간 계정을 보여 줍니다.

명령어 실행 결과가 있다면 위와 같이 나오고 없다면 아무것도 출력되지 않습니다.



아.. 근데 위와 같은 방법으로 상당히 원하는 데이터에 접근을 했지만 만족하기는 어려울 수 있습니다.

시스템에서 등록된 계정들이 보이기 때문이죠. (systemd-bus-proxy 나 messagebus 같은 녀석들이요)

이럴때 쓰는 방법이 또 있습니다!!


이 방법은 사용자 등록시 UID 옵션을 주지 않으면 500 이상으로 만들어지는 것에 기반합니다.

명령어는 다음과 같습니다.



awk -F':' '{if($3>=500)print $1}' /etc/passwd



이 명령도 ' | grep 조회조건' 을 추가하여 검색하면 좀더 원하는 데이터에 가깝게 검색 하실 수 있습니다.



UID가 500 이상인 계정중에 'us'를 포함하는 계정명을 출력하라는 내용입니다.


계정 조회가 끝났으면 이제 등록을 해야겠죠.

그럼 이제 계정 등록하는 방법을 알아 보도록 하겠습니다.





계정 등록 명령어 (useradd, adduser)


계정을 등록하는 명령어는 useradd와 adduser가 있습니다.

두 명령어의 차이점이 분명이 존재 하지만 항상 해깔리더군요


우선 먼저 두가지 방법으로 각각 계정을 생성하고 어떻게 다른지 살펴 보도록 하겠습니다.




useradd 로 사용자 계정을 생성할 경우 최소 옵션으로 계정ID 만 입력하면 계정을 생성 할 수 있습니다.

하지만 adduser 명령으로 사용자 계정을 생성할 경우 비밀번호 설정과 계정 설명 두가지 옵션을 필수로 추가입력을 받습니다.

이것은 단지 /etc/passwd 에만 남지 않고 다른 부분에도 영향을 보입니다.



우선 /etc/passwd 파일을 보면 user03의 계정정보 필드에 위에서 입력한 데이터가 , 를 구분자로 입력이 되어 있습니다.


/etc/shadow 를 보면 비밀번호 설정 부분도 들어가 있습니다.

(당연하겠죠. 아까 비밀번호를 입력하였으니까요 ㅎㅎ)




마지막으로 홈디렉토리 부분을 보겠습니다.




user03 만 홈디렉토리가 생성되어 있습니다.


이제 useradd와 adduser의 차이점을 요약해 보면


  • useradd : 계정ID 만 생성 (홈디렉토리 등 설정 X)
  • adduser : 계정ID 및 홈디렉토리, 계정정보 및 비밀번호 셋팅 기본으로 설정


이정도가 되겠네요.


Redhat 계열의 CentOS7 에서 테스트 한 결과 useradd와 adduser 의 결과는 같았습니다.

계정 생성과 동시 홈디렉토리 생성을 자동으로 해주고 나머지 작업은 관리자가 해주어야 합니다.




이제 부터는 useradd 명령을 기준으로 진행하려고 합니다.





useradd -/home/user05 -600 -/bin/csh user05


위 명령을 구분해 보면 다음과 같습니다.

 1. useradd : 사용자 계정 추가 명령어

 2. -d : 디렉토리 생성 옵션 (/home/user05 디렉토리 생성)

 3. -u : 사용자 UID 설정 (UID를 600 으로 설정)

 4. -s : 사용자 쉘 환경 설정 (/bin/csh 로 설정)

 5. user05 : 사용자 계정 ID


두번째 예제를 한 번 해보겠습니다.



useradd -/home/user06 -c 'test user06' -700 user06


1. useradd : 사용자 계정 추가 명령어

2. -d : 홈데렉토리 생성 옵션 (/home/user06 디렉토리 생성)

3. -c : 계정설명 (test user06 입력, 문장을 입력시 ' '나 " "로 묶어 주어야 합니다.)

4. -u : 사용자 UID 설정 (UID를 700 으로 설정)

5. user06 : 사용자 계정 ID


마지막으로 사용자 계정 추가 명령어의 옵션들을 정리해 볼께요

 -c

 계정설명, 대부분 사용자명 입력, finger 명령어로 확인 가능한 간단한 사용자 설명 

 -d

 사용자 홈디렉토리 경로 설정

 -m

 사용자 홈디렉토리 생성 

 -e

 사용자 계정의 사용 종료 일자

 -f

 사용자 계정의 유효 기간 (ex: -f 180  계정 생성일로부터 180동안만 사용가능)

 -g

 사용자 계정의 로그인 그룹

 -G

 사용자 계정의 추가 들록 계정의 그룹명

 -p

 사용자 계정의 패스워드

 -s

 사용자 계정의 로그인 쉘

 -u

 사용자 계정의 UID


아... 저거 정리하고 끝낼라고 했는데 하나 잊은게 있습니다.

패스워드에 관한 건데요.

-p 옵션을 사용하여 비밀번호를 설정할 경우 추가적으로 입력해 줘야 하는 내용이 있습니다.

계정비번의 경우 암호화 되어 저장이 되기 때문에 아래 처럼 사용자 계정을 등록 했다면 해당 사용자가 로그인 할 수 없는 불상사가 발생하게 됩니다.



useradd -abcd1234 user07


위 명령어 실행에 대한 /etc/shadow의 내용을 다른 user 계정의 패스워드와 비교해 보시기 바랍니다.



위 그림에서 보면 계정명 다음에 나오는 부분이 패스워드에 대한 부분 입니다.

user01과 user03은 패스워드가 암호화 되어 들어가 있습니다.

user02의 !는 패스워드가 지정되어 있지 않다는 의미 입니다.

user03의 패스워드에 아까 입력한 abcd1234가 들어가 있지만 실제로 로그인해보면 로그인이 되지 않습니다.




이 문제를 해결 하기 위해서 `openssl passwd 패스워드` 이런 식으로 입력을 해줘야 합니다.



useradd -p `openssl passwd abcd1234' user08




user08의 비번이 정상적으로 들어 가 있습니다.

사용자 계정을 등록 했으니 이제 사용자 계정 삭제에 대해서 알아보고 마무리 하려고 합니다.


사용자 계정 삭제 (userdel, deluser)

계정삭제 방법도 두 가지 방법이 있습니다.
두 가지 방법 모두 계정을 삭제하고, 홈 디렉토리도 삭제가 가능하지만 명령어 옵션에서 몇가지 차이점이 있습니다.

간단히 먼저 정리를 해보면

  • userdel 의 경우
   - 계정만 삭제
       # userdel 계정명

   - 계정과 홈디렉토리 삭제
       # userdel -r 계정명

  • deluser의 경우
   - 계정만 삭제
      # deluser 계정명

   - 계정과 홈디렉토리 삭제
      # deluser --remove 계정명

   - 계정과 홈디렉토리, 계정명으로된 모든 파일 삭제
      # deluser --remove-all-files

위와 같습니다.



Redhat 계열의 CentOS7 에서는 deluser 명령이 없는것 같습니다.

    -bash: deluser: command not found

라고 나오네요.



휴~ 계정 삭제 실습은 생략할께요~
(너무 많아서... ㅜㅜ)




이번 포스팅에 사용자 계정에 대한 전체적인 내용을 다루려고 했는데 생각보다 내용이 길어져서
나머지는 다음 포스팅에 올리도록 하겠습니다.
사용자 계정관련 : 계정 소유권(chown), 계정권한(chmod), group 등 이 남았네요.

반응형

관련글 더보기