[유닉스] 사용자(User) 관리 명령어, 그룹(Group) 관리 명령어


사용자(User) 관리 명령어


사용자 계정

  • 시스템 관리자의 중요한 역할 중 하나는 사용자 계정을 만들고 관리하는 일
  • 사용자 계정의 구성 요소
    • 로그인 ID : 시스템에 로그인할 때 사용자를 구분하기 위해 사용하는 이름. 사용자 이름. 시스템에서 유일해야 함
    • 비밀번호 : 시스템에 로그인 허가를 받기 위해 사용자임을 증명하는 문자열. 6~8자 사이의 영문자, 숫자, 특수 문자의 조합으로 구성
    • 홈 디렉토리 : 사용자가 로그인한 직후 위치하는 디렉토리. 자신의 파일과 디렉토리 저장
    • 로그인 쉘 : 로그인할 때 자동으로 실행되는 쉘. 사용자의 명령을 입력받아 처리
    • 사용자 초기화 피일 : 각 사용자가 자신의 작업 환경을 구성하는 파일. 로그인할 때마나 로그인 쉘이 자동으로 실행


/etc/passwd 파일

  • 패스워드 파일은 시스템 보안을 위해 필수적인 파일
  • 사용자가 로그인할 때 올바른 사용자임을 평가하는데 기준이 되는 파일
  • 시스템의 모든 사용자에 대한 계정이 기록되어 있음
  • 패스워드 파일의 목록
    • username : 등록된 사용자 계정. 8자 이하의 영문자와 숫자로 이루어짐. 콜론, 마침표, -, +로 시작하는 이름을 가질 수 없음
    • password : 암호화된 패스워드의 문자열. 아무런 데이터가 없으면 로그인할 때 패스워드가 필요없다는 의미
    • uid : username에 할당된 번호. 시스템이 부여한 사용자 식별자. 65535이하의 양수 값.
      • 0 : 관리자
      • 1-10 : 숙련된 사용자들과 가상의 사용자
      • 11-99 : 시스템과 예약된 사용자와 famous 사용자 (famous 사용자는 시스템에 관련된 특별한 일을 하는 사용자 ID로 시스템 관리자가 잘 알고 있는 사용자 ID)
      • 100 + : 일반 사용자
      • 60001 : nobody (root가 시키는 일만 하는 계정)
      • 60002 : noaccess (아무 일도 할 수 없는 계정)
    • gid : username이 소속된 그룹을 나타내는 숫자 값. /etc/group 파일의 목록에 있는 숫자와 동일한 정보
    • full_name : 사용자에 대한 완전한 이름이나 설명 정보. finger 명령을 사용하면 이 정보를 보여줌
    • directory : 사용자의 홈 디렉토리. 사용자가 로그인한 후 놓이게 될 위치
    • shell : 사용자가 로그인하여 사용하는 쉘의 종류
username:password:uid:gid:full_name:directory:shell


/etc/shadow 파일

  • 패스워드 파일로는 시스템을 안전하게 보호할 수 없음
  • 패스워드를 shadow 파일로 옮김
  • root만 접근할 수 있도록 설정되어 있음
  • /etc/shadow 파일의 형식
    • username : /etc/passwd에서 복사해 온 사용자 계정
    • passwd : 암호화된 패스워드 문자. 비어 있는 경우 패스워드가 필요없음을 나타냄. ‘:*:’라고 되어 있으면 그계정의 접속을 막아두었다는 의미
    • last : 1970년 1월 1일 이후 패스워드를 마지막으로 바꾼 날이 몇 일째의 날인지 나타냄
    • may : 최소 며칠이 지난 뒤에 패스워드를 바꿀 수 있는지 나타냄. 0이면 언제든 바꿀 수 있다는 의미
    • must : 패스워드를 반드시 변경해야 하는 날로부터 며칠이나 경과되었는지를 나타냄. 99999는 오랫동안 패스워드를 바꾸지 않았다는 것을 나타냄
    • warn : 패스워드가 만기되었음을 며칠 동안 사용자에게 계속 주의를 줄 것인지를 나타냄. 1주일 동안 알려주려면 7을 지정
    • expire : 패스워드가 만기가 되어서 계정이 사용불가가 된 지 며칠이나 지났는지를 나타냄
    • disable : 계정이 사용불가가 된 것이 1970년 1월 1일부터 계산하여 몇 일째였는지 나타냄
    • reserved : 후에 사용하기 위해 미리 잡아둔 항목
username:passwd:last:may:must:warn:expire:disable:reserved


/etc/group 파일

  • 계정을 가진 사용자는 하나의 그룹에 속함
  • /etc/group 파일의 형식
    • groupname : 그룹의 이름
    • password : 그룹의 암호화된 패스워드. 대부분 null 값(패스워드가 없다는 의미)
    • group_id : 그룹에 대한 고유값. /etc/passwd 파일에서 사용자가 갖는 gid 값과 같음
    • list : 이 그룹에 속한 사용자 계정을 나열. 각 사용자들을 콤마(,)로 나열
groupname:password:group_id:list


가상의 사용자

  • 일반 계정처럼 고유의 이름을 가지지만, 시스템의 특정한 일을 하기 위한 시스템 고유의 계정
  • /etc/shadow 파일의 패스워드 부분에 “*”로 표시된 계정
  • 로그인할 수 없는 계정
  • 자신들과 관계된 프로세스와 파일들에서 사용됨


사용자 추가하기

  • useradd 명령
    • 사용자 계정을 생성
    • 형식 : useradd [옵션] 로그인명
    • 옵션
      • -u uid : UID 값을 지정
      • -g gid : GID 값을 지정
      • -d dir : 홈 디렉토리의 절대 경로를 지정
      • -m : 사용자 홈 디렉토리가 없으면 생성
      • -s shell : 로그인 쉘의 절대 경로를 지정
      • -c comment : 사용자 정보를 기술
    • 사용 예 : # useradd –m user1


사용자 정보 수정하기

  • usermod 명령
    • 이미 생성한 사용자 계정 정보를 수정
    • 형식 : usermod [옵션] 로그인명
    • 옵션
      • -u uid : UID 값을 지정한 값으로 변경
      • -g gid : GID 값을 지정한 값으로 변경
      • -d dir : 홈 디렉토리 변경
      • -s shell : 로그인 쉘 변경
      • -c comment : 사용자 정보 변경
      • -l 새 로그인 이름 : 로그인명 변경
    • 사용 예 : # usermod –s /bin/csh user10


사용자 삭제하기

  • userdel 명령
    • 사용자 계정을 삭제
    • userdel [-r] 로그인명
    • 옵션 : -r : 사용자 홈 디렉토리 삭제
    • 사용 예 :# userdel –r user10


사용자에게 메시지 전달하기

  • 시스템에 접속 중인 전체 사용자에게 메시지 전달하는 방법
    • 접속 중인 모든 사용자에게 즉시 메시지를 전달하는 방법
    • 사용자가 로그인할 때 메시지가 보이게 하는 방법
  • 긴급 메시지 전달 : wall
    • write all users의 약자
    • 접속 중인 모든 사용자에게 메시지를 보냄
    • 긴급하게 전달할 내용이 있을 때 사용
    • 형식 : walll [옵션] [파일 이름]
    • 옵션
      • -a : 가상 터미널을 포함한 모든 터미널로 메시지를 전송
      • -g 그룹명 : 지정한 그룹에게만 메시지를 전송
      • file : 메시지 내용을 파일에서 읽음
    • 사용 예 : # wall –a, # wall –g other letter
  • 공지사항 전달 : /etc/motd
    • 모든 사용자가 알아야 하지만 긴급한 내용이 아니면, 로그인할 때 메시지 출력
    • /etc/motd 파일 : message of today의 약자
    • 모든 사용자에게 보낼 공지사항을 저장
# more /etc/motd


그룹(Group) 관리 명령어


그룹

  • 파일과 시스템 자원을 공유할 수 있음
  • 유닉스 시스템의 사용자들은 모두 하나 이상의 그룹에 속함
  • 사용자가 생성한 파일은 사용자 기본 그룹에 속함
  • /etc/passwd 파일의 4번째 필드인 그룹 ID는 기본 그룹의 ID


/etc/group 파일을 이용해 그룹 정보 관리하기

  • 모든 사용자 그룹 정보가 있는 파일
    • root : 시스템 관리자 계정이면서 시스템이 관리하는 그룹 이름. bin, sys, adm, uucp, daemon 등이 계정과 그룹 이름으로 동시에 사용됨
    • 그룹 비밀번호 : 정보 유출이 생길 수 있어 최근에는 사용하지 않음
    • GID : group id. 시스템이 각 그룹에 붙인 일련번호
    • 사용자 목록 : 그룹에 속한 사용자의 로그인 이름
root::0:root


그룹 생성하기 : groupadd

  • 새 그룹은 groupadd 명령을 이용하거나 /etc/group 파일을 직접 수정
  • 형식 : groupadd [옵션] 그룹명
  • 옵션
    • -g gid : gid 값을 지정
    • -o : gid의 중복을 허용
  • 사용 예 : #groupadd classa
  • 시스템이 자동으로 부여하는 GID 값을 사용
# groupadd class1
# grep class1 /etc/group
class1::100:
#


그룹 수정하기 : groupmod

  • 생성된 그룹 정보를 수정하는 명령
  • GID 값과 그룹 이름 변경 가능
  • 형식 : groupmod [옵션] 그룹명
  • 옵션
    • -g gid : gid 값을 수정
    • -o : gid 중복을 허용
    • -n 새 이름 : 그룹 이름을 변경
  • 사용 예 : #groupmod –n class1 classa
  • GID 값을 수정할 때는 기존의 값과 중복되지 않는지 확인. 중복을 원하는 경우 –o 옵션 사용
# groupmod –n classa class1
Found group in files repository
# grep class1 /etc/group
# grep classa /etc/group
classa::100:
#


그룹 삭제하기 : groupdel

  • groupdel 명령을 사용하거나 /etc/group 파일에서 해당 그룹의 항목을 삭제
  • 형식 : groupdel 그룹이름
  • 사용 예 : #groupdel class1
# groupdel classa
Found group in files repository
# grep classa /etc/group
#