Centos의 nginx에 대한 지침에 따라 SSL 인증서(GoDaddy)를 설치하려고 했습니다. GoDaddy에서 다운로드한 zip에는 기본 인증서, 중간 인증서, PEM 파일 등 3개의 파일이 포함되어 있습니다.
Ubuntu VPS에 대한 루트 액세스 권한이 있습니다.
하지만 내가 사용할 때
sudo cat f84e19a2f44c6386.crt gd_bundle-g2-g1.crt >> coolexample.crt
나는 얻다
bash: coolexample.crt: Permission denied.
답변1
실행 되면 sudo cat a
파일ㅏ의 내용은 권한을 가지고 stdout에서 읽고 인쇄되었습니다 sudo
. 텍스트 리디렉션은 쉘에 의해 처리되었으며 파일에 추가되었습니다.비(이후 >>
사용되었습니다). 이 특별한 경우에는 슈퍼유저가 아닌 사람이 파일을 수정할 수 있는 권한이 없는 것 같습니다.
sudo su
, sudo -i
또는 를 사용하여 루트로 쉘을 실행하는 것이 sudo -s
이러한 제한을 극복하는 좋은 아이디어인 것 같지만,하지만그것은 제안되지 않습니다. 쉘이 sudo
권한을 가지고 실행 중이었고 자신도 모르게 루트 쉘을 종료하지 않고 다른 명령이 사용되는 일이 발생할 수 있습니다 . 그리고 해당 명령을 잘못 입력하면 시스템에 심각한 피해를 줄 수 있습니다.
이러한 경우 cat
의 출력은 파이프로 연결될 수 있으며tee
사용할 수 있습니다. 표준 입력 및 출력의 입력을 파일 및 표준 출력으로 읽어들이는 유틸리티입니다. 파일을 추가하고 싶기 때문에 -a
옵션을 사용할 수 있습니다. 따라서 명령은 다음과 같습니다.
sudo cat f84e19a2f44c6386.crt gd_bundle-g2-g1.crt | sudo tee -a coolexample.crt
나는 그것을 가정했다f84e19a2f44c6386.crt그리고gd_bundle-g2-g1.crt일반 사용자가 읽을 수 있는 권한이 없습니다..
답변2
다음을 사용하여 슈퍼유저로 로그인해 보세요.
sudo -s
그런 다음 처음에는 sudo 없이 명령을 다시 시도하세요.
작동하지 않는 이유는 리디렉션이 고양이가 아닌 쉘에 의해 수행되기 때문입니다. 자세한 내용은 이 답변을 참조하세요.https://askubuntu.com/a/230482