/etc/passwd파일을 이용한 /etc/shadow 파일내용 만들기
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 2,227 조회
- 0 추천
- 목록
본문
/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파일만드는 방법도 이와 같은 이유에서 예를 든 것이다.
두대 이상의 서버를 관리하면서 다른 서버로 일부 계정을 이전해야하는 경험을 했던 독자분이 있다면 필자가 설명한 이 내용이 매우 유용하게 쓰일 것임을 확신한다.
관련자료
-
이전
-
다음