linux下配置samba服务器 实现windows共享

时间:2022-09-02 07:07:02

一.安装samba服务器

首先: rpm -qa|grep samba                                   // 查看要机是否有安装

如果有安装 就用 rpm -e samba                              //删除以前的安装

然后 yum -y install samba    // yum 安装samba

samba-common  //samba  的公用组件

samba                   //samba的服务器端

samba-client        //samba的客户端s

二.配置samba

[global]

workgroup = SAMBA

security = user  //这里的user 表示必须使用  用户名 密码才可以登录  samba    在以前的版本中可能还有     share等选项    ,V3.5版本后的只有user可以用

                        其它的设置不用改,默认就可以了

在文件的未尾,添加自己要共享的目录

[share] //它表示共享目录在别的机器上的显示的名称

comment = *nhui share                                 //这只是个说明的文字,意义不大

path = /var/share// 设置共享目录的路径

writable = yes//表示目录可写

public  = yes// 也可以写   guest ok = yes  表示允许以guest的身分访问

browsable  = yes //  共享目录是否可见

以上几行已经足够了  

create mask  = 0664  表示在共享目录中新建的文件的访问权限               可以不写

write list = root,user1,user2    // 表示可以用户的白名单       可以不写


文件修改完成,保存退出

#   testparm  -s smb.conf                                             // 检测一下smb.conf的书写有没有错误

-------------------------------------------------------------------------------------------------------------------------------------

samba 必须有自己的用户才可以访问,并且用户还必须是  本机  系统上的用户,(不能是远程的用户)

所以接下来  

在本机创建一个用户                                useradd  mysmb

 把这个用户添加到 samba的用户中,使用命令            smbpasswd    -a mysmb     // -a 表示新添加一个用户  不可缺少                      回车后,就可以输入samba 的用户密码了


-----------------------------------------------------------------------------------------------------------------------------------

samba服务是要开启两个服务进程的                            一个是            smb  服务                          另一个是                        nmb 服务

service smb start                                        service nmb   start                          

--------------------------------------------------------------------------------------------------------------------------------------------

将samba服务设为开机自启动的

systemctl enable smb.service

systemctl enable nmb.service

systemctl 是系统服务管理器命令,它实际上将 service 和 chkconfig 这两个命令组合到一起。

 
任务 旧指令 新指令
使某服务自动启动 chkconfig –level 3 httpd on systemctl enable httpd.service
使某服务不自动启动 chkconfig –level 3 httpd off systemctl disable httpd.service
检查服务状态 service httpd status systemctl status httpd.service (服务详细信息) systemctl is-active httpd.service (仅显示是否 Active)
显示所有已启动的服务 chkconfig –list systemctl list-units –type=service
启动某服务 service httpd start systemctl start httpd.service
停止某服务 service httpd stop systemctl stop httpd.service
重启某服务 service httpd restart systemctl restart httpd.service

----------------------------------------------------------------------------------------------------------------------------------------------------------------------
注意,我们在 windows上连接 samba的文件夹 要关闭防火墙和  selinux service firewalld stop             //关闭防火墙 关闭  selunux  有两种方法 1。  临时方法           getenforce   //查看 selinux的况态    setenforce 0     // 临时关闭 selinux 2。永久关闭           

修改/etc/selinux/config 文件

将SELINUX=enforcing改为SELINUX=disabled

重启机器即可

-----------------------------------------------------------------------------------------------------------

在windows  运行中  输入              \\ ip地址\share  就可以访问了    或者用  映射网络驱动器 -------------------------------------------------------------------------------------------------------------------------------- 可能会有linux目录访问权限的问题,简单粗暴的方法     在linux下对共享的目录        chmod 777 /var/share              //做成最大权限
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

值得一提的是 ,当我们在windows 使用ide工具来开发一个网站项目,然后上传到 linux 服务器上的测试  我们就可以使用  samba 服务 

使用windows 直接在 linux上面修改 文件

但是 apache 运行的时候,httpd 的进程的执行者是  daemon  ,  (查看方法 ps aus|grep httpd )    ,那么,我们通过访问 网站上的程序在网站目录下创建的文件等都是daemon用户的,当samba用户来访问时,就打不开,没有权限,

这时我们的做法是,,创建的  samba用户的名 ,就用 apache   ,   然后在 apache.conf 文件中也把   user  daemon 改成  apache,  这样就不冲突了

nginx 的话,也一样要修改  ,nginx 默认的是root用户