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

레벨243-2 : if문을 이용하여 root만 허용되는 쉘프로그램 만들기

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

레벨243-2 : if문을 이용하여 root 허용되는 쉘프로그램 만들기

 

다음은 특정 쉘프로그램을 root권한으로만 실행 가능하도록 하기 위하여 쉘프로그램의 초기에 root사용자인가를 확인하여 root 아닐 경우에는 간단한 메시지를 출력하고 쉘프로그램을 종료해버리고 root사용자일 경우에는 쉘프로그램을 실행하도록 하는 간단한 쉘프로그램의 예입니다.

 

쉘환경변수 LOGNAME에는 현재 사용자의 ID 저장되어 있습니다. , 쉘프로그램을 root권한으로만 실행가능하도록 하기 위하여 실행하는 사용자의 LOGNAME 확인하여 root 경우에만 쉘프로그램의 실행을 허용하고 root 아닐 경우에는 쉘프로그램을 종료하게 됩니다.

 

아래의 예는 if002.sh라는 쉘프로그램의 내용을 cat으로 확인한 것입니다.

 

[root@command root]# cat if002.sh

#!/bin/bash

 

if [ $LOGNAME != root ]

then

  echo " Sorry.  You are not allowed to run this program…"

  exit 1

fi

 

find /dev -type f -exec ls -l {} \;

 

[root@command root]#

 

if [ $LOGNAME != root ]


쉘프로그램의 가장 핵심적인 내용으로서 쉘환경변수인 LOGNAME 값이 root 아닌가를  if문으로 체크하게 됩니다. , 쉘프로그램을 실행하였을 때에 실행한 사용자의 LOGNAME 값이 root 아닌 경우에는 then다음의 echo문을 실행한 후에 쉘프로그램을 종료하고 root 경우에는 if문의 끝을 표시하는 fi문장의 다음에 있는 “find /dev -type f -exec ls -l {} \;” 실행이 됩니다.

 

다음은 command라는 일반사용자로 쉘프로그램을 실행한 예입니다. 보시는 바와 같이 root사용자가 아니기 때문에 “Sorry.  You are not allowed to run this program…”문장을 출력하고 쉘프로그램을 종료합니다.

 

[command@command command]$ id

uid=500(command) gid=500(command) groups=500(command)

[command@command command]$

[command@command command]$ ./if002.sh

 Sorry.  You are not allowed to run this program…

[command@command command]$

 

다음은 root사용자로 쉘프로그램을 실행한 예입니다. , root사용자이기 때문에 “find /dev -type f -exec ls -l {} \;” 실행되어 결과를 출력한 것입니다.

 

[root@command root]# id

uid=0(root)gid=0(root)groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)

[root@command root]#

[root@command root]# ./if002.sh

-rwxr-xr-x    1 root     root        16368 Jan 30  2003 /dev/MAKEDEV

[root@command root]#

 

서버관리자의 필요에 의해 코딩 되는 대부분의 쉘프로그램들은 root권한으로만 실행가능하도록 작성됩니다. 따라서 root권한으로만 실행가능하도록 하기 위하여 필자가 소개한 쉘프로그램의 내용을 여러분들이 작성하는 실무 쉘프로그램의 앞부분에 두면 됩니다.

 

관련자료

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

공지사항


뉴스광장


  • 현재 회원수 :  60,043 명
  • 현재 강좌수 :  35,850 개
  • 현재 접속자 :  109 명