CentOS 8中Smaba服務的匿名訪問以及許可權控制
開心一刻
高考前:保護動物
高考時:國家重點保護動物
高考後:四害!
寫在前面
上一篇博文已經介紹了samba服務的安裝與配置以及使用賬戶密碼訪問檔案共享服務,這一篇博文主要介紹samba服務的匿名訪問以及許可權設定,這裡我主要實現類似學生交實驗作業的場景,即只能上傳檔案,不能下載刪除、修改、檢視已經上傳的檔案,所有的許可權只能由samba真實賬戶操作。
Samba服務配置(匿名訪問)
這裡是我自己的配置檔案內容,我在修改的時候先用cp命令做了一下備份。
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
這裡是我的配置檔案資訊:
[global] workgroup = SAMBA security = user map to guest = bad user passdb backend = tdbsam printing = cups printcap name = cups load printers = yes cups options = raw [home] comment = Do not arbitrarily modify the file path = /home/share public = yes inherit owner = yes create mask = 0600 directory mask = 0777 writable = yes
匿名訪問必須要有的引數:map to guest = bad user、public = yes
許可權控制必須要有的引數:inherit owner = yes、create mask = 0600、directory mask = 0777、writable = yes
幾個重要的引數說明:
引數 | 作用 |
---|---|
map to guest = bad user | 匿名使用者最主要就是新增這行,可以實現匿名訪問,而且匿名訪問時預設會被對映為nobody使用者 |
guest account = nobody | 如果匿名使用者不想對映為nobody,可以在這裡修改,不過必須是系統已存在的使用者 |
security = user | 安全驗證的方式,就使用預設的user即可,較新的samba服務將share和server棄用了,具體可以檢視/etc/samba/smb.conf.example的說明 |
public = yes | 是否公開(指明該共享資源是否能給遊客帳號訪問) |
guest ok = yes | 與public意思相同 |
inherit owner = yes | 上傳的檔案繼承父目錄的所有者, 而不是使用登入的賬號名。 |
create mask = 0600 | 建立或上傳檔案時檔案的許可權 |
directory mask = 0777 | 建立或上傳目錄時目錄將被賦予的許可權 |
writable = yes | 是否可上傳檔案 |
幾個重要引數解釋:
inherit owner = yes
,以我設定的為例,使用者上傳檔案時會自動繼承/home/share目錄的所屬主,而不是nobody
修改好後重啟samba服務,可以使用testparm
命令檢查samba配置檔案內容是否正確。
create mask = 0600
,遠端訪問時,建立的檔案許可權為0600,即只有檔案所屬主才能讀取、更改檔案內容,而檔案所屬主為share的所屬主,所以nobody使用者無法檢視和修改檔案內容
directory mask = 0777
,遠端訪問時,建立的目錄許可權為0777,因為目錄要有rwx許可權才能檢視目錄中的檔案以及建立檔案刪除檔案,所以這裡設定的許可權是777,其實保證最後一個是7就可以,這樣nobody使用者就是可以檢視資料夾中的內容的。
sudo systemctl restart smb
sudo systemctl enable smb #第一次使用可以將其加入到開機啟動項,讓其開機自動啟動。
防火牆開放samba服務和修改Selinux域策略可參考上一篇博文
修改Selinux安全上下文策略
這一步我在實際測試的時候發現不是必須的,因為我的共享目錄是在家目錄下的,我已經將Selinux域策略開啟,samba已經能夠訪問家目錄下的檔案了。但還是把修改Selinux安全上下文策略的方法寫出來。
在root使用者下執行,否則在命令前面加上sudo
mkdir /home/share
chmod 777 /home/share
chmod g+s /home/share
semanage fcontext -at samba_share_t /home/share
restorecon -Rv /home/share
chmod 777 /home/share
這條命令是為了讓nobody使用者可以讀取share目錄的內容以及在share目錄中上傳或建立檔案。
chmod g+s /home/share
這條命令是為了在share目錄中建立的檔案都自動繼承share的所屬組,而不是nobody。這些內容涉及linux中檔案的一般許可權、特殊許可權和隱藏許可權,不過我這裡沒有用到隱藏許可權。
成功設定後,可以找一臺同一個區域網中的電腦,然後使用win+R組合鍵,在執行框中輸入\\samba伺服器ip地址
,然後回車,如果設定沒有問題,就會彈出一個要求輸入賬號密碼的對話方塊,但是對話方塊中需要隨便輸入一些字元,但是不能為空。
結語
這篇博文介紹在CentOS8中配置samba服務程式,實現samba的匿名訪問以及許可權控制,實現遠端訪問samba服務程式是,只能上傳檔案,而不能下載、修改和刪除。其他linux發行版大同小異,若是嫌麻煩,甚至可以直接關掉防火前和Selinux,只需要將samba配置檔案設定好即可。_
文中都是我個人的理解,如有錯誤的地方歡迎下方評論告訴我,我及時更正,大家共同進步