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

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

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

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






 

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

 

 

 

 먼저 grep명령어를 아셔야 하는데 grep명령어의 자세한 설명은 이 책의 grep명령어편을 참고하시고, 아래 명령어의 의미를 자세히 설명해 보도록 하겠습니다.

 

 

 

 

 

명령어 : 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@file root]# grep home /etc/passwd | awk -F: '{print "grep "$1" /etc/shadow"}'

grep bible /etc/shadow

grep sspark /etc/shadow

grep working /etc/shadow

grep locli /etc/shadow

grep mysql /etc/shadow

grep test01 /etc/shadow

grep test02 /etc/shadow

grep test03 /etc/shadow

grep jinious /etc/shadow

grep public /etc/shadow

grep samba /etc/shadow

[root@file root]#

 

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

 

 

 

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

 

 

 

  

 

[root@file home]# vi test.sh

 

#!/bin/bash

grep bible /etc/shadow

grep sspark /etc/shadow

grep working /etc/shadow

grep locli /etc/shadow

grep mysql /etc/shadow

grep test01 /etc/shadow

grep test02 /etc/shadow

grep test03 /etc/shadow

grep jinious /etc/shadow

grep public /etc/shadow

grep samba /etc/shadow

~

~

~

~

"test.sh" [New] 12L, 274C written                                                                   

[root@file home]#

 

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

 

 

 

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

 

 

 

 

 

[root@file home]# chmod 700 test.sh

[root@file home]#

[root@file home]# ./test.sh

bible:$1$Fy3B99j.$7Mx7eyV5MKvBJHUoJeWFG/:12352:0:99999:7:::

sspark:$1$1tmjn2RW$wMtE72wqdvwenDQLwk8ax0:12358:0:99999:7:::

working:$1$6tbDsd.O$viOzGkf9mm9sQdhquiCHS/:12363:0:99999:7:::

locli:$1$RZAcGxSH$wj0fKbsvSWldujaP8HXcE.:12363:0:99999:7:::

mysql:!!:12363:0:99999:7:::

test01:$1$4mOiFIeO$eNQiLLb6YZXTkYsGcEPMI.:12364:0:99999:7:::

test02:$1$sbmK0i0e$rI70QcI0poemRnwKFVHLj.:12364:0:99999:7:::

test03:$1$RgUe.iqW$WGPy1NlQXD/Kx8mThpJ57/:12364:0:99999:7:::

jinious:$1$ZgCGoUrb$VqxCMyR1WlCfb3jUGMKa21:12369:0:99999:7:::

public:$1$Nu9QKsAU$pv6PuSOwtI26BWRKxE/ix1:12364:0:99999:7:::

samba:$1$cq5x8KrL$tXBXggGlz/OwXsefgBU0G.:12364:0:99999:7:::

[root@file home]#

 

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

 

 

 

 

 

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

 

 

 

 

 

, 센스있는 독자분이 계시다면 이런 질문을 하실 것입니다.

 

 

 

 "이런 것을 만들어서 어디에 쓸까요?"라고 질문을 하실지 모릅니다.

 

 

 

 

 

만약 여러분들께서 현재 사용하고 계시는 서버의 계정 중 /home을 홈디렉토리의 시작으로 하는 모든 계정을 다른 서버로 이전하고자 한다면 그 계정들의 /etc/passwd파일의 내용과 /etc/shadow파일의 내용, 그리고 /etc/group파일의 내용을 이전되는 새로운 서버에 원본과 동일하게 복사를 해주셔야 할 것입니다.

 

 

 

  이때 매우 유용하게 사용하실 수 있습니다.

 

 

 

  앞서 설명 드린 /etc/group파일 만드는 방법도 이와 같은 이유에서 예를 든 것입니다.

 

 

 

 

 

필자와 같이 실제 여러 대의 서버를 관리하면서 다른 서버로 일부 계정을 이전해야하는 경험을 하신 독자분이 계신다면 필자가 설명한 이 내용이 매우 유용하게 쓰일 것임을 확신합니다.

 

 

 

 

 

 

관련자료

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

공지사항


뉴스광장


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