
의 가상 파일에 "1" 값을 넣으려고 하는데 다음 /proc
을 사용했음에도 불구하고 "권한이 거부되었습니다"라는 메시지가 나타납니다 sudo
.
name@comp-name:/etc/dhcp$ sudo echo 1 > /proc/sys/net/ipv4/ip_forward
bash: /proc/sys/net/ipv4/ip_forward: Permission denied
해당 echo
명령은 루트 권한으로 실행되지만 리디렉션( >
)은 루트 권한 없이 실행될 수 있습니까? 루트 권한으로 둘 다 실행할 수 있나요?
답변1
이 경우 말씀하신 대로 sudo
에만 적용됩니다 .echo
대신 다음과 같이 관리자 권한 쉘을 실행할 수 있습니다.
sudo sh -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'
또는 더 짧게:
sudo -s 'echo 1 > /proc/sys/net/ipv4/ip_forward'
답변2
권장되는 방법은 프로그램에 파이프를 연결하는 것입니다.tee
echo 1 | tee /proc/sys/net/ipv4/ip_forward
답변3
문제는 리디렉션이 .dll이 아닌 쉘에 의해 수행된다는 것입니다 sudo
. 일반적으로 실행하는 프로그램은 exec()
리디렉션 후에 실행됩니다. 파일에 쓸 수 있는 권한이 없으므로 리디렉션이 실패합니다. 위에서 언급했듯이 권장되는 방법은 tee
다음과 같이 사용하는 것입니다.
echo stuff | sudo tee /some/file/path