我試圖按照 Centos 上 nginx 的說明安裝 SSL 憑證 (GoDaddy)。我從 GoDaddy 下載的 zip 包含 3 個檔案 - 一個主憑證、一個中間憑證和一個 PEM 檔案。
我擁有 Ubuntu VPS 的 root 存取權。
但是當我使用
sudo cat f84e19a2f44c6386.crt gd_bundle-g2-g1.crt >> coolexample.crt
我明白了
bash: coolexample.crt: Permission denied.
答案1
sudo cat a
運行時,文件A的內容以sudo
特權讀取並印在標準輸出上。文字的重定向由 shell 處理,並將附加到文件中乙(自從>>
使用以來)。在這種特殊情況下,非超級使用者似乎沒有修改該檔案的權限。
儘管使用 root 以 root 身份運行 shell sudo su
,sudo -i
或者sudo -s
似乎是克服此限制的好主意,但不建議這樣做。可能會發生 shell 以sudo
特權運行的情況,並且在不退出 root shell 的情況下不知不覺地使用了其他命令。如果該指令輸入錯誤,可能會對系統造成嚴重損害。
在這種情況下,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 再次嘗試您的命令。
它不起作用的原因是因為重定向是由 shell 完成的,而不是由 cat 完成的。請參閱此答案以獲取更多資訊:https://askubuntu.com/a/230482