如何在 Linux 上安裝Samba
本文轉(zhuǎn)載自微信公眾號(hào)「Linux開發(fā)那些事兒」,作者LinuxThings。轉(zhuǎn)載本文請(qǐng)聯(lián)系Linux開發(fā)那些事兒公眾號(hào)。
Linux 開發(fā),通常是在 Windows 上編碼,再把文件傳到 Linux 上進(jìn)行編譯,當(dāng)項(xiàng)目稍微有點(diǎn)兒規(guī)?;蛘叨鄠€(gè)人同時(shí)開發(fā)時(shí),整個(gè)過程會(huì)變得非常的繁瑣了,如果有一種工具能實(shí)現(xiàn),編寫的代碼實(shí)時(shí)的同步到 Linux 上就好了。
samba 就能很好的解決這個(gè)問題,它 是一個(gè)免費(fèi)的開源軟件,由澳大利亞國(guó)立大學(xué)的一名學(xué)生開發(fā)的,它允許在 Windows 和 Linux 系統(tǒng)之間簡(jiǎn)單輕松地共享文件。它能為選定的 Linux 目錄(包括所有子目錄)創(chuàng)建網(wǎng)絡(luò)共享,使得 Windows 用戶可以像訪問普通 Windows 下的文件夾那樣來通過網(wǎng)絡(luò)訪問這些 Linux 目錄,下面將詳細(xì)介紹 samba 服務(wù)器的安裝以及配置過程
安裝
使用下面的命令進(jìn)行安裝
- yum install samba samba-common samba-client
安裝完成之后, 執(zhí)行 smbd -V 命令,輸出 samba 服務(wù)器的版本信息,表示安裝成功
- [root@cghost21 ~]# smbd -V
- Version 4.10.16
服務(wù)器配置
samba 服務(wù)器安裝完成之后,需要調(diào)整服務(wù)器的一些配置參數(shù),配置文件默認(rèn)位于 /etc/samba/smb.conf,在修改之前,可以先把原始的配置文件備份下
- [root@cghost21 ~]# cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
如果 smb.conf 的一行以 "#" 或 ";" 開頭, 表示這一行是注釋
- 新建 Linux 用戶
添加新用戶,并設(shè)置密碼
- [root@cghost21 ~]# useradd smbusr1 -s /sbin/nologin
- [root@cghost21 ~]# passwd smbusr1
注意:此處添加的用戶 smbusr1 只用作 創(chuàng)建 samba 登錄用戶的用途,因?yàn)?新建 samba 用戶的時(shí)候,需要保證相同名字的 Linux 用戶是存在并且設(shè)置了密碼,否則,新建 samba 用戶時(shí)會(huì)失敗
由于用戶 smbusr1 只是用于新建 samba 用戶,所以,新建時(shí)加上了 -s /sbin/nologin ,表示禁止此用戶登錄 Linux 系統(tǒng),這么做也是為了安全性考慮
- 新建 samba 用戶
執(zhí)行下面的命令,新建 samba 用戶 smbusr1 ,并設(shè)置密碼
- [root@cghost21 home]# smbpasswd -a smbusr1
- New SMB password:
- Retype new SMB password:
- Added user smbusr1.
- 添加用戶共享目錄
為 samba 用戶 smbusr1 新建共享目錄,并賦予目錄權(quán)限
- [root@cghost21 home]# mkdir -p /samba/smbusr1
- [root@cghost21 home]# chown -R smbusr1:smbusr1 /samba/smbusr1
- 配置 smb.conf
samba 服務(wù)器可配置項(xiàng)非常多,這里只介紹一些常用的配置項(xiàng),更多的配置項(xiàng)請(qǐng)參考 smb.conf.org
- #全局配置
- [global]
- # samba 工作組
- workgroup = mygroup
- # 服務(wù)器的說明字符串,%V 表示服務(wù)器的版本號(hào)
- server string=smb server %V
- # 安全模式,user 表示需要身份驗(yàn)證
- security = user
- # samba 服務(wù)器名, 最長(zhǎng)15個(gè)字符
- netbios name = myserver
- #拒絕非法用戶登錄
- map to guest = bad user
- # samba 服務(wù)器日志
- log file = /var/log/samba/smblog
- # 服務(wù)器日志最大大小,單位:KB
- # 服務(wù)器 會(huì)定期檢查大小,如果超過,它將重命名文件,添加 .old 擴(kuò)展名
- # 為 0 表示沒有限制
- max log size = 10000
- [smbusr1]
- # smbusr1 用戶的共享的目錄
- path=/samba/smbusr1
- # 禁止匿名訪問
- public=no
- # 是否可寫
- writable=yes
- # 目錄可寫的用戶組
- write list=@smbusr1
- # 訪問目錄的用戶
- valid users=smbusr1
修改完配置后,執(zhí)行 testparm 命令來檢查 smb.conf 的語法錯(cuò)誤
- [root@cghost21 home]# testparm
- Load smb config files from /etc/samba/smb.conf
- Loaded services file OK.
- Server role: ROLE_STANDALONE
- Press enter to see a dump of your service definitions
從上面的結(jié)果可以看出,smb.conf 沒有語法錯(cuò)誤
- 設(shè)置防火墻
samba 服務(wù)器啟動(dòng)會(huì)后,默認(rèn)會(huì)監(jiān)聽 139 和 445 端口,可以通過下面的命令查看 samba 服務(wù)器偵聽的端口
- [root@cghost21 home]# netstat -an4p | grep smbd | grep LISTEN
- tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 23370/smbd
- tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 23370/smbd
如果 samba 服務(wù)器所在的機(jī)器上開啟了防火墻服務(wù),則需要開放 139 和 445 端口,然后重啟防火墻服務(wù)
- [root@localhost ~]# firewall-cmd --zone=public --add-port=139/tcp --permanent
- success
- [root@localhost ~]# firewall-cmd --zone=public --add-port=445/tcp --permanent
- success
- [root@localhost ~]# systemctl restart firewalld
- 啟動(dòng) samba 服務(wù)器
經(jīng)過上面的步驟,最后啟動(dòng) samba 服務(wù)器
[root@cghost21 home]# systemctl start smb
客戶端配置
samba 客戶端配置起來也很簡(jiǎn)單,從 Linux 映射一個(gè)網(wǎng)絡(luò)驅(qū)動(dòng)器 到 Windows,外表看起來 Windows 中多了一塊磁盤,只不過這塊磁盤是對(duì)應(yīng)網(wǎng)絡(luò)中 Linux 機(jī)器中的一個(gè)目錄,往這塊磁盤中寫入數(shù)據(jù),相當(dāng)于往 Linux 目錄中寫入數(shù)據(jù)
1、打開我的電腦,點(diǎn)擊映射網(wǎng)絡(luò)驅(qū)動(dòng)器,然后輸入Linux上共享文件夾的地址,點(diǎn)擊完成,具體如下圖所示
2、輸入前面 samba 用戶名和密碼 ( 前面的步驟有添加過 samba 用戶名和密碼 ),點(diǎn)擊確定,具體如下圖
3、samba 服務(wù)器驗(yàn)證用戶名和密碼成功之后,Windows 會(huì)進(jìn)入共享文件夾,它在 Windows 上看起來像一個(gè)硬盤的盤符一樣,請(qǐng)看下圖
至此,Windows 映射 Linux 機(jī)器上共享目錄就完成了,接下來,就能以 Windows 操作的方式向網(wǎng)絡(luò)驅(qū)動(dòng)器中寫入數(shù)據(jù)了,所寫入的數(shù)據(jù)會(huì)實(shí)時(shí)同步到 Linux 機(jī)器的共享目錄 /samba/smbusr1 中
常見問題
在配置 samba 服務(wù)器以及客戶端的過程中,或多或少會(huì)出現(xiàn)一些問題,下面列出了幾種常見的錯(cuò)誤
- 錯(cuò)誤1
檢查下 smb.conf 中是否沒有配置對(duì)應(yīng)用戶的訪問配置,或者是對(duì)應(yīng)的 samba 用戶不存在
- 錯(cuò)誤2
Windows 本地在同一個(gè)遠(yuǎn)程機(jī)器上已經(jīng)映射了網(wǎng)絡(luò)驅(qū)動(dòng)器,需要先斷開之前的,才能映射新的
- 錯(cuò)誤3
共享目錄權(quán)限設(shè)置問題,需修改共享目錄 /samba/smbusr2 的權(quán)限
小結(jié)
Linux 服務(wù)器通常沒有圖形界面,使用起來不如 Windows 簡(jiǎn)單直觀,samba 服務(wù)器實(shí)現(xiàn)了 將 Linux 命令行轉(zhuǎn)化成 Windows 圖形界面的操作,大大方便了 Linux 的開發(fā),提高了開發(fā)效率,搭配上版本管理工具 SVN ,samba 還非常適合個(gè)人學(xué)習(xí)以及小的開發(fā)團(tuán)隊(duì)之間的協(xié)作