• 카테고리

    질문 & 답변
  • 세부 분야

    시스템

  • 해결 여부

    미해결

쉘 스크립트에서 root 권한으로만 실행이 가능한 부분을 어떻게 작성할 수 있나요?

21.08.05 10:28 작성 조회수 2.4k

1

안녕하세요

쉘 스크립트에서 루트에 로그인해서 가능한 작업은 루트로 로그인해서 직접 짜야만 하는 것인가요?

루트로만 로그인 해서 접근 가능한 예를 들어 /proc, /sys /dev와 같이요

drop_cache와 같은 작업을 하고 싶은데, 이러면 루트로 로그인해서 스크립트를  짜야만 동작이 가능한가요?

user로는 작성해서는 절대로 불가능한거죠?

답변 3

·

답변을 작성해보세요.

0

안녕하세요. 유영재님

위의 제 답변 중에 정확치 못한 부분이 있었네요. 죄송합니다.

아래와 같이 커맨드를 수행하면..

sudo echo 3 > /proc/sys/vm/drop_caches

echo는 sudo로 실행하지만 drop_caches 파일로 리디렉션하는 부분은 원래 사용자 권한 그대로 가기 때문에 drop_caches 파일에 쓰기가 실패하는 것입니다. 그래서 아래와 같이 실행하시면 될 것으로 보입니다.

sudo sh -c "echo 3 > /proc/sys/vm/drop_caches"

sudo로 쉘 자체를 실행하게 되니 그 안쪽에 있는 echo도 redirection 도 sudo로 실행하게 되는 것입니다.

추가 질문 있으시면 댓글로 남겨주세요! 

0

유영재님의 프로필

유영재

질문자

2021.08.09

안녕하세요! 

자세한 답변 감사합니다

그런데, 언급해주신 [2. A.sh에서 sudo를 통해 /proc/sys/vm/drop_caches 파일에 쓰기] 에서는

아래와 같이 user 계정에서 하면 아래 스크립트가 실행이 안되는데, 

#!/bin/bash

 sudo echo 3 > /proc/sys/vm/drop_caches

 exit

/proc/sys/vm/drop_caches 쓰기는 root 계정으로 sudo su로만 접속해야만 가능해서요... 이 부분은 그러면 반드시 root 계정으로만 만들어야 가능한거죠?

아니면 제가 위의 스크립트를 잘못 작성한 것일까요?

0

안녕하세요. 유영재님

먼저 답변이 늦어 죄송합니다. 여름 휴가를 다녀오느라 빠르게 답변드리지 못했네요^^;

먼저, 스크립트의 작성과 실행 권한은 서로 다른 문제 입니다. 스크립트 파일의 작성은 어떤 계정이라도 가능합니다. 다만 작성한 파일의 소유권이 해당 계정에 속하겠죠. 

간단히 예를 들어 설명드릴게요. 계정 A가 /proc/sys/vm/drop_caches 파일에 어떤 값을 쓰는 스크립트 A.sh을 작성했다고 하죠. 기본적으로 이 스크립트 파일은 계정 A에 의해 실행가능하도록 권한(permission)이 부여되어 있으면 실행이 가능합니다. 그런데 /proc/sys/vm/drop_caches 파일은 소유권이 root에 있고, 이 파일은 owner만 write 가능하도록 설정되어 있습니다(ls -al로 확인해보세요). 그래서 이 파일은 root만 write가 가능한 것이죠.

이 A.sh을 계정 A가 실행한다면 당연히 권한 오류가 발생할 것입니다. /proc/sys/vm/drop_caches 파일은 root만 write할 수 있도록 설정되어 있기 때문입니다. 이 때 사용할 수 있는 방법은 다음과 같습니다. 

1. root 계정으로 A.sh을 실행

2. A.sh에서 sudo를 통해 /proc/sys/vm/drop_caches 파일에 쓰기

참고로, 경우에 따라 다르지만 특정 커맨드를 root 권한으로 실행하고 싶을 때에는 sudo를 많이 사용합니다.

추가 질문 있으시면 댓글 남겨주세요~ 감사합니다~!! :D