강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

/etc/passwd파일을 이용한 /etc/shadow 파일내용 만들기

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

/etc/passwd파일을 이용한 /etc/shadow 파일내용 만들기

 

 

 

앞의 예에서는 /etc/passwd파일을 이용하여 기본적인 /etc/group파일을 생성하는 예를 보았다.

 

 

 

 이번에는 awk를 활용하여 실계정사용자들의 /etc/shadow파일을 출력하는 예를 보도록 하겠다.

 

 

 

 먼저 아래 형식을 보기 바란다.

 

 

 

 

 

명령어 : grep home /etc/passwd | awk -F: '{print "grep "$1" /etc/shadow"}'

 

"grep home /etc/passwd"의 의미는 /etc/passwd파일내에서 home이라는 문자를 가진 행들은 모두 출력하라는 것이다.

 

 

 

  , /etc/passwd파일에서 실계정을 사용하는 계정들이라면 그 홈디렉토리가 home이라는 것에서 착안한 것이다.

 

 

 

  만약 홈디렉토리를 host로 사용하는 계정사용자라면 "grep host /etc/passwd"라고 하면 될 것이고, user1으로 사용한다면 "grep user1 /etc/passwd"으로 하면 될 것이다.

 

 

 

 

 

따라서 "grep home /etc/passwd"의 결과로 인하여 /etc/passwd파일의 내용중 home을 홈디렉토리로 시작하는 계정들은 모두 출력이 될 것이다.

 

 

 

 

 

그 다음 출력되는 각 행들을 awk의 입력으로 들어가기 위하여 "|"(파이프명령어)를 사용하였다.

 

 

 

 

 

, /etc/passwd파일의 각 행들에서 /home을 홈디렉토리의 시작으로 하는 모든 계정들의 행 출력값들이 awk -F: '{print "grep "$1" /etc/shadow"}'의 입력으로 들어가게 된다.

 

 

 

 

 

그 다음 awk -F: '{print "grep "$1" /etc/shadow"}'이 실행이 되면 다음과 같은 결과를 얻게 된다.

 

 

 

 

 

[root@sulinux ~]# grep home /etc/passwd | awk -F: '{print "grep "$1" /etc/shadow"}'

grep sspark /etc/shadow

grep bible /etc/shadow

grep linux /etc/shadow

grep sulinux /etc/shadow

grep bible9 /etc/shadow

grep hostuser /etc/shadow

grep super /etc/shadow

[root@sulinux ~]#

 

그 다음 위의 결과를 가지고 다음과 같이 간단한 SHELL스크립트를 작성한다.

 

 

 

  아래 보는 바와 같이 vi를 열어서 "#!/bin/bash"를 첫행에 추가한 다음 test.sh이라는 파일을 만들었다.

 

 

 

 

 

[root@sulinux ~]# vi test.sh

#!/bin/bash

grep sspark /etc/shadow

grep bible /etc/shadow

grep linux /etc/shadow

grep sulinux /etc/shadow

grep bible9 /etc/shadow

grep hostuser /etc/shadow

grep super /etc/shadow

~

~

~

~

~

~

~

"test.sh" [새로운] 8L, 180C 저장 했습니다                                             

[root@sulinux ~]#

 

 

 

그런 다음 아래와 같이 실행가능한 파일을 만들기 위하여 test.sh파일에 700이라는 퍼미션을 주었다.

 

 

 

  그리고 test.sh를 실행한 결과를 아래에서 볼 수 있을 것이다.

 

 

 

 

 

[root@sulinux ~]# chmod 700 test.sh

[root@sulinux ~]#

[root@sulinux ~]# ls -l test.sh

-rwx------ 1 root root 180  5 11 14:16 test.sh

[root@sulinux ~]#

[root@sulinux ~]# ./test.sh

sspark:$1$r.dBZxpH$xF63P.kP1V9coXs.28X6a.:14365:10:20:5:4:16800:

bible:$1$0rZ93A4C$/eyUz1CKEOTgX4grLmDzI/:14373:0:99999:7:::

bible9:$1$9PaP1AP/$QeUSftP7793oDYSBFpHg40:14375:0:99999:7:::

linux:$1$BbrL6Lkc$KCFdrimsEAGImlruPcYHH.:14373:0:99999:7:::

sulinux:$1$SyHwi.Sk$GR0w3ulIwoTVjvj7LPkWV/:14373:0:99999:7:::

sulinux:$1$SyHwi.Sk$GR0w3ulIwoTVjvj7LPkWV/:14373:0:99999:7:::

bible9:$1$9PaP1AP/$QeUSftP7793oDYSBFpHg40:14375:0:99999:7:::

hostuser:$1$nPsbmOA9$ZEQP8xQvKucSlWX/0s3/6.:14375:0:99999:7:::

super:$1$VewQFqIe$ZlHZ7NG9qPjVs4J5Qlm.Z.:14375:0:99999:7:::

[root@sulinux ~]#

 

 

 

이 결과의 의미는 다음과 같다.

 

 

 

 /etc/passwd파일의 각 계정들 중 /home을 홈디렉토리의 시작으로하는 모든 계정들의 /etc/shadow파일을 생성한 것이다.

 

 

 

 

 

, 센서있는 독자분이라면 이런 질문을 할 것이다.

 

 

 

 "이런것을 만들어서 어디에 쓸까?"라고 질문할런지 모르겠다.

 

 

 

 

 

만약 다음과 같은 상황이라면 어떨까? 만약 여러분들이 현재 사용하고 있는 서버의 계정중 /home을 홈디렉토리의 시작으로 하는 모든 계정을 다른 서버로 이전하고자 한다면 그 계정들의 /etc/passwd파일의 내용과 /etc/shadow파일의 내용, 그리고 /etc/group파일의 내용을 이전되는 새서버에 원본과 동일하게 복사해줘야 할 것이다.

 

 

 

 이때 매우 유용하게 사용할 수 있다.

 

 

 

앞의 강좌에서 설명한 /etc/group파일만드는 방법도 이와 같은 이유에서 예를 든 것이다.

 

 

 

 

 

두대 이상의 서버를 관리하면서 다른 서버로 일부 계정을 이전해야하는 경험을 했던 독자분이 있다면 필자가 설명한 이 내용이 매우 유용하게 쓰일 것임을 확신한다.

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,039 명
  • 현재 강좌수 :  35,848 개
  • 현재 접속자 :  85 명