`sudo echo“bla”>> / etc / sysctl.conf` 권한 거부


16

면책 조항 : 저는 sysadmin에 초보자입니다.

AWS EC2 인스턴스에서 포트 전달을 설정하려고하는데 명령 행에서 수행해야하며 아무것도 편집하고 싶지 않기 때문에 자동이어야합니다 (빌드 프로세스의 일부 임) ).

sudo echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf

권한 거부

이상한 점은 (성공적으로) 특권 sudo이 필요한 거의 모든 명령에 사용하고 있다는 것 su입니다. 내가 할 경우 sudo su명령 전에 (AN의 손으로 그것을 밖으로 시도하는 ssh세션), 그것은 작동합니다.

이것 뒤에 이유? sudo su수동 편집 과 관련이없는 가능한 솔루션 ?


같은 문제가 여기에 있습니다 : stackoverflow.com/questions/82256/…- 또한, 정말로 위험을 원한다면 :sudo -i
MirroredFate

답변:


46

sudo출력 리디렉션에 영향을주는 데 사용할 수 없습니다 . >>>(과 완전성을 위해서, <리디렉션 호출 쉘이 아닌라는 서브 프로세스에 의해 수행되기 때문에), 호출하는 사용자의 권한으로 영향을 받는다.

어느 쪽이든

cp /etc/sysctl.conf /tmp/
echo "net.ipv4.ip_forward = 1" >> /tmp/sysctl.conf
sudo cp /tmp/sysctl.conf /etc/

또는

sudo /bin/su -c "echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf"

15

이 명령을 사용하는 것이 더 간단 할 수 있습니다.

echo net.ipv4.ip_forward = 1 | sudo tee -a /etc/sysctl.conf

12

sudo루트로 리디렉션이 아닌 명령 만 실행합니다. 모든 것이 루트로 실행되는 명령으로 모든 것을 감싸 야합니다.

sudo sh -c 'echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf'

3

이 명령은 sudo echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf그로 해석 하면 (루트가 아닌)의 결과를 기록 sudo echo "net.ipv4.ip_forward = 1"으로 /etc/sysctl.conf에 있습니다.

운영

sudo -s 'echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf'

또는

sudo su -c 'echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf'

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf루트 로 실행 합니다.


1
sudo sed -i "$ a <text>" <file>
  • -i : 파일을 제자리에 편집합니다.
  • $ a: 마지막 줄에 텍스트 추가

sed명령을 사용 하면 번거로운 리디렉션 및 파이프 라인을 피할 수 있습니다.

귀하의 경우 : sudo sed -i "$ a net.ipv4.ip_forward = 1" /etc/sysctl.conf

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.