Fedora11安装samba出问题的朋友,看过来
忙了3,4天,终于把Fedora11的samba搞定了。
由于网上的很多教材都是抄来抄去,很多甚至采用移花接木的方法拼凑而成,导致我走了很多弯路。
现把我 配置samba碰到的问题以及解决的方法在这里总结一下,作为感谢在这里帮助过我的朋友,同时
也帮助其他正在摸索的朋友
Fedora11 配置samba过程 简介:
说明,以下是作为没有密码的访问设置;所有命令均要在管理员权限下使用;如果你已经能用这个设置于 windows互联互通了,给samba设置带密码的访问就很容易。
1.用rpm -qa | grep samba 和 rpm -qa | grep smb查询是否 安装了必需的包裹(这点去网上搜索,教程很多,这里不赘述)
2.检查/etc/samba 下是否有smbpasswd文件(这个为带密码访问的配置)
3.samba升级到3.4版本以上必须安装libtalloc 1.3.1版本,否则后续运行testp arm时,容易出现这个错误:
testparm: symbol lookup error: testparm: undefined symbol: _talloc_get_type_abort
4.防火墙必须通过samba功能:
在 系统--->管理--->防火墙 中设置samba通过防火墙
5.SELinux中所有和samba的功能均设置为通过,运行以下3个命令即可:
setsebool -P samba_domain_controller on
setsebool -P samba_enable_home_dirs on
setsebool -P samba_export_all_ro on
关于SELinux设置怎么影响samba的问题,可以参考/etc/samba/smb.conf文件中的SELINUX NOTES部分
6..smb.conf按照以下设置进行即可:
[global]
workgroup = xxxx 说明:要设置成和windows一样的工作组
netbios name = xxxxx 说明: 在windows里出现的 linux计算机的名称
server string = xxxx 说明:linux的计算机的名称
security = share 说明:匿名共享级访问
[LServer]
path = /home/lserver 说明:你可以在自己觉得合适的位置建立一个目录作为windows的访问目录,我的是lserver
writable = yes 说明:目录可以写
browseable = yes 说明:目录可以浏览
guest ok = yes 说明:匿名用户登录
7.然后运行命令:
testparm
返回结果为:
Load smb config files from /etc/samba/smb.conf
Processing section "[LServer]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
说明smb.conf配置成功
8.运行命令:
service smb start
返回结果为:
启动 SMB 服务: [确定]
说明samba服务配置成功
9.接下来,在windows的IE或资源管理器中上方的地址栏中输入//x.x.x.x (x.x.x.x为你的linux机器网络地址)
就能看到你的linux机器和谐靠大家享的文件夹
#原创作者: w45911623,转贴朋友请手下留情,保留这行,尊重我的劳动成果,也算尊重你自己,谢谢#
一、 软件准备
RHEL4系统中默认安装了samba服务器和客户机的所有软件包。通过以下命令来确认是否已存在软件包。
# rpm -qa|grep samba
samba-client-3.0.10-1.4E
samba-3.0.10-1.4E
samba-common-3.0.10-1.4E
若没有,则到RHEL4的第2张安装光盘中去找,或者到网上去下载。
二、 Samba服务的安装和配置
1、 Samba安装
安装命令为:
# rpm –ivh 软件包名称
例如:# rpm –ivh samba-3.0.10-1.4E.rpm
RHEL4系统中默认已经安装了与Samba服务相关的软件包。
2、 Samba服务器的配置
a. 在smb.conf文件中进行共享资源的配置
去掉注释,查看smb.conf配置文件中的有效配置,让我们来认识一下smb.conf配置文件。
# grep -v "^#" /etc/samba/smb.conf |grep -v "^;"
以上命令能有效的过滤掉配置文件中的注释文字。
[global] workgroup = MYGROUP server string = Samba Server printcap name = /etc/printcap load printers = yes cups options = raw log file = /var/log/samba/%m.log max log size = 50 security = user 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 [homes]
|
从以上内容可以看出smb.conf配置文件默认包括以下3部分内容:
[global]部分是Samba服务器的全局设置,配置项的内容对整个Samba服务器有效。
[homes]部分设置了用户共享目录的属性,该部分中不包括的设置项则使用配置文件中的全局设置。
[printers]部分设置了Samba服务器中的打印机共享资源的属性,Samba服务器除了可以提供文件共享以外,还能够提供打印机的共享。
用户可以根据自己的应用需求在smb.conf配置文件中添加共享资源的设置,共享资源的名称需要放置在方括号([])中。没有特别的需求,就保持smb.conf配置文件中的[global]项配置为默认。
再来看看[global]全局配置中,常用配置项的含义表:
配置项 | 说明 |
workgroup | 设置Samba服务器所在的工作组的名称,默认设置为MYGROUP |
server string | 设置Samba服务器的说明文字,用于描述Samba主机 |
log file | 设置Samba服务器的日志文件,默认设置为“/var/log/samba/%m.log”,表示所有设置文件都保存在“/var/log/samba/”目录中,使用Samba服务器的每个客户机的日志分别为保存与客户机同名的“%m.log”文件中,“%m”表示客户端主机的名称。 |
Max log size | 设置日志文件的最大容量,默认为50.表示KB,该设置项的数值单位是KB |
security | 设置Samba服务器的默认安全级别为user,表示需要经过Samba服务器的用户认证后才能够访问服务器中的资源 |
security 设置Samba服务器的默认安全级别为user,表示需要经过Samba服务器的用户认证后才能够访问服务器中的资源
对于security全局设置项的配置比较关键,该配置项去定了Samba服务器对客户机采取何种用户认证方式。Security设置项的值可以有以下4种:
share:表示用户不需要帐户及密码即可登入Samba服务器。
user:表示由提供服务的Samba服务器负责检查用户及密码,是Samba默认的安全等级。
server:表示检查账户及密码的工作指定由另一台Windows服务器或Samba服务器来负责。
domain:表示指定Windows域控制器来验证用户的账户及密码。
b. Samba用户账号及用户目录设置
(1) smb.conf文件中对用户目录的默认设置:
[homes]
comment = Home Directories
browseable = yes
writable = yes
[homes]共享目录默认的配置项含义如下:
comment:用于设置共享目录的说明信息。
browseable:设置为no时表示所有Samba用户的宿主目录都不能被看到,只有登录用户才能看到自己的宿主目录,这样设置可以加强Samba服务器的安全性。
writable:设置为yes时,表示用户可以对该共享目录写入,设置用户对自己的宿主目录具有写权限是比较合理的。
经过以上设置后,Samba服务器中的每个用户都会在服务器中拥有一个自己的共享目录(宿主目录)。
Samba服务器不使用Linux系统的用户账号进行用户认证,而是维护自己的用户账号文件。Samba服务器的用户账号文件保存在“/etc/samba”目录中,文件名是smbpasswd,初始状态smbpasswd文件不存在,在第一次使用smbpasswd命令创建Samba用户时自动建立。
在建立Samba用户账户之前先要建立同名的Linux系统用户账号。
# cd /etc/samba/
# adduser st02
# smbpasswd -a st02
New SMB password:
Retype new SMB password:
startsmbfilepwent_internal: file /etc/samba/smbpasswd did not exist. File successfully created.
Added user st02.
注意:这里输入密码是不显示的。
smbpasswd命令除了可以添加Samba用户账户外,使用不同命令选项可以完成不同的账号维护工作。
-h:显示smbpasswd的命令格式帮助
-a:添加指定的用户账号
-d:禁用指定的用户账号
-e:启用指定的用户账号
-x:删除指定的用户账号
使用smbpasswd –d 命令禁用Samba用户账号时,,将在smbpasswd文件的用户记录中进行相应字段的标记。
使用smbpasswd –e 命令即是启用已经被禁用的Samba用户账号,将在smbpasswd文件中删除用户记录中的禁用标记。
smbpasswd命令不接任何参数时,将提示修改指定Samba用户的口令,口令的修改会体现在smbpasswd文件的用户记录中。
使用smbpasswd命令建立Samba用户账号时应注意一下几点:
-> Samba用户账号使用独立的smbpasswd文件保存用户的账号和加密口令信息。
-> Samba服务器中的用户账号应该具有与其同名的Linux系统用户账号,因为Samba用户是使用同名的系统账号身份来访问Linux资源(文件和目录)的。
-> Samba用户的口令和同名系统用户的口令是独立的,可以相同也可以不相同,需要分别进行维护和更改。
-> 当Samba用户不需要登录Linux系统时,同名的系统用户账号可以不设置口令,因为空密码的系统用户是无法登陆Linux系统的。
可以看出Samba服务器中的用户账号与Linux系统账号是相对独立但是又有所关联的,在实际的应用中移动要注意两者之间的以上几点关系。
在Samba服务器的默认设置中没有公共目录的设置,需要手动进行添加。
对于公共目录有如下要求:
(1) 任何Samba的用户都可以访问公共目录并对目录有读写权限;
(2) 任何用户在公共目录中都以Linux中nobody系统用户的身份出现,即在公共目录中任何用户建立的文件都属于nobody系统用户。
在对smb.conf文件进行设置之前需要建立公共目录在Linux系统中对应的目录“/home/public”,并设置该目录的属主和属组为nobody。
# mkdir /home/public
# chown nobody.nobody /home/public
# ls -ld /home/public
drwxr-xr-x 2 nobody nobody 4096 Jun 10 13:30 /home/public
在smb.conf文件中添加名为[public]的共享资源,并设置如下内容:
[public]
path = /home/public
public = yes
only guest = yes
writable = yes
d. 对smb.conf文件配置的测试
测试命令为:# testparm
e. Samba服务器的启停命令
Samba服务器的启动脚本位于目录“/etc/init.d”中,脚本文件的名称是smb。
# ls -l /etc/init.d/smb
-rwxr-xr-x 1 root root 2020 Jan 3 2005 /etc/init.d/smb
启动Samba服务器:
# service smb start
Starting SMB services: [ OK ]
Starting NMB services: [ OK ]
查看Samba服务的服务状态:
# service smb status
smbd (pid 3886 3882) is running...
nmbd (pid 3887) is running...
停止Samba服务器:
# service smb stop
Shutting down SMB services: [ OK ]
Shutting down NMB services: [ OK ]
1、 在Windows主机中创建共享目录
2、 使用sbmclient命令来连接Windows共享目录
使用来宾账号Guest(密码为空)来登录访问Windows的共享资源
# smbclient //192.168.1.254/share -U Guest
Password:
Domain=[XULAU] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]
smb: /> dir
. D 0 Wed Jun 10 05:46:45 2009
.. D 0 Wed Jun 10 05:46:45 2009
360safefixavi.exe A 402952 Sun May 31 07:49:21 2009
avseq03.wmv A 8062020 Sat Jun 6 03:11:22 2009
EasyInstallMakerV2.2_XiaoSD.exe A 1341058 Sat May 30 08:46:03 2009
FireFox 3.0.8.exe A 7339968 Mon Apr 20 07:18:42 2009
kav8.0.0.506sch.exe A 38302992 Thu Dec 4 20:22:00 2008
mysql-5.1.35.tar.gz A 35152597 Fri Jun 5 23:51:45 2009
53615 blocks of size 1048576. 5523 blocks available
smb: /> exit
3、 使用mount命令挂载Windows共享目录
# mkdir /winshare
# ll /winshare
total 0
# mount -t smbfs -o username=Guest //192.168.1.254/share /winshare
Password:
# ll /winshare
total 88480
-rwxr-xr-x 1 root root 402952 May 31 07:49 360safefixavi.exe
-rwxr-xr-x 1 root root 8062020 Jun 6 03:11 avseq03.wmv
-rwxr-xr-x 1 root root 1341058 May 30 08:46 EasyInstallMakerV2.2_XiaoSD.exe
-rwxr-xr-x 1 root root 7339968 Apr 20 07:18 FireFox 3.0.8.exe
-rwxr-xr-x 1 root root 38302992 Dec 4 2008 kav8.0.0.506sch.exe
挂载成功!
1. rpm -qa | grep samba
2. rpm -ivh samba-3.0.23c-2.i386.rpm
3. vi /etc/samba/smb.conf 更改/添加
workgroup = WORKGROUP
server string = Test Samba Server
[testshare]
comment = testshare
path = /opt/web
writable = yes
valid user = tech
write list = tech
create mask = 0664
directory mask = 0775
4. mkdir /opt/web
chmod 777 /opt/web
5.smbpasswd -a tech (注:一定要有"-a"参数,没有参数只是更改存在的用户密码而已)
6./etc/init.d/smb restart
如果现在从win访问,没有写的权限,所以下面第7步很重要
查看日志,找原因:
[root@testserver ~]# tail /var/log/messages 发现提示是selinux的问题
Aug 28 10:33:20 testserver setroubleshoot: SE Linux is preventing samba (/usr/sbin/smbd) "write" to web (usr_t). For complete SELinux messages. run sealert -l d4c5511c-597c-4c79-8ff6-652f000c29f7
7.vi /etc/selinux/config
SELINUX=enforcing 改为 SELINUX=disabled
8. sync;sync;shutdown -r now 搞定!!!
注:关于SELINUX=disabled,有些人觉得不安全,本人的服务器只是用来做测试用,所以直接关闭。也可以不关闭SELINUX,通过修改selinux的规则放行smb服务启动,大家有兴趣的去 IT社区论坛看看一下。