[CentOS] rc.local 에서 root 권한으로 스크립트 실행하기 Computer Tip

4년전인가에 cron 테이블 작업을 돌릴 때
환경 변수 문제가 있어 그것에 관련된 블로그를 포스팅 한 적이 있습니다.

이번에는 CentOS에서 재 이동시 rc.local 에 root 권한으로 스크립트를 기동시킬 때 발생한 
시행착오가 있어 공유해 보고자 합니다.

우선 CentOS에서 rc.local은
/etc/rc.d/rc.local 로 되어 있고 이것이 다시 /etc/rc.local 심볼릭 링크를 걸어 놓았습니다.

우선 터미널에서 

[root@localhost rc.d]# who -r
         run-level 5  2015-01-18 09:44                   last=S

와 같이 명령을 내려보면,
현재 사용자의 runlevel이 5 임을 알 수 있습니다.

5는 X윈도우 UI 환경이고,
3은 네트워크 지원되는 터미널 환경입니다.

이렇게 RunLevel에 따라서 /etc/rc.d/에 있는
rc{runlevel}.d (위에서는 rc5.d) 에 가봅니다.

그러면 K{번호}로 시작하는 스크립트와 S{번호}로 시작하는 
스크립트가 존재하는데 처음 시스템이 기동하면서
S로시작하는 번호순의 스크립트가 동작합니다.
종료시에는 동일하게 K로 시작하는 스크립트가 실행되구요.

그런데 이 rc.local은 다른 모든 init 스크립트가 실행되고
맨 나중에 호출된다고 합니다.

문제는 이 rc.local 이 기동될 때 디폴트로 root 권한은 아니라는 점입니다.
만약 CentOS (5.11) 에서 rc.local 에 root (또는 원하는 계정) 로 동작시키고 싶은 
스크립트가 /opt/bin/myscript.sh 라고 하면

rc.local 에

/opt/bin/myscript.sh &

라고 내용을 넣으면 root 권한으로 실행되지 않습니다.

대신,

su root -c "/opt/bin/myscript.sh &"

라고 해 주어야 합니다.

또한 /opt/bin/myscript.sh 스크립트에

첫 줄이

#!/bin/sh

라고 되어 있었고

환경 변수를 설정한다면,

PATH=$PATH:/opt/bin
export PATH

와 같이 주어야지,

export PATH=$PATH:/opt/bin

라고 주면 환경 변수 설정에 실패합니다.

아니면
첫 줄에

#!/bin/bash

라고 쉘을 지정하면 

export PATH=$PATH:/opt/bin

도 잘 지정될 것입니다.


아주 기본적인 것이지만,
리눅스 배포판에 따라서, 또는 버전에 따라서
미묘하게 달라질 수 있으므로
rc.local은 crontab과 더불어
아주 조심스럽게 다루어져야 할 부분임을 
일요일 저녁에 또 다시 느끼게 되었습니다.
(또 어떤분은 이것 때문에 하루종일 고생하셨기에...T.T)


어느 분께는 도움이 되셨기를....

덧글

  • 감사합니다 2015/04/17 18:39 # 삭제 답글

    와 root 권한으로 쉘스크립트 실행이 도저히 되질않아서 찾다찾다 여기까지왓는대 와 단번에 되네요 ㅎㅎ정말 감사합니다
  • 감사합니다 2015/04/17 18:39 # 삭제 답글

    와 root 권한으로 쉘스크립트 실행이 도저히 되질않아서 찾다찾다 여기까지왓는대 와 단번에 되네요 ㅎㅎ정말 감사합니다
  • 감사합니다 2015/04/17 18:39 # 삭제 답글

    와 root 권한으로 쉘스크립트 실행이 도저히 되질않아서 찾다찾다 여기까지왓는대 와 단번에 되네요 ㅎㅎ정말 감사합니다
  • 감사합니다 2015/04/17 18:39 # 삭제 답글

    와 root 권한으로 쉘스크립트 실행이 도저히 되질않아서 찾다찾다 여기까지왓는대 와 단번에 되네요 ㅎㅎ정말 감사합니다
  • 감사합니다 2015/04/17 18:39 # 삭제 답글

    와 root 권한으로 쉘스크립트 실행이 도저히 되질않아서 찾다찾다 여기까지왓는대 와 단번에 되네요 ㅎㅎ정말 감사합니다
  • 감사합니다 2015/04/17 18:39 # 삭제 답글

    와 root 권한으로 쉘스크립트 실행이 도저히 되질않아서 찾다찾다 여기까지왓는대 와 단번에 되네요 ㅎㅎ정말 감사합니다
  • 감사합니다 2015/04/17 18:39 # 삭제 답글

    와 root 권한으로 쉘스크립트 실행이 도저히 되질않아서 찾다찾다 여기까지왓는대 와 단번에 되네요 ㅎㅎ정말 감사합니다
  • 감사합니다 2015/04/17 18:41 # 삭제

    ;;;댓글이 안달린줄알고 업데이트 삭눌럿더니 ㅠㅠ도배 됏네요 ㅠㅠ죄송합니다
  • 지훈현서아빠 2015/04/18 21:19 #

    도움이 되셨다니 저의 보람입니다~~
  • sasha 2015/10/07 02:09 # 삭제 답글

    안녕하세요 괜찮으시다면 하나 여쭤보고 싶네요.

    우분투 재시작시 instances 3 개가 자동으로 실해되게 해보려는데요

    rc.local file 에서 마지막줄에

    /파일경로/startup.sh PM7212 이런식으로 스크립트를 써넣어도 자동으로 실행되지가 않습니다.

    혹시 조언좀 구할수 있을까요
  • 날고프다 2018/03/28 10:38 # 삭제 답글

    굿샷 해볼게요
  • 지훈현서아빠 2018/03/28 11:19 #

    굿샷! ^^
댓글 입력 영역

구글애드텍스트