SFTP에서 권한이 거부되는 이유
SFTP는 로그인에 사용한 계정으로 실행되며 sudo에 해당하는 기능이 없습니다. /etc에 있는 대부분의 파일은 root 소유이므로 일반 계정은 그중 일부를 읽을 수 있지만 어느 파일에도 쓸 수 없습니다. 이는 정상 동작이며 권한을 완화해서 해결할 문제가 아닙니다.
피해야 할 작업
설정 파일에 chmod 777을 실행하거나 /etc 파일의 소유자를 자신의 계정으로 바꾸지 마세요. 한 번 편집하려고 root 비밀번호 로그인을 허용해서도 안 됩니다. 일부 서비스는 권한이 지나치게 느슨한 파일을 거부하며, 이러한 변경은 편집이 끝난 뒤에도 오랫동안 서버의 보안을 약화합니다.
터미널에서 sudoedit 사용
sudoedit는 파일을 임시 위치로 복사하고 자신의 계정으로 편집기에서 연 다음 저장한 뒤에만 원래 위치에 다시 기록합니다. 편집기 자체는 root로 실행되지 않습니다.
sudoedit /etc/nginx/nginx.conf사본을 업로드한 뒤 설치
로컬 편집기를 선호한다면 파일을 자신의 홈 디렉터리에 업로드한 뒤 sudo로 설치하세요. 먼저 원본을 백업하되 설정을 포함하는 지시문이 읽지 않는 위치에 보관하세요. install 명령은 소유자와 권한 모드를 설정하고, SELinux를 사용하는 시스템에서는 restorecon이 올바른 컨텍스트를 설정합니다. 모든 파일이 root와 644를 사용하는 것은 아니므로 이 값을 적용하기 전에 원본의 소유자와 권한 모드를 확인하세요.
stat -c '%U %G %a' /etc/nginx/nginx.conf
sudo cp -a /etc/nginx/nginx.conf /root/nginx.conf.bak
sudo install -o root -g root -m 644 ~/nginx.conf.new /etc/nginx/nginx.conf
sudo restorecon -v /etc/nginx/nginx.conf적용하기 전에 검증
구문이 잘못된 파일은 다음 재시작 시 서비스가 중단되는 원인이 될 수 있습니다. 서비스를 다시 로드하기 전에 해당 서비스의 검사 명령을 실행하세요. SSH 설정을 변경할 때는 현재 세션을 열어 둔 채 두 번째 창에서 새 로그인을 테스트하세요.
sudo nginx -t
sudo sshd -t
sudo visudo -cf /etc/sudoers.d/exampleCH-J Server Manager에서 sudo로 편집
SSH 계정이 파일을 읽을 수 없으면 File Manager는 sudo로 여는 옵션을 제공하고 저장할 때 sudo가 필요하다고 경고합니다. 저장 시 데이터는 해당 계정의 비공개 임시 디렉터리로 전송되며, 검증 후 sudo가 소유자, 권한, ACL 및 SELinux 컨텍스트를 유지하면서 대상 위치로 옮깁니다. 선택적으로 백업을 사용하면 교체 전에 원본 사본을 보관합니다. 비밀번호는 서버의 sudo에만 전달되며 디스크나 로그에 저장되지 않습니다. sudo 정책에서 터미널을 요구하는 경우(requiretty) 앱은 이를 우회하지 않습니다. 앱은 파일 내용을 검증하지 않으므로 서비스 검사는 직접 실행하세요.