-
sudo 상태로 redirection 사용하기TIP&TECH/리눅스 2013. 3. 11. 19:07728x90
root로만 접근 가능한 디렉터리에 echo와 redirection을 이용하여 파일을 만들어야 할 때, 다음과 같이 실행하면 퍼미션 에러가 발생합니다.
$ echo "abc" > /root/test
-bash: /root/test: Permission denied
그렇다고 sudo를 사용해도 마찬가지 결과가 발생합니다.
$ sudo echo "abc" > /root/test
-bash: /root/test: Permission denied
왜냐하면, 쉘에서 redirection을 하면 child process를 생성하고 작업을 수행하는 것인데, sudo는 parent process에서 적용된 것이므로, child process와는 무관하기 때문입니다.
따라서, 다음과 같이 하나의 process에서 실행되게 하면 됩니다.
$ sudo bash -c 'echo "abc" > /root/test'
다른 방법으로 실제 접근하는 process에 접근 권한을 주는 것입니다.
$ echo "abc" | sudo tee -a /root/test
- tee에 -a 옵션을 사용하면 파일의 맨 뒤에 추가하고, 파일이 없으면 새로 만든다.
위의 방법을 응용하여 cat을 사용할 수 도 있습니다.
$ cat << "EOF" | sudo tee -a /root/test
abc
EOF
참고 사이트
728x90'TIP&TECH > 리눅스' 카테고리의 다른 글
디렉터리 용량 확인하기 (0) 2013.03.11 Bash 관련 (0) 2013.03.11 .svn 디렉터리를 모두 삭제하는 방법 (0) 2013.03.11 특정 파일 빼고 복사하기 (0) 2013.03.11 마운트 여부 확인하기 (0) 2013.03.11