Permissions

/tmp 的正確權限是什麼?我無意中將它全部公開遞歸

  • March 9, 2020

我創建了一個非常短暫的臨時目錄,我想在一些使用者之間共享幾個小時:/some/path/tmp

不幸的是,我已經啟動sudo chown 777 -R /tmp而不是sudo chown 777 -R tmp,所以我的/tmp文件現在完全公開了。

現在完全公開,是否存在安全問題?我應該將其更改回更安全的設置嗎?什麼是正確的權限/tmp

正常設置為/tmp1777,ls顯示為drwxrwxrwt. 那就是:全開,除了只有文件的所有者可以刪除它(這就是這個額外的t位對目錄的意義)。

使用模式 777的問題/tmp是另一個使用者可以刪除您創建的文件並替換他們選擇的內容。

如果您/tmp是 tmpfs 文件系統,則重新啟動將恢復所有內容。否則,執行chmod 1777 /tmp.

此外,許多文件/tmp需要保密。但是,至少有一個目錄必須是世界可讀的:/tmp/.X11-unix,並且可能還有一些其他類似的目錄(/tmp/.XIM-unix等)。以下命令應該主要設置正確:

chmod 1777 /tmp
find /tmp -mindepth 1 -name '.*-unix' -exec chmod 1777 {} + -prune -o -exec chmod go-rwx {} +

即,將所有文件和目錄設為私有(刪除組和其他的所有權限),但讓所有人都可以訪問 X11 套接字。對這些套接字的訪問控制由伺服器執行,而不是文件權限。可能還有其他需要公開的套接字。執行find /tmp -type s -user 0以發現您可能需要使世界可訪問的根擁有的套接字。也可能有其他系統使用者擁有的套接字(例如與系統匯流排通信);探索find /tmp -type s ! -user $UID$UID您的使用者 ID 在哪裡)。

引用自:https://unix.stackexchange.com/questions/71622