場景需求:
安裝了Ubuntu在虛擬機上,但是代碼編輯或者其它更多的操作的時候,還是習慣在windows下進行。如果windows下編輯完再上傳到服務器,再編譯執行,就太繁瑣了。一次兩次還好說,這編譯級別上千次的,每次也需要上傳的話,無疑是個人間悲劇。但是有了Samba,猶如雪中送炭啊。
安裝
Ubuntu下安裝比較簡單,執行
# install samba samba-common
即可。當然也可以直接去官網(https://www.samba.org/)下載安裝。
配置
1. 新建共享的目錄:
# mkdir /home/用戶名/share # chmod 777 /home/用戶名/share
2. 修改配置smb.conf
修改前最好先備份smb.conf文件。
# cp /etc/samba/smb.conf /etc/samba/smb.conf_bak # vim /etc/samba/smb.conf
2.1 取消 # security = user 的注釋,並在后面一行加上 username map = /etc/samba/smbusers
security = user
username map = /etc/samba/smbusers
2.2 在文件的最后面加上以下配置
[Share] comment = Shared Folder with username and password path = /home/用戶名/share available = yes browseable = yes public = yes writable = yes valid users = [訪問用戶名(系統的用戶)] create mask = 0700 #遠程創建目錄、文件默認權限 directory mask = 0700 #遠程訪問目錄權限 force user = nobody #目錄所屬用戶 force group = nogroup #目錄所屬用戶組
我的習慣是指給相應的權限給相應的賬號,譬如我本身用的是weiyg賬號,我會如下配置,這樣的話,windows下新建、修改、訪問的權限,都會與我weiyg的權限保持一致。這樣比較方便。當然,如果本身整個系統都是一個人維護,那就沒啥所謂了。
[share] path = /home/weiyg/share available = yes browseable = yes public = yes writable = yes valid users = weiyg create mask = 0764 directory mask =0777 force user =weiyg force group = weiyg
2.3 修改[global]中的workgroup = WORKGROWP ,並添加編碼的設置,如下:
workgroup = WORKGROUP display charset = UTF-8 unix charset = UTF-8 dos charset = cp936
上面編碼設置是為了防止中文目錄、文件名亂碼的情況。
3. 添加訪問用戶(系統用戶)
# useradd [用戶名]
對於我的設置來說,其實我是直接用我本身的用戶權限訪問的。系統本身就存在了weiyg用戶了,這時候不需要執行這一步了。如果如上執行的話,過沒有設置密碼的話,這個用戶就只能從遠程訪問,不能從本機登錄。
4. 添加遠程訪問用戶(samba的用戶)
# smbpasswd -a [遠程訪問用戶名]
執行以上命令,並設置密碼。該用戶是windows遠程訪問的用戶,並不是系統的用戶。當然為了方便,我自己設置的用戶名其實是跟我系統用戶一樣的。即
# smbpasswd -a weiyg
如果要刪除遠程訪問用戶,執行如下命令。
# smbpasswd -x [遠程訪問用戶名]
新建一個/etc/samba/smbusers文件,並保存下面代碼:
[訪問用戶名] = "network username"
我是這么設置的 weiyg = "weiyg" (不知道對不對,反正最后可以訪問)
啟動
# /etc/init.d/sambd start
# /etc/init.d/sambd restart
windows遠程訪問
在windows文件管理器上點擊【映射網絡驅動器】並輸入ip地址和用戶名密碼,即可訪問到linux下的文件。


個人理解原理
windows下訪問用的其實是Samba的賬號,然后windows與Samba交互,本質上對文件的操作,其實還是Samba與linux文件交互的系統用戶。所以為了方便,我將遠程訪問用戶和系統用戶設置成一樣的。


以上個人理解,可能存在出入!