1背景
轉Linux剛剛1年,vim操作還不能應對工程代碼,之前一直都是Gnome桌面 + Clion 作開發環境,無奈在服務器上沒有這樣的環境,
看同事是(Windows)Source Insight + WinSCP + Linux 開發,來回同步文件有點麻煩,所以想嘗試搭個Samba服務器做共享文件。
不過希望以后還是要轉到vim上來。
2環境
CentOS系統
[root@min-base ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core)
Samba服務器
[root@min-base ~]# rpm -qi samba Name : samba Epoch : 0 Version : 4.4.4 Release : 9.el7 Architecture: x86_64 Install Date: Sun 18 Dec 2016 11:59:56 PM CST Group : System Environment/Daemons Size : 1869290 License : GPLv3+ and LGPLv3+ Signature : RSA/SHA256, Mon 21 Nov 2016 04:38:30 AM CST, Key ID 24c6a8a7f4a80eb5 Source RPM : samba-4.4.4-9.el7.src.rpm Build Date : Mon 07 Nov 2016 06:31:03 PM CST Build Host : worker1.bsys.centos.org Relocations : (not relocatable) Packager : CentOS BuildSystem <http://bugs.centos.org> Vendor : CentOS URL : http://www.samba.org/ Summary : Server and Client software to interoperate with Windows machines Description : Samba is the standard Windows interoperability suite of programs for Linux and Unix.
3安裝
[root@base ~]# yum -y install samba samba-client
4配置
進入samba配置目錄
[root@base ~]# cd /etc/samba/
備份smb.conf
[root@base samba]# mv smb.conf smb.conf.origin
新建smb.conf
[root@base samba]# vim smb.conf
內容如下,保存並退出
[global] workgroup = WORKGROUP server string = Ted Samba Server %v netbios name = TedSamba security = user map to guest = Bad User passdb backend = tdbsam [FileShare] comment = share some files path = /smb/fileshare public = yes writeable = yes
create mask = 0644
directory mask = 0755 [WebDev] comment = project development directory path = /smb/webdev valid users = ted write list = ted printable = no create mask = 0644 directory mask = 0755
注釋:
workgroup 項應與 Windows 主機保持一致,這里是WORKGROUP
security、map to guest項設置為允許匿名用戶訪問
再下面有兩個section,實際為兩個目錄,section名就是目錄名(映射到Windows上可以看見)。
第一個目錄名是FileShare,匿名、公開、可寫
第二個目錄嗎是WebDev,限定ted用戶訪問
默認文件屬性644/755(不然的話,Windows上在這個目錄下新建的文件會有“可執行”屬性)
創建用戶
[root@base samba]# groupadd co3 [root@base samba]# useradd ted -g co3 -s /sbin/nologin [root@base samba]# smbpasswd -a ted New SMB password: Retype new SMB password: Added user ted. [root@base samba]#
注意這里smbpasswd將使用系統用戶。設置密碼為1
創建共享目錄
[root@base samba]# mkdir -p /smb/{fileshare,webdev} [root@base samba]# chown nobody:nobody /smb/fileshare/ [root@base samba]# chown ted:co3 /smb/webdev/
注意設置屬性,不然訪問不了。
啟動Samba服務,設置開機啟動
[root@base samba]# systemctl start smb [root@base samba]# systemctl enable smb Created symlink from /etc/systemd/system/multi-user.target.wants/smb.service to /usr/lib/systemd/system/smb.service. [root@base samba]#
開放端口
[root@base samba]# firewall-cmd --permanent --add-port=139/tcp success [root@base samba]# firewall-cmd --permanent --add-port=445/tcp success
[root@base samba]# systemctl restart firewalld
[root@base samba]#
或者直接把防火牆關了也行。
5使用
本機測試
可以使用testparm測試samba配置是否正確
[root@base samba]# testparm Load smb config files from /etc/samba/smb.conf rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384) Processing section "[FileShare]" Processing section "[WebDev]" Loaded services file OK. Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions # Global parameters [global] netbios name = TEDSAMBA server string = Ted Samba Server %v map to guest = Bad User security = USER idmap config * : backend = tdb [FileShare] comment = share some files path = /smb/fileshare guest ok = Yes read only = No [WebDev] comment = project development directory path = /smb/webdev create mask = 0644
valid users = ted write list = ted [root@base samba]#
root用戶的話,不用密碼可直接查看samba服務器情況
[root@base samba]# smbclient -L localhost Enter root's password: Domain=[WORKGROUP] OS=[Windows 6.1] Server=[Samba 4.4.4] Sharename Type Comment --------- ---- ------- FileShare Disk share some files WebDev Disk project development directory IPC$ IPC IPC Service (Ted Samba Server 4.4.4) Domain=[WORKGROUP] OS=[Windows 6.1] Server=[Samba 4.4.4] Server Comment --------- ------- Workgroup Master --------- ------- [root@base samba]#
Linux訪問
Samba服務端配置
[root@min-base webdev]# vim /etc/samba/smb.conf
內容如下
[global] workgroup = WORKGROUP server string = Samba Server Version %v netbios name = MYSERVER security = user passdb backend = tdbsam [tvms] path = /root/tvms-test public = yes valid user = root writeable = yes printable = no create mask = 0644 directory mask = 0755
在局域網內另外一台機器上,
掛載目錄
安裝cifs
[root@min-base ~]# yum -y install cifs-utils
掛載smb目錄
[root@min-base ~]# mkdir /mnt/tvms [root@min-base ~]# mount //192.168.118.133/tvms /mnt/tvms Password for root@//192.168.118.133/tvms: * [root@min-base ~]# df -Th Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/centos-root xfs 18G 988M 17G 6% / devtmpfs devtmpfs 479M 0 479M 0% /dev tmpfs tmpfs 489M 0 489M 0% /dev/shm tmpfs tmpfs 489M 6.7M 483M 2% /run tmpfs tmpfs 489M 0 489M 0% /sys/fs/cgroup /dev/sda1 xfs 497M 117M 381M 24% /boot tmpfs tmpfs 98M 0 98M 0% /run/user/0 //192.168.118.133/tvms cifs 18G 8.5G 9.1G 49% /mnt/tvms [root@min-base ~]# ll /mnt/tvms/ total 3952 drwxr-xr-x. 10 root root 0 Dec 21 03:40 suricata-3.1.2 -rw-r--r--. 1 root root 4042824 Dec 21 03:22 suricata-3.1.2.zip [root@min-base ~]#
輸入密碼:1
卸載目錄
[root@min-base mnt]# umount /mnt/tvms/
如果出現
umount: /mnt/tvms: target is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1))
可以使用fuser卸載
[root@min-base ~]# yum -y install psmisc [root@min-base ~]# fuser -m -v -i -k /mnt/tvms USER PID ACCESS COMMAND /mnt/tvms: root kernel mount /mnt/tvms root 2760 ..c.. bash Kill process 2760 ? (y/N) y Connection closed by foreign host. Disconnected from remote host(192.168.118.132) at 19:46:12. Type `help' to learn how to use Xshell prompt. [c:\~]$ Connecting to 192.168.118.132:22... Connection established. To escape to local shell, press 'Ctrl+Alt+]'. WARNING! The remote SSH server rejected X11 forwarding request. Last login: Wed Dec 21 03:27:53 2016 from 192.168.118.1 [root@min-base ~]# umount /mnt [root@min-base ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/centos-root 18307072 1011444 17295628 6% / devtmpfs 490236 0 490236 0% /dev tmpfs 500680 0 500680 0% /dev/shm tmpfs 500680 6836 493844 2% /run tmpfs 500680 0 500680 0% /sys/fs/cgroup /dev/sda1 508588 118860 389728 24% /boot tmpfs 100136 0 100136 0% /run/user/0
自動掛載目錄
[root@min-base ~]# vi /etc/fstab
添加如下內容
//192.168.118.133/tvms /mnt/tvms cifs defaults,username=root,password=1 0 0
重新掛載
[root@min-base ~]# mount -a [root@min-base ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/centos-root 18307072 1012316 17294756 6% / devtmpfs 490236 0 490236 0% /dev tmpfs 500680 0 500680 0% /dev/shm tmpfs 500680 6836 493844 2% /run tmpfs 500680 0 500680 0% /sys/fs/cgroup /dev/sda1 508588 118860 389728 24% /boot tmpfs 100136 0 100136 0% /run/user/0 //192.168.118.133/tvms 18307072 8819380 9487692 49% /mnt/tvms [root@min-base ~]#
Windows訪問
1)在Windwos資源管理器訪問
訪問路徑里填上: \\${Samba服務器的IP} ,然后回車,可以看見共享的目錄。
FileShare是可以匿名訪問的,可以訪問、新建、刪除文件。
這里拖進去一個txt文件,可以在Linux上看見該文件。
2)映射網絡驅動器
右邊的WebDev目錄是需要密碼訪問的
這里演示一下映射該目錄為網絡驅動器。
“桌面” 右鍵單擊“此電腦”,選擇“映射網絡驅動器”
在文件夾位置填寫該共享文件的網絡路徑,這里是\\192.168.118.132\WebDev
勾選“使用其他憑據連接”,點“完成”。
填寫用戶密碼
在我的電腦可以看見該網絡驅動器(Y)
這里可以放源碼工程,然后用Windows下的IDE打開、編輯,再在Linux編譯、運行。
enjoy it~
以后有需求再補充Linux掛載samba共享目錄、權限配置等等。
6參考文獻
配置samba服務器,中加入了security=share,但是testparm輸出的信息里沒有這一條,客戶機也無法訪問