linux smba配置
访问控制可以写在/etc/hosts.allow;/etc/hosts.deny
[root@kbuilder ~]# grep -A20 '^\[test\]' /etc/samba/smb.conf [test] #节点描述,任意字符串 comment = test #共享的目录 path = /tmp/exports/test #上传文件权限 create mask = 0700 #创建目录的权限 directory mask = 0700 #指定的访问用户,多个用户用逗号分割 #若未指定,则所有用户都可以访问 valid users = test #是否公开 public = yes #是否可以写 writable = yes
访问:windows资源管理器:\\smb_server_IP
附:
samba进程:
- nmbd:对应netBIOS
- smbd:对应cifs协议
- winbindd+ldap:对应Windows AD活动目录
samba用户:
- 账户:都是系统用户/etc/passwd
- 密码:Samba服务自有密码文件,通过smbpasswd -a USERNAME命令设置
#smbpasswd命令:
-a Sys_User #添加系统用户为samba用户并为其设置密码
-d #禁用用户帐号
-e #启用用户帐号
-x #删除用户帐号
Samba安全级别:
- user:基于本地的验证
- server:由另一台指定的服务器对用户身份进行认证
- domain:由域控进行身份验证
- share:匿名访问(现版本已取消这个安全级别,匿名访问配置方式发生了改变)
Samba配置文件:
- /etc/samba/smb.conf
- [global]:全局配置,此处的设置项对整个samba服务器都有效
- [homes]:宿主目录共享设置,此处用来设置Linux用户的默认共享,对应用户的宿主目录。当用户访问服务器中与自己用户名同名的共享目录时,通过验证后将会自动映射到该用户的宿主目录中
- [printers]:打印机共享设置
SAMBA 使用需要安装samba包 yum install samba -y samba的配置文件为:/etc/samba/smb.conf 配置文件分为三个部分: [global]定义全局性配置 [homes]定义对用户家目录的共享配置(其实在默认情况下不做任何设置,直接启用服务我们就可以通过smb协议访问所有用户的家目录) [printers]定义打印机共享配置 使用的端口: Port 137 Used for NetBIOS network browsing Port 138 Used for NetBIOS name service Port 139 Used for file and printer sharing and other operations Port 445 Used by Windows 2000/XP when NetBIOS over TCP/IP is disabled 1)Port 137 (UDP) - NetBIOS 名字服务 ; nmbd 3)Port 139 (TCP) - 文件和打印共享 ; smbd (基于SMB(Server Message Block)协议,主要在局域网中使用,文件共享协议) 2)Port 138 (UDP) - NetBIOS 数据报服务 4)Port 445 (TCP) - NetBIOS服务在windos 2000及以后版本使用此端口, (Common Internet File System,CIFS,它是SMB协议扩展到Internet后,实现Internet文件共享) 139/445
samba配置文件 [global] workgroup = WORKGROUP 说明:设定 Samba Server 所要加入的工作组或者域。 server string = Samba Server Version %v 说明:设定 Samba Server 的注释,可以是任何字符串,也可以不填。宏%v表示显示Samba的版本号。 hosts allow = 127. 192.168.1. 192.168.10.1 说明:表示允许连接到Samba Server的客户端,多个参数以空格隔开。可以用一个IP表示,也可以用一个网段表示。 hosts deny 与hosts allow 刚好相反。 例如:hosts allow=172.17.2.EXCEPT172.17.2.50 表示容许来自172.17.2.*.*的主机连接,但排除172.17.2.50 hosts allow=172.17.2.0/255.255.0.0 表示容许来自172.17.2.0/255.255.0.0子网中的所有主机连接 hosts allow=M1,M2 表示容许来自M1和M2两台计算机连接 hosts allow=@xq 表示容许来自XQ网域的所有计算机连接 max connections = 0 说明:max connections用来指定连接Samba Server的最大连接数目。如果超出连接数目,则新的连接请求将被拒绝。0表示不限制。 security = user 说明:设置用户访问Samba Server的验证方式,一共有四种验证方式。 1. share:用户访问Samba Server不需要提供用户名和口令, 安全性能较低。 2. user:Samba Server共享目录只能被授权的用户访问,由Samba Server负责检查账号和密码的正确性。账号和密码要在本Samba Server中建立。 3. server:依靠其他Windows NT/2000或Samba Server来验证用户的账号和密码,是一种代理验证。此种安全模式下,系统管理员可以把所有的Windows用户和口令集中到一个NT系统上,使用Windows NT进行Samba认证, 远程服务器可以自动认证全部用户和口令,如果认证失败,Samba将使用用户级安全模式作为替代的方式。 4. domain:域安全级别,使用主域控制器(PDC)来完成认证。 max connections = 0 说明:max connections用来指定连接Samba Server的最大连接数目。如果超出连接数目,则新的连接请求将被拒绝。0表示不限制。 log file = /var/log/samba/log.%m 说明:定义记录文件的位置LogFileName max log size = 50 说明:定义记录文件的大小size(单位是KB,如果是0的话就不限大小) [共享名] comment = 任意字符串 说明:comment是对该共享的描述,可以是任意字符串。 path = 共享目录路径 说明:path用来指定共享目录的路径。可以用%u、%m这样的宏来代替路径里的unix用户和客户机的Netbios名,用宏表示主要用于[homes]共享域。例如:如果我们不打算用home段做为客户的共享,而是在/home/share/下为每个Linux用户以他的用户名建个目录,作为他的共享目录,这样path就可以写成:path = /home/share/%u; 。 用户在连接到这共享时具体的路径会被他的用户名代替,要注意这个用户名路径一定要存在,否则,客户机在访问时会找不到网络路径。同样,如果我们不是以用户来划分目录,而是以客户机来划分目录,为网络上每台可以访问samba的机器都各自建个以它的netbios名的路径,作为不同机器的共享资源,就可以这样写:path = /home/share/%m 。 browseable = yes/no 说明:browseable用来指定该共享是否可以浏览。 writable = yes/no 说明:writable用来指定该共享路径是否可写。 available = yes/no 说明:available用来指定该共享资源是否可用。 admin users = 该共享的管理者 说明:admin users用来指定该共享的管理员(对该共享具有完全控制权限)。在samba 3.0中,如果用户验证方式设置成“security=share”时,此项无效。 例如:admin users =bobyuan,jane(多个用户中间用逗号隔开)。 valid users = 允许访问该共享的用户 说明:valid users用来指定允许访问该共享资源的用户。 例如:valid users = bobyuan,@bob,@tech(多个用户或者组中间用逗号隔开,如果要加入一个组就用“@+组名”表示。) invalid users = 禁止访问该共享的用户 说明:invalid users用来指定不允许访问该共享资源的用户。 例如:invalid users = root,@bob(多个用户或者组中间用逗号隔开。) write list = 允许写入该共享的用户 说明:write list用来指定可以在该共享下写入文件的用户。 例如:write list = bobyuan,@bob public = yes/no 说明:public用来指定该共享是否允许guest账户访问。 guest ok = yes/no 说明:意义同“public”。 read only = yes 只读设置 create mask = 0644 客户机创建文件权限 directory mask = 0755 客户机创建目录的权限 writable = yes 可写,还要看目录权限
samba 异步导致读取速度减半???
待验证对小文件传输的影响 如上设置完成后,samba写入速度达到100m/s,但读取速度只有50,dd测试硬盘读取速度在100+,所以此时问题不出现在硬盘和挂载上。 将 samba配置文件 /etc/samba/smb.conf 中 加入一行 aio read size = 0 表示,读取时不使用异步io。修改后重启samba服务,读取速度也达到100+。至此linux搭建的samba服务,算是达到了正常的速度。
samba性能调优,调优后,性能增加30% global中增加下面内容。 [global] use sendfile = yes write raw = yes read raw = yes max xmit = 65535 aio read size = 16384 aio write size = 16384 enable core files = no load printers = no max open files = 65535 dead time = 15 getwd cache = yes case sensitive = true default case = lower preserve case = no short prserve case = no mount时按如下参数mount -o async,cache=loose,vers=3.0,actimeo=60 其中 cache=loose在高版本的samba上是默认的,低版本默认使用strict。 actimeo参数影响较大,可以根据实际情况调整此数值。 vers=1.0在低版本的内核上性能表现比SMB2,SMB3要好一些。
参考链接:https://blog.csdn.net/qq_34267076/article/details/119937545
https://www.cnblogs.com/longchang/p/10734193.html