sudo echo "xyz"의 출력을 파일로 리디렉션할 때 "권한 거부" 메시지가 표시되는 이유는 무엇입니까? [복사]

sudo echo "xyz"의 출력을 파일로 리디렉션할 때 "권한 거부" 메시지가 표시되는 이유는 무엇입니까? [복사]

내가 왜 받나요?

-bash: test: Permission denied

내가 달릴 때

sudo echo "xyz" > test

디렉토리 권한은 다음과 같습니다:

drwxr-xr-x 3 root root 4096 2014-08-05 16:26 

디렉토리에 파일 생성을 사용하는 데 아무런 문제가 없습니다 sudo. 그런데 왜 sudo echo를 사용하여 들어갈 수 없나요?

답변1

echo이는 루트로만 명령을 실행 하기 때문에 발생합니다 . 출력 리디렉션은 (루트가 아닌) 셸에서 처리됩니다. 이를 방지하려면 쉘 리디렉션을 사용하지 말고 실제 명령을 사용하여 쓰기를 처리하세요 tee. 당신이하고 싶은 일은 다음과 같이 할 수 있습니다 :

echo "xyz" | sudo tee test > /dev/null

(출력을 리디렉션하지 않으면 표준 출력으로 tee도 출력됩니다 )xyz

관련 정보