1、安裝samba軟件並配置開機自啓動
apt-get install samba samba-common
systemctl enable smbd
2、創建sumba主文件夾
mkdir /opt/data/samba
chmod -R 777 /opt/data/samba
3、添加用戶,必須先有對應的系統用戶,才能添加到samba用戶,用useradd添加的用戶默認無法從shell登錄系統,不會創建用戶目錄,比較安全。
useradd -s /sbin/nologin -r public
smbpasswd -a public
4、添加組,此處組名叫samba,經測試,用戶新建文件權限不管怎麼設置other用戶都沒有寫權限(你設置create mode=0777,結果新創建文件就是0775),很奇怪的0755,然後其它用戶上傳的文件可以刪除,不能修改。半天都沒解決,心累,無奈,用組用戶把吧。 我的需求也簡單,管理員全部權限,其它所有用戶public目錄有全部權限,用戶共享和交換文件,share文件夾管理員可寫,其它用戶只讀。
groupadd samba
# 把public用戶添加到samba組
usermod -a -G samba public
# 把public用戶所屬組改爲samba
usermod -g samba public
4、create mode=0777,結果新創建文件就是0775,然後其它用戶上傳的文件可以刪除,不能修改。最後發現,write list 裏的用戶不能修改別人上傳的文件,但admin users可以,
經過各種嘗試,配置說明如下:
# 所有做過 smbpasswd 的用戶都可以登錄,可以讀取,不能修改、刪除、改名(即便是自己創建的文件[有權限的文件]也不行)
public = no
browseable=yes
# 所有做過 smbpasswd 的用戶都可以登錄,可以讀取;user1用戶可以添加、改名、刪除所有文件,但修改其它用戶的文件內容無法保存
public = no browseable=yes write list = user1
#所有做過 smbpasswd 的用戶都可以登錄,可以讀取;user1用戶也是隻讀權限,admin users 配置不起作用
public = no browseable=yes admin users = user1
# 只有user2可以登錄,可以讀取全部文件,不能修改、刪除、改名(即便是自己創建的文件也不行)
public = no browseable=yes valid users = user2
# 所有做過 smbpasswd 的用戶都可以登錄,可以讀取,可以添加、改名、刪除所有文件,但修改其它用戶的文件內容無法保存。writable完全覆蓋browseable
public = no browseable=yes writable=yes # 等同於 public = no writable=yes
# 等同於
public = no
writable=yes
browseable=no
# 等同於
public = no
browseable=no
writable=yes
# 只有user2可以登錄,可以讀取,可以添加、改名、刪除所有文件,但修改其它用戶的文件內容無法保存
public = no writable=yes valid users = user2
# writable與write list一起,write list不起作用
public = no writable=yes write list = user1
# 等同於
public = no
writable=yes
# user1擁有全部權限,其它用戶沒有修改非所屬自己的文件的權限(修改萬沒法保存),其它權限全有 public = no writable=yes admin users = user1
----------------------------
browseable = 可讀
writable = 可寫(但不能修改其它用戶的文件,深層次原因是create mode/mask 配置777,結果上傳的文件是775,chmod改爲777後可以修改)
----------------------------
valid users = 是否可以登錄
write list = 是否可以寫文件
admin users = 是否可以修改別人的文件(管理權限)
-----------------------------
5、修改配置文件
vim /etc/samba/smb.conf
找到 map to guest = bad user 並註釋,不然後續訪問提示:
找到 usershare allow guests = yes ,將yes改爲no
[global] 區塊的最後加這三句,支持軟鏈接
follow symlinks = yes wide links = yes unix extensions = no
最終配置:# 所有人對所有文件都有讀寫權限(不能修改他人文件內容)
[public] comment = public path = /opt/data/samba/public create mode = 0666 directory mode = 0777 public = no writable = yes # 只讀共享,所有人都只讀 [share] comment = share path = /opt/data/samba/share valid user = huiyun create mode = 0777 directory mode = 0777 public = no browseable = true # 科研數據,user1可寫,user2只讀 [keyan] comment = keyan path = /opt/data/samba/keyan create mode = 0666 directory mode = 0777 public = no valid users = user1,user2 admin users = user1
# 上級目錄,管理權限,admin管理(valid users 必須加,不然所有用戶都能登錄,都有writable權限) [manage] comment = manage path = /opt/data/samba create mode = 0666 directory mode = 0777 public = no admin users = admin valid users = admin
6、重啓服務
systemctl restart smbd
7、win10映射
輸入用戶名,密碼完成映射。