使用 SFTP 上傳的檔案沒有正確的權限

使用 SFTP 上傳的檔案沒有正確的權限

在嘗試使用 SFTP 將檔案上傳到伺服器時,我遇到了一個奇怪的問題。

當為了獲得最大安全性,我使用禁用 shell 的使用者(“/bin/false”)上傳檔案時,我得到上傳檔案的模式 640,但這不是我想要的(本機檔案的模式為 664)。

然而,當我為同一用戶啟用 shell“/bin/bash”時,我得到了正確的模式,664。

我不確定這裡發生了什麼,為什麼禁用 shell 會改變上傳檔案的模式?

我的 sshd 配置:

Port 22
Protocol 2
AcceptEnv LANG LC_*
UsePAM yes
UseDNS no
Subsystem sftp internal-sftp

答案1

由於沒有有效的 shell,系統預設 umask 不會被應用/使用。

您可以做的是將您的用戶放入一個群組中,並透過檔案強制執行一些操作/etc/sshd_config,包括 umask -

Match Group uploadusers
  ForceCommand internal-sftp -u 0002

如果使用者是該群組的成員,該-u 0002選項會為內部 sftp 程式/子系統以及透過它上傳的任何檔案設定 umask uploadusers

就我個人而言,我也是chroot用戶,以便他們只能訪問他們的目錄 - 檢查該ChrootDirectory選項,因為它適用於文件Match Group中的指令sshd_config

答案2

背後的原因是當 shell 參與時,就會應用 UMASK。在你的情況下,它很可能(對於 bash),應用在 /etc/bashrc 內部(假設有一些現代的 Red Hat/Centos 7 版本),這些檔案的位置可能會有所不同。當不使用任何東西時,也許檢查 /etc/profile 中的 UMASK 設定。

相關內容