由于想在jackxiang目录下建立一个文件测试samb看看,没有想到看是看到了,一用记事本打开后保存说是找不到文件路径,最后发现时文件权限的问题,于是作如下修改:
修改为:
[root@localhost home]# chown -R jackxiang.users jackxiang/
就可以用记事本等编辑工具修改了而不提示找不到路径了。
\\192.168.63.128
然后直接点击生成的jackxiang目录,输入通过smbpasswd –a jackxiang 输入密码。
进入目录,建立文件夹等。。。注意是:user组喔,你建立文件夹可能会出现问题,所以:
-rw-rw-rw- 1 jackxiang jackxiang 18 02-12 07:55 mysambtest.txt
drwxr-xr-x 2 jackxiang jackxiang 4096 02-12 07:56 newfolder
drwxr-xr-x 2 jackxiang jackxiang 4096 02-12 07:56 newfoldertest
-rw-rw-rw- 1 jackxiang jackxiang 0 02-12 07:57 newfolder.txt
这时候才是随便建立目录和文件喽!
附:
#cd /usr/local/samba/bin
测试参数的设置格式,属性是否正确。
Samba version 3.0.10
PID Username Group Machine
-------------------------------------------------------------------
2502 root UEC uec-gcp (192.168.1.2)
Service pid machine Connected at
-------------------------------------------------------
IPC$ 2502 uec-gcp Mon Sep 12 13:11:31 2005
John docs 2502 uec-gcp Mon Sep 12 12:59:01 2005
gcp docs 2502 uec-gcp Mon Sep 12 12:58:54 2005
No locked files
添加访问的共享资源的用户,一般用户也可以访问SWAT,但只有查看状态的权限。
# smbtree
Password:
WORKGROUP
\SUN440EN Samba 3.0.10
\SUN440ENADMIN$ IPC Service (Samba 3.0.10)
\SUN440ENIPC$ IPC Service (Samba 3.0.10)
\SUN440ENjohn docs
\SUN440ENgcp docs
显示了samba server 上的共享资源。
熟悉Linux的用户可能常常在Linux上安装Samba服务来实现与Windows系统的文件共享和打印机共享,他们之间的数据传输使用SMB(Service Message Block)协议.这是一个在传输层之上的协议,所以他可以支持很多不同异构系统的网络互联(比如,Linux,Solaris,Windows等),Samba之所以能够工作,因为SMB协议模仿了Windows内核的文件和打印共享协议。微软已经将SMB改名为公共因特网文件系统(CIFS,Common Internet File System ),并打算把它设计为Internet的标准协议。这在一定程度上是由于它想与最初的基于NetBIOS的SMB保持一定的距离。NetBIOS是Windows 网络的一个伟大的工具,Microsoft使用NetBIOS实现了一个网络文件/打印服务系统,但是为LAN设计的它却注定了不能路由。 Samba执行了SMB/CIFS的一个版本,这个版本在很大程度上与大多数的Windows版本兼容。我们可以通过Windows的网络邻居来轻松访问安装了Samba的UNIX/LINUX服务器。
1.安装centos时在防火墙中开启文件共享服务,并选择安装文件共享服务器
2.启动 Samba 服务。
# chkconfig smb on ← 设置 Samba 自启动
# service smb start ← 启动Samba服务
Starting SMB services: [ OK ]
Starting NMB services: [ OK ]
# smbpasswd -a root ← 将系统用户 root 加入到 Samba 用户数据库
New SMB password: ← 输入该用户用于登录 Samba 的密码
Retype new SMB password: ← 再次确认输入该密码
Added user centospub.
3.配置Samba
通过编辑 /etc/samba/smb.conf 让将要被共享的目录拥有充分的读写权限属性。
在smb.conf文件最后加入下面内容
[all file]
comment = centos all file
path = /
valid users = root
public = no
writable = yes
printable = no
create mask = 0777
directory mask = 0777
# [all file] 是共享名
#comment = centos all file是注释
# path = / 分享资源的完整路径名称,除了路径要正确外,目录的权限也要设对,我设置了共享/所有文件
#valid users = root valid users 说明:指定共享资源的有效用户,即允许访问该资源的用户
# public = no 设置public=no 表示在网上邻居看见但不能进入
# writable = yes writable = yes表示可写,writable = no表示只读
# printable-------是yes/否no允许打印
#create mask-----建立文件时所给的权限
#directory mask--建立目录时所给的权限
修改完smb.conf文件后一定要重启sam服务
# servcie smb restart ---重启smb服务
以上是我开启samba服务的过程
4、访问共享资源
在windows的桌面上打开“网上邻居”,并点击“查看工作组计算机”选项;
就出现 Samba 服务端的连接了,用户和密码就是你设置的。
============================================================
smb.conf手册
服务名:smb
配置目录:/etc/sabma/
主配置文件:/etc/sabma/smb.conf
#====================== Global Settings =====================
17行workgroup
语法 workgtoup = <工作组群>;
预设 workgroup = MYGROUP
说明 设定 Samba Server 的工作组
例 workgroup = workgroup 和WIN2000S设为一个组,可在网上邻居可中看到共享
21行server string
语法 server string = <说明>;
预设 sarver string = Samba Server
说明 设定 Samba Server 的注释
其他 支持变量 t%-访问时间 I%-客户端IP m%-客户端主机名 M%-客户端域名 S%-客户端用户名
例 server string = this is a Samba Server 设定出现在Windows网上邻居的 Samba Server 注释为 this is a Samba Server
28行hosts allow
语法 hosts aoolw = <IP地址>; ...
预设 ; host allow = 192.168.1. 192.168.2. 127.
说明 限制允许连接到 Samba Server 的机器,多个参数以空格隔开。表示方法可以为
完整的IP地址,如 192.168.0.1
网段,如 192.168.0.
例 hosts allow = 192.168.1. 192.168.0.1 表示允许192.168.1 网段的机器 网址为192.168.0.1 的机器 连接到自己的samba server
32行printcap name
语法 printcap name = <打印机配置文件>;
预设 printcap name = /etc/printcap
说明 设定 samba srever 打印机的配置文件
例 printcap name = /etc/printcap 设定 samba srever 参考 /etc/printcap 档的打印机设定
33行load printers
语法 load printers = <yes/no>;
预设 load printers = yes
说明 是否在开启 samba server 时即共享打印机
38行printing
语法 printing = <打印机类型>;
预设 printing = lprng
说明 设定 samba server 打印机所使用的类型,37行为目前所支持的类型
42行guest account
语法 guert account = <帐户名称>;
预设 guert account = pcguest
说明 设定访问 samba server 的来宾帐户(即访问时不用输入用户名和密码的帐户),若设为pcguest的话则为默认为"nobody"用户
例 guert account = andy 设定设定访问 samba server 的来宾帐户以andy用户登陆,则此登陆帐户享有andy用户的所有权限
46行log file
语法 log file = <日志文件>;
预设 log file = /var/log/samba/%m.log
说明 设定 samba server 日志文件的储存位置和文件名(%m代表客户端主机名)
49行max log size
语法 max log size = <??KB>;
预设 max log size = 0
说明 设定日子文件的最大容量,单位KB 这里的预设值0代表不做限制
53行security
语法 security = <等级>;
预设 security = user
说明 设定访问 samba server 的安全级别 共有四种
share---不需要提供用户名和密码
user----需要提供用户名和密码,而且身份验证由 samba server 负责
server--需要提供用户名和密码,可指定其他机器(winNT/2000/XP)或另一台 samba server作身份验证
domain--需要提供用户名和密码,指定winNT/2000/XP域服务器作身份验证
60行password server
语法 password server = <IP地址/主机名>;
预设 password server = <NT-Server-Name>;
说明 指定某台服务器(包括windows 和 linux)的密码,作为用户登入时验证的密码
其他 此项需配合 security = server时,才可设定本参数
64行password level
65行username level
语法 password level = <位数>;
username level = <位数>;
预设 password level = 8
username level = 8
说明 设定用户名和密码的位数,预设为8位字符
70行encrypt passwords
语法 encrypt passwords = <yes/no>;
预设 encrypt passwords = yse
说明 设定是否对samba的密码加密
71行smb passwd file
语法 smb passwd file = <密码文件>;
预设 smb passwd file = /etc/samba/smbpasswd
说明 设定samba的密码文件
130行local master
语法 local master = <yes/no>;
预设 local master = no
说明 设定 samba server 是否要担当LMB角色(LMB负责收集本地网络的Browse List资源),通常无特殊原因设为no
134行os level = 33
语法 os level = <数字>;
预设 os level = 33
说明 设定 samba server的os level. os level从 0 到 255 . winNT的os level为33, win95/98的os level 是 1 .
若要拿samba server 当LMB或DMB则它的os level至少要大于NT的33以上
139行domain master
语法 domain master = <yes/no>;
预设 domain master = yes
说明 设定 samba server 是否要担当DMB角色(DMB会负责收集其他子网的Browse List资源),通常无特殊原因设为no
143行preferred master
语法 preferred master = <yes/no>;
预设 preferred master = yes
说明 设定 samba server 是否要担当PDC角色(PDC会负责追踪网络帐户进行的一切变更),通常无特殊原因设为no.
(同一网段不可有两个PDC,他们会每5分钟抢主控权一次)
163行wins support
语法 wins support = <yes/no>;
预设 wins support = yes
说明 设定samba server 是否想网络提供WINS服务,通常无特殊原因设为no.
除非所处网络上没有主机提供WINS服务且需要此台samba server提供WINS服务是才设yes
其他 wins support 和 wins server 只能选择一个
167行wins server
语法 wins server = <IP地址>;
预设 wins server = w.x.y.z
说明 设定samba server 是否要使用别台主机提供的WINS服务.通常无特殊原因设为no.除非所处网络上有一台主机提供WINS服务才要设yes
其他 wins support 和 wins server
例 wins server = 192.168.0.1 表示samba server要使用192.168.0.1提供的WINS服务
#=============Share Definitions ================
[homes]
comment = Home Directories
browseable = no
writable = yes
valid users = %S
使用者本身的"家"目录,当使用者以samba使用者身份登入samba server 后,
samba server 底下会看到自己的家目录,目录名称是使用者自己的帐号
[分享的资源名称]
<指令1>; = (参数)
<指令2>; = (参数)
..........................
要提供分享资源时,须先把欲分享的资源以 [ ] 符号括住,底下通常会带指令和参数来表示此资源的设定和存取权限等,详情如下
小弟自己通过实践终于配置成功了samba,写下配置过程,希望高手多提意见,本文有个遗憾我的rpm安装samba打印机共享成功,用源码安装打印机没有成功,非常可惜。(原创)本文只发表于www.xxlinux.com,作者tian1118(大学法律专业的linux爱好者)。特别感谢黑夜不在,燕南天等。
欢迎转载,并保证本文的完整性,并注明出处。
先学习一些基础。
samba的核心是两个守护进程smbd和nmbd程序,在服务器启动到停止期间持续运行。Smbd和nmbd使用的全
部配置信息全都保存在smb.conf文件中。Smb.conf向smbd和nmbd两个守护进程说明输出什么以便共享,
共享输出给谁及如何进行输出。Smbd进程的作用是处理到来的SMB软件包,为使用该软件包的资源与
Linux进行协商,nmbd进程使其它主机(或工作站)能浏览Linux服务器。
如果安装时用rpm安装,那么启动samba不用service smb start,用service nmbd start,service smbd start也可以的。
在smb.conf文件中,注释行以“#”开头,同时每项中英文字母不区分大小写,在一行最后字符尾加
“\”,可将一行分成多行。用“;”开头的行,是可改变的配置,将“;”去掉时,该配置将取作用。
[global](全局参数的设置,它对samba的功能具有很大的影响,主要用来设置整个系统规则。
workgroup= 这是你在windows中的域。
server string= 这是在windows中看到你的samba的解释。
netbios name =最好是你的机器名,如果把改句注消,默认的是你LINUX机器名,不过,最好还是自己填上
dos charset=cp936
unix charset=cp936 加上这二句就可以正确显示中文了。
hosts allow 允许登录的linux-samba的主机名单,用IP地址给出,多个IP地址用空格分开,不在名单中的主机将不能得到samba提供的服务,这也是网络安全的一个方面。
printcap name 指定printcap文件地址,通常为/etc/printcap,包含了linux打印机的配置信息。
load printers 允许使用共享打印机时,默认值为yes。
printing 如果使用的打印机是非标准的,那么应该指出打印机系统类型。
log file = /usr/local/samba/var/log.%m
max log size = 0
上面这两行则是Samba日志的相关定义。其记录文件的位置是放在/var/log/samba/%m.log,安装目录不一样,日志可不一样,后面的一条是定义日志记录文件的大小,单位是KB,如果是0的话就不限大小。
guest acount 来宾帐户,表示用哪一个Linux用户作为所要的客户连接,定义Samba缺省的用户账号,这个账号必须在/etc/passwd中。
security 指定安全模式。大多数用户使用user级的安全模式,samba用本地linux口令文件验证。
security = security_level
定义Samba的安全级别,按从低到高分为四级:share,user,server,domain。它们对应的验证方式如下:
share:没有安全性的级别,任何用户都可以不要用户名和口令访问服务器上的资源。
user:samba的默认配置,要求用户在访问共享资源之前资源必须先提供用户名和密码进行验证。
server:和user安全级别类似,但用户名和密码是递交到另外一个服务器去验证,比如递交给一台NT服务器。如果递交失败,就退到user安全级。
domain:这个安全级别要求网络上存在一台Windows的主域控制器,samba把用户名和密码递交给它去验证。
后面三种安全级都要求用户在本linux机器上也要系统帐户。否则是不能访问的
smb passwd file=/etc/samba/smbpasswd (设置smb密码文件的位置)
username map =/etc/smbusers
encrypt passwords =no 采用的时明文密码验证,如果是加密的,就改为yes
记得某月的某一天,我下定决定安装任何软件包只用源码,不用rpm。虽然很麻烦,但是对于了解linux内部有些帮助。
首先我们创建一个文档,边安装配置samba,边写教程。
从www.samba.org下载samba最新源码包,我下载的是samba-3.0.7.tar.gz,把它放在我的目录的中/root/lova/samba下。
tar -zxvf samba-3.0.7.tar.gz 解压得到samba-3.0-7
cd samba-3.0.7
cat README 先看说明,可惜E文太差,不太懂,直接安装吧。
find . -name configure
./source/configure 原来藏在这
cd source/
mkdir /usr/local/samba 创建安装目录
./configure --prefix=/usr/local/samba/ 安装到/usr/loca/samba
make && make install
cd /usr/local/samba/ 到安装目录看看
ls
bin include lib man private sbin swat var 安装成功,怎么没有etc目录和smb.conf文件呀,那我自己创建一个
[root--/usr/local/samba]mkdir etc
[root--/usr/local/samba]cp ~/love/samba/samba-3.0.7/examples/smb.conf.default ./etc/smb.conf
好了现在看看我们的目标。
一、有一个共享目录,只可以读,不可以做任何改变。
二、有一个共享目录,任何人都可以做任何改变,包括添加目录文件,删除目录文件。
三、每个用户可以看到自己的主目录,其它用户不可以看到,当然不可以作改动。
四、有一个共享目录,组A中的人可以做任何改动,组B中的人只可以读,组C中的人看不到。
五、每个用户登录后都可以使用打印机。(没有成功)。
目标1方法1
[root--~]cd /usr/local/samba/etc/
[root--/usr/local/samba/etc]cp smb.conf beifen 备份一下免得改错了。
修改smb.conf,
workgroup = MSHOME 改为你linux所在的工作组
security = share 开放共享
在smb.conf最后加上
[read1]
comment = read1
path = /home/read1
public = yes
guest ok = yes
writable = yes
创建共享目录
whoami
root
umask
0022
mkdir /home/read1
cd !$
cat >; linux
hi linux
ll /home/read1/
总用量 4
-rw-r--r-- 1 root root 9 10月 24 11:20 linux
644嘛
adduser nxgz ; passwd !$ ; 创建系统用户
[root--~]/usr/local/samba/bin/smbpasswd -a nxgz 再把这个用户添加为samba用户
Can't load /usr/local/samba//lib/smb.conf - run testparm to debug it 怎么出错了,好像没有在lib下没有smb.conf,那我就加上吧
[root--~]cp /usr/local/samba/etc/smb.conf /usr/local/samba/lib/
[root--~]/usr/local/samba/bin/smbpasswd -a nxgz 添加samba用户成功
New SMB password:
Retype new SMB password:
startsmbfilepwent_internal: file /usr/local/samba//private/smbpasswd did not exist. File successfully created.
Added user nxgz.
[root--~]service iptables stop
清除所有链: [ 确定 ]
删除用户定义的链: [ 确定 ]
将内建链重设为默认的“ACCEPT”策略: [ 确定 ]
[root--~]service network restart
正在关闭接口 eth0: [ 确定 ]
关闭环回接口: [ 确定 ]
设置网络参数: [ 确定 ]
弹出环回接口: [ 确定 ]
弹出界面 eth0: [ 确定 ]
启动samba的二个进程,注意是两个进程喔,下面两行都要运行的:
[root--~]/usr/local/samba/sbin/smbd -D
[root--~]/usr/local/samba/sbin/nmbd -D
到win-xp下,打开的的电脑,找到地址,输入\\linux主机名,可以找到共享的目录read,成功。
方法2
在smb.conf最后加上如下
[read2]
comment = read2
path = /home/read2
public = yes
read only = yes
mkdir /home/read2 ; cd !$ ; cat >; linux ; chmod -R 777 /home/read2 ; 创建共享目录及修改权限
然后
service iptables stop
service network restart
/usr/local/samba/sbin/smbd -D
/usr/local/samba/sbin/nmbd -D
在win-xp下是看不到我们共享的read2。
可能是smb.conf有问题,我们用testparm工具检查一下。
[root--~]testparm
bash: testparm: command not found 没有输入完整路径。
[root--~]/usr/local/samba/bin/testparm
Load smb config files from /usr/local/samba//lib/smb.conf
Processing section "[homes]"
Processing section "[printers]"
Processing section "[read]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
就是没有read2,我们仔细看看第一行,Load smb config files from /usr/local/samba//lib/smb.conf,好像testpart工具是根据lib/smb.conf得到的,lib下的smb.conf和etc下的smb.conf完全不一样嘛,因为我们增加了read2,我们可以复制覆盖了它
cp -f /usr/local/samba/etc/smb.conf /usr/local/samba/lib/
然后
service iptables stop
service network restart
/usr/local/samba/sbin/smbd -D
/usr/local/samba/sbin/nmbd -D
回到win-xp下可以找到,哈哈,好了,虽然它的权限为777,但是由read only控制,不可以删除,添加。
目标1成功
由于每次修改完/usr/loca/samba/etc/smb.conf,我们都要
cp -f /usr/local/samba/etc/smb.conf /usr/local/samba/lib/
然后
service iptables stop
service network restart
/usr/local/samba/sbin/smbd -D
/usr/local/samba/sbin/nmbd -D
我们可以写个shell
emacs samba.sh
cp -f /usr/local/samba/etc/smb.conf /usr/local/samba/lib/
service iptables stop
service network restart
/usr/local/samba/sbin/smbd -D
/usr/local/samba/sbin/nmbd -D
修改完,启动时可以
1, sh samba.sh
2, sh < samba.sh
3, chmod 777 samba.sh
mv samba.sh ~/bin
samba.sh
这三种方法都可以。
目标2,
以上保持不变,在smb.conf最后加上
[write]
comment = write
path = /home/write
public = yes
guest ok = yes
writable = yes
mkdir /home/write ; cd /home/write ; cat >;linux ; chmod -R 777 /home/write/ ;sh < samba.sh创建共享目录文件,开放权限,重启服务
到win-xp下read目录下可以读,在write中可以删除,添加,改变原文件,目标2完全正确。我们再试一下中文问题,在win-xp下打开linux的write目录,找编辑linux,增加中文,并在write目录下建立中文目录,我们再回到linux下看结果是否可以正常显示中文。结果编辑linux的中文可以正常显示,中文目录是乱码,想想如何解决。
在smb.confr的[global]中添加
dos charset=cp936
unix charset=cp936 我是加到 security = share的下面了
在win-xp打开write添加中文目录,回到linux下,一看可以正确识别中文
目标3,
多建立几个samba用户。
adduser sambau001 ; passwd !$ ; /usr/local/samba/bin/smbpasswd -a sambau001
用以上方法增加sambau002,sambau003用户
分别su到这些用户,增加文件linux,然后修改smb.conf,把security = 改为user,这次请重新启动一下win,因为添加用户了,这时输入用户和口令就可以进去了,并可以看到自己的目录
我的home如下
[homes]
comment = home
browseable = no
writable = yes
valid users = %S
create mode = 0664
directory mode = 0775
用一个用户进入,win-xp下建立一个文件,一个目录,在目录中另外建立一个文件,在linux用该用户进入自己的目标,可以看到刚才建立的文件目录,文件权限符合664,目录权限符合775。
目标3成功。
目标4,
建立3个组
groupadd sambag001 ; groupadd sambag002 ; groupadd sambag003
usermod -g sambag001 sambau001 ; usermod -g sambag002 sambau002 ; usermod -g sambag003 sambau003 把刚才3个用户分别添加到3个组中。
mkdir share ;cd share/ ;cat >; linux ; chmod -R 777 /home/share/ 开放权限,在smb.conf中控制它
要求sambag001组中的用户r,sambag002组中的用户rw,sambag003组中的用户no
在smb.conf中添加以下
[share]
comment = share
path = /home/share
public = no
valid users = @sambag001,@sambag002
invalid users = @sambag003
write list = @sambag002
再加到win-xp下试,成功
没列出的也不可以进入。
其中用valid userd列出的只有r权限,如果在write list前加个;号,那么sambag001中的用户和sambag002中的用户只可以看。
其中[]里面的是指定的共享名,一般就是网络邻居里面可以看见的文件夹的名字。
comment指的是对改共享的备注。
path指定共享的路径
allow hosts和deny hosts和前面的全局设置的方法一样这里不再提及。
writeable指定了这个目录缺省是否可写。
user设置所有可能使用该共享资源的用户,也可以用@group代表group这个组的所有成员,不同的项目之间用空格或者逗号隔开。
valid users指定能够看到该共享资源的用户和组。
invalid users指定不能够看到该共享资源的用户和组。
read list 指定只能读取该共享资源的用户和组。
write list指定能读取和写该共享资源的用户和组。
admin list指定能管理该共享资源(包括读写和权限赋予等)的用户和组。
public指明该共享资源是否能给游客帐号访问,这个开关有时候也叫guest ok,所以有的配置文件中出现guest ok = yes其实和public = yes是一样的。
create mode指明新建立的文件的属性,一般是0755。
directory mode指明新建立的目录的属性,一般是0755。
force user强制把建立文件的属主是谁。如果我有一个目录,让guest可以写,那么guest就可以删除,如果我用force user= grind强制建立文件的属主是grind,同时限制create mask = 0755,这样guest就不能删除了。
browseable 指定其它用户能否浏览该用户主目录,当然不允许,所以置为no。
writable 使用户访问该目录时具有读取和写入主目录中的文件时,取值为yes,只有读取权限时应置为no。
xp访问linux成功,再试一下linux访问xp
用 #smbclinet "\\\\nxgz\共享目录名"
可以像telnet或ftp一样登录windows主机nxgz,要求你输入密码时,输入密码。
然后出现 smb:\>;
由于是源码安装以下工具命令不成功。{{
smbmount //test/share /pub linux挂接windows目录
mount -t smbfs -o username=WINDOWS主机登录名,password=对应密码 //PC-NAME/SHARE-DIR /mnt/tmp
smbmount //testsamba/pub pub linux与linux共享
添加相应目录和用户
1,一个一个添加用户
以root用户身份登录,添加Linux用户,并设定密码:
adduser smbuser
passwd smbuser
把用户smbuser加入到Samba 服务器用户中并设定密码:
smbpasswd -a smbuser
2,加入系统中的所有用户
#vi /etc/passwd (把一些你不用或者你不知道的用户全删了)
# cat /etc/passwd │ mksmbpasswd.sh >; /etc/samba/smbpasswd (把linux本机用户加到smb用户里去)
#smbpasswd test (设置test用户的smb访问口令)
#/etc/rc.d/init.d/smb restart (重启samba)
3,加入一部分
#smbadduser linuxname:2000name #增加用户
用smbpasswd为每个用户指定password,格式如下:(必须是Root)
smbpasswd userid:passwd userid2:passwd2 ...... }}
root@test root]# rpm -qa | grep samba
[root@test root]# rpm -e --nodeps sambaclient
[root@test root]# cd /usr/local/src
[root@test src]# tar -zxvf /root/soft/samba-2.2.8a.tar.gz
这个时候会有一个目录跑出来: /usr/local/src/samba-2.2.8a
[root@test src]# cd samba-2.2.8a
[root@test samba-2.2.8a]# cd source
[root@test source]# ./configure --prefix=/usr/local/samba --with-automount --with-smbmount --with-pam --with-mmap --with-quotas --with-libsmbclient --sysconfdir=/etc/samba
[root@test source]# make
[root@test source]# make install
[root@test source]# vi /etc/profile
##在export前一行加上PATH=$PATH:/usr/local/samba/bin:/usr/local/samba/sbin
[root@test source]# cd /etc/samba
[root@test samba]# ln -sv /etc/samba/smb.conf /usr/local/samba/lib/
[root@test samba]# more smb.conf | grep -v "#" | grep -v ";" | more
[global]
workgroup = MYGROUP # 工作组
server string = Samba Server # 主机说明
printcap name = /etc/printcap
load printers = yes
cups options = raw
log file = /var/log/samba/%m.log # log文件
max log size = 50
security = user # 使用密码模式登录
encrypt passwords = yes
smb passwd file = /etc/samba/smbpasswd # 密码文件
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
dns proxy = no
idmap uid = 16777216-33554431
idmap gid = 16777216-33554431
template shell = /bin/false
winbind use default domain = no
[share]
comment = share
path = /var/samba # 用户的主目录
public = yes # 所有人可读
writable = yes # 可写
printable = no
create mask = 0755 # 创建文件的权限
directory mode = 0755 # 创建目录的权限
[homes]
comment = Home Directories # 描述
browseable = no # 其他用户不可浏览
writable = yes # 可写
valid users = %S # 用户的主目录
create mode = 0664 # 创建文件的权限
directory mode = 0775 # 创建目录的权限
[root@test samba]# touch /etc/samba/smbpasswd # 建立samba密码文件
[root@test samba]# smbpasswd -a root # 建立samba用户
[root@test samba]# mkdir /var/samba # 建立samba主目录
[root@test samba]# chown root:root /var/samba # 授权,使所有用户都有写入权限
[root@test samba]# chmod 777 /var/samba
[root@test samba]# smbd start # 启动
[root@test samba]# nmbd start
[root@test samba]# echo "/usr/local/samba/sbin/smbd start" >> /etc/rc.local # 建立开机自启动
[root@test samba]# echo "/usr/local/samba/sbin/nmbd start" >> /etc/rc.local
#cd /usr/local/samba/bin
测试参数的设置格式,属性是否正确。
Samba version 3.0.10
PID Username Group Machine
-------------------------------------------------------------------
2502 root UEC uec-gcp (192.168.1.2)
Service pid machine Connected at
-------------------------------------------------------
IPC$ 2502 uec-gcp Mon Sep 12 13:11:31 2005
John docs 2502 uec-gcp Mon Sep 12 12:59:01 2005
gcp docs 2502 uec-gcp Mon Sep 12 12:58:54 2005
No locked files
添加访问的共享资源的用户,一般用户也可以访问SWAT,但只有查看状态的权限。
# smbtree
Password:
WORKGROUP
\SUN440EN Samba 3.0.10
\SUN440ENADMIN$ IPC Service (Samba 3.0.10)
\SUN440ENIPC$ IPC Service (Samba 3.0.10)
\SUN440ENjohn docs
\SUN440ENgcp docs
显示了samba server 上的共享资源。
http://www.kaiyuanba.cn/content/manage/ringkee/samba.htm
-rw-r--r-- 1 root root 14 02-12 07:50 mysambtest.txt
修改为:
[root@localhost home]# chown -R jackxiang.users jackxiang/
就可以用记事本等编辑工具修改了而不提示找不到路径了。
\\192.168.63.128
然后直接点击生成的jackxiang目录,输入通过smbpasswd –a jackxiang 输入密码。
进入目录,建立文件夹等。。。注意是:user组喔,你建立文件夹可能会出现问题,所以:
[root@localhost home]# chown -R jackxiang.jackxiang jackxiang/
-rw-rw-rw- 1 jackxiang jackxiang 18 02-12 07:55 mysambtest.txt
drwxr-xr-x 2 jackxiang jackxiang 4096 02-12 07:56 newfolder
drwxr-xr-x 2 jackxiang jackxiang 4096 02-12 07:56 newfoldertest
-rw-rw-rw- 1 jackxiang jackxiang 0 02-12 07:57 newfolder.txt
这时候才是随便建立目录和文件喽!
附:
#cd /usr/local/samba/bin
#testparms
测试参数的设置格式,属性是否正确。
#smbstatus
Samba version 3.0.10
PID Username Group Machine
-------------------------------------------------------------------
2502 root UEC uec-gcp (192.168.1.2)
Service pid machine Connected at
-------------------------------------------------------
IPC$ 2502 uec-gcp Mon Sep 12 13:11:31 2005
John docs 2502 uec-gcp Mon Sep 12 12:59:01 2005
gcp docs 2502 uec-gcp Mon Sep 12 12:58:54 2005
No locked files
#smbpasswd –a username
添加访问的共享资源的用户,一般用户也可以访问SWAT,但只有查看状态的权限。
# smbtree
Password:
WORKGROUP
\SUN440EN Samba 3.0.10
\SUN440ENADMIN$ IPC Service (Samba 3.0.10)
\SUN440ENIPC$ IPC Service (Samba 3.0.10)
\SUN440ENjohn docs
\SUN440ENgcp docs
[root@localhost bin]# ./testparm
Load smb config files from /usr/local/samba/lib/smb.conf
Processing section "[homes]"
Processing section "[brutxiang]"
Processing section "[lxliu]"
Processing section "[ianzhang]"
Processing section "[guodong]"
Processing section "[kamchen]"
Load smb config files from /usr/local/samba/lib/smb.conf
Processing section "[homes]"
Processing section "[brutxiang]"
Processing section "[lxliu]"
Processing section "[ianzhang]"
Processing section "[guodong]"
Processing section "[kamchen]"
#smbclient -L yourhostname.
显示了samba server 上的共享资源。
熟悉Linux的用户可能常常在Linux上安装Samba服务来实现与Windows系统的文件共享和打印机共享,他们之间的数据传输使用SMB(Service Message Block)协议.这是一个在传输层之上的协议,所以他可以支持很多不同异构系统的网络互联(比如,Linux,Solaris,Windows等),Samba之所以能够工作,因为SMB协议模仿了Windows内核的文件和打印共享协议。微软已经将SMB改名为公共因特网文件系统(CIFS,Common Internet File System ),并打算把它设计为Internet的标准协议。这在一定程度上是由于它想与最初的基于NetBIOS的SMB保持一定的距离。NetBIOS是Windows 网络的一个伟大的工具,Microsoft使用NetBIOS实现了一个网络文件/打印服务系统,但是为LAN设计的它却注定了不能路由。 Samba执行了SMB/CIFS的一个版本,这个版本在很大程度上与大多数的Windows版本兼容。我们可以通过Windows的网络邻居来轻松访问安装了Samba的UNIX/LINUX服务器。
1.安装centos时在防火墙中开启文件共享服务,并选择安装文件共享服务器
2.启动 Samba 服务。
# chkconfig smb on ← 设置 Samba 自启动
# service smb start ← 启动Samba服务
Starting SMB services: [ OK ]
Starting NMB services: [ OK ]
# smbpasswd -a root ← 将系统用户 root 加入到 Samba 用户数据库
New SMB password: ← 输入该用户用于登录 Samba 的密码
Retype new SMB password: ← 再次确认输入该密码
Added user centospub.
3.配置Samba
通过编辑 /etc/samba/smb.conf 让将要被共享的目录拥有充分的读写权限属性。
在smb.conf文件最后加入下面内容
[all file]
comment = centos all file
path = /
valid users = root
public = no
writable = yes
printable = no
create mask = 0777
directory mask = 0777
# [all file] 是共享名
#comment = centos all file是注释
# path = / 分享资源的完整路径名称,除了路径要正确外,目录的权限也要设对,我设置了共享/所有文件
#valid users = root valid users 说明:指定共享资源的有效用户,即允许访问该资源的用户
# public = no 设置public=no 表示在网上邻居看见但不能进入
# writable = yes writable = yes表示可写,writable = no表示只读
# printable-------是yes/否no允许打印
#create mask-----建立文件时所给的权限
#directory mask--建立目录时所给的权限
修改完smb.conf文件后一定要重启sam服务
# servcie smb restart ---重启smb服务
以上是我开启samba服务的过程
4、访问共享资源
在windows的桌面上打开“网上邻居”,并点击“查看工作组计算机”选项;
就出现 Samba 服务端的连接了,用户和密码就是你设置的。
============================================================
smb.conf手册
服务名:smb
配置目录:/etc/sabma/
主配置文件:/etc/sabma/smb.conf
#====================== Global Settings =====================
17行workgroup
语法 workgtoup = <工作组群>;
预设 workgroup = MYGROUP
说明 设定 Samba Server 的工作组
例 workgroup = workgroup 和WIN2000S设为一个组,可在网上邻居可中看到共享
21行server string
语法 server string = <说明>;
预设 sarver string = Samba Server
说明 设定 Samba Server 的注释
其他 支持变量 t%-访问时间 I%-客户端IP m%-客户端主机名 M%-客户端域名 S%-客户端用户名
例 server string = this is a Samba Server 设定出现在Windows网上邻居的 Samba Server 注释为 this is a Samba Server
28行hosts allow
语法 hosts aoolw = <IP地址>; ...
预设 ; host allow = 192.168.1. 192.168.2. 127.
说明 限制允许连接到 Samba Server 的机器,多个参数以空格隔开。表示方法可以为
完整的IP地址,如 192.168.0.1
网段,如 192.168.0.
例 hosts allow = 192.168.1. 192.168.0.1 表示允许192.168.1 网段的机器 网址为192.168.0.1 的机器 连接到自己的samba server
32行printcap name
语法 printcap name = <打印机配置文件>;
预设 printcap name = /etc/printcap
说明 设定 samba srever 打印机的配置文件
例 printcap name = /etc/printcap 设定 samba srever 参考 /etc/printcap 档的打印机设定
33行load printers
语法 load printers = <yes/no>;
预设 load printers = yes
说明 是否在开启 samba server 时即共享打印机
38行printing
语法 printing = <打印机类型>;
预设 printing = lprng
说明 设定 samba server 打印机所使用的类型,37行为目前所支持的类型
42行guest account
语法 guert account = <帐户名称>;
预设 guert account = pcguest
说明 设定访问 samba server 的来宾帐户(即访问时不用输入用户名和密码的帐户),若设为pcguest的话则为默认为"nobody"用户
例 guert account = andy 设定设定访问 samba server 的来宾帐户以andy用户登陆,则此登陆帐户享有andy用户的所有权限
46行log file
语法 log file = <日志文件>;
预设 log file = /var/log/samba/%m.log
说明 设定 samba server 日志文件的储存位置和文件名(%m代表客户端主机名)
49行max log size
语法 max log size = <??KB>;
预设 max log size = 0
说明 设定日子文件的最大容量,单位KB 这里的预设值0代表不做限制
53行security
语法 security = <等级>;
预设 security = user
说明 设定访问 samba server 的安全级别 共有四种
share---不需要提供用户名和密码
user----需要提供用户名和密码,而且身份验证由 samba server 负责
server--需要提供用户名和密码,可指定其他机器(winNT/2000/XP)或另一台 samba server作身份验证
domain--需要提供用户名和密码,指定winNT/2000/XP域服务器作身份验证
60行password server
语法 password server = <IP地址/主机名>;
预设 password server = <NT-Server-Name>;
说明 指定某台服务器(包括windows 和 linux)的密码,作为用户登入时验证的密码
其他 此项需配合 security = server时,才可设定本参数
64行password level
65行username level
语法 password level = <位数>;
username level = <位数>;
预设 password level = 8
username level = 8
说明 设定用户名和密码的位数,预设为8位字符
70行encrypt passwords
语法 encrypt passwords = <yes/no>;
预设 encrypt passwords = yse
说明 设定是否对samba的密码加密
71行smb passwd file
语法 smb passwd file = <密码文件>;
预设 smb passwd file = /etc/samba/smbpasswd
说明 设定samba的密码文件
130行local master
语法 local master = <yes/no>;
预设 local master = no
说明 设定 samba server 是否要担当LMB角色(LMB负责收集本地网络的Browse List资源),通常无特殊原因设为no
134行os level = 33
语法 os level = <数字>;
预设 os level = 33
说明 设定 samba server的os level. os level从 0 到 255 . winNT的os level为33, win95/98的os level 是 1 .
若要拿samba server 当LMB或DMB则它的os level至少要大于NT的33以上
139行domain master
语法 domain master = <yes/no>;
预设 domain master = yes
说明 设定 samba server 是否要担当DMB角色(DMB会负责收集其他子网的Browse List资源),通常无特殊原因设为no
143行preferred master
语法 preferred master = <yes/no>;
预设 preferred master = yes
说明 设定 samba server 是否要担当PDC角色(PDC会负责追踪网络帐户进行的一切变更),通常无特殊原因设为no.
(同一网段不可有两个PDC,他们会每5分钟抢主控权一次)
163行wins support
语法 wins support = <yes/no>;
预设 wins support = yes
说明 设定samba server 是否想网络提供WINS服务,通常无特殊原因设为no.
除非所处网络上没有主机提供WINS服务且需要此台samba server提供WINS服务是才设yes
其他 wins support 和 wins server 只能选择一个
167行wins server
语法 wins server = <IP地址>;
预设 wins server = w.x.y.z
说明 设定samba server 是否要使用别台主机提供的WINS服务.通常无特殊原因设为no.除非所处网络上有一台主机提供WINS服务才要设yes
其他 wins support 和 wins server
例 wins server = 192.168.0.1 表示samba server要使用192.168.0.1提供的WINS服务
#=============Share Definitions ================
[homes]
comment = Home Directories
browseable = no
writable = yes
valid users = %S
使用者本身的"家"目录,当使用者以samba使用者身份登入samba server 后,
samba server 底下会看到自己的家目录,目录名称是使用者自己的帐号
[分享的资源名称]
<指令1>; = (参数)
<指令2>; = (参数)
..........................
要提供分享资源时,须先把欲分享的资源以 [ ] 符号括住,底下通常会带指令和参数来表示此资源的设定和存取权限等,详情如下
comment---------注释说明
path------------分享资源的完整路径名称,除了路径要正确外,目录的权限也要设对
browseable------是yes/否no在浏览资源中显示共享目录,若为否则必须指定共享路径才能存取
printable-------是yes/否no允许打印
hide dot ftles--是yes/否no隐藏隐藏文件
public----------是yes/否no公开共享,若为否则进行身份验证(只有当security = share 时此项才起作用)
guest ok--------是yes/否no公开共享,若为否则进行身份验证(只有当security = share 时此项才起作用)
read only-------是yes/否no以只读方式共享当与writable发生冲突时也writable为准
writable--------是yes/否no不以只读方式共享当与read only发生冲突时,无视read only
vaild users-----设定只有此名单内的用户才能访问共享资源(拒绝优先)(用户名/@组名)
invalid users---设定只有此名单内的用户不能访问共享资源(拒绝优先)(用户名/@组名)
read list-------设定此名单内的成员为只读(用户名/@组名)
write list------若设定为只读时,则只有此设定的名单内的成员才可作写入动作(用户名/@组名)
create mask-----建立文件时所给的权限
directory mask--建立目录时所给的权限
force group-----指定存取资源时须以此设定的群组使用者进入才能存取(用户名/@组名)
force user------指定存取资源时须以此设定的使用者进入才能存取(用户名/@组名)
allow hosts-----设定只有此网段/IP的用户才能访问共享资源
allwo hosts = 网段 except IP
deny hosts------设定只有此网段/IP的用户不能访问共享资源
allow hosts=本网段指定IP指定IP
deny hosts=指定IP本网段指定IP
path------------分享资源的完整路径名称,除了路径要正确外,目录的权限也要设对
browseable------是yes/否no在浏览资源中显示共享目录,若为否则必须指定共享路径才能存取
printable-------是yes/否no允许打印
hide dot ftles--是yes/否no隐藏隐藏文件
public----------是yes/否no公开共享,若为否则进行身份验证(只有当security = share 时此项才起作用)
guest ok--------是yes/否no公开共享,若为否则进行身份验证(只有当security = share 时此项才起作用)
read only-------是yes/否no以只读方式共享当与writable发生冲突时也writable为准
writable--------是yes/否no不以只读方式共享当与read only发生冲突时,无视read only
vaild users-----设定只有此名单内的用户才能访问共享资源(拒绝优先)(用户名/@组名)
invalid users---设定只有此名单内的用户不能访问共享资源(拒绝优先)(用户名/@组名)
read list-------设定此名单内的成员为只读(用户名/@组名)
write list------若设定为只读时,则只有此设定的名单内的成员才可作写入动作(用户名/@组名)
create mask-----建立文件时所给的权限
directory mask--建立目录时所给的权限
force group-----指定存取资源时须以此设定的群组使用者进入才能存取(用户名/@组名)
force user------指定存取资源时须以此设定的使用者进入才能存取(用户名/@组名)
allow hosts-----设定只有此网段/IP的用户才能访问共享资源
allwo hosts = 网段 except IP
deny hosts------设定只有此网段/IP的用户不能访问共享资源
allow hosts=本网段指定IP指定IP
deny hosts=指定IP本网段指定IP
小弟自己通过实践终于配置成功了samba,写下配置过程,希望高手多提意见,本文有个遗憾我的rpm安装samba打印机共享成功,用源码安装打印机没有成功,非常可惜。(原创)本文只发表于www.xxlinux.com,作者tian1118(大学法律专业的linux爱好者)。特别感谢黑夜不在,燕南天等。
欢迎转载,并保证本文的完整性,并注明出处。
先学习一些基础。
samba的核心是两个守护进程smbd和nmbd程序,在服务器启动到停止期间持续运行。Smbd和nmbd使用的全
部配置信息全都保存在smb.conf文件中。Smb.conf向smbd和nmbd两个守护进程说明输出什么以便共享,
共享输出给谁及如何进行输出。Smbd进程的作用是处理到来的SMB软件包,为使用该软件包的资源与
Linux进行协商,nmbd进程使其它主机(或工作站)能浏览Linux服务器。
如果安装时用rpm安装,那么启动samba不用service smb start,用service nmbd start,service smbd start也可以的。
在smb.conf文件中,注释行以“#”开头,同时每项中英文字母不区分大小写,在一行最后字符尾加
“\”,可将一行分成多行。用“;”开头的行,是可改变的配置,将“;”去掉时,该配置将取作用。
[global](全局参数的设置,它对samba的功能具有很大的影响,主要用来设置整个系统规则。
workgroup= 这是你在windows中的域。
server string= 这是在windows中看到你的samba的解释。
netbios name =最好是你的机器名,如果把改句注消,默认的是你LINUX机器名,不过,最好还是自己填上
dos charset=cp936
unix charset=cp936 加上这二句就可以正确显示中文了。
hosts allow 允许登录的linux-samba的主机名单,用IP地址给出,多个IP地址用空格分开,不在名单中的主机将不能得到samba提供的服务,这也是网络安全的一个方面。
printcap name 指定printcap文件地址,通常为/etc/printcap,包含了linux打印机的配置信息。
load printers 允许使用共享打印机时,默认值为yes。
printing 如果使用的打印机是非标准的,那么应该指出打印机系统类型。
log file = /usr/local/samba/var/log.%m
max log size = 0
上面这两行则是Samba日志的相关定义。其记录文件的位置是放在/var/log/samba/%m.log,安装目录不一样,日志可不一样,后面的一条是定义日志记录文件的大小,单位是KB,如果是0的话就不限大小。
guest acount 来宾帐户,表示用哪一个Linux用户作为所要的客户连接,定义Samba缺省的用户账号,这个账号必须在/etc/passwd中。
security 指定安全模式。大多数用户使用user级的安全模式,samba用本地linux口令文件验证。
security = security_level
定义Samba的安全级别,按从低到高分为四级:share,user,server,domain。它们对应的验证方式如下:
share:没有安全性的级别,任何用户都可以不要用户名和口令访问服务器上的资源。
user:samba的默认配置,要求用户在访问共享资源之前资源必须先提供用户名和密码进行验证。
server:和user安全级别类似,但用户名和密码是递交到另外一个服务器去验证,比如递交给一台NT服务器。如果递交失败,就退到user安全级。
domain:这个安全级别要求网络上存在一台Windows的主域控制器,samba把用户名和密码递交给它去验证。
后面三种安全级都要求用户在本linux机器上也要系统帐户。否则是不能访问的
smb passwd file=/etc/samba/smbpasswd (设置smb密码文件的位置)
username map =/etc/smbusers
encrypt passwords =no 采用的时明文密码验证,如果是加密的,就改为yes
记得某月的某一天,我下定决定安装任何软件包只用源码,不用rpm。虽然很麻烦,但是对于了解linux内部有些帮助。
首先我们创建一个文档,边安装配置samba,边写教程。
从www.samba.org下载samba最新源码包,我下载的是samba-3.0.7.tar.gz,把它放在我的目录的中/root/lova/samba下。
tar -zxvf samba-3.0.7.tar.gz 解压得到samba-3.0-7
cd samba-3.0.7
cat README 先看说明,可惜E文太差,不太懂,直接安装吧。
find . -name configure
./source/configure 原来藏在这
cd source/
mkdir /usr/local/samba 创建安装目录
./configure --prefix=/usr/local/samba/ 安装到/usr/loca/samba
make && make install
cd /usr/local/samba/ 到安装目录看看
ls
bin include lib man private sbin swat var 安装成功,怎么没有etc目录和smb.conf文件呀,那我自己创建一个
[root--/usr/local/samba]mkdir etc
[root--/usr/local/samba]cp ~/love/samba/samba-3.0.7/examples/smb.conf.default ./etc/smb.conf
好了现在看看我们的目标。
一、有一个共享目录,只可以读,不可以做任何改变。
二、有一个共享目录,任何人都可以做任何改变,包括添加目录文件,删除目录文件。
三、每个用户可以看到自己的主目录,其它用户不可以看到,当然不可以作改动。
四、有一个共享目录,组A中的人可以做任何改动,组B中的人只可以读,组C中的人看不到。
五、每个用户登录后都可以使用打印机。(没有成功)。
目标1方法1
[root--~]cd /usr/local/samba/etc/
[root--/usr/local/samba/etc]cp smb.conf beifen 备份一下免得改错了。
修改smb.conf,
workgroup = MSHOME 改为你linux所在的工作组
security = share 开放共享
在smb.conf最后加上
[read1]
comment = read1
path = /home/read1
public = yes
guest ok = yes
writable = yes
创建共享目录
whoami
root
umask
0022
mkdir /home/read1
cd !$
cat >; linux
hi linux
ll /home/read1/
总用量 4
-rw-r--r-- 1 root root 9 10月 24 11:20 linux
644嘛
adduser nxgz ; passwd !$ ; 创建系统用户
[root--~]/usr/local/samba/bin/smbpasswd -a nxgz 再把这个用户添加为samba用户
Can't load /usr/local/samba//lib/smb.conf - run testparm to debug it 怎么出错了,好像没有在lib下没有smb.conf,那我就加上吧
[root--~]cp /usr/local/samba/etc/smb.conf /usr/local/samba/lib/
[root--~]/usr/local/samba/bin/smbpasswd -a nxgz 添加samba用户成功
New SMB password:
Retype new SMB password:
startsmbfilepwent_internal: file /usr/local/samba//private/smbpasswd did not exist. File successfully created.
Added user nxgz.
[root--~]service iptables stop
清除所有链: [ 确定 ]
删除用户定义的链: [ 确定 ]
将内建链重设为默认的“ACCEPT”策略: [ 确定 ]
[root--~]service network restart
正在关闭接口 eth0: [ 确定 ]
关闭环回接口: [ 确定 ]
设置网络参数: [ 确定 ]
弹出环回接口: [ 确定 ]
弹出界面 eth0: [ 确定 ]
启动samba的二个进程,注意是两个进程喔,下面两行都要运行的:
[root--~]/usr/local/samba/sbin/smbd -D
[root--~]/usr/local/samba/sbin/nmbd -D
到win-xp下,打开的的电脑,找到地址,输入\\linux主机名,可以找到共享的目录read,成功。
方法2
在smb.conf最后加上如下
[read2]
comment = read2
path = /home/read2
public = yes
read only = yes
mkdir /home/read2 ; cd !$ ; cat >; linux ; chmod -R 777 /home/read2 ; 创建共享目录及修改权限
然后
service iptables stop
service network restart
/usr/local/samba/sbin/smbd -D
/usr/local/samba/sbin/nmbd -D
在win-xp下是看不到我们共享的read2。
可能是smb.conf有问题,我们用testparm工具检查一下。
[root--~]testparm
bash: testparm: command not found 没有输入完整路径。
[root--~]/usr/local/samba/bin/testparm
Load smb config files from /usr/local/samba//lib/smb.conf
Processing section "[homes]"
Processing section "[printers]"
Processing section "[read]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
就是没有read2,我们仔细看看第一行,Load smb config files from /usr/local/samba//lib/smb.conf,好像testpart工具是根据lib/smb.conf得到的,lib下的smb.conf和etc下的smb.conf完全不一样嘛,因为我们增加了read2,我们可以复制覆盖了它
cp -f /usr/local/samba/etc/smb.conf /usr/local/samba/lib/
然后
service iptables stop
service network restart
/usr/local/samba/sbin/smbd -D
/usr/local/samba/sbin/nmbd -D
回到win-xp下可以找到,哈哈,好了,虽然它的权限为777,但是由read only控制,不可以删除,添加。
目标1成功
由于每次修改完/usr/loca/samba/etc/smb.conf,我们都要
cp -f /usr/local/samba/etc/smb.conf /usr/local/samba/lib/
然后
service iptables stop
service network restart
/usr/local/samba/sbin/smbd -D
/usr/local/samba/sbin/nmbd -D
我们可以写个shell
emacs samba.sh
cp -f /usr/local/samba/etc/smb.conf /usr/local/samba/lib/
service iptables stop
service network restart
/usr/local/samba/sbin/smbd -D
/usr/local/samba/sbin/nmbd -D
修改完,启动时可以
1, sh samba.sh
2, sh < samba.sh
3, chmod 777 samba.sh
mv samba.sh ~/bin
samba.sh
这三种方法都可以。
目标2,
以上保持不变,在smb.conf最后加上
[write]
comment = write
path = /home/write
public = yes
guest ok = yes
writable = yes
mkdir /home/write ; cd /home/write ; cat >;linux ; chmod -R 777 /home/write/ ;sh < samba.sh创建共享目录文件,开放权限,重启服务
到win-xp下read目录下可以读,在write中可以删除,添加,改变原文件,目标2完全正确。我们再试一下中文问题,在win-xp下打开linux的write目录,找编辑linux,增加中文,并在write目录下建立中文目录,我们再回到linux下看结果是否可以正常显示中文。结果编辑linux的中文可以正常显示,中文目录是乱码,想想如何解决。
在smb.confr的[global]中添加
dos charset=cp936
unix charset=cp936 我是加到 security = share的下面了
在win-xp打开write添加中文目录,回到linux下,一看可以正确识别中文
目标3,
多建立几个samba用户。
adduser sambau001 ; passwd !$ ; /usr/local/samba/bin/smbpasswd -a sambau001
用以上方法增加sambau002,sambau003用户
分别su到这些用户,增加文件linux,然后修改smb.conf,把security = 改为user,这次请重新启动一下win,因为添加用户了,这时输入用户和口令就可以进去了,并可以看到自己的目录
我的home如下
[homes]
comment = home
browseable = no
writable = yes
valid users = %S
create mode = 0664
directory mode = 0775
用一个用户进入,win-xp下建立一个文件,一个目录,在目录中另外建立一个文件,在linux用该用户进入自己的目标,可以看到刚才建立的文件目录,文件权限符合664,目录权限符合775。
目标3成功。
目标4,
建立3个组
groupadd sambag001 ; groupadd sambag002 ; groupadd sambag003
usermod -g sambag001 sambau001 ; usermod -g sambag002 sambau002 ; usermod -g sambag003 sambau003 把刚才3个用户分别添加到3个组中。
mkdir share ;cd share/ ;cat >; linux ; chmod -R 777 /home/share/ 开放权限,在smb.conf中控制它
要求sambag001组中的用户r,sambag002组中的用户rw,sambag003组中的用户no
在smb.conf中添加以下
[share]
comment = share
path = /home/share
public = no
valid users = @sambag001,@sambag002
invalid users = @sambag003
write list = @sambag002
再加到win-xp下试,成功
没列出的也不可以进入。
其中用valid userd列出的只有r权限,如果在write list前加个;号,那么sambag001中的用户和sambag002中的用户只可以看。
其中[]里面的是指定的共享名,一般就是网络邻居里面可以看见的文件夹的名字。
comment指的是对改共享的备注。
path指定共享的路径
allow hosts和deny hosts和前面的全局设置的方法一样这里不再提及。
writeable指定了这个目录缺省是否可写。
user设置所有可能使用该共享资源的用户,也可以用@group代表group这个组的所有成员,不同的项目之间用空格或者逗号隔开。
valid users指定能够看到该共享资源的用户和组。
invalid users指定不能够看到该共享资源的用户和组。
read list 指定只能读取该共享资源的用户和组。
write list指定能读取和写该共享资源的用户和组。
admin list指定能管理该共享资源(包括读写和权限赋予等)的用户和组。
public指明该共享资源是否能给游客帐号访问,这个开关有时候也叫guest ok,所以有的配置文件中出现guest ok = yes其实和public = yes是一样的。
create mode指明新建立的文件的属性,一般是0755。
directory mode指明新建立的目录的属性,一般是0755。
force user强制把建立文件的属主是谁。如果我有一个目录,让guest可以写,那么guest就可以删除,如果我用force user= grind强制建立文件的属主是grind,同时限制create mask = 0755,这样guest就不能删除了。
browseable 指定其它用户能否浏览该用户主目录,当然不允许,所以置为no。
writable 使用户访问该目录时具有读取和写入主目录中的文件时,取值为yes,只有读取权限时应置为no。
xp访问linux成功,再试一下linux访问xp
用 #smbclinet "\\\\nxgz\共享目录名"
可以像telnet或ftp一样登录windows主机nxgz,要求你输入密码时,输入密码。
然后出现 smb:\>;
由于是源码安装以下工具命令不成功。{{
smbmount //test/share /pub linux挂接windows目录
mount -t smbfs -o username=WINDOWS主机登录名,password=对应密码 //PC-NAME/SHARE-DIR /mnt/tmp
smbmount //testsamba/pub pub linux与linux共享
添加相应目录和用户
1,一个一个添加用户
以root用户身份登录,添加Linux用户,并设定密码:
adduser smbuser
passwd smbuser
把用户smbuser加入到Samba 服务器用户中并设定密码:
smbpasswd -a smbuser
2,加入系统中的所有用户
#vi /etc/passwd (把一些你不用或者你不知道的用户全删了)
# cat /etc/passwd │ mksmbpasswd.sh >; /etc/samba/smbpasswd (把linux本机用户加到smb用户里去)
#smbpasswd test (设置test用户的smb访问口令)
#/etc/rc.d/init.d/smb restart (重启samba)
3,加入一部分
#smbadduser linuxname:2000name #增加用户
用smbpasswd为每个用户指定password,格式如下:(必须是Root)
smbpasswd userid:passwd userid2:passwd2 ...... }}
root@test root]# rpm -qa | grep samba
[root@test root]# rpm -e --nodeps sambaclient
[root@test root]# cd /usr/local/src
[root@test src]# tar -zxvf /root/soft/samba-2.2.8a.tar.gz
这个时候会有一个目录跑出来: /usr/local/src/samba-2.2.8a
[root@test src]# cd samba-2.2.8a
[root@test samba-2.2.8a]# cd source
[root@test source]# ./configure --prefix=/usr/local/samba --with-automount --with-smbmount --with-pam --with-mmap --with-quotas --with-libsmbclient --sysconfdir=/etc/samba
[root@test source]# make
[root@test source]# make install
[root@test source]# vi /etc/profile
##在export前一行加上PATH=$PATH:/usr/local/samba/bin:/usr/local/samba/sbin
[root@test source]# cd /etc/samba
[root@test samba]# ln -sv /etc/samba/smb.conf /usr/local/samba/lib/
[root@test samba]# more smb.conf | grep -v "#" | grep -v ";" | more
[global]
workgroup = MYGROUP # 工作组
server string = Samba Server # 主机说明
printcap name = /etc/printcap
load printers = yes
cups options = raw
log file = /var/log/samba/%m.log # log文件
max log size = 50
security = user # 使用密码模式登录
encrypt passwords = yes
smb passwd file = /etc/samba/smbpasswd # 密码文件
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
dns proxy = no
idmap uid = 16777216-33554431
idmap gid = 16777216-33554431
template shell = /bin/false
winbind use default domain = no
[share]
comment = share
path = /var/samba # 用户的主目录
public = yes # 所有人可读
writable = yes # 可写
printable = no
create mask = 0755 # 创建文件的权限
directory mode = 0755 # 创建目录的权限
[homes]
comment = Home Directories # 描述
browseable = no # 其他用户不可浏览
writable = yes # 可写
valid users = %S # 用户的主目录
create mode = 0664 # 创建文件的权限
directory mode = 0775 # 创建目录的权限
[root@test samba]# touch /etc/samba/smbpasswd # 建立samba密码文件
[root@test samba]# smbpasswd -a root # 建立samba用户
[root@test samba]# mkdir /var/samba # 建立samba主目录
[root@test samba]# chown root:root /var/samba # 授权,使所有用户都有写入权限
[root@test samba]# chmod 777 /var/samba
[root@test samba]# smbd start # 启动
[root@test samba]# nmbd start
[root@test samba]# echo "/usr/local/samba/sbin/smbd start" >> /etc/rc.local # 建立开机自启动
[root@test samba]# echo "/usr/local/samba/sbin/nmbd start" >> /etc/rc.local
#cd /usr/local/samba/bin
#testparms
测试参数的设置格式,属性是否正确。
#smbstatus
Samba version 3.0.10
PID Username Group Machine
-------------------------------------------------------------------
2502 root UEC uec-gcp (192.168.1.2)
Service pid machine Connected at
-------------------------------------------------------
IPC$ 2502 uec-gcp Mon Sep 12 13:11:31 2005
John docs 2502 uec-gcp Mon Sep 12 12:59:01 2005
gcp docs 2502 uec-gcp Mon Sep 12 12:58:54 2005
No locked files
#smbpasswd –a username
添加访问的共享资源的用户,一般用户也可以访问SWAT,但只有查看状态的权限。
# smbtree
Password:
WORKGROUP
\SUN440EN Samba 3.0.10
\SUN440ENADMIN$ IPC Service (Samba 3.0.10)
\SUN440ENIPC$ IPC Service (Samba 3.0.10)
\SUN440ENjohn docs
\SUN440ENgcp docs
#smbclient -L yourhostname.
显示了samba server 上的共享资源。
http://www.kaiyuanba.cn/content/manage/ringkee/samba.htm
作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/2713/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
最后编辑: jackxiang 编辑于2011-3-23 10:43
评论列表