在Linux中配置Samba服务器实现网盘

在Linux中配置Samba服务器实现网盘

samba服务器:CentOS 7,samba 4.10.16;Windows客户机:Windows10 20H2

1 安装与基本配置

  1. 打开一个终端,输入su进入超级用户。
  2. 安装samba:
    $ yum install samba samba-client
    
  3. 修改防火墙配置,开放samba所需网络端口:
    $ firewall-cmd --zone=public --add-port=139/tcp --permanent
    $ firewall-cmd --zone=public --add-port=445/tcp --permanent
    $ firewall-cmd --zone=public --add-port=137/udp --permanent
    $ firewall-cmd --zone=public --add-port=138/udp --permanent
    $ firewall-cmd --reload
    $ systemctl restart firewalld.service
    
    当然也可以直接关闭防火墙,一了百了:
    $ systemctl stop firewalld # 临时关闭
    $ systemctl disable firewalld # 禁用开机启动防火墙,即永久禁用
    
  4. 关闭selinux:
    selinux经常会捣乱,不关闭可能会导致在其他电脑上无法访问共享文件夹。
    $ gedit /etc/sysconfig/selinux
    
    SELINUX=enforcing改为SELINUX=disabled
    $ setenforce 0 #关闭selinux
    
  5. 添加samba用户
    该用户可以是Linux中已有的任何用户,如果想创建新用户,则可以使用useradd命令:
    $ useradd samba_user
    
    有关更多用户管理内容见附录:Linux用户管理
    将Linux用户samba_user设置为samba用户:
    $ smbpasswd -a samba
    
    终端会提示你输入密码。
    有关一些细节、坑及多用户配置见3.2 多用户/多用户组
  6. 创建一个共享文件夹:
    cd /
    mkdir share
    chmod 777 share
    
  7. 修改smb.cfg文件
    $ gedit /etc/samba/smb.cfg
    
    在文件末尾添加:
    [share_test] # [ ]中是你希望其他用户看到的共享文件夹名称
    	comment = samba file share test # 注释说明
      	path = /share # 指定共享文件夹路径
      	available = yes
      	public = yes # 所有帐号都能看到该文件夹
      	writable = yes # 可写
     	valid users = samba_user # 对应刚才创建的用户,只有samba_user可以访问
      	create mask = 755 # 在共享文件夹中创建的文件都带有755权限
     	directory mask = 755 # 在共享文件夹中创建的目录都带有755权限
      	guest ok = no
    
    如果smb.cfg文件中包含有[homes],则直接将那一段用#注释掉,否则其他地方将会看到服务器的根目录,不安全。
  8. 启动samba服务
    测试smb.cfg中的参数是否合规:
    $ testparm
    
    如果参数合归终端会提示:
    Loaded services file OK.
    Server role: ROLE_STANDALONE
    
    Press enter to see a dump of your service definitions
    
    开启服务:
    $ systemctl start smb.service
    
    之后如果再次修改了smb.cfg,则可以使用重启命令:
    $ systemctl restart smb.service
    
  9. [可选] 设置静态IP
    centos的IP经常在改变,给windows/mac端连接带了诸多的不便。解决方案便是将centos的IP设置为静态IP。
    CentOS参考:https://www.cnblogs.com/congcongdi/p/10149925.html
    Ubuntu参考:https://www.cnblogs.com/ubuntuanzhuang/p/13131138.html

2 在Windows中使用共享文件夹

在Windows中按下Win+R,输入\\samba所在linux系统的IP地址,回车即可看到共享文件夹。
在这里插入图片描述
系统会提示输入用户名和密码,对应samba中创建的用户。
第一次登录成功后,Windows会记住你使用的账号,往后无法更改。如果你想切换samba账号,可以通过以下两种方式清除Windows的记录:

  1. 打开Windows终端,输入net use,你会看到已经连接的共享文件夹。
    记下共享文件夹的地址,这里用<地址>代替。
    输入net use <地址> /del /y,即可清除某个共享文件夹的samba账号记录。
  2. 在桌面左下角的“开始”按钮处右键选择“计算机管理”,在“服务”中找到“Workstation”,右键重新启动即可。
  • 还可以使用Windows的映射网络驱动器,将samba共享文件夹当作“网盘”使用:
  1. 打开“此电脑”,在功能区点击“映射网络驱动器”。(点击右上角问号左边的小三角可以展开功能区)。
    在这里插入图片描述

  2. 输入服务器共享文件夹的路径,例如\192.168.125.135\share,用户名和密码就是smb.cfg中指定的用户名和相应的密码。

  3. 登录成功后便可以看到网盘内的文件。

    此时还可以在资源管理器的“此电脑”页面内位于“网络位置”标签的网盘,使用起来和本地磁盘完全一致。只要服务器不断电且相关配置不更改,自己的电脑重启后依然可以在资源管理器中看到网盘。

3 高级配置

3.1 smb.cfg文件详解

本节主要介绍共享文件夹的相关配置,指令与参数用法为:

[分享的资源名称]
<指令1>; = (参数)
<指令2>; = (参数)

要提供分享资源时,须先把欲分享的资源以 [ ] 符号括住,底下通常会带指令和参数来表示此资源的设定和存取权限等,详情如下:

指令参数描述
comment自定义注释说明
path目录分享资源的完整路径名称,除了路径要正确外,目录的权限也要设对
browseableyes/no是否在浏览资源中显示共享目录,若为否则必须指定共享路径才能存取
printableyes/no是否允许打印
hide dot ftlesyes/no是否隐藏文件
publicyes/no是否公开共享,若为否则进行身份验证(只有当security = share 时此项才起作用)
guest okyes/no是否公开共享,若为否则进行身份验证(只有当security = share 时此项才起作用)
read onlyyes/no是否以只读方式共享,当与writable发生冲突时也writable为准
writableyes/no是否可写,当与read only发生冲突时,无视read only
vaild users用户名(多个用户之间用,隔开)
或者@用户组名
设定只有此名单内的用户才能访问共享资源(拒绝优先)(用户名/@组名)
invalid users同上设定只有此名单内的用户不能访问共享资源(拒绝优先)(用户名/@组名)
read list同上设定此名单内的成员为只读(用户名/@组名)
write list同上若设定为只读时,则只有此设定的名单内的成员才可作写入动作(用户名/@组名)
create mask777/755等建立文件时所给的权限
directory mask同上建立目录时所给的权限
force group用户名(多个用户之间用,隔开)
或者@用户组名
指定存取资源时须以此设定的群组使用者进入才能存取(用户名/@组名)
force user用户名(多个用户之间用,隔开)
或者@用户组名
指定存取资源时须以此设定的使用者进入才能存取(用户名/@组名)
allow hostsIP地址设定只有此网段/IP的用户才能访问共享资源
deny hostsIP地址设定只有此网段/IP的用户不能访问共享资源
allow hostsIP地址本网段指定IP指定IP

其余可参考Linux Samba服务主配文件smb.conf中文详解

3.2 多用户/多用户组

如果我们想让共享文件夹不能被每个人都访问,而只允许一部分用户访问,便可以通过配置smb.cfgvalid users等属性实现。
例如,我们现在想让刚才的share文件夹只被用户zhangsan,lisi及baidu,alibaba用户组下所有的用户访问,则可以这样配置smb.cfg文件:

	[multiple_users] 
    	comment = multiple users test 
      	path = /share # 指定共享文件夹路径
      	available = yes
      	public = no
      	writable = yes
     	valid users = zhangsan,lisi,@baidu,@alibaba
      	create mask = 0777
     	directory mask = 0777

注意:Linux多用户机制中每个用户都有自己的家目录,家目录中的文件都是私有的,例如用户zhangsan无法访问/home/lisi/中的文件,同样用户lisi无法访问/home/zhangsan/中的文件。
这就提醒我们在配置多用户的文件共享时,最好不要使用某个用户home目录下的文件夹作为共享文件夹。否则,即使在smb.cfg文件中授予了用户某个文件夹的访问权限,在客户机使用该用户时依然无法访问此共享文件夹。

  • 例如smb.cfg文件中配置了/home/simon/public_share作为共享文件夹,并且valid users中设置了simon,zhangsan,lisi等用户,Windows中使用simon可以正常访问,但如果使用zhangsan访问共享文件夹时就会提示:你没有权限访问......(IP地址)。请与网络管理员联系请求访问权限
    在这里插入图片描述

3.3 典型场景

  1. 只有用户x1,y1,z2以及用户组x可以访问某文件夹,但只有用户组x能够写该文件夹:
    [scene1]
    	comment = scene1 
    	path = /share/scene1
    	public = no
    	valid users = x1,y1,z2,@x
    	write list = @x
    
  2. 只有用户x1,y1,z1以及用户组y可以访问某文件夹,且只有用户组b可以写该文件夹:
    [scene2]
    	comment = scene2
    	path = /share/scene2
    	public = no
    	valid users = x1,y1,z1
    	write list = @y
    
  3. 所有帐号都能看到文件夹,但只能读:
    [scene3]
    	comment = scene3
    	path = /share/scene3
    	public = yes
    	read only = yes
    
  4. 所有帐号都能看到文件夹,且可以编辑或删除对方建立的文件:
    [scene4]
    	comment = scene4
    	path = /share/scene4
    	public = yes
    	writable = yes
    

附录:Linux用户管理

  1. 用户管理
    sudo useradd x1
    
    添加用户x1到用户组x:
    sudo usermod -g x x1
    
    修改用户x1密码:
    sudo passwd x1
    
    删除用户:
    sudo userdel -r x1 # -r代表删除用户的同时删除该用户的家目录以及其他与该用户相关的文件
    
  2. 用户组管理
    添加用户组:
    sudo groupadd x
    
    修改用户组名称:
    groupmod -n fighting flying #将flying组改名为fighting
    
    用户组添加用户(如果不加-a会使你离开其他用户组,仅仅做为 这个用户组 groupA 的成员):
    usermod -a -G groupA user
    
    用户组删除用户,将用户testuser从root组中删除:
    sudo gpasswd -d testuser root
    
    在Linux中也可以直接编辑/etc/group文件来手动管理用户组。关于/etc/group文件的介绍见Linux /etc/group文件解析(超详细)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值