samba基本共享
关于sanmba项目
smb/cifs协议
主要软件包
服务端samba
客户端 samba-client cifs-utils
主要程序
smbd 提供对文件/打印资源的共享访问
监听端口 TCP 139 TCP445
nmbd 提供基于NetBIOS协议的主机名解析
监听端口 UDP137 UDP138
系统服务脚本 /etc/init.d/smb
配置目录及主要配置文件
/etc/samba/
/etc/samba/smb.conf
配置文件检查工具
testparm
配置组成
【global】全局设置
【homes】用户目录共享设置
【printers】打印机共享设置
【myshare】自定义的共享目录设置
辅助配置内容
-注释行:以#开始的行
-配置样例行以;开始的行
实验如下
1安装相关软件包
2编辑配置文件 通过egrep -v ‘^#|^;|^$’
3继续对过滤后的文件进行编辑
其中global表示全局设置
homes表示用户目录共享设置
printers打印机共享设置
同时可以自定义共享目录设置
同时配置语句还有如下意义
workgroup 工作组名称
serverstring 服务器描述
security 默认使用的安全级别
share 匿名共享
user 用户认证
server,domain 其他服务器或win域认证
comment对此共享目录的说明文字
path 共享目录的实际位置
browseable 是否可见 no为隐藏共享
public 是否所有人可用,等效于guest OK
writable 是否可写 与readonly相反
设定了自己的共享目录
通过smbclietn -L在输入密码的时候 直接回车可以看到tools的信息
需要注意的是 当全局的安全性设置为user时候 即使在tools下设置为share也不行
在windows下的访问(通过unc路径)
除了 上述的匿名访问之外samba还可以设置用户验证。用于samba用户验证的账号称之为
共享账号。新建共享账号时,必须先有同名的系统账号
对于共享共享账号,它的密码是独立的
而访问共享时以共享账号/密码登陆,权限取决于对应的系统账号
默认采用TDB数据格式
/var/lib/samba/private/passdb.tdb
那么如何将一个系统账号声明为共享账号呢
pdbedit工具
格式 pdbedit 【选项】 。。。 【共享账户名】
该工具常用的管理选项
-a 将指定的系统用户添加为共享账号
-L查看共享账号消息
-x删除指定的共享账号
那么我们添加一个用于验证samba共享访问验证的用户alice
useradd alice && pdbedit -a alice
之后系统会通知你相关的消息
可使用smbpasswd 重新设置密码
在这里我们设置两个用户其中alice对共享目录能读能写
而bob对目录仅为读
继续添加用户bob
把/etc/samba/smb.conf
的设置更改为如下
read only代表默认权限为只读
valid users 指明下列用户具有 该默认的权限
writelist 指明下列用户同时还具有写的权限
如此
在访问时候提示输入密码,用户名用共享账号 密码用pdbedit的密码
对以上其实我仍然有许多不解,以下是我的心得
1在匿名访问的时候即使把tools更改为share后 ,如果global的安全为user仍然提示输入密码
2同上条件匿名访问把tools设置为user global设置为shar此时访问现象很奇怪无法输入用户名,可以输入密码
3同样当我们把 全局与tools的安全都设置为user时,将public设置为no 与上述结果相同用户 仅仅被限制为来宾,并提示输入密码
在打开别名文件后似乎对上述的疑问有点明朗开来
在这里我们看到了别名也看到了guest,这个文件事实上是为了安全性着想
那么我们把alice的别名设置为aa bob的别名设置为bb验证两者的读写权限
同时在配置文件中需要指出别名文件的位置
usermap = /etc/samba/smbusers
我们用aa别名登陆
可以上传(我们也必须保证用户alice能够对/usr/src有写入权限)
我们再用bb登陆 如下访问被拒绝
同时我们可以修改umask来调整用户创建文件后文件的权限值
我们利用另外一台linux访问他并验证权限
我们查看aa上传的文件夹的权限
在对上传的文件进行权限查看的时候我们发现实际上权限为100,这和我们平常理解的umask有区别
当我们把umask设置为777时,上传的文件为766
它的权限为111保留了x似乎又和以往的umask联系上了。。
同样我们可以像挂载nfs一样挂载samba
mount -o username=aa //192.168.0.2/tool aa