1. 程式人生 > 其它 >CentOS 8中Smaba服務的匿名訪問以及許可權控制

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配置檔案設定好即可。_

文中都是我個人的理解,如有錯誤的地方歡迎下方評論告訴我,我及時更正,大家共同進步