小Q:世界上一成不变的东西,只有“任何事物都是在不断变化的”这条真理。--斯里兰卡
samba端口--------------------------------------------------------------
1)Port 137 (UDP) - NetBIOS 名字服务 ; nmbd
2)Port 138 (UDP) - NetBIOS 数据报服务
3)Port 139 (TCP) - 文件和打印共享 ; smbd (基于SMB(Server Message Block)协议,主要在局
域网中使用,文件共享协议)
4)Port 389 (TCP) - 用于 LDAP (Active Directory Mode)
5)Port 445 (TCP) - NetBIOS服务在windos 2000及以后版本使用此端口, (Common Internet File
System,CIFS,它是SMB协议扩展到Internet后,实现Internet文件共享)
6)Port 901 (TCP) - 用于 SWAT,用于网页管理Samba
windows系统之间的文件共享协议:NetBEUI(NetBIOS Extend User Interface)协议和IPX/SPX协议 NetBEUI协议是一种短小精悍、通信效率高的广播型协议,安装后不需要进行设置,特别适合于在“网络邻居”传送数据。NETBEUI缺乏路由和网络层寻址功能,既是其最大的优点,也是其最大的缺点。因为它不需要附加的网络地址和网络层头尾,所以很快并很有效且适用于只有单个网络或整个环境都桥接起来的小工作组环境。
因为不支持路由,所以NETBEUI永远不会成为企业网络的主要协议。NETBEUI帧中唯一的地址是数据链路层媒体访问控制(MAC)地址,该地址标识了网卡但没有标识网络。路由器靠网络地址将帧转发到最终目的地,而NETBEUI帧完全缺乏该信息。NetBEUI协议主要用于本地局域网中,一般不能用于与其他网络的计算机进行沟通。 IPX/SPX (Internetwork Packet Exchange/Sequences Packet Exchange,Internet分组交换/顺序分组交换IPX/SPX)是Novell公司的通信协议集。与NetBEUI形成鲜明区别的是IPX/SPX比较庞大,在复杂环境下具有很强的适应性。这是因为IPX/SPX在设计一开始就考虑了网段的问题,因此它具有强大的路由功能,适合于大型网络使用。IPX主要实现网络设备之间连接的建立维持和终止;SPX协议是IPX的辅助协议,主要实现发出信息的分组、跟踪分组传输,保证信息完整无缺的传输。 其中,IPX协议负责数据包的传送;SPX负责数据包传输的完整性。
LINUX系统之间文件共享 和 LIUNX与WINDOWS系统之间的文件共享:IBM SMB,服务器信息块协议服务器信息块(SMB)协议是一种IBM协议,用于在计算机间共享文件、打印机、串口等。SMB协议可以用在因特网的TCP/IP协议之上,也可以用在其它网络协议如IPX和NetBEUI之上
匿名用户和用户验证共存---------------------------------------------------------
需求:搭建samba服务器,共享两个目录,public与project,其中public目录可匿名访问,任何人可以读写;project目录需要验证用户名密码方可访问。
1. 安装samba服务。。。。。。。。。
2.配置samba,主要配置参数如下:
[global] workgroup = WORKGROUP server string = Samba Server Version %v netbios name = FileServer ; interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24 allow hosts = 10.0.8. 172.169.128. ; deny hosts = 192.168.100.0/24 # --------------------------- Logging Options ----------------------------- log file = /var/log/samba/%m.log # max 50KB per log file, then rotate max log size = 50 security = user //认证模式为User map to guest = bad user //这个很关键,实现匿名无须交互输入用户名和密码 guest account = nobody //匿名用户映射为nobody用户,系统中要有nobody用户 encrypt passwords = yes //用户的密码加密 smb passwd file = /etc/samba/smbpasswd [public] comment = public path= /data/pub/public browseable = yes //可以被浏览,就是在网络邻居中能看到共享名 guest ok = yes //允许匿名访问,这个也需要设置,否则匿名无法访问 writable = yes printable = no create mask = 0644 directory mask = 0755 [project] comment = project path= /data/pub/project browseable = yes public = no guest ok = no write list = @train force user = root //强制制定建立的文件的属主 printable = no create mask = 0644 directory mask = 0755
samba常用参数---------------------------------------------------------------------
comment: 对共享目录的备注
path:共享的路径。
allow hosts和deny hosts:允许或者拒绝的主机
writeable:目录缺省是否可写,也可以用readonly = no来设置可写
valid users:能够使用该共享资源的用户和组
invalid users:不能够使用该共享资源的用户和组
read list:只能读取该共享资源的用户和组
write list:能读取和写该共享资源的用户和组
admin list:能管理该共享资源(包括读写和权限赋予等)的用户和组
public:该共享资源是否能给游客帐号访问,这个开关有时候也叫guest ok
hide dot files:是否隐藏以“.”号开头的文件
create mode:新建立的文件的属性,一般是0644
directory mode:新建立的目录的属性,一般是0755
sync always:对该共享资源进行写操作后是否进行同步操作
short preserve case:不管文件名大小写
preserve case:保持大小写
case sensitive:是否对大小写敏感,一般选no,不然可能引起错误
mangle case:指明混合大小写
default case:缺省的文件名是全部大写还是小写(lower/upper)
force user:强制制定新建立文件的属主
wide links:是否允许共享链接文件
max connections = n:设定同时连接数
delete readonly:能否删除共享资源里面已经被定义为只读的文件。
samba中文乱码---------------------------------------------------------------------
SSH登录远程Linux服务器,用win浏览器查看samba的服务器中中文名的文件夹时,看到里面的中文文件名都是乱码,shell也设置不了?
1)打开/etc/sysconfig/i 18n 设置:
LANG="zh_CN.GB2312" LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN" SUPPORTED="zh_CN.GB18030:zh_CN.GB2312:zh_CN.UTF-8:zh:en_US.UTF-8:en_US:en:ja_JP.UTF 8:ja_JP:ja" SYSFONT="lat0-sun16" SYSFONTACM="8859-15"
(LANG="zh_CN.GB2312"必须设置,其他的任选)
2)打开 smb.cnf
添加:
dispaly charset=cp936
unix charset=cp936
dos charset=cp936
重启系统就好
用户对应自己的文件夹----------------------------------------------------------
需求:1、用户user1属于组group1; 用户user2属于组group1和组group2;用户user3属于组group3
2、用户user1 user2 user3可以各自进入自己的文件夹
3、用户user1 user2可以进入文件夹group1;用户user2 user3可以进入文件夹group2
在根目录下新建文件夹smb文件夹及其下属子文件夹
mkdir /smb cd /smb mkdir user1 user2 user3 group1 group2
添加用户组
groupadd group1 group2
添加用户
useradd -s /sbin/nologin -G group1 user1
useradd -s /sbin/nologin -G group1,group2 user2
useradd -s /sbin/nologin -G group2 user3
变更文件夹的用户和用户组
chown -R user1:user1 user1 chown -R user2:user2 user2 chown -R user3:user3 user3 chown -R :group1 group1 chown -R :group2 group2
变更文件夹访问权限
chmod 770 -R group1 group2
chmod 700 -R user1 user2 user3
在samba中添加用户
pdbedit -a user1
pdbedit -a user2
pdbedit -a user3
打开samba的配置文件/etc/samba/smb.conf
[global] workgroup = WORKGROUP server string = Samba Server Version %v security = user passdb backend = tdbsam load printers = yes cups options = raw #还需要加入以下内容: [user1] comment = User1 path = /smb/user1 valid users = user1 read only = No [user2] comment = User2 path = /smb/user2 valid users = user2 read only = No [user3] comment = User3 path = /smb/user3 valid users = user3 read only = No [group1] comment = group1 path = /smb/group1 valid users = @group1 read only = No [group2] comment = group2 path = /smb/group2 valid users = @group2 read only = No
最终效果:
用user1登录后,可以访问 user1和group1;
用user2登录后,可以访问user2,group1和group2;
用user3登录后,可以访问user3和group2。
附加:还有一种应用情形,在实际工作中经常遇到:公司里每一个部门都有以自己部门名称来命名的文件夹,但部门内的每个人都需要有自己的私人文件夹,在不增加共享文件夹数量的情况下,在部门文件夹内部实际只有自己可以访问的文件夹。这样做的好处就是使共享文件夹数量不致于太多而难于管理,同时也不方便查找文件。
user1和user2都属于group1这个组,他们都可以访问共享文件夹group1,但是在文件夹group1中用户user2有些文件夹(比如文件夹user2)不想让本组的其他人访问。
这种情况属于共享的问题,而属于文件夹权限的问题。
因些只需要在linux命令行下修改文件夹group1中文件夹user2的用户和用户组以组权限就可以。
chown -R user2:user2 /smb/group1/user2
chmod -R 700 /smb/group1/user2
大多数情况下,这些在一个共享文件夹里的私有文件夹都是由管理员来设置的,用户是无法设置的。
这样设置后,非用户user1访问这个文件时,系统提示权限不够;
转自:http://www.apelearn.com/bbs/forum.php?mod=viewthread&tid=7374&highlight=samba
web界面更改密码---------------------------------------------------------------
WEB页面修改密码,要安装changepasswd
安装前要修改SMB配置文件,加入如下内容 :
pam password change = no passwd chat = *New*password* %n\n *Retype*new*password* %n\n *passwd:*all*authentication*tokens*updated*successfully* smb passwd file = /etc/samba/smbpasswd passwd program = /usr/bin/passwd %u unix password sync = yes
下载changepasswd
wget http://prdownloads.sourceforge.net/changepassword/changepassword-0.9.tar.gz tar zxvf changepassword-0.9.tar.gz cd changepassword-0.9 ./configure --enable-cgidir=/var/www/cgi-bin --enable-language=Chinese --enable-smbpasswd=/etc/samba/smbpasswd --disable-squidpasswd make make install
安装报错:
/usr/bin/ld: cannot find -ldes
collect2: ld returned 1 exit status
make: *** [changepassword.cgi] Error 1
解决办法:
cd changepassword-0.9/smbencrypt/ tar -xzvf libdes-4.04b.tar.gz cd des/ make cp libdes.a ..
重新编译changepasswd后,安装完成 ;
完成后启动APACHE。 登录http://IP/cgi-bin/changepassword.cgi
安装完成后WEB登录,显示中文乱码
把 httpd 的配置文件 /etc/httpd/conf/httpd.conf 中 :
AddDefaultCharset UTF-8 改为:
AddDefaultCharset zh_CN.UTF-8
etc/samba/smb.cnf部分配置如下
[global] workgroup = server string = Chinanews shared # max 50KB per log file, then rotate log file = /var/log/samba/%m.log max log size=200KB display charset = UTF-8 unix charset = UTF-8 dos charset = UTF-8 #dos charset = CP850 security = user passdb backend = smbpasswd pam password change = no passwd chat = *New*password* %n\n *Retype*new*password* %n\n *passwd:*all*authentication*tokens*updated*successfully* smb passwd file = /etc/samba/smbpasswd passwd program = /usr/bin/passwd %u unix password sync = yes load printers = no cups options = raw #obtain list of printers automatically on SystemV [homes] comment = Home Directories browseable = no writable = yes ; valid users = %S ; valid users = MYDOMAIN\%S [Mulu1] comment = share for users path = /data/mulu1 read only = no browseable = yes writable = no public = no create mode = 0777 directory mode = 2777 # hosts allow = vaild users = @rogroup @rwgroup write list = @rwgroup [Mulu2] comment = share for users path = /data/mulu2 read only = no public = no browseable = yes writable = no public = no create mode = 0777 directory mode = 2777 #vaild users = @rwgroup write list= user1 user2 user3
转自:http://www.apelearn.com/bbs/thread-5250-1-1.html
===================================练习题======================================
1. samba服务用在什么地方?
samba服务用于把Linux服务器上的文件或者打印接共享给windows或者Linux.
2. 在samba服务的配置文件中,[global]配置部分的security 有几个安全等级?分别表示什么意义?security=有四个安全等级:
share:用户不需要账户及密码即可登录samba服务器
user:由提供服务的samba服务器负责检查账户及密码(默认)
server:检查账户及密码的工作由另一台windows或samba服务器负责
domain:指定windows域控制服务器来验证用户的账户及密码。
3. passdb backend 三种类型 smbpasswd, tdbsam和ldapsam 有什么区别?
smbpasswd:该方式是老版本samba使用的机制,它使用工具smbpasswd给系统用户置一个
Samba密码,客户端就用此密码访问Samba资源。
tdbsam:新版本默认的账号存储机制,也是把smb账号存在一个文件中,使用pdbedit工具来创建和修改smb账号。账号必须是系统用户。
ldapsam:基于LDAP账户管理方式验证用户。
4. 启动samba服务的命令是什么?
service smb start 或 /etcinit.d/samba start
5. 使用tdbsam用户后台时,如何创建新用户,如何锁定、恢复用户,又如何删除一个用户?
pdbedit -a username 创建
pdbedit -c "[D]" -u username 锁定
pdbedit -c "[]" -u username 恢复
pdbedit -x username 删除
6. 如何在IE浏览器里访问远程的samba服务器?
file://ip/
7. 在linux上,我们如何访问samba服务器?(两种情况)
smbclient //ip/share -U username
mount -t cifs //ip/share /mnt -o username=user,password=pass //需安装 cifs_vtils
8.Smbpasswd命令参数详解?
-h:显示smbapasswd的命令格式帮助
-a:添加指定的用户账户
-d:禁用指定的用户账户
-e:启用指定的用户账户
-x:删除指定的用户账户
9.samba配置文件中主要部分简介?
[global] :定义全局的变量
[homes] :共享自己的家目录,这部分可以注释掉,更换为自定义的目录
[printers]:设置打印及共享