具有root存取權限,但使用cat指令時權限仍然被拒絕

具有root存取權限,但使用cat指令時權限仍然被拒絕

我試圖按照 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 susudo -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.crtgd_bundle-g2-g1.crt沒有普通用戶讀取的權限

答案2

嘗試以超級使用者登入

sudo -s

然後在開始時不使用 sudo 再次嘗試您的命令。

它不起作用的原因是因為重定向是由 shell 完成的,而不是由 cat 完成的。請參閱此答案以獲取更多資訊:https://askubuntu.com/a/230482

相關內容