与samba共舞

Samba 沟通Windows与Linux两个不同的作业平台,samba可以


•    分享档案与打印机服务;
•    可以提供用户登入 SAMBA 主机时的身份认证,以提供不同身份者的个别数据;
•    可以进行 Windows 网络上的主机名解析 (NetBIOS name)
•    可以进行装置的分享 (例如 Zip, CDROM...)

Samba所需要的软件及结构

  •    这个套件主要包含了 SAMBA 的主要 daemon 档案 (smbd 及 nmbd)、 SAMBA 的文件档 (document)、以及其他与 SAMBA 相关的 logrotate 配置文件及开 机默认选项档案等;samba:
  •   samba-common:
    这个套件则主要提供了 SAMBA 的主要配置文件 (smb.conf) 、 smb.conf 语法检验的测试程序 (testparm)等等;
  • samba-client:
    这个套件则提供了当 Linux 做为 SAMBA Client 端时,所需要的工具指令,例如挂载 SAMBA 文件格式的执行档 smbmount 等等
  •  Samba 的套件结构:
    /etc/samba/smb.conf:smb.conf 是 Samba 的主要配置文件名,主要用于设定工作组、 NetBIOS 名称以及分享的目录等


smb.conf配置文件的参数详解

主机整体参数

  • workgroup = 工作组的名称:注意,主机群要相同;
  • netbios name = 主机的 NetBIOS 名称啊,每部主机均不同;
  • server string = 主机的简易说明,这个随便写即可。
  • display charset = 自己服务器上面的显示编码, 例如你在终端机时所查阅的编码信息。一般来说,与底下的 unix charset 会相同。
  • unix charset = 在 Linux 服务器上面所使用的编码,一般来说就是 i18n 的编码啰! 所以你必须要参考 /etc/sysconfig/i18n 内的『默认』编码。
  • dos charset = 就是 Windows 客户端的编码了! 一般来说我们的繁体中文 Windows 使用的是 big5 编码,这个编码在 Samba 内的格式被称为『 cp950 』喔!关于语系编码,建议您参考一下讨论区的这一篇:http://phorum.vbird.org/viewtopic.php?t=22001
  • log file = 登录档放置的档案,文件名可能会使用变量处理;
  • max log size = 登录档最大仅能到多少 Kbytes ,若大于该数字,则会被 rotate 掉。samba中与跟密码有关的参数
  • security = user, server, domain, share 四选一,这四个设定值分别代表:
  • user :使用 SAMBA 本身的密码数据库,密码数据库与底下的 smb passwd file 有关;
  • share:分享的数据不需要密码即可分享;
  • server, domain:使用外部主机的密码,亦即 SAMBA 是客户端之意,如果设定这个项目, 你还得要提供『password server = IP』的设定值才行;
  • encrypt passwords = Yes 代表密码要加密,注意那个 passwords 要有 s 才对!
  • smb passwd file = 密码放置的档案,通常是 /etc/samba/smbpasswd 。分享目录参数
    在目录参数部分,主要有底下这几个常见的参数喔:
  • [分享名称] :这个分享名称很重要,他是一个『代号』而已。 举例来说,你在 Windows 当中使用『共享』来分享网芳时,假设你将『D:\game』分享出来, 系统不是还会要你输入一个『在网络上面的名称』吗?假设你输入『My_Games』这个名称好了, 那么未来大家在网芳看到的这个文件夹 (D:\game) 名称其实是『\\你的IP\My_Games』啦!
  • comment :这个目录的说明!
  • path :在网芳中显示的名称 [分享名称] 中,所实际进入的 Linux 文件系统。 也就是说,在网芳当中看到的是 [分享] 的名称,而实际操作的文件系统则是在 path 里头所设定的。
  • read only:是否只读?
  • public :是否让所有可以登入的用户看到这个项目?
  • writable :是否可以写入?这里需要注意一下喔!那个 read only 与 writable 不是两个蛮相似的设定值吗?如果 writable 在这里设定为 no ,亦即不可写入,那跟 read only 不就互相抵触了!那个才是正确的设定?答案是:最后出现的那个设定值为主要的设定!
  • create mode 与 directory mode 都与权限有关的咯!
  • valid users = 用户,这个项目可以指定能够进入到此资源的特定使用者。
  • 因为分享的资源主要与 Linux 系统的档案权限有关,因此里头的设定参数多与权限有关。变数特性
  • %S:取代目前的设定项目值,所谓的『设定项目值』就是在 [分享] 里面的内容! 举例来说,例如底下的设定范

[home]
    valid users = %S
    ....
因为 valid users 是允许的登入者,设定为 %S 表示任何可登入的使用者都能够登入的意思~今天如果 dmtsai 这个使用者登入之后,那个 [homes] 就会自动的变成了 [dmtsai] 了!这样可以明白了吗? %S 的用意就是在替换掉目前 [ ] 里面的内容啦!
%m:代表 Client 端的 NetBIOS 主机名喔!
%M:代表 Client 端的 Internet 主机名喔!就是 HOSTNAME。
%L:代表 SAMBA 主机的 NetBIOS 主机名。
%H:代表用户的家目录。
%U:代表目前登入的使用者的使用者名称
%g:代表登入的使用者的组名。
%h:代表目前这部 SAMBA 主机的 HOSTNAME 喔!注意是 hostname 不是 NetBIOS name 喔!
%I:代表 Client 的 IP 咯。
%T:代表目前的日期与时间

 

简单的smb.conf配置

[global]   
workgroup = ilovexinji   
server string = %h
server    map to guest = Bad User   
obey pam restrictions = Yes   
pam password change = Yes   
passwd program = /usr/bin/passwd %u   
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .   
unix password sync = Yes   
syslog = 0   
log file = /var/log/samba/log.%m   
max log size = 1000   
dns proxy = No   
usershare allow
guests = Yes   
panic action = /usr/share/samba/panic-action %d

[ilovexinji]   
comment = ilovexinji   
path = /home/xinji   
valid users = @ilovexinji   
write list = @ilovexinji   
read only = No   
create mask = 02664   
force create mode = 02664   
directory mask = 02775   
force directory mode = 02775

如果你想要删除samba共享出的文件放到“回收站”中,你只需要在[global]  中添加:

   vfs object = recycle
   recycle:keeptree = yes
   recycle:versions = yes
   recycle:repository = .recycle
   recycle:touch_mtime = yes
   recycle:exclude = *.tmp, *.bak
   recycle:exclude_dir = .recycle

添加完后重启samba,你就会在你共享的文件夹下看到一个隐藏的文件夹“.recycle”,在这个文件夹中你可以找回你误删的文件。

测试smbd:

testparm [-s] [-h] [-L servername] [configfilename] [hostname hostIP]


导出smbd的帐号:

使用pdbedit -L 可以查看所有samba的用户

  1. 先将本机添加了samba的用户备份
    /etc/passwd(用户),/etc/shadow(密码)
  2. 将用户所属的组备份
    /etc/group
  3. 将samba的密码文件备份
    /var/lib/samba/passdb.tdb

设置权限继承父文件的权限:sudo chmod g+s 文件夹 


Samba软件信息:

当前稳定版:4.4.5

授权信息:GNU通用公共许可证

操作系统:Linux/Unix

官方站点:https://www.samba.org/

 教程参考:

http://vbird.dic.ksu.edu.tw/linux_server/0370samba/0370samba-centos4.php#before

提交评论

安全码
刷新

附加信息