본문 바로가기

linux/admin

[linux] sudo에서의 redirection

아래와 같이 하면 정상적으로 수행이 될까요?

# sudo echo aa >> /etc/passwd

다음과 같은 메시지를 뿌려줍니다
bash: /etc/passwd: Permission denied

에러가 난거죠 왜 에러일까요?
여기에서 sudo 명령어는 echo aa에 적용된것이지 /etc/passwd를 redirect하는데 적용된게 아니기 때문입니다

그럼 >>를 해서 redirection하는데도 적용되기 위해서는 어떻게 해야 할까요?
bash라는 프로그램의 -c라는 옵션으로 명령들을 인자로 주는 겁니다
$ sudo bash -c 'echo "hello" >> /etc/passwd'

여기에 암호 입력도 귀찬으면 다음과 같이 하면 되겟죠
$ echo "password" | sudo -S bash -c 'echo "hello" >> /etc/passwd'