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

阅读: 评论:0

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

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

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

文章目录

  • 在Linux中配置Samba服务器实现网盘
    • 1 安装与基本配置
    • 2 在Windows中使用共享文件夹
    • 3 高级配置
      • 3.1 `smb.cfg`文件详解
      • 3.2 多用户/多用户组
      • 3.3 典型场景
    • 附录:Linux用户管理

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 = yespublic = 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_STANDALONEPress 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参考:.html。
    Ubuntu参考:.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.135share,用户名和密码就是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服务主配文件f中文详解。

3.2 多用户/多用户组

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

	[multiple_users] comment = multiple users test path = /share # 指定共享文件夹路径available = yespublic = nowritable = yesvalid users = zhangsan,lisi,@baidu,@alibabacreate mask = 0777directory 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/scene1public = novalid users = x1,y1,z2,@xwrite list = @x
    
  2. 只有用户x1,y1,z1以及用户组y可以访问某文件夹,且只有用户组b可以写该文件夹:
    [scene2]comment = scene2path = /share/scene2public = novalid users = x1,y1,z1write list = @y
    
  3. 所有帐号都能看到文件夹,但只能读:
    [scene3]comment = scene3path = /share/scene3public = yesread only = yes
    
  4. 所有帐号都能看到文件夹,且可以编辑或删除对方建立的文件:
    [scene4]comment = scene4path = /share/scene4public = yeswritable = 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文件解析(超详细)。

本文发布于:2024-02-05 05:16:24,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170725003863362.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:服务器   Linux   Samba
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23