赞
踩
为解决Windows计算机与linux计算机之间的资源共享以及打印机共享,经过研究后,决定建立并配置一台samba服务器,具体描述如下:
SMB(Server Message Block,服务信息块)协议是实现网络上不同类型计算机之间的文件和打印机共享服务的协议。SMB的工作原理就是让NetBIOS协议与SMB协议运行在TCP/IP之上,并利用NetBIOS的名字解释功能让Linux计算机可以在Windows计算机的网上邻居中被看到,从而实现Linux计算机与Windows计算机之间相互访问共享文件和打印机。
Samba是一组使Linux支持SMB协议的软件,Samba的核心是两个守护进程smbd和nmbd。smbd负责建立对话、验证用户、提供文件和打印机共享服务等;nmbd负责实现网络浏览。
samba:Samba服务端软件。
samba-client: Samba客户端软件,默认安装。
samba-common: Samba服务器端和客户端共用的软件,默认安装。
samba-windbind: 映射Windows用户账号的软件包。
Samba服务器的全部配置信息均保存在/etc/ sambal smb. conf文件中。smb. conf文件采用分节的结构,-一般由3个标准节和若干个用户自定义的共享节组成。
利用任何文本编辑器都可以查看smb. conf文件,其中,以“#”开头的行是配置参数的说明信息,以“;”开头的行为注释行,其所在行的参数未使用。参数的取值有两种:字符串和布尔值。字符串不需要使用引号,布尔值为no或yes。
[Global]节定义多个全局参数,部分常用的全局参数及其含义如下表所示。
类型 | 参数名 | 说明 |
---|---|---|
基本 | workgroup | 指定Samba服务器所属的工作组 |
– | server string | 指定Samba服务器的描述信息 |
安全 | security | 指定Samba服务器的安全级别 |
– | password server | 当Samba服务器的安全级别不是共享或用户时,用于指定验证Samba用户和口令的服务器名 |
– | host allow | 指定可访问Samba服务器的IP地址范围 |
– | guest account | 指定guest账号的名字,否则为nobody |
– | printcap name | 指定打印机配置文件的保存路径 |
– | cups option | cups option |
打印 | load printers | 指定是否共享打印机 |
– | printing | 指定打印系统的类型 |
日志 | log file | 指定日志文件的保存路径 |
– | max log size | 指定日志文件的最大尺寸,以KB为单位 |
其他 | dns proxy | 指定是否为Samba服务器设置proxy |
[Home]、[Printers]、[自定义目录名]等节说明共享资源的属性。常用的如下表:
参数名 | 含义 |
---|---|
comment | 指定共享目录的描述信息 |
path | 指定共享目录的路径 |
browseable | 指定共享目录是否可以浏览,默认为YES |
writable | 指定共享目录是否可写,默认为NO |
guest ok | 指定是否允许guest账号访问 |
read only | 指定共享目录是否只可读 |
public | 指定是否允许guest账号访问 |
Samba服务器提供5种安全级别,利用security参数可指定其安全级别。最常用的安全级别是共享或用户。
当Samba服务器将Linux 中的部分目录共享给Samba用户时,共享的权限不仅与smb. conf配置文件中设定的共享权限有关,还与其本身的文件系统权限有关。
Linux 规定: Samba 共享目录的权限是文件系统权限与共享权限中最严格的那种权限。
Samba服务器的日志文件默认保存在/var/log/samba目录中。Samba服务器为所有连接到Samba服务器的计算机建立独立的日志文件,如192.168.0.162.log为IP地址为192.168.0.162的计算机的日志文件。此外,还将NMB服务和SMB服务的运行情况写入/var/log/samba目录中的nmbd. log和smbd. log文件中。管理员可以根据这些日志文件了解用户的访问情况和Samba服务器的运行情况。
① 首先准备好一个linux服务器,系统为CentOS7.x,内存2G,磁盘为30G,IP:192.168.217.154
[root@localhost ~]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:1e:7e:87 brd ff:ff:ff:ff:ff:ff inet 192.168.217.154/24 brd 192.168.217.255 scope global dynamic eno16777736 valid_lft 1138sec preferred_lft 1138sec inet6 fe80::20c:29ff:fe1e:7e87/64 scope link valid_lft forever preferred_lft forever [root@localhost ~]# hostnamectl set-hostname sambawmm [root@localhost ~]# bash [root@sambawmm ~]#
②修改主机名为sambawmm,并安装samba软件包。
[root@sambawmm ~]# rpm -qa samba
[root@sambawmm ~]# yum install -y samba samba-client samba-common samba-windbind
在终端输入smbpasswd命令,把linux用户wmm 、wmmtest、whit添加为Samba用户,密码分别为wmm123 ;wmmtest123;whit123
1)先创建Linux User
[root@sambawmm ~]# useradd -m wmm
[root@sambawmm ~]# useradd -m wmmtest
[root@sambawmm ~]# useradd -m whit
2)添加samba用户
使用smbpasswd
smbpasswd -a 添加用户(被添加用户必须是系统用户)
smbpasswd -d 冻结用户 (这个用户不能用了)
smbpasswd -e 恢复用户 (将冻结的用户解冻)
smbpasswd -n 将用户密码设置为空
smbpasswd -x 删除用户
可以先查看帮助文档:
[root@sambawmm ~]# smbpasswd --help smbpasswd: invalid option -- '-' When run by root: smbpasswd [options] [username] otherwise: smbpasswd [options] options: -L local mode (must be first option) -h print this usage message -s use stdin for password prompt -c smb.conf file Use the given path to the smb.conf file -D LEVEL debug level -r MACHINE remote machine -U USER remote username (e.g. SAM/user) extra options when run by root or in local mode: -a add user -d disable user -e enable user -i interdomain trust account -m machine trust account -n set no password -W use stdin ldap admin password -w PASSWORD ldap admin password -x delete user -R ORDER name resolve order [root@sambawmm ~]#
添加samba用户
[root@sambawmm ~]# smbpasswd -a wmm
New SMB password:
Retype new SMB password:
Added user wmm.
[root@sambawmm ~]# smbpasswd -a wmmtest
New SMB password:
Retype new SMB password:
Added user wmmtest.
[root@sambawmm ~]# smbpasswd -a whit
New SMB password:
Retype new SMB password:
Added user whit.
注意:这里架设用户级别的Samba服务器时,必须创建Samba用户列表,并为每一个Samba用户设置口令。此时即使不创建共享目录,按照Samba服务器的默认设置,用户也能访问其主目录中的所有文件。
而架设共享级别的Samba服务器时,不需要创建Samba用户,只需要创建共享的目录,并允许所有的用户访问即可。
[root@sambawmm ~]# cd /etc/samba/
[root@sambawmm samba]# ls
lmhosts smb.conf smb.conf.example
[root@sambawmm samba]# vi smb.conf
#Run 'testparm' to verify the config is correct after 可以使用testparm进行配置文件参数正错检查
注意:如果目录/etc/wmm和目录/etc/wmmtest不存在,则需要手动先创建。
/etc/samba/smb.conf进行如下配置:
设置Samba服务器为用户级;设置/tmp目录是所有用户均可读写的共享目录;设置/etc/wmm目录是只能被wmm用户通过验证后才能访问的共享目录;设置/etc/wmmtest 目录只能被wmmtest用户通过验证后才能访问的共享目录。
[root@sambawmm samba]# vi smb.conf writable = no # See smb.conf.example for a more detailed config file or # read the smb.conf manpage. # Run 'testparm' to verify the config is correct after # you modified it. [global] workgroup = NET security = user netbios name = MYSERVER [tmp] comment = Common Dir path=/tmp browseable = no writable = no guest ok = yes [homes] comment = Home Directories valid users = %S, %D%w%S browseable = No writable = no read only = No inherit acls = Yes [printers] comment = All Printers path = /var/tmp printable = Yes create mask = 0600 browseable = No [print$] comment = Printer Drivers path = /var/lib/samba/drivers write list = @printadmin root force group = @printadmin create mask = 0664 directory mask = 0775 [wmm] comment = wmm path = /etc/wmm browseable = yes writable = yes valid users=wmm [wmmtest] comment = wmmtest path = /etc/wmmtest browseable = yes writable = yes valid users=wmmtest [whit] comment = whit path = /etc/whit browseable = yes writable = yes valid users=whit
在终端输入testparm命令,测试配置是否正确。
若显示:Loaded services file OK.
则正确。
注意:smb服务运行级别共7中:0-6,其中3是字符,5是图形。且这两个是开机自动运行。
[root@sambawmm samba]# systemctl restart smb
[root@sambawmm samba]#
① 关闭防火墙:或者将该服务加入work区域
可以使用如下命令查看防火墙服务
[root@sambawmm samba]# firewall-cmd --get-services
RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns freeipa-ldap freeipa-ldaps freeipa-replication ftp high-availability http https imaps ipp ipp-client ipsec iscsi-target kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind rsyncd samba samba-client smtp ssh telnet tftp tftp-client transmission-client vdsm vnc-server wbem-https
[root@sambawmm samba]# firewall-cmd --zone=work --add-service=samba
success
当然最方便的是直接关闭防火墙(由于是实验环境):
[root@sambawmm samba]# systemctl stop firewalld
[root@sambawmm samba]# systemctl disable firewalld
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.
[root@sambawmm samba]#
②:设置SElinux
临时设置selinux,或者直接关闭selinux
[root@sambawmm samba]# getenforce
Enforcing
[root@sambawmm samba]# setenforce 0
[root@sambawmm samba]# getenforce
Permissive
直接关闭selinux
[root@sambawmm samba]# sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
(这里win10要打开NetBIOS协议。)
先看下能不能通,实验环境,我这里用的是虚拟机。
在我的电脑地址栏输入:\192.168.217.150
回车后出现如下:
用户whit 只能进入whit 和tmp目录
windows平台下设置共享就非常简单这里就不在多说。整个过程是很简单的,但是某些samba的配置参数,就很多了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。