实现Linux系统与Windows系统之间文件共享

阿帅啊,长点心吧 / 2025-02-21 / 原文

实现Linux系统与Windows系统之间文件共享

Samba服务

1:先到yum仓库安装相关服务

[root@linuxprobe ~ ]# yum install samba 
Loaded plugins: langpacks, product-id, subscription-manager 
省略
Installing:
samba x86_64 4.1.1-31.el7 rhel 527 k 
Transaction Summary 
=============================================================================== Install 1 Package 
Total download size: 527 k 
Installed size: 1.5 M 
Is this ok [y/d/N]: y
Downloading packages: 
Running transaction check 
Running transaction test 
Transaction test succeeded 
Running transaction  
Installing : samba-4.1.1-31.el7.x86_64 1/1   
Verifying : samba-4.1.1-31.el7.x86_64 1/1  
Installed:  
samba.x86_64 0:4.1.1-31.el7  
Complete

2:安装完成后修改samba服务配置文件

[root@linuxprobe ~]# vim /etc/samba/smb.conf  
1 [global] 
2 workgroup = MYGROUP 
3 server string = Samba Server Version %v 
4 log file = /var/log/samba/log.%m 
5 max log size = 50 
6 security = user 
7 passdb backend = tdbsam 
8 load printers = yes 
9 cups options = raw 
10 [database] 
11 comment = Do not arbitrarily modify the database file 
12 path = /home/database 
13 public = no 
14 writable = yes 
修改方式参考下列参数:
[database]:共享名称为 database 
comment = Do not arbitrarily modify the database file:警告用户不要随意修改数据库 
path = /home/database:共享目录为/home/database
public = no:关闭“所有人可见” 
writable = yes:允许写入操作
Samba 服务程序的配置工作基创建用于访问共享资源的账户信息。在RHEL7中Samba服务程序默认使用的是用户口令认证模式(user)。这种认证模式可以确保仅让有密码且受信任的用户访问享资源,所以只有建立账户信息数据库之后,才能使用用户口令认证模式。另Samba 服务程序的数据库要求账户必须在当前系统中已经存在,否则之后创建文件时将导致文件的权限属性而混乱,从而引发错误。 pdbedit命令用于管理SMB服务程序的账户信息数据库,格式为“pdbedit [选项] 账户”。 在第一次把账户信息写入到数据库时需要使用-a 参数,以后在执行修改密码、删除账户等操作时就不再需要该参数了。
Pdbedit命令常用参数:
-a 用户名:建立 Samba 账户
-x 用户名:删除 Samba 账户
-L:列出账户列表
-Lv:列出账户详细信息的列表
具体操作:
[root@linuxprobe ~]# id 用户名 
uid=1000(用户名) gid=1000(用户名) groups=1000(用户名) 
[root@linuxprobe ~]# pdbedit -a -u用户名
new password: 输入samba密码
retype new password: 再次输入密码
Unix username: 用户名 
NT username:  
Account Flags:  
UserSID: S-1-5-21-507407404-3243012849-3065158664-1000 
PrimaryGroupSID:S-1-5-21-507407404-3243012849-3065158664-513 
Full Name: 用户名 
Home Directory: \\localhost\用户名 
HomeDir Drive:  
省略。。。
```
**3:创建共享资源文件的目录**
```
[root@linuxprobe ~]# mkdir /home/database 
[root@linuxprobe~]#chown-Rflinuxprobe:linuxprobe /home/database
[root@linuxprebe~]#semanage fcontext –a –t samba_share_t
/home/database
[root@linuxprobe ~]# restorecon -Rv /home/database 
restoreconreset/home/databasecontext unconfined_u:object_r:home_root_t:s0-> 
unconfined_u:object_r:samba_share_t:s0
```
**4:设置SELinux服务与策略**
```
使其允许通过Samba服务程序访问普通用户家目录。执行 getsebool命令,筛选出所有与Samba服务程序相关的SELinux域策略,根据策略的名称选择出正确的策略条目进行开启即可。
[root@linuxprobe ~]# getsebool -a | grep samba 
samba_create_home_dirs --> off 
samba_domain_controller --> off 
samba_enable_home_dirs --> off 
samba_export_all_ro --> off 
samba_export_all_rw --> off 
samba_portmapper --> off samba_run_unconfined --> off 
samba_share_fusefs --> off 
samba_share_nfs --> off 
sanlock_use_samba --> off 
use_samba_home_dirs --> off 
virt_sandbox_use_samba --> off 
virt_use_samba --> off 
[root@linuxprobe ~]# setsebool -P samba_enable_home_dirs on
```
**5:重新启动samba服务,并清空iptables防火墙即可**
**6:在windows系统上查看共享资源**
>调出win系统的运行框,输入共享服务器的IP地址,格式如:\\192.168.10.10,进入后会提示输入账号密码,输入我们在samba服务创建的账号密码即可。注意linux系统防火墙一定要清空或放行策略,上文有提到,不然会访问不了。进入后即可看见从linux服务器上共享出的资源。