본문 바로가기

리눅스

일반 사용자 계정으로 root 소유의 파일을 직접 쓰는 방법

반응형

일반 사용자 계정으로 root 소유의 파일을 직접 쓰는 방법

리눅스에서 일반 사용자가 root 소유 파일을 직접 쓸 수는 없지만, sudo를 이용해 tee, cp, mv, editor 등의 일부 명령만 root 권한으로 실행하는 방식으로 "root 파일 쓰기" 작업을 수행할 수 있다.

scp /etc/haproxy/haproxy.cfg ubuntu@192.168.0.112:/etc/haproxy/haproxy.cfg
scp: dest open "/etc/haproxy/haproxy.cfg": Permission denied
scp: failed to upload file /etc/haproxy/haproxy.cfg to /etc/haproxy/haproxy.cfg

scp 자체는 성공적으로 서버에 접속하지만, 파일을 쓰는 권한이 없어서 Permission denied가 발생합니다.

임시 경로로 복사 후 sudo로 이동

일반 사용자 홈 디렉토리 같은 쓰기 가능한 곳에 scp로 복사

scp /etc/haproxy/haproxy.cfg ubuntu@192.168.0.112:~/haproxy.cfg

서버에 접속 후 sudo로 /etc/haproxy/로 이동

ssh ubuntu@192.168.0.112
sudo mv ~/haproxy.cfg /etc/haproxy/haproxy.cfg
sudo chown root:root /etc/haproxy/haproxy.cfg
sudo chmod 644 /etc/haproxy/haproxy.cfg

sudo 권한으로 원격 cat 사용

cat haproxy.cfg | ssh ubuntu@192.168.0.112 "sudo tee /etc/haproxy/haproxy.cfg > /dev/null"
  • tee를 sudo와 함께 사용하여 root 권한으로 쓰기
  • > /dev/null은 출력 억제
  • 파일 소유자는 root가 됩니다.

rsync + sudo

rsync -avz /etc/haproxy/haproxy.cfg ubuntu@192.168.0.112:/tmp/
ssh ubuntu@192.168.0.112 "sudo mv /tmp/haproxy.cfg /etc/haproxy/haproxy.cfg"
728x90

haproxy.cfg 파일 백업

sudo cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak-$(date +%F-%T)

구문 확인

sudo haproxy -c -f /etc/haproxy/haproxy.cfg

HAProxy 재시작

sudo systemctl restart haproxy

haproxy.cfg 파일 백업 및 HAProxy 재시작

ssh ubuntu@192.168.0.112 "sudo cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak-$(date +%F-%T)"
cat /etc/haproxy/haproxy.cfg | ssh ubuntu@192.168.0.112 "sudo tee /etc/haproxy/haproxy.cfg > /dev/null"
ssh ubuntu@192.168.0.112 "sudo haproxy -c -f /etc/haproxy/haproxy.cfg"
ssh ubuntu@192.168.0.112 "sudo systemctl restart haproxy"

sudo tee 사용

sudo를 사용해 root 권한으로 파일을 쓰기

echo "내용" | sudo tee /etc/somefile > /dev/null

원격지에 쓰기

cat localfile | ssh user@host "sudo tee /etc/somefile > /dev/null"
  • sudo는 tee 명령에만 적용되므로 보안적으로 안전
  • 파일 소유권은 root로 유지됨

sudo 권한을 제한적으로 부여(NOPASSWD)

특정 사용자에게 지정한 파일만 root 권한으로 쓸 수 있게 허용

sudo visudo
user ALL = (root) NOPASSWD: /usr/bin/tee /etc/haproxy/haproxy.cfg

특정 사용자는 비밀번호 없이 root 파일 쓰기 가능

cat cfg | sudo tee /etc/haproxy/haproxy.cfg
  • Jenkins, Ansible, CI/CD 배포 자동화에서 많이 사용됨
  • 전체 root 권한을 주지 않아 안전

 

728x90
반응형