文件共享是服务器管理的必要组成部分。它允许在网络上共享资源,用户需要执行其任务。广泛使用的文件共享软件之一是Samba。
Samba(流行的SMB(服务器消息块)协议的重新实现)是一个稳定自由的应用程序,允许文件和打印服务在互联网上共享。该软件被安装中心Linux服务器,从Linux和Windows该系统可以访问该服务器上的共享软件。
在此,我们将在此基础上带您RHEL发行版上(Rocky Linux和AlmaLinux)安装Samba服务器。
第一步:在Linux中安装Samba
首先,安装包括客户端包Samba核心包:
[blctrl@localhost ~]$ cat /etc/redhat-release AlmaLinux release 8.6 (Sky Tiger) [blctrl@localhost ~]$ sudo install samba samba-common samba-client -y [sudo] password for blctrl: install: invalid option -- 'y' Try 'install --help' for more information. [blctrl@localhost ~]$ sudo dnf install samba samba-common samba-client -y Last metadata expiration check: 0:31:05 ago on Fri 08 Jul 2022 08:21:23 AM CST. Package samba-common-4.15.5-5.el8.noarch is already installed. Dependencies resolved. ==================================================================================================================================== Package Architecture Version Repository Size ==================================================================================================================================== Installing: samba x86_64 4.15.5-8.el8_6 baseos 867 k samba-client x86_64 4.15.5-8.el8_6 baseos 714 k ... Complete!
上述命令安装指定的软件包和输出上显示的依赖包。安装完成后,您将得到所有已安装的包的总结。
第二步:创建和配置Samba共享
一旦安装了所有samba下一步是配置samba共享。一个samba共享只是网络中客户系统之间共享的目录。我们在这里创建一个/samba_share的samba共享:
[blctrl@localhost ~]$ sudo mkdir /samba_share [sudo] password for blctrl: [blctrl@localhost ~]$ ls / bin boot dev etc home lib lib64 media mnt opt proc root run samba_share sbin srv sys tmp usr var
然后,我们将根据以下分配权限和所有权。
[blctrl@localhost ~]$ sudo chmod -R 755 /samba_share [blctrl@localhost ~]$ sudo chown -R nobody:nobody /samba_share [blctrl@localhost ~]$ sudo chcon -t samba_share_t /samba_share
以上chcon命令解释:
若愿将samba与其他用户共享目录需要设置chcon -t samba_share_t /directory
接着,smb.conf配置文件是Samba对于主配置文件,我们在此配置文件中进行了一些配置。但在我们这样做之前,我们通知扩展不同文件的名称来备份文件。
[blctrl@localhost ~]$ sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
然后,我们创建了一个新的配置文件。
[root@localhost blctrl]# vim /etc/samba/smb.conf
通过在配置文件中添加以下显示行,我们将定义谁可以访问此行samba共享策略。
[root@localhost blctrl]# cat /etc/samba/smb.conf [global] workgroup = WORKGROUP server string = Samba Server %v netbios name = almaLinux-8 security = user map to guest = bad user dns proxy = no ntlm auth = true [Public] path = /samba_share browsable = yes writable = yes guest ok = yes read only = no
保存并编辑此配置文件。
验证配置,操作命令:
[root@localhost blctrl]# testparm Load smb config files from /etc/samba/smb.conf Loaded services file OK. Weak crypto is allowed Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions # Global parameters [global] dns proxy = No map to guest = Bad User netbios name = ALMALINUX-8 ntlm auth = ntlmv1-permitted security = USER server string = Samba Server %v idmap config * : backend = tdb [Public] guest ok = Yes path = /samba_share read only = No
然后根据以下启动和使能Samba守护进程。
[root@localhost blctrl]# systemctl start smb [root@localhost blctrl]# systemctl enable smb Created symlink /etc/systemd/system/multi-user.target.wants/smb.service → /usr/lib/systemd/system/smb.service. [root@localhost blctrl]# systemctl start nmb [root@localhost blctrl]# systemctl enable nmb Created symlink /etc/systemd/system/multi-user.target.wants/nmb.service → /usr/lib/systemd/system/nmb.service. [root@localhost blctrl]# systemctl status smb ● smb.service - Samba SMB Daemon Loaded: loaded (/usr/lib/systemd/system/smb.service; enabled; vendor preset: disabled) Active: active (running) since Fri 2022-07-08 09:21:19 CST; 59s ago Docs: man:smbd(8) man:samba(7) man:smb.conf(5) Main PID: 108460 (smbd) Status: "smbd: ready to serve connections..." Tasks: 4 (limit: 23504) Memory: 12.5M CGroup: /system.slice/smb.service ├─108460 /usr/sbin/smbd --foreground --no-process-group ├─108462 /usr/sbin/smbd --foreground --no-process-group ├─108463 /usr/sbin/smbd --foreground --no-process-group └─108464 /usr/libexec/samba/samba-bgqd --ready-signal-fd=50 --parent-watch-fd=13 --debuglevel=0 -F [root@localhost blctrl]# sstemctl status nmb
● nmb.service - Samba NMB Daemon
Loaded: loaded (/usr/lib/systemd/system/nmb.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2022-07-08 09:21:33 CST; 55s ago
Docs: man:nmbd(8)
man:samba(7)
man:smb.conf(5)
Main PID: 108493 (nmbd)
Status: "nmbd: ready to serve connections..."
Tasks: 1 (limit: 23504)
Memory: 2.8M
CGroup: /system.slice/nmb.service
└─108493 /usr/sbin/nmbd --foreground --no-process-group
关闭服务器的防火墙:
[root@localhost /]# systemctl stop firewalld
[root@localhost /]# setenforce 0
第三步:从Windows访问Samba共享
设置Windows 10能够连接Samba服务器:
[控制面板] 中选择如红色框中的卸载程序:
[程序和功能]中选择红色框中的启用或关闭Windows功能:
勾选下图中SMB 1.0/CIFS文件共享支持:
到此,我们已经安装了samba并且配置了我们的samba共享。我们现在准备远程访问它。要在Widows客户端做这件事,按Windows图标+R来启动运行对话框。
在提供的文本字段,输入samba服务器的IP地址:\\server_ip
会弹出一个如下的窗口,这个目录指向我们在/samba_share/目录中的samba共享:
测试:当前共享目录中没有内容,我们在服务器的/samba_share下创建三个文件,然后在Windows中共享目录下查看内容:
1、在服务器的共享目录下创建5个txt文件:
[root@localhost /]# touch /samba_share/{1..5}.txt
[root@localhost /]# ls /samba_share/
1.txt 2.txt 3.txt 4.txt 5.txt
2、在Windows中查看,也出现了5个名称完全一致的文件:
我们成功地掌握了访问samba共享。但,我们的目录对任何人都可以访问,并且所有人都能随意编辑和删除这些文件,如果你打算放置敏感文件,尤其不推荐这种方式。
首先,我们将创建一个新的samba用户。
[root@localhost /]# useradd smbuser
接着,我们为这个samba用户配置一个密码。这是在验证过程中将使用的密码。
[root@localhost /]# smbpasswd -a smbuser
New SMB password:
Retype new SMB password:
Added user smbuser.
接着,我们将为我们安全的samb共享创建一个新组并且添加以上创建的samba用户到这个组。
[root@localhost /]# groupadd smb_group
[root@localhost /]# usermod -g smb_group smbuser
然后创建另一个将安全地受访问地samba共享。在这种情况下,我们用以下命令创建:
[root@localhost /]# mkdir /samba_private
然后为samba共享配置文件权限:
[root@localhost /]# chmod -R 770 /samba_private
[root@localhost /]# chcon -t samba_share_t /samba_private
[root@localhost /]# chwon -R root:smb_group /samba_private
再一次编辑主配置文件smb.conf:
[root@localhost /]# vim /etc/samba/smb.conf
在以上文件中添加以下几行来定义安全地samba共享:
[Private]
path = /samba_private
valid users = @smb_group
guest ok = no
writable = no
browsable = yes
保存更改并且退出。
最后如下所示,重启所有samba:
[root@localhost /]# systemctl restart smb
[root@localhost /]# systemctl restart nmb
在这次访问服务器时,在运行对话框中输入以下内容:
你需要在弹出的窗口中,输入验证用的用户名和密码,然后按确定后,弹出安全的Samba共享目录:
测试:在服务器的/samb_private目录中,新建5个文件:
[root@localhost /]# touch /samba_private/{6..9}.txt
[root@localhost /]# ls /samba_private/
6.txt 7.txt 8.txt 9.txt
在Windows中查看此时的共享目录情况:
第五步:从Linux客户端访问Samba共享
要从Linux客户端访问Samba共享,首先确保安装了Samba客户端包:
[blctrl@areadetector ~]$ cat /etc/redhat-release
Rocky Linux release 8.6 (Green Obsidian)
[blctrl@areadetector ~]$ sudo dnf install samba-client
Last metadata expiration check: 1:36:46 ago on Fri 08 Jul 2022 09:23:31 AM CST.
Package samba-client-4.15.5-8.el8_6.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
要按如下使用smbclient命令:
1、访问服务器上Public共享目录:
提示输入密码时,直接回车就可以了。
[blctrl@areadetector ~]$ smbclient '\\192.168.50.128\public'
Password for [SAMBA\blctrl]:
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Fri Jul 8 10:31:54 2022
.. D 0 Fri Jul 8 10:01:32 2022
1.txt N 0 Fri Jul 8 10:31:54 2022
2.txt N 0 Fri Jul 8 10:31:54 2022
3.txt N 0 Fri Jul 8 10:31:54 2022
4.txt N 0 Fri Jul 8 10:31:54 2022
5.txt N 0 Fri Jul 8 10:31:54 2022
36723180 blocks of size 1024. 29600036 blocks available
smb: \> exit
[blctrl@areadetector ~]$
2、访问服务器上Private共享目录:
需要用-U指定验证用的用户名,并且输入相应的密码。
[blctrl@areadetector ~]$ smbclient '\\192.168.50.128\private' -U smbuser
Password for [SAMBA\smbuser]:
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Fri Jul 8 10:52:56 2022
.. D 0 Fri Jul 8 10:01:32 2022
6.txt N 0 Fri Jul 8 10:52:56 2022
7.txt N 0 Fri Jul 8 10:52:56 2022
8.txt N 0 Fri Jul 8 10:52:56 2022
9.txt N 0 Fri Jul 8 10:52:56 2022
36723180 blocks of size 1024. 29600036 blocks available
smb: \> exit
第六步:在Linux上挂载samba共享
1、mount命令手动挂载
首先,需要在需要挂载samba共享的Linux机器上安装cifs文件系统:
[root@areadetector blctrl]# dnf install cifs-utils
Last metadata expiration check: 1:46:20 ago on Fri 08 Jul 2022 09:23:31 AM CST.
Dependencies resolved.
=================================================================================
Package Architecture Version Repository Size
=================================================================================
Installing:
cifs-utils x86_64 6.8-3.el8 baseos 95 k
...
Installed:
cifs-utils-6.8-3.el8.x86_64
Complete!
创建两个挂载点:
[root@areadetector blctrl]# mkdir /mnt/smb_public
[root@areadetector blctrl]# mkdir /mnt/smb_private
用mount命令进行挂载:
[root@areadetector blctrl]# mount -t cifs -l //192.168.50.128/public /mnt/smb_public
Password for blctrl@//192.168.50.128/public:
[root@areadetector blctrl]# ls /mnt/smb_public
1.txt 2.txt 3.txt 4.txt 5.txt
[root@areadetector blctrl]# mount -t cifs -o username=smbuser,password=abc123 -l //192.168.50.128/private /mnt/smb_private
[root@areadetector blctrl]# ls /mnt/smb_private
6.txt 7.txt 8.txt 9.txt
2、自动挂载
编辑/etc/fstab文件,在文件末尾添加以下两行分别挂载两个Samba共享:
//192.168.50.128/public /mnt/smb_public cifs defaults 0 0
//192.168.50.128/private /mnt/smb_private cifs username=smbuser,password=abc123 0 0
重新进行挂载:
[root@areadetector blctrl]# mount -a
验证是否成功挂载了Samba的两个共享路径:
[root@areadetector blctrl]# ls /mnt/smb_public
1.txt 2.txt 3.txt 4.txt 5.txt
[root@areadetector blctrl]# ls /mnt/smb_private/
6.txt 7.txt 8.txt 9.txt