/
sudo echo 명령어 사용시 Permission denied 문제 해결하기
sudo echo 명령어 사용시 Permission denied 문제 해결하기
개요
sudo 명령어와 echo 를 사용할 경우 echo 의 redirection 을 file 로 하면 의도한대로 동작하지 않고 아래처럼 퍼미션" 에러가 발생합니다.
sudo echo
sudo echo 'validate_password.policy=LOW' >> /etc/my.cnf -bash: /etc/my.cnf: Permission denied
이는 shell 이 리다이렉션을 수행할 때 sudo 로 전환된 root 아닌 명령을 실행한 사용자로 실행해서 발생하는 일입니다.
해결하려면 다음과 같은 여러 방법이 있습니다
tee 명령어 사용
표준 입력(standard input)에서 읽어서 표준 출력(standard output)이나 파일에 기록하는 tee 명령을 사용하면 됩니다.
주의할 점은 기존 파일에 추가하는 >> 연산자는 --append 또는 -a 옵션을 사용해야 합니다.
echo 'validate_password.policy=LOW' | sudo tee -a /etc/my.cnf validate_password.policy=LOW
tee 는 표준 출력에서 받은 문자열을 표준 출력에도 쓰므로 위와 같이 echo 로 출력한 문자열이 터미널에도 표시됩니다.
이게 싫으면 tee의 출력을 /dev/null 로 보내면 됩니다.
echo 'validate_password.policy=LOW' | sudo tee -a /etc/my.cnf > /dev/null
별도 shell 에서 실행
echo 구문 전체를 command string 으로 만들고 이를 별도 쉘을 통해 실행하는 방법도 있습니다.
이 방법은 복잡하고 실행할 구문을 문자열 만들어야 해서 실수할 여지도 있으므로 tee 를 쓰는 게 더 낫습니다.
sudo sh -c "echo 'validate_password.policy=LOW' >> /etc/my.cnf"
같이 보기
Ref
, multiple selections available,
Related content
sudo 명령어 사용법
sudo 명령어 사용법
More like this
RHEL/CentOS sudo 명령어 가능하게 하기
RHEL/CentOS sudo 명령어 가능하게 하기
More like this
find 명령어 사용시 permission denied 에러 출력하지 않기
find 명령어 사용시 permission denied 에러 출력하지 않기
More like this
FreeBSD 설정
FreeBSD 설정
More like this
echo 명령어로 줄바꿈(개행) 문자 입력
echo 명령어로 줄바꿈(개행) 문자 입력
More like this
git 에 ssh 로 연결시 verbose mode 로 실행하기
git 에 ssh 로 연결시 verbose mode 로 실행하기
More like this