Akashic Records

Chapter 2 Unix 사용자 계정 관리 본문

Operation System Controls

Chapter 2 Unix 사용자 계정 관리

Andrew's Akashic Records 2018. 4. 17. 15:57
728x90

Chapter 2 Unix 사용자 계정 관리


유닉스 시스템에서 사용자 라는 개념은 시스템에 접근할수 있는 권한을 설정하는 것이다. 특정 파일이나 디렉토리에 대한 접근 허용을 설정하는 기본 단위라고 볼 수도 있다. 모든 사용자는 최소한 하나 이상의 그룹에 포함되어야한다. 그룹의 의미는 우리가 쉽게 접할수 있는 "팀"이라는 개념과 동일하다. 특정 "A"라는 파일에 대해 우리팀은 모두 접근 가능하게 하고 우리 팀이 아닌 다른 사용자는 접근하지 못하도록 설정할 수가 있다. 일반 사용자 등록시에 특별히 어느 그룹에 포함시키지 않으면 디폴트로 other라는 그룹에 포함된다.


사용자 계정을 관리하는 방법은 여러 가지가 있다. 가장 쉬운방법은 CDE환경에서"admintool"을 이용한 GUI환경과 "useradd", "groupadd"와 같은 명령어를 사용하는 방법, 또는 직접 "/etc/passwd", "/etc/shadow"파일을 편집하는 방법이다.

admintool을 이용하여 사용자 계정 관리

1.          윈도우 환경의 command tool(터미널창)에서 " admintool& "을 실행한다.

2.          메뉴에서 "Groups"을 선택한다.

3.          메뉴에서 "Edit"를 선택한다.

    • Group명을 "unixclass"라고 입력한다.

    • GID는 디폴트값을 사용하도록한다.

    • 그룹에 포함시킬 사용자명을 입력한다.

4.          “OK”를 클릭한다.

여러분들은 이제 새로운 그룹을 시스템에 하나 등록하였다. 이제 이 그룹에 포함될 새로운 사용자를 등록해 보도록하자.

5.          "admintool&"의 초기 화면의 메뉴에서 "Users"를 선택한다.

6.          "Add" 메뉴를 선택한다.

    • User Name : 등록할 사용자명을 입력한다.

    • UID : 시스템이 인식할 사용자명이다. 디폴트 값을 사용 하기를 권장한다.

    • Primary Group : 이 사용자가 포함될 그룹명을 지정한다. 조금 전에 만들었던"unixclass"의 GID를 설정해 준다.

    • Secondary Group : "unixclass"이외에 다른 그룹에 이 사용자 를 포함시키고 싶은 경우 값을 설정해 준다.

    • Comment : 사용자에 대한 설명문이다. 보통은 이 사용자의 완전한 이름을 입력해 주거나 하는 이 계정이 하는 일에 대해 간략하게 설명해 준다.

    • Login Shell : 사용자가 login하였을 때 사용자 인터페이스할 쉘을 설정한다.(ksh,csh,sh,bash쉘중에 자신이 선호하 는 쉘을 선택한다.

    • Assigning Password : 패스워드 상태를 다음중에서 선택한다. 여기에서는Normal Password를 선택해보자. 같은 패스워드를 두 번입력해준다.

-          Cleared until first login : 사용자가 처음 등록할 때 까지 패스워드를 설정하지 않는다. 사용자가 처음 로그인 할 때 패스워드를 설정한다.

-          Account is locked : 이계정을 사용하지 못하도록 설정 한다. 시스템 관리자가 패스워드를 재 설정 해줄 때 까지 사용하지 못한다.

-          No password : 사용자가 로그인할수 없도록한다. 하지만 lp나 uucp와 같이 계정 프로그램 은 사용할수 있다.

-          Normal password : 사용자의 패스워드를 관리자가 설정 해준다.

    • Password Aging : 사용자 계정에 대해 사용기한을 설정할수 있게 한다.

-          Min Change : 패스워드를 변경한 뒤 최소한 변경할 수 없는 일수를 설정한다. 너무 빈번한 패스워드 변경을 못하도록 설정할 수 있다.

-          Max Change : 설정된 패스워드가 최대한 유효한 일수를 설정할수 있다.너무 오랫동안 한 패스워드만을 사 용하지 못하도록 설정할 수 있다.

-          Max Inactive : 설정된 일수 동안 이 계정을 사용하지 않 는 경우 lock을 설정하도록 한다. 오랫동안 사용하지 않는 계정에 대해 사용하지 못하도록 설정할 수 있 다.

-          Expiration Date : 지정한 날자까지만 계정을 사용할 수 있도록 설정한다.임시직 사원에게 계정을 할당하는 경우 적절한 설정 방법이다.

-          Warning : 계정에 대한 패스워드 만기일에 대한 경고 메 시지를 만기에서 지정한 일수 전에 사용자에게 보여 주도록 설정한다.

    • Home Directory : 홈디렉토리 경로를 설정한다. "/export/home/username"으로 설정한다. 이 디렉토 리가 실제로 존재하지 않는 디렉토리라면 "Create Home Dir" 항목을 체크하면 자동적으로 디렉토리를 생성해준다.

7.          모든 입력이 끝났으면 "OK"를 클릭한다.

8.          제대로 사용자가 등록되었는지 "su - username" 명령을 사용해 서 조금전에 만든 계정으로 들어 가는지 확인해 보자. "pwd" 명령을 사용하여 홈디렉토리도 확인해보자. 제대로 만들어 졌다면 "exit" 명령으로 다시 "root"계정으로 돌아 온다.

유닉스 명령어을 이용한 사용자 관리

1.        useradd

“useradd login_name” 가장 간단하게 사용자를 등록할수 있는 명령어이다. 이명령어는 새로운 사용자의 home directory로서 default directory를 정의한다.(디렉토리를 생성하지는 않는다) “/etc/passwd”, “/etc/shadow” 두개의 화일에 새로운 user를 위한 entries를 생성한다.

useradd에 사용되는 options

옵션

내용

-b base_dir

default base directory지정

-c comment

comment line 입력

-D [options]

group,base_dir,skel_dir,shell,inactive,expire

default값 display 또는 세팅

-D -b default_base_dir값을 세팅

-D -e default_expire_dir값을 세팅

-D -f default_inactive_dir값을 세팅

-D -g default_group 값을 세팅

-d dir

home directory를 full path로지정

-e expire

login사용기한 지정

-f inactive

정식으로 login을 사용하기전에 사용할수 있는

최대 일수(default -1)

-g group

초기 group 지정

-k skel_dir

skeleton directory file을 복사(ex. .profile)

-m

home directory생성

-o

User ID의 중복허용

-s shell

특성shell을 지정한다

-u UID

UID지정


# useradd -m guest

default directory (“/home/guest”)를 생성한다.

# useradd -d /usr1/abc guest

“/usr1/abc” 디렉토리를 guest의 home 디렉토리로 사용 “/usr1/abc”는 mkdir명령을 이용하여 생성한다.

# useradd -m -d /usr1/abc guest

default directory가 아닌 “/usr1/abc”로 정의된 다른 directory를 home directory로 정의하고 생성한다.

# userdel login, # userdel -r login

사용자 login 삭제. "-r"옵션을 사용하면 사용자 베이스 디렉토리와 login 모두를 삭제

예) 사용자(login) 이름=kjm, 그룹 이름=edps, uid=300, gid=400으로 /home/kkk라는 디렉토리 밑에로그인쉘을 bin/csh

① 사용자의 그룹을 생성

# groupadd -g 300 kkk

② 사용자를 등록하고 홈디렉토리를 생성

# useradd -u 300 -g 400 -c "kkk" -d /home/kjm -m -s /bin/csh kjm

③ passwd 명령어로 password을 설정

④ 사용자의 홈디렉토리에 초기환경 파일을 추가

/etc/skel 디렉토리 안에 default, .cshrc, .login, .logout, .porfile, .kshrc 파일 등이 setup 되어 있다. 환경파일을 setup하고 싶으면 /etc/skel 아래의 디폴트 파일을 홈디렉토리 밑에cp해서 사용


2.        Group 등록과 변경

# groupadd testg

testg라는 그룹을 default GID로 등록

# groupadd -g 100 testg

testg 라는 그룹을 GID=100으로 등록

# groupmod -n testg testc

testg라는 그룹명을 testc로 변경

3.        Password 설정

# passwd login_name : 지정한 login명에 password를 설정한다.

root 계정으로 사용할 수 있는 options

옵션

내용

-x 84 -n 7 user

패스워드에 Aging을 준다(최소7일 최대 84일 사용)

-w 14 login_name

패스워드 만료를 14일전에 알린다

-x -1 login_name

max를 음수로 표시해서 aging을 푼다


# passed -w 10  login_name

현재 사용하는 패스워드의 expiration 10일 전에 사용자에게 경고메세지를 보낸다.

# passwd -x 10 login_name

현재의 패스워드는 최고 10일까지 사용할수 있다.

# passwd -s sms

패스워드 정보 보기

4.        User와 Group에 대한 정보 보기

# logins : 사용자와 그룹에 대한 모든 사용자 리스트

옵션

내용

-l login1 login2

지정한 하나 또는 여러개의 사용자 리스트

-g group_name_list

지정한 초기 또는 두번째 그룹에 포함되는 사용자 리스트

-d

중복되는 login ID를 가진 login 리스트

-m

supplemental login list

-p

패스워드가 설정되지않은 login 리스트

-x

login에대한 확장된 정보 표준출력


사용자 계정 관리 데이터베이스 파일들

1.        패스워트 파일(“/etc/passwd”)

# cat /etc/passwd

root:x:0:1:0000-Admin(0000):/:

daemon:x:1:1:0000-Admin(0000):/:

bin:x:2:2:0000-Admin(0000):/usr/bin:

sys:x:3:3:0000-Admin(0000):/:

adm:x:4:4:0000-Admin(0000):/var/adm:

uucp:x:5:5:0000-Admin(0000):/usr/lib/uucp:

lp:x:7:8:0000-LP(0000):/home/lp:/sbin/sh

nuucp:x:10:10:0000-uucp(0000):/var/spool/uucppublic:/usr/lib/uucp/uucico

listen:x:37:4:Network Admin:/usr/net/nls:

sync:x:67:1:0000-Admin(0000):/:/usr/bin/sync

install:x:101:1:Initial Login:/home/install:

sysadm:x:0:0:general system administration:/usr/admin:/usr/sbin/sysadm

st00:x:102:1:Student-00:/home/st00:/sbin/sh


필드구성

-         Login Name:1~8자의 고유 로그인명

-         lPassword: 위치지정을 위해 "x"문자가 사용되며 암호화된 패스워드는”/etc/shadow” 파일에 저장

-         User ID: 약60,000 사이의 고유 식별 번호

-         Group ID: 로그인시 사용자에게 배정되는 그룹 번호

-         Comments: 사용자 로그인에 대한 요약설명 (최대 256자 지정)

-         Home Directory: 사용자가 로그인한후 위하는 디렉토리

-         Shell: 사용자가 로그인할때 자동적으로 실행될 실행화일의 완전한경로명

2.        쉐도우 파일(“/etc/shadow”)

보안관리를 위해 암호화된 패스워드를 “/etc/shadow” 화일에 저장하며 이화일은 수퍼유저만이 읽을수 있다.

# cat /etc/shadow

root:FDSKY/hfdsdEw:7571:0:168:7:::

daemon:NONE:7571::::::

bin:NONE:7571::::::

sys:NONE:7571::::::

adm:NONE:7571::::::

uucp:NONE:7571::::::

lp:x:7571::::::

nuucp::7571::::::

listen:np71::::::

sync::7571::::::

install:HKysdl/hsjssj:7571:0:168:7:::

sysadm:JhdiFsl/dbd:7602:0:168:7:::


필드내용

-         Login Name: “/etc/passwd” 화일의 사용자명과 같아야 한다.

-         Encrypted: 사용자 패스워드를 13문자의 암호문자로 표시 Password

-         Last Changed: 1970년 1월 1일부터 패스워드가 수정된 날자까지의 일수

-         Minimum: 패스워드가 변경되기전 최소한 경과해야할 일수

-         Maximum: 패스워드 변경전에 최대한 사용할수 있는 일수

-         Warn: 패스워드 사용 만기일전에 사용자에게 주의 메시지 가 제공되는 일수

-         Inactive: 사용자명이 몇일간 사용되지 않은 경우 로그인 사용 금지를 지정하는 일수

-         Expire: 로그인을 더이상 사용할수 없는 일자. mm/dd/yy

-         Not Used: 현재 사용되지 않음

3.        그룹 파일(“/etc/group”)

사용자 계정은 반드시 한 개 이상의 그룹에 포함되어 있어야 한다. 그룹의 용도는 파일이나 디렉토리에 대한 그룹 퍼미션 설정에 사용된다. 사용자 등록시에 특별히 그룹을 지정하지 않으면 디폴트로 "other" 그룹에 등록되며 “/etc/group”파일에 update되지는 않는다. 대신“/etc/passwd” 파일에서 자신의 그룹에 대한 정보를 보관하고 있다.

# cat /etc/group

root::0:root

other::1:

bin::2:root,bin,daemon

sys::3:root,bin,sys,adm

adm::4:root,adm,ademon

mail::6:root

tty::7:root,tty

lp::8:root,lp

daemon::12:root,daemon

uucp::5:root,uucp


필드내용

-         Group Name: 13문자까지 그룹이름 지정

-         Encrypted Password: 사용하지 않음

-         Group ID: 그룹 고유 식별 번호

-         User List: 그룹상의 모든 사용자명

Unix 사용자 기본 profile

umask 022

stty istrip

stty erase ^H

A=`logname`

PS1='[$A:$PWD]'

JAVA_HOME=/usr/java

LD_LIBRARY_PATH=/usr/lib:/usr/local/lib:/usr/openwin/lib

PATH=/bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/ccs/bin:/usr/ucb:/etc:/usr/local/lib:.

export PS1

export PATH

export PATH=$JAVA_HOME/bin:$PATH

export LD_LIBRARY_PATH

export  JAVA_HOME

LANG=C

export LANG

# If possible, start the windows system

if [ "`tty`" = "/dev/console" ] ; then

    if [ "$TERM" = "sun" -o "$TERM" = "AT386" ] ; then

            if [ ${OPENWINHOME:-""} = "" ] ; then

                    OPENWINHOME=/usr/openwin

                    export OPENWINHOME

            fi

            echo ""

            echo "Starting OpenWindows in 5 seconds (type Control-C to interrupt)"

            sleep 5

            echo ""

            $OPENWINHOME/bin/openwin

            clear        # get rid of annoying cursor rectangle

            exit         # logout after leaving windows system

    fi

fi


728x90
Comments