'redirection'에 해당되는 글 2건

  1. 2012.10.10 sudo 상태로 redirection 시키기
  2. 2008.04.24 로그 눈으로 보고 파일로도 보내기

간혹, 접근권한이 없는 디렉토리에 접근을 해야 할 때 애용하는 것이 sudo 명령어이다.

보통의 경우 문제가 생기지 않지만, 특정 machine에서 shell의 redirection 기능을 사용하려고 한다면 문제가 발생한다.  특정 machine이라고 한 것은, fedora의 경우 문제가 발생하고 있지 않기 때문이다.  (아마도 fedora에서의 permission 설정은, sudoers에 등록되어있으면 sudo 명령어가 없이도 접근 권한을 획득할 수 있어서가 아닌 것으로 생각된다).

예를 들어, root로만 접근 가능한 /root/test 라는 디렉토리에 echo와 redirection을 이용하여 파일을 만들어야 된다고 가정해보자.

# echo test > /root/test/temp.txt

이것은 당연히 permission fail이 발생하고, 이것을 해결해보고자 아래와 같이 하더라도 마찬가지 결과가 발생한다.

# sudo echo test > /root/test/temp.txt

쉘에서의 redirection이라는 것은 child process를 생성하고 file을 open하는 것인데, sudo는 parent process에서 실행된 것이므로 child process와는 무관한 내용이 되기 때문이다.  따라서, 문제를 해결하기 위해서는 3개의 명령 (sudo, echo와 redirection으로 인한 file open)이 하나의 process에서 실행되든가, 그게 아니면 실제로 접근제한이 걸린 디렉토리에 write를 할 때만이라도 sudo command가 들어가는 것이다.

첫번째 방법은 다음과 같이 실행할 수 있다.

# sudo bash -c 'echo test > /root/test/temp.txt'

두번째 방법은 다음과 같이 표현할 수 있다.

# echo test | sudo tee /root/test/temp.txt

Posted by 강군님

댓글을 달아 주세요

전문용어를 굳이 써주자면 표준 출력과 동시에 다른 방향으로 리다이렉트를 해준다??? (전문용어 맞나 -_-;)

뭐 어쨌든 작업하다보면 이게 종종 필요할 때가 있다.

COMMAND | tee FILENAME 2>&1


2>&1 이야 선택사항이고... 예를 들어 COMMAND에 ls를, FILENAME에 a.ret를 넣었다면 ls의 결과를 화면과 a.ret 로 확인할 수 있다는 말씀!!

UNIX POWER TOOLS에 나왔던거 같은데 내용은 기억이 잘 ;
Posted by 강군님

댓글을 달아 주세요