samba服务器:CentOS 7,samba 4.10.16;Windows客户机:Windows10 20H2
su
进入超级用户。$ yum install samba samba-client
$ 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 # 禁用开机启动防火墙,即永久禁用
$ gedit /etc/sysconfig/selinux
将SELINUX=enforcing
改为SELINUX=disabled
$ setenforce 0 #关闭selinux
useradd
命令:$ useradd samba_user
有关更多用户管理内容见附录:Linux用户管理。$ smbpasswd -a samba
终端会提示你输入密码。cd /
mkdir share
chmod 777 share
$ 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]
,则直接将那一段用#
注释掉,否则其他地方将会看到服务器的根目录,不安全。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
在Windows中按下Win+R
,输入\samba所在linux系统的IP地址
,回车即可看到共享文件夹。
系统会提示输入用户名和密码,对应samba中创建的用户。
第一次登录成功后,Windows会记住你使用的账号,往后无法更改。如果你想切换samba账号,可以通过以下两种方式清除Windows的记录:
net use
,你会看到已经连接的共享文件夹。<地址>
代替。net use <地址> /del /y
,即可清除某个共享文件夹的samba账号记录。映射网络驱动器
,将samba共享文件夹当作“网盘”使用:
打开“此电脑”,在功能区点击“映射网络驱动器”。(点击右上角问号左边的小三角可以展开功能区)。
输入服务器共享文件夹的路径,例如192.168.125.135share,用户名和密码就是
smb.cfg
中指定的用户名和相应的密码。登录成功后便可以看到网盘内的文件。
此时还可以在资源管理器的“此电脑”页面内位于“网络位置”标签的网盘,使用起来和本地磁盘完全一致。只要服务器不断电且相关配置不更改,自己的电脑重启后依然可以在资源管理器中看到网盘。
smb.cfg
文件详解本节主要介绍共享文件夹的相关配置,指令与参数用法为:
[分享的资源名称]
<指令1>; = (参数)
<指令2>; = (参数)
要提供分享资源时,须先把欲分享的资源以 [ ] 符号括住,底下通常会带指令和参数来表示此资源的设定和存取权限等,详情如下:
指令 | 参数 | 描述 |
---|---|---|
comment | 自定义 | 注释说明 |
path | 目录 | 分享资源的完整路径名称,除了路径要正确外,目录的权限也要设对 |
browseable | yes/no | 是否在浏览资源中显示共享目录,若为否则必须指定共享路径才能存取 |
printable | yes/no | 是否允许打印 |
hide dot ftles | yes/no | 是否隐藏文件 |
public | yes/no | 是否公开共享,若为否则进行身份验证(只有当security = share 时此项才起作用) |
guest ok | yes/no | 是否公开共享,若为否则进行身份验证(只有当security = share 时此项才起作用) |
read only | yes/no | 是否以只读方式共享,当与writable发生冲突时也writable为准 |
writable | yes/no | 是否可写,当与read only发生冲突时,无视read only |
vaild users | 用户名(多个用户之间用, 隔开)或者@用户组名 | 设定只有此名单内的用户才能访问共享资源(拒绝优先)(用户名/@组名) |
invalid users | 同上 | 设定只有此名单内的用户不能访问共享资源(拒绝优先)(用户名/@组名) |
read list | 同上 | 设定此名单内的成员为只读(用户名/@组名) |
write list | 同上 | 若设定为只读时,则只有此设定的名单内的成员才可作写入动作(用户名/@组名) |
create mask | 777/755等 | 建立文件时所给的权限 |
directory mask | 同上 | 建立目录时所给的权限 |
force group | 用户名(多个用户之间用, 隔开)或者@用户组名 | 指定存取资源时须以此设定的群组使用者进入才能存取(用户名/@组名) |
force user | 用户名(多个用户之间用, 隔开)或者@用户组名 | 指定存取资源时须以此设定的使用者进入才能存取(用户名/@组名) |
allow hosts | IP地址 | 设定只有此网段/IP的用户才能访问共享资源 |
deny hosts | IP地址 | 设定只有此网段/IP的用户不能访问共享资源 |
allow hosts | IP地址 | 本网段指定IP指定IP |
其余可参考Linux Samba服务主配文件f中文详解。
如果我们想让共享文件夹不能被每个人都访问,而只允许一部分用户访问,便可以通过配置smb.cfg
的valid 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地址)。请与网络管理员联系请求访问权限
。
[scene1]comment = scene1 path = /share/scene1public = novalid users = x1,y1,z2,@xwrite list = @x
[scene2]comment = scene2path = /share/scene2public = novalid users = x1,y1,z1write list = @y
[scene3]comment = scene3path = /share/scene3public = yesread only = yes
[scene4]comment = scene4path = /share/scene4public = yeswritable = yes
sudo useradd x1
添加用户x1到用户组x:sudo usermod -g x x1
修改用户x1密码:sudo passwd x1
删除用户:sudo userdel -r x1 # -r代表删除用户的同时删除该用户的家目录以及其他与该用户相关的文件
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小时内删除。
留言与评论(共有 0 条评论) |