BigData_Off1/리눅스1

리눅스1> 2017.12.26_10일차- 사용자, shell

오정oI 2017. 12. 22. 15:15
반응형
SMALL

※ User Account Management (유저 계정 관리)

* 홈 디렉터리 vs. 일반 디렉터리

rm -rf /home/itbank    // 홈 디렉터리

mkdir /home/itbank   // 일반 디렉터리

 

* 관련 파일 리스트

1> /etc/login.defs
- 사용자와 그룹 생성에 관련된 기본 설정파일

 

2> /etc/passwd

- 사용자와 서비스 관련 정보 파일

3> /etc/shadow

- 사용자와 서비스 관련 비밀번호 정보 파일

4> /etc/group
- 그룹과 서비스 그룹 관련 정보 파일

 

5> /etc/gshadow

-  그룹과 서비스 그룹 관련 비밀번호 정보 파일

 

6> /home

- 사용자 홈 디렉터리 생성 경로

일반 사용자 홈 디렉터리 생성 경로 위치

[root@localhost itbank]# ls -l /home/
합계 0
drwx------. 5 itbank itbank 128 12월 22 14:55 itbank            // 일반 사용자 집

7> /etc/skel

- 사용자 계정 생성시 사용자의 환경변수파일을 저장하고 있는 디렉터리(뼈대)

 

8> /etc/default/useradd

- 사용자 계정 생성시 기본 설정 파일

 

그룹관련 1개 있음. 나머지는 사용자 관련

/etc/login.defs 가 더 큰 개념임

그룹도 포함

 

 

* /etc/passwd 설명
 

[root@localhost itbank]# cat /etc/passwd

itbank:x:1000:1000:dust:/home/itbank:/bin/bash

 

itbank : x : 1000 : 1000 : dust : /home/itbank : /bin/bash

itbank          → 사용자 계정명

x                 → 사용자 계정의 비밀번호

(/etc/shadow 파일을 참고)

1000(왼쪽)    → UID(User ID : 사용자 고유 식별자)

1000(오른쪽) → GID(Group ID : 그룹 고유 식별자)

(/etc/group 파일을 참고)

dust            → 코멘트(부연설명)

/home/itbank→ itbank 사용자 계정의 홈 디렉터리 경로

/bin/bash     → shell(명령어 해석기)

 

* shell(조개 껍데기; 통역사)

1> 의미

- 사용자 계정과 커널이 상호작용 할 수 있도록 도와주는 유틸리티

cpu << 커널 << 응용  pg << shell << 사용자

- 사용자 계정이 입력한 명령어를 커널이 이해할 수 있도록 변환해주는 역할

 

2> shell의 종류 확인

1) # cat /etc/shells

2) # echo $SHELL

3) # chsh -l

[option]

-l : shell의 목록

 

 

 

/bin/sh    ①
/bin/bash ②
/sbin/nologin ③
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh

 

① /bin/sh

Bourn Shell

- 가장 오랜기간동안 모든 유닉스 시스템의 표준구성요소

- 강력한 명령 프로그래밍 언어 기능을 가짐

- 상호 대화형 방식을 취하고 있지 않음

- 복구모드에 사용

 

② /bin/bash

Bourn again shell

- 리눅스에서 가장 많이 사용되고 있는 셸

- Bourne Shell 과 C Shell 의 유용한 특징들을 통합(복합 셸)

- 리눅스의 표준적인 명령어 라인 인터페이스(상호연결, 명령어 줄 편집)

- 처음 로그인하면 기본으로 주어지는 셸

 

③ /sbin/nologin

- 시스템 셸. 즉 계정이 아닌 셸(지워도 안되고 접속할 필요도 없음!)

 

⑦ /bin/tcsh

 

- C Shell(95%) + Korn Shell(5%)

- C Shell 의 확장된 셸

 

⑧ /bin/csh

C Shell

- 프로그래밍 언어  C를 기반으로 만들어지는 셸

- 상호 대화형 방식을 취하고 있음

- 크기가 커지고 처리속도가 느려졌다는 단점이 있지만 편리한 기능을

제공하고 있음

 

⑨ /bin/ksh

Korn Shell

- 유닉스에서 대표적으로 가장 많이 사용되는 셸

- Bourne Shell 과 C Shell 의 기능을 확장시킨 셸

- 명령어 줄 편집 기능

 

cf) linux (bash)

→ [;lsdf;lksd;lfks;ldkf]#     

unix (ksh)

#

 

// shell 종류

[root@localhost itbank]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh

[root@localhost itbank]# chsh -l        // change shell
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh

// 현재 사용하고 있는 shel

 

 

[root@localhost itbank]# echo $SHELL
/bin/bash

[root@localhost itbank]# ls -l /bin
lrwxrwxrwx. 1 root root 7  9월 25 14:49 /bin -> usr/bin      // 바로가기 파일

 

* /etc/shadow 설명

[root@localhost itbank]# cat /etc/shadow

itbank:$6$gicHu567$4dZc8e28FM1kAeu7O58QdPaexgfsV/4wOMWiM2X3zJRY55CPcu4AOERScJ1l97nNLTP7p17JJJiXrKblHG6IF.::0:99999:7:::

 

 

apache:!!:17434::::::

itbank:$6$gicHu567$4dZc8e28FM1kAeu7O58QdPaexgfsV/4wOMWiM2X3zJRY55CPcu4AOERScJ1l97nNLTP7p17JJJiXrKblHG6IF.

::0:

99999:7: : :

 

itbank                 → 사용자 계정명

$4dZc ~ lHG6IF    → SHA512 알고리즘으로 비밀번호를 암호화

cf) !!  or !        → 비밀번호 없음

공백(숫자)           → 비밀번호 생성 일자

0                      → 비밀번호 최소 변경 일 수(기본값으로 무제한)

99999                → 비밀번호 만료일(기본값으로 무제한)

7                      → 비밀번호 만료일 되기 전 경고 일 수

(기본값으로 일주일)                 

공백(첫번째)        → 유예기간(만료된 후)

공백(두번째)        → 사용자 계정 사용 불가능하게 되는 날

공백(세번째)        → 예약된 공간

 

* /etc/group 설명

 

[root@localhost itbank]# cat /etc/group

itbank:x:1000:

 

itbank : x : 1000 :

 

itbank              → 그룹명

x                     → 그룹의 비밀번호

(/etc/gshadow)

1000                → GID(Group ID :  그룹 고유 식별자)

공백(첫번째)      → 2차 그룹

       

cf. /etc/passwd

[root@localhost itbank]# cat /etc/passwd
itbank:x:1000:1000:dust:/home/itbank:/bin/bash

 

* /etc/gshadow 설명

 

[root@localhost itbank]# cat /etc/gshadow
itbank:!::

itbank :!: :

itbank             → 그룹명

!                    → 그룹의 비밀번호

(로그인은 사용자 계정으로 하기 때문에 기본적으로 비밀번호가 없음)

공백(첫번째)     → 그룹의 소유주(사용자 계정명)

공백(두번째)     → 그룹의 구성원(사용자 계정명)

 

* 사용자 계정 생성

1> 사용자 게정 생성

[사용형식]

# useradd 계정명

→ 계정을 생성하는데 기본설정을 토대로 생성이 됨

# useradd [option] [argument] 계정명

→ 계정을 생성시 옵션 사용하여 해당 값을 주어서 생성함

[option]

-u : uid를 지정

-g : gid를 지정(그룹 배운 후)

-c : comment 를 지정

-s : shell을 지정

-d : 사용자 계정의 홈 디렉터리 생성할 경로를 지정

-p:  사용자 계정을 생성할 때 비밀번호와 같이 부여하여 생성

 ex) useradd -p `openssl passwd 1` user6            // ` : 쿼터 (1앞에 키)

 

2> passwd

사용자 계정의 비밀번호 생성, 수정, 삭제 등등

[사용형식]

# passwd 입력 후 enter

→ 현재 로그인 되어 있는 사용자 게정의 비밀번호를 작업        // 관리자 비번

passwd 계정명

→ 지정한 계정명의 비밀번호를 작업(관리자만 허용)

 

 

// 사용자 계정 정보 확인

[root@localhost itbank]# tail -5 /etc/passwd
ntp:x:38:38::/etc/ntp:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
itbank:x:1000:1000:dust:/home/itbank:/bin/bash
linux1:x:1001:1001::/AS/Linux/linux1:/bin/bash
[root@localhost itbank]#

// 사용자 계정 추가

[root@localhost itbank]# useradd user1
[root@localhost itbank]#
[root@localhost itbank]# tail -5 /etc/passwd
tcpdump:x:72:72::/:/sbin/nologin
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
itbank:x:1000:1000:dust:/home/itbank:/bin/bash
linux1:x:1001:1001::/AS/Linux/linux1:/bin/bash
user1:x:1002:1002::/home/user1:/bin/bash
[root@localhost itbank]#
[root@localhost itbank]# ls -l /home/            // 사용자 등록 정보는 /home에 저장됨
합계 0
drwx------. 5 itbank itbank 128 12월 22 14:55 itbank
drwx------. 3 user1  user1   78 12월 26 14:17 user1

// 사용자 계정 비밀번호 정보 확인

[root@localhost itbank]# tail -5 /etc/shadow
tcpdump:!!:17434::::::
apache:!!:17434::::::
itbank:$6$gicHu567$4dZc8e28FM1kAeu7O58QdPaexgfsV/4wOMWiM2X3zJRY55CPcu4AOERScJ1l97nNLTP7p17JJJiXrKblHG6IF.::0:99999:7:::
linux1:$6$USFNU/r1$GQfl/8apsdiSqDuC1DDdYyN8zP3smcobT9SJbvtqTJmn0Wk74P5JoPw.WSqPhjtweFtzfhpiDy8bpUdLusBjU/:17522:0:99999:7:::
user1:!!:17526:0:99999:7:::            // 17526 => 1970.1.6 ~ 현재 날짜

// 그룹 정보 확인

[root@localhost itbank]# tail -5 /etc/group
tcpdump:x:72:
apache:x:48:
itbank:x:1000:
linux1:x:1001:
user1:x:1002:

 

// uid 지정 등록

[root@localhost itbank]# useradd -u 1004 user2
[root@localhost itbank]#
[root@localhost itbank]# tail -5 /etc/passwd
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
itbank:x:1000:1000:dust:/home/itbank:/bin/bash
linux1:x:1001:1001::/AS/Linux/linux1:/bin/bash
user1:x:1002:1002::/home/user1:/bin/bash
user2:x:1004:1004::/home/user2:/bin/bash

 

// comment  지정 등록

[root@localhost itbank]# useradd -c testuser user3
[root@localhost itbank]#
[root@localhost itbank]# tail -5 /etc/passwd
itbank:x:1000:1000:dust:/home/itbank:/bin/bash
linux1:x:1001:1001::/AS/Linux/linux1:/bin/bash
user1:x:1002:1002::/home/user1:/bin/bash
user2:x:1004:1004::/home/user2:/bin/bash
user3:x:1005:1005:testuser:/home/user3:/bin/bash

 

// shell 지정 등록

[root@localhost itbank]# useradd -s /bin/sh user4        // Bourn Shell로 지정
[root@localhost itbank]#
[root@localhost itbank]# tail -5 /etc/passwd
linux1:x:1001:1001::/AS/Linux/linux1:/bin/bash
user1:x:1002:1002::/home/user1:/bin/bash
user2:x:1004:1004::/home/user2:/bin/bash
user3:x:1005:1005:testuser:/home/user3:/bin/bash
user4:x:1006:1006::/home/user4:/bin/sh

// 디렉터리 지정 생성

[root@localhost itbank]# mkdir /bonwon
[root@localhost itbank]#
[root@localhost itbank]# useradd -s /bin/csh -d /bonwon/userfive user5        // 집이름 == 계정이름 동일하게!!!

↑경로    ↑집이름 ↑계정이름

[root@localhost itbank]#
[root@localhost itbank]# tail -6 /etc/passwd
linux1:x:1001:1001::/AS/Linux/linux1:/bin/bash
user1:x:1002:1002::/home/user1:/bin/bash
user2:x:1004:1004::/home/user2:/bin/bash
user3:x:1005:1005:testuser:/home/user3:/bin/bash
user4:x:1006:1006::/home/user4:/bin/sh
user5:x:1007:1007::/bonwon/userfive:/bin/csh

 

// 비밀번호 지정 등록

[root@localhost itbank]# useradd -p `openssl passwd 1` user6    // ` : 쿼터 (1앞에 키)
[root@localhost itbank]#
[root@localhost itbank]# tail -7 /etc/passwd
linux1:x:1001:1001::/AS/Linux/linux1:/bin/bash
user1:x:1002:1002::/home/user1:/bin/bash
user2:x:1004:1004::/home/user2:/bin/bash
user3:x:1005:1005:testuser:/home/user3:/bin/bash
user4:x:1006:1006::/home/user4:/bin/sh
user5:x:1007:1007::/bonwon/userfive:/bin/csh        // csh == bash
user6:x:1008:1008::/home/user6:/bin/bash            // 비번 : 1 등록 후 접속 테스트

 

// passwd


[root@localhost ~]# passwd user4
user4 사용자의 비밀 번호 변경 중
새  암호:            // 1
잘못된 암호: 암호가 앞뒤 어느쪽에서 읽어도 같은 문맥임
새  암호 재입력:
passwd: 모든 인증 토큰이 성공적으로 업데이트 되었습니다.
[root@localhost ~]#
[root@localhost ~]# tail -7 /etc/shadow
user1:!!:17526:0:99999:7:::
user2:!!:17526:0:99999:7:::
user3:!!:17526:0:99999:7:::
user4:$6CmKOapIW$hfw//R5mQdKrmZwK2VGX/nVdLyxSS2eZlQMrk5jPc80trX9FKVMEoXB9naDy.A125al/ZWLOVnEFDEgB5CYr1.:17526:0:99999:7:::
user5:!!:17526:0:99999:7:::
user6:mIMYR2Uu9xNHw:17526:0:99999:7:::
user7:$6$TcklimGa$aj3NRDEKQq4mZjmPIjU2SmrUKX1mhlxG3ridDA9hlrP0jIR22lbuUXDtqJ3GQaqYGmJyXda1OeS2rqKDLgxmC1:17526:0:99999:7:::
[root@localhost ~]#
// user4 : passwd 이용 

// user6 : -p 옵션 이용

// user6의 암호화 길이가 너무 짧다

// => # passwd 계정명 이용할 것!

 

// user4, user5, user6 접속 후 (본 쉘, c 쉘, bash 쉘)

// 1) 접속 후 shell  형태

// 2) alias 결과값 비교

 

[root@localhost ~]# tail -7 /etc/passwd
user1:x:1001:1001::/home/user1:/bin/bash
user2:x:1004:1004::/home/user2:/bin/bash
user3:x:1005:1005:testuser:/home/user3:/bin/bash
user4:x:1006:1006::/home/user4:/bin/sh            // Bourn Shell
user5:x:1007:1007::/bonwon/user5:/bin/csh       // C Shell
user6:x:1008:1008::/home/user6:/bin/bash        // Bourn again shell
user7:x:1009:1009::/home/user7:/bin/bash
[root@localhost ~]#

=> 접속 후 형태가 비슷한 것도 있고 (csh == bash) 다른 것도 있지만 (sh)

 

     명령어의 결과는 다 다르다.

 

 

 

 

 

 

// skel 개념

[root@localhost ~]# ls -l /etc/skel
합계 0
[root@localhost ~]#
[root@localhost ~]# touch /etc/skel/junga
[root@localhost ~]#
[root@localhost ~]# useradd user77
[root@localhost ~]#
[root@localhost ~]# tail -8 /etc/passwd
user1:x:1001:1001::/home/user1:/bin/bash
user2:x:1004:1004::/home/user2:/bin/bash
user3:x:1005:1005:testuser:/home/user3:/bin/bash
user4:x:1006:1006::/home/user4:/bin/sh
user5:x:1007:1007::/bonwon/user5:/bin/csh
user6:x:1008:1008::/home/user6:/bin/bash
user7:x:1009:1009::/home/user7:/bin/bash
user77:x:1010:1010::/home/user77:/bin/bash
[root@localhost ~]#
[root@localhost ~]# ls -l /home/user1
합계 0
[root@localhost ~]# ls -l /home/user2
합계 0
[root@localhost ~]# ls -l /home/user3
합계 0
[root@localhost ~]# ls -l /home/user4
합계 0
[root@localhost ~]# ls -l /bonwon/user5
합계 0
[root@localhost ~]# ls -l /home/user6
합계 0
[root@localhost ~]# ls -l /home/user7
합계 0
[root@localhost ~]# ls -l /home/user77
합계 0
-rw-r--r--. 1 user77 user77 0 12월 26 17:31 junga    // 파일 자동 생성됨
[root@localhost ~]#
[root@localhost ~]# ls -la /etc/skel        // skeleton; 사용자 계정의 뼈대
합계 24
drwxr-xr-x.   3 root root   91 12월 26 17:31 .
drwxr-xr-x. 133 root root 8192 12월 26 17:31 ..
-rw-r--r--.   1 root root   18  8월  3 06:11 .bash_logout
-rw-r--r--.   1 root root  193  8월  3 06:11 .bash_profile
-rw-r--r--.   1 root root  231  8월  3 06:11 .bashrc
drwxr-xr-x.   4 root root   39 12월 19 23:49 .mozilla

-rw-r--r--.   1 root root    0 12월 26 17:31 junga
[root@localhost ~]#
[root@localhost ~]# ls -la /home/user1
합계 12
drwx------.  3 user1 user1  78 12월 26 16:49 .
drwxr-xr-x. 10 root  root  112 12월 26 17:31 ..
-rw-r--r--.  1 user1 user1  18  8월  3 06:11 .bash_logout
-rw-r--r--.  1 user1 user1 193  8월  3 06:11 .bash_profile
-rw-r--r--.  1 user1 user1 231  8월  3 06:11 .bashrc
drwxr-xr-x.  4 user1 user1  39 12월 19 23:49 .mozilla

[root@localhost ~]#

// useradd  vs. mkdir 계정 생성 차이점

[root@localhost ~]# mkdir /home/itbank2
[root@localhost ~]#
[root@localhost ~]# ls -la /home/itbank2   // itbank2 일반 dir. 
합계 0
drwxr-xr-x.  2 root root   6 12월 26 15:20 .
drwxr-xr-x. 10 root root 165 12월 26 15:20 ..

[root@localhost ~]# ls -la /home/itbank    // itbank home dir.; 사용한 내역이 많아서 좀 늘어남..,
합계 24
drwx------. 14 itbank itbank 4096 12월 20 12:37 .
drwxr-xr-x. 10 root   root    112 12월 26 17:31 ..
-rw-------.  1 itbank itbank  310 12월 20 12:37 .ICEauthority
-rw-r--r--.  1 itbank itbank   18  8월  3 06:11 .bash_logout
-rw-r--r--.  1 itbank itbank  193  8월  3 06:11 .bash_profile
-rw-r--r--.  1 itbank itbank  231  8월  3 06:11 .bashrc
drwx------. 11 itbank itbank  233 12월 20 12:37 .cache
drwxr-xr-x. 13 itbank itbank  217 12월 20 12:37 .config
-rw-------.  1 itbank itbank   16 12월 20 12:37 .esd_auth
drwx------.  3 itbank itbank   19 12월 20 12:37 .local
drwxr-xr-x.  4 itbank itbank   39 12월 19 23:49 .mozilla
drwxr-xr-x.  2 itbank itbank    6 12월 20 12:37 공개
drwxr-xr-x.  2 itbank itbank    6 12월 20 12:37 다운로드
drwxr-xr-x.  2 itbank itbank    6 12월 20 12:37 문서
drwxr-xr-x.  2 itbank itbank    6 12월 20 12:37 바탕화면
drwxr-xr-x.  2 itbank itbank    6 12월 20 12:37 비디오
drwxr-xr-x.  2 itbank itbank    6 12월 20 12:37 사진
drwxr-xr-x.  2 itbank itbank    6 12월 20 12:37 서식
drwxr-xr-x.  2 itbank itbank    6 12월 20 12:37 음악

// 사용자 계정 /home 디렉터리 밑에

// useradd를 거친 것이 아닌 mkdir을 통한 home dir 생성은

// 기본적인 사용자 계정에 대한 뼈대가 없다! (/etc/skel 의 숨김 파일 안에도 들어있음)

반응형
LIST