Linux【Centos】服务器目录通过Samba映射到Windows磁盘驱动器

公司里工作,有一些linux服务器主要存放项目分支的代码和一些文档,我们在windows上通过目录映射,可以用notepad、sublime、vs等编辑打开服务器端的文件,这样直接编辑访问服务器的目录显得比较方面,编写代码也可以使用自己习惯的工具。在家里为了在电脑上能连接虚拟机的centos操作目录,通过搭建Samba来实现。

Samba是linux的一个服务。下面介绍一下实现映射的配置过程,注意linux目录的权限,好几次配置完成后,windows访问映射的目录不能进行读写操作,提示无权限。


搭建步骤:

一、安装Samba

没有安装Samba的先进行安装,centos下命令如下

[root@localhost home]# yum install samba samba-client

二、创建Samba账号

首先为samba服务器创建一个用户组:groupadd admin (这里我的用户组和用户都命名为admin,包括后面的密码)

然后,在samba用户组下创建用户:   useradd -g admin  admin

[root@localhost /]# groupadd admin
[root@localhost /]# useradd -g admin admin

接着,给需要映射的目录授权。假设需要映射的目录为/home

# 755可能导致权限不足
[root@localhost home]# chmod -R 777 /home
[root@localhost home]# chown -R admin:admin /home

【注意】关于chown命令的使用:先用户其次才是用户组(用户:用户组)
 

三、修改Samba配置文件

没有安装vim的,yum install vim进行安装

[root@localhost home]# vim /etc/samba/smb.conf

我的配置如下:

注意security字段值不要改为share,可能导致smb服务起不来

linsirs相当于这个目录映射的别名,自己命名即可。指定之前创建的用户组和用户,path就是你需要映射到windows进行访问的目录,其他字段直接照搬就行。

【备注】看了很多博客有配置其他属性字段的,但至少这里新增的字段是能够实现目录的映射的。

四、为samba用户admin设置密码

[root@localhost samba]# smbpasswd -a admin
New SMB password:
Retype new SMB password:
Added user admin.
[root@localhost samba]# systemctl start smb.service

五、开放samba端口号

如果防火墙开启,则需要开放下面几个samba服务的端口号。首先,需要知道使用samba服务器需要防火墙开放以下端口

UDP 137
UDP 138
TCP 139
TCP 445

使用firewall-cmd命令:

[root@localhost samba]# firewall-cmd --add-port=137/udp --permanent
success
[root@localhost samba]# firewall-cmd --add-port=138/udp --permanent
success
[root@localhost samba]# firewall-cmd --add-port=139/tcp --permanent
success
[root@localhost samba]# firewall-cmd --add-port=445/tcp --permanent
success
[root@localhost samba]# firewall-cmd --reload
success

到这里,samba服务器的项目配置工作已经完成了,但我映射访问后,尝试新建文件夹、文件等读写操作时,提示无权限,联系管理员什么的,看了很多文章才找到解决方法。

试过这几个命令,都没奏效:

[root@localhost home]# chmod -R a+rwx /home
[root@localhost home]# systemctl stop firewalld

正确方法:

确保setlinux关闭,可以用setenforce 0命令执行。 默认的,SELinux禁止网络上对samba服务器上的共享目录进行写操作,即使你在smb.conf中允许了这项操作。
执行这两条命令解决权限问题:

[root@localhost home]# iptables -F

[root@localhost home]# setenforce 0

 【服务启动】

配置完成后,别忘记启动服务,服务启动停止相关命令:

启动samba服务

[root@localhost samba]# systemctl start smb.service

关闭samba服务

[root@localhost samba]# systemctl stop smb.service

开机启动samba服务

[root@localhost samba]# systemctl enable smb.service

查看samba服务状态

[root@localhost samba]# systemctl status smb

 

六、目录成功映射并进行读写:

 

 

【备注】

如果有问题,以下几点需要确定:

确定samba服务已正常启动;samba服务端口没有被禁止;有权限进入samba共享目录;

服务正常的状态:

[root@localhost home]# systemctl status smb
● smb.service - Samba SMB Daemon
   Loaded: loaded (/usr/lib/systemd/system/smb.service; disabled; vendor preset: disabled)
   Active: active (running) since 五 2019-03-29 21:27:11 CST; 11min ago
     Docs: man:smbd(8)
           man:samba(7)
           man:smb.conf(5)
 Main PID: 7479 (smbd)
   Status: "smbd: ready to serve connections..."
   CGroup: /system.slice/smb.service
           ├─7479 /usr/sbin/smbd --foreground --no-process-group
           ├─7481 /usr/sbin/smbd --foreground --no-process-group
           ├─7482 /usr/sbin/smbd --foreground --no-process-group
           ├─7483 /usr/sbin/smbd --foreground --no-process-group
           └─7485 /usr/sbin/smbd --foreground --no-process-group

检查samba 的权限配置,testparm -s 命令可以检查此文件是否有错误,如错误,会显示其行号。

[root@localhost home]# testparm -s
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[printers]"
Processing section "[print$]"
Processing section "[linsirs]"
Global parameter workgroup found in service section!
Global parameter netbios name found in service section!
Loaded services file OK.
Server role: ROLE_STANDALONE

# Global parameters
[global]
	printcap name = cups
	security = USER
	smb passwd file = /etc/samba/smbpasswd
	workgroup = SAMBA
	idmap config * : backend = tdb
	cups options = raw


[homes]
	browseable = No
	comment = Home Directories
	inherit acls = Yes
	read only = No
	valid users = %S %D%w%S


[printers]
	browseable = No
	comment = All Printers
	create mask = 0600
	path = /var/tmp
	printable = Yes


[print$]
	comment = Printer Drivers
	create mask = 0664
	directory mask = 0775
	force group = @printadmin
	path = /var/lib/samba/drivers
	write list = @printadmin root


[linsirs]
	create mask = 0777
	directory mask = 0777
	guest ok = Yes
	path = /home
	read only = No

至此,所有配置都已完成,按照步骤来可以成功实现目录的映射。

另外了解到CIFS协议也可以实现此功能,有兴趣的同学可以配置实现以下。

 

参考链接:https://blog.csdn.net/u010480282/article/details/80518836

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值