ubuntu 같은 경우 root로 로그인을 할 수 없는게 기본 정책이다.(sudo passwd 하면 root 비번 만들어 진다.)

이럴 경우 root 권한이 필요한 명령어의 경우 sudo 로 실행하게 되는데 이때 리다이렉션이 문제이다.


예를 들어 test 란 파일이 있다. 이 파일의 소유주와 그룹은 root 이다. 이때 이 파일에 "hello" 란 글을 쓰고 싶다.

이때 우리는 echo "hello" > test 라고 실행한다. 혹은 sudo echo "hello" > test 라고 실행할 것이다. 이렇게 실행하면 아래와 같은 경고가 발생한다.

user@a$ echo "hello" > test
-bash: test: Permission denied 


이럴때는 tee 란 명령어를 이용하자. 이 명령어는 리다이렉션하고 하는 일이 동일하다. 표준입력을 파일에 저장한다. 다른 점은 리다이렉션은 쉘내장명령어도 tee는 그냥 명령어다.

user@a$  echo "hello" | sudo tee test
[sudo] password for user:
hello


아주 잘 된다. 


또한 root 사용이 불가능 하기 때문에 원격지 장비의 root 폴더에 파일을 전송하기가 매우 까다롭다.

scp 를 이용해도 root 사용 불가기 때문에 scp 로 /tmp 폴더에 파일 이동후 ssh 로 연결하여 파일을 mv 로 옮기는 작업을 한다.

이렇게 하지 말고 아래의 방법을 사용하라.

 ssh test-server "sudo tee test.conf" < test.conf

아 물론 이 방법을 사용하기 위해서는 패스워드 없이 sudo 명령을 사용할 수 있도록 설정을 해야한다. ssh 로 즉시 명령 실행행시 terminal 이 지정되지 않기 때문에 패스워드를 입력할 수 없어 오류 메세지가 발생한다. sudo 설정은 블로그에 정리 되어 있다.

+ Recent posts