1. 程式人生 > >【linux】ftp建立檔案許可權問題

【linux】ftp建立檔案許可權問題

一、問題

有一個這樣的需求,admin為一個Linux為其FTP應用建立的一個有許可權限制的使用者,通過admin使用者可以進行登入FTP服務,登入FTP服務後,建立資料夾,該資料夾的使用者和使用者組都是admin,屬性為755,即只有admin使用者才有寫的許可權,但是,FTP後臺是通過b使用者登入Linux系統執行程式上傳檔案到FTP伺服器,由於FTP伺服器的資料夾都是由admin使用者建立的,且屬性為755,b使用者根本沒有寫的許可權,導致程式上傳檔案失敗。

二、分析

那麼解決問題的方法應該很容易,既然admin使用者建立的目錄預設屬性為755,那麼只要將預設屬性改為775,並將b使用者新增到admin所屬使用者組裡面去,問題就解決了。

三、解決

1、因為系統預設的登入使用者是b,為了方便測試,需要登入到admin使用者,然後建立資料夾看看預設屬性是否改變。通過b使用者su到admin使用者的時候報出了  This account is currently not available.  錯誤。才想到,當時建立admin使用者的時候是使用者的shell是禁止登入的,這裡為了方便測試,通過如下命令開啟shell登入:

   $ sudo usermod -s /bin/bash admin

2、然後修改系統環境變數/etc/profile檔案,設定umask為002 (目錄預設屬性 777-002=775,檔案預設屬性 666-002= 664),source 檔案生效後,切換到admin使用者建立資料夾試試:發現目錄的預設屬性成功改了,變為755了

     drwxrwxr-x 2 admin admin 4.0K Dec  6 22:54 a

3、然後用admin登入FTP,新建一個資料夾看看,發現其許可權還是755

4、由於對FTP並不熟悉,開始並沒有想到FTP那裡去,而是在搗鼓各種Linux使用者組和使用者許可權的設定,嘗試都沒有用。最後靜下來慢慢思考,突然想到,用admin賬戶登入FTP建立的檔案屬性一直是755,這裡登入的只是FTP應用,沒有登入到shell,所以才會不受Linux環境變數中umask的影響,而修改umask後的admin登入shell後建立的檔案屬性是775,這裡登入到了shell,是根據umask的值沒有問題。既然發現了問題,那麼想到FTP應該也會有類似Linux  umask的設定才對,於是找到了FTP的配置檔案,果然發現瞭如下的引數:

5、修改FTP的Umask的值為002,重啟FTP服務,發現問題解決了。

注:這次問題雖小,也比較快解決了,告誡自己!在搗鼓一些應用服務的前,要先充分了解和熟悉這些應用服務的資料配置等,切莫貪快,否則,出現了問題,自己都不知道從何排查。