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

쉘프로그래밍강좌034: if문을 이용하여 root만 허용되는 쉘프로그램 만들기

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

쉘프로그래밍강좌034: if문을 이용하여 root만 허용되는 쉘프로그램 만들기

 

 

 

 

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

 

 

 

 

 

쉘환경변수 LOGNAME에는 현재 사용자의 ID가 저장되어 있습니다.

 

 

 

 , 쉘프로그램을 root권한으로만 실행가능하도록 하기 위하여 실행하는 사용자의 LOGNAME을 확인하여 root인 경우에만 쉘프로그램의 실행을 허용하고 root가 아닐 경우에는 쉘프로그램을 종료하게 됩니다.

 

 

 

 

 

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

 

 

 

 

 

[root@RockyLinux01 test]# 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@RockyLinux01 test]#

 

 

 

if [ $LOGNAME != root ]



 

이 쉘프로그램의 가장 핵심적인 내용으로서 쉘환경변수인 LOGNAME의 값이 root가 아닌가를  if문으로 체크하게 됩니다.

 

 

 

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

 

 

 

 

 

다음은 sspark 이라는 일반사용자로 이 쉘프로그램을 실행한 예입니다.

 

 

 

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

 

 

 

 

 

[sspark@RockyLinux01 ~]$ id

uid=1000(sspark) gid=1000(sspark) groups=1000(sspark),10(wheel)

[sspark@RockyLinux01 ~]$

[sspark@RockyLinux01 ~]$ ./if002.sh

Sorry. You are not allowed to run this program...

[sspark@RockyLinux01 ~]$

 

 

 

 

다음은 root사용자로 이 쉘프로그램을 실행한 예입니다.

 

 

 

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

 

 

 

 

 

[root@RockyLinux01 test]# id

uid=0(root) gid=0(root) groups=0(root)

[root@RockyLinux01 test]#

[root@RockyLinux01 test]# ./if002.sh

[root@RockyLinux01 test]#

 

 

 

 

서버관리자의 필요에 의해 코딩 되는 대부분의 쉘프로그램들은 root권한으로만 실행가능하도록 작성됩니다.

 

 

 

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

 

 

 

 

 

 

관련자료

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

공지사항


뉴스광장


  • 현재 회원수 :  60,032 명
  • 현재 강좌수 :  35,772 개
  • 현재 접속자 :  149 명