쉘 스크립트에서 root 권한으로만 실행이 가능한 부분을 어떻게 작성할 수 있나요?
3424
작성한 질문수 158
안녕하세요
쉘 스크립트에서 루트에 로그인해서 가능한 작업은 루트로 로그인해서 직접 짜야만 하는 것인가요?
루트로만 로그인 해서 접근 가능한 예를 들어 /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
안녕하세요!
자세한 답변 감사합니다
그런데, 언급해주신 [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
inotify 객체에 등록된 watch descriptor 해제 관련 질문
0
58
2
select API 실습 코드 질문
0
60
2
wsl에서 fcntl사용
0
86
2
inotify_event 구조체 질문 [파일 이벤트 - 라이브 프로그래밍]에서...
0
196
2
./stat 파일이름
0
284
2
fopen r, r+모드 차이
0
469
2
강의를 모두 수강하고 스스로 구현하면 좋을 과제나 프로젝트 주제가 있을까요?
0
332
1
pthread 질문
0
427
2
I/O Multiplexing(select) 질문
0
328
1
inotify.c. ret 질문
0
310
1
inotify.c 질의합니다.
1
321
1
child process
0
728
1
read/blocking
0
577
1
flock
0
571
1
system call
0
608
1
pthread_create() 함수 이용했을 때, thread가 두번 호출되는 것 처럼 나타납니다. 왜 그런것인가요?
0
494
1
fork() 함수 사용시 결과 관련 질문
0
389
1
exec 관련 궁금한 사항
0
464
2
파일 디스크립터와 FILE 구조체에 대한 질문
0
563
1
buf 선언에 따른 read() fail 문제
0
259
2
파일 이벤트 - 라이브 프로그래밍 에서 캐스팅 질문
0
262
1
2번 multi thread 방법 질문
0
250
1
segmentation fault 발생 관련 문의
1
852
1
라이브 코딩 실습 코드
0
242
1





