Linux服务 SAMBA
Linux服务 SAMBA
smb,Service Message Block
CIFS,Common Internet File System,windows之间达成通信的系统,类似于于Linux中的NFS;
监听于137/udp,138/udp,139/tcp,445/tcp;
其中137和138是用来实现NetBIOS(网络基本输入输出系统)的,这个NetBISO就是Wendows基于主机名实现互相访问通信的机制;也就是我们在网上邻居中看见的都是主机名而不是IP地址,但是这个名称并不是由DNS那种解析而得来的,它是NetBIOS为了区分主机而自己使用的另外一种主机名,我们可以称它为”NetBISO name”;那么它是怎么解析从而让各个主机互相了解的呢?当我们第一次打开网上邻居的时候,会发现特别的慢,这是因为它是通过广播的方式来完成各个主机之间的信息交换(IP地址和NetBISO名称之间的对应关系的)的;注:NetBISO名称只支持15个字符;
所以想要实现linux与windows通信,就需要在linux中实现NetBISO和CIFS;还有我们知道在windows中还有个域的概念,这个samba也是支持的;
服务:
nmbd:实现了netbios
smdb:实现了cifs
winbindd:实现了将linux加入到windows中的ab中,如果windows没有使用域的话就无需启动,所以默认是关闭的;
UNC路径格式:\\SERVER\shared_name
Linux上的smb客户端:smbclient
-L:获取指定主机(ip地址)上的全部共享资源;
-U:用户名
例子:smbclient -L 192.168.102.130 -U test
smbclient -L //192.168.102.130/tools -U test
基于挂载的方式访问:
mount -t cifs //SERVER/shared_name /mount_point -o username=USERNAME,password=PASSWORD
服务器:
yum install samba -y
服务脚本:
/etc/rc.d/init.d/nmb
/etc/rc.d/init.d/smb
主配置文件:”#”开头的为注释,”;”开头的为可启用的选项;
/etc/samba/smb.conf
全局设定[global]:所有的共享所共用的选项;
workgroup:指定工作组;类似于windows中的工作组;
server string:指定连接samba时的显示信息;
netbios name:指定本机的netbios名称,如果不指定就是本机主机名的第一段(.之前的那部分);
interfaces:指定samba服务监听的网卡或网卡地址,如果不指定则监听所有地址;
hosts allow:指定白名单,也就是仅允许来自哪里的来访问(基于IP地址的访问控制);
security=user:表示访问samba时需要提供用户名密码;
passwd backend=tdbsam:密码的存放格式;
某特定共享的设定:
帐号家目录[home]:关于每个用户的家目录的设定;
comment:指定注释信息;
browseable:是否可以被其他人浏览(发现);
writable:是否可写;
打印机[printers]:samba是支持共享打印机的;
自定义共享[shared_name]:自定义共享目录的设定;
path = /path/to/share_dir:指定共享路径;
guest ok:是否允许来宾帐号访问;
public:类似上面的选项,是否公开;
writable:是否可写;
read only:是否为只读;同上面的一同设置时,最后一个生效;不建议同时使用,没啥必要啊!
write list:具有写权限的用户列表;可以是用户名(user_name)也可以是组名(@group_name);
例子:
[shared]
comment = My shared Testing.
path = /shared/samba
read only = No
guest ok = Yes
编辑完配置文件之后可以使用testparm命令检查语法是否正确并且现实最终生效的配置;然后重启nmb和smb服务;
samba用户:
用户:都是系统用户
密码:并不是/etc/shadow中的密码,samba服务自有密码文件存储密码;
所以我们要给samba添加用户时,要先在系统中添加这个用户,再将这个用户添加到samba服务中;
命令为:smbpasswd
-a:添加一个用户;
-d:禁用某个用户;
-e:启用某个用户;
例子:smbpassswd -a user1
启动服务:
service nmb start
service smb start
在windows中网络选项里输入用户名密码即可进入用户在linux中的家目录;
关于权限的问题:
当我们在samba中设置完各种访问权限后,不要忘记linux系统本身文件系统的权限(rwx);
一个图形的配置界面:
基于web服务提供的图形界面,他自己就提供web服务;因为访问量很少,所以使用了xinetd代为管理;
yum install samba-swat.x86_64
安装完之后会在/etc/xinetd.d/中生成一个swat文件,我们需要进入文件中将disable设置为no并且其中only_from选项指定了可以登陆的地址,默认为本机,所以不支持远程登陆,这样做是为了提高安全性,因为登陆swat时默认是使用root登陆的,所以我们在本地登陆以后将root密码更改之后,再将其更换为其他地址,从而实现远程登陆;
例子:
service swat
{
port = 901
socket_type = stream
wait = no
only_from = 192.168.102.0/24
user = root
server = /usr/sbin/swat
log_on_failure += USERID
disable = no
}
启动服务:
service xinetd start
在浏览器键入:192.168.102.128:901即可,然后输入操作系统中的root及其密码;
我们可以通过图片中的password选项,更改root帐号的密码,还可以通过shares设置共享目录,设置完成以后点击Commit Changes按钮,它会直接覆盖之前配置文件中的设置,在配置文件中生成新的配置;
注:根据马哥视频做的学习笔记,如有错误,欢迎指正;侵删;