建立samba实际上不难!

rpm -qa | grep samba查看samba是否安装上

samba-common-3.5.10-116.el6_2.i686
samba-3.5.10-116.el6_2.i686
samba-winbind-clients-3.5.10-116.el6_2.i686
samba-client-3.5.10-116.el6_2.i686

独立服务器上,samba-winbind 不需要

chkconfig smb on

chkconfig nmb on

cat /etc/samba/smb.conf

 #samba config file created by gogo11
#Date 2011.12.31
[global]
 workgroup = MYGROUP
 netbios name = FileServer
 server string = Samba Server Version %v
 encrypt passwords = yes
 hosts allow = 192.168.0. 127.
 config file = /etc/samba/lib/smb.conf.%U
 security = user
# smb passwd file = /etc/samba/smbpasswd
 passdb backend = tdbsam
 username map = /etc/samba/smbusers
 public = yes
 guest ok = yes
 guest account = pcguest

 time server = yes

# unix password sync = yes

 printcap name = /etc/printcap
 load printers = yes
 cups options = raw

#logs split per machine
 log file = /var/log/samba/log.%m
 max log size = 50

#socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

#Local master vote
local master = yes
os level = 64
domain master = yes

#[homes]
#comment = Home Directories
#browseable = no
#writable = yes
#valid users = %S
#create mode = 0644
#directory mode = 0755

[光盘镜像]
 comment = 可以挂载收集的ISO文件的共享目录
 path = /media/Tools/ISO
 browseable = yes
 public = yes
 read only = yes
 

需要注意的是,如果 security = user,下边的实际上可以不要!

  public = yes
 guest ok = yes
 guest account = pcguest

windows登录时候会使用windows本地登录名登录,这个时候,除非你连samba的时候用了记住用户名和密码!

smb.conf.%U里边%U,指的是登录用户名,必须小写,否则专用配置不起作用,只有smb.conf作用,因为windows链接的时候用户名会被转化为小写。

注意:如果一个用户需要和修改2个以上其他用户的文件,但其他两个用户互相不允许修改彼此文件。这个时候利用samba本身的特性,使用smbusers文件

  user = user user01 user02

然后单独配置smb.conf.user、smb.conf.user01和smb.conf.user02,windows分别用用户名user、user01和user02登录,写权限在各自的smb.conf中配置,也就解决了多组共存的问题。看起来3个人当一个人用,但samba又把他们分了开来!

使用:

  netstat -lnp | grep smb;netstat -lnp nmb

查看samba服务端口,把它添加到/etc/sysconfig/iptables里边,开放防火墙端口。

  [root@FileServer gogo11]# cat /etc/sysconfig/iptables
# Firewall configuration written by 天地っ神话
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
#-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -s 192.168.2.251/32 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -s 192.168.2.253/32 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -s 192.168.2.0/24 -p tcp -m state --state NEW -m tcp --dport 139 -j ACCEPT
-A INPUT -s 192.168.2.0/24 -p tcp -m state --state NEW -m tcp --dport 445 -j ACCEPT
-A INPUT -s 192.168.2.0/24 -p udp -m state --state NEW -m udp --dport 137 -j ACCEPT
-A INPUT -s 192.168.2.0/24 -p udp -m state --state NEW -m udp --dport 138 -j ACCEPT
-A INPUT -s 192.168.2.0/24 -p tcp -m state --state NEW -m tcp --dport 631 -j ACCEPT
-A INPUT -s 192.168.2.0/24 -p udp -m state --state NEW -m udp --dport 631 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
 

 ---------------------------------------------------------------------------------------------------

以下是收集的,后边测试:

  密码同步(让SAMBA服务器用户密码与登陆LINUX系统密码同步,就是用户想改SAMBA服务器密码,只须改自己的系统登陆密码),smb.conf里边更改为:unix password sync = yes,passwd program = /usr/bin/passwd %u 。主要加上一行使用 pam_smbpass那一行,注意於 cracklibs那行后边 那行後就可以。

auth        required      pam_env.so
auth        sufficient    pam_tcb.so shadow fork nullok prefix=$2a$ count=8
auth        required      pam_deny.so

account     required      pam_tcb.so shadow fork

password    required     pam_cracklib.so try_first_pass retry=3
password    required     pam_smbpass.so nullok use_authtok try_first_pass
password    sufficient    pam_tcb.so use_authtok shadow write_to=shadow fork nullok prefix=$2a$ count=8
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_tcb.so

selinux的控制:

  修改selinux状态,能保证在不关闭selinux的情况下使用samba。
setsebool -P samba_domain_controller on      
如果不需再Samba使用默认共享的用户家目录,可不比执行。
setsebool -P samba_enable_home_dirs on
如果在整个Samba所有的共享目录均为只读时运行
setsebool -P samba_export_all_ro on
如果在整个Samba所有的共享目录有可写时运行
setsebool -P samba_export_all_rw on
如果在整个Samba所有共享目录中有允许建立目录时运行
chcon -R -t samba_share_t 欲共享的本地目录名
setsebool -P smbd_disable_trans=1
chcon -R -t samba_share_t /bin/mount
chcon -R -t samba_share_t /bin/umount
如果需要共享光驱时使用运行
setsebool -P swat_disable_trans=1
如果需要使用Swat时运行
setsebool -P smbd_disable_trans=1
如果需要使用Pam模块进行访问控制时运行