SAMBA的工作原理: 步骤1:协议协商 步骤2:建立连接 步骤3:资源共享 步骤4:断开连接 Samba服务主要安装包为前三个安装包: samba-2.2.7a-7.9.0.i386.rpm //Samba的服务端软件(第一张镜像盘) samba-client-2.2.7a-7.9.0.i386.rpm //Samba客户端软件(第一张镜像盘) samba-common-2.2.7a-7.9.0.i386.rpm //包括Samba服务器和客户端都需要的文件(第一张镜像盘) samba-swat-2.2.7a-7.9.0 //Samba的WEB配置工具(第一张镜像盘) redhat-config-samba-1.0.4-1.noarch.rpm //Samba的GUI配置工具(第一张镜像盘) samba-swat-2.2.7a-7.9.0.i386.rpm //Samba的Web配置工具(在第三张镜像盘) samba的主配置文件是/etc/samba/smb.conf [root@localhost root]# rpm -qa|grep samba //显示是否安装的samba服务 如果没有安装,“主菜单”--“系统设置”--“添加/删除应用程序”--“打开软件包”--“windows 文件服务器”--“更新”,或安装linux第三块镜像盘中的rpmdb辅助安装包,然后切换到第一张linux镜像盘,用mount /dev/cdrom /mnt/cdrom命令将第一张镜像盘挂载,安装samba主程序包,samba-client客户端软件包,还有samba的工具包samba-common.用,#rpm –ivh –aid samba*.rpm。如果安装samba所需的依赖软件包都辅助安装了,就不用一个一个找依赖包数据包安装上去,才安装软件包了。一次性安装。 [root@localhost root]# smb //安装好后,samba服务端及客户端工具也安装上去了,输入smb按两次Tab键就会弹出以smb开头的工具出来。这些工具都存放在/usr/bin目录中。 smbadduser smbcontrol smbmount smbspool smbumount smbcacls smbd smbpasswd smbstatus smbclient smbmnt smbprint smbtar [root@localhost root]# service smb start //启动samba服务可以上面的命令启动,也可以在主菜单--系统设置--服务器设置--服务--在smb前打勾--开始--启动samba服务,重新启动服务时service smb restart命令 [root@localhost root]# ls -l /usr/sbin |grep mbd //显示两个超级用户服务器,是Samba的核心两个守护进程,一个是nmbd,一个是smbd,在服务器启动到停止期间持续的运行。Smbd负责监听139TCP端口,nmdb负责监听137TCP和137UDP端口。可以在/etc/samba/smb.conf主配置文件中了解smbd和nmbd全部配置信息,smbd进程的主要作用是处理来到的SMB数据包,为使用该数据包的资源与Linux协商,而nmbd进程使得其他主机(或工作站)能浏览Linux服务器。 -rwxr-xr-x 1 root root 632276 2003-03-14 nmbd -rwxr-xr-x 1 root root 1794708 2003-03-14 smbd [root@localhost root]# pstree |grep mbd //查看服务器是否启动 |-nmbd |-smbd [root@localhost root]# pgrep smbd //查看smbd是否运行 [root@localhost root]# pgrep nmbd //查看nmbd是否运行 [root@localhost root]# netstat -tlnp|grep smb //查看smb的139端口和445端口是否被防火墙封掉,只有一139个也行了 tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 9193/smbd [root@localhost root]# iptables –F //如果不懂开放端口,就用上面的命令清楚防火墙规则,我也是新手。呵呵。或用#/sbin/iptables –F命令清除是一样效果的。 查看windows xp的IP配置,开始--运行(WIN+R)--cmd --ipconfig/all [root@localhost root]# netconfig //用netconfig网络配置工具进行配置,如果你不想这样配置也可以用vi 打开编辑/etc/sysconfig/network-scripts/ifcfg-eth0配置文件, DEVICE=eth0 //网卡设备别名 ONBOOT=yes //重启系统时启动该服务 BOOTPROTO=static //使用静态IP类型 IPADDR=172.19.22.85 //IP地址是172.19.22.85 NETMASK=255.255.255.0 //子网掩码是255.255.255.0 GATEWAY=172.19.22.254 //网关IP是172.19.22.254 BROADCAST=172.19.22.255 //网络的广播地址. NETWORK=172.19.22.85 //网络的初始地址 USERCTL=no//非root用户没有控制设备的权限 PEERDNS=no //dhcp类型一般都默认为yes,让服务器修改/etc/resolv.conf文件.静态默认为no TYPE=Ethernet //以太网类型 按Esc,然后按:wq保存退出 //提示是否进行网络设置,点击yes 不要选择Use dynamic IP configuration这是自动获取IP,要设置我们想要的IP 地址,及子网掩码。IP address:172.19.22.85,netmask:255.255.255.0网关和主DNS服务不用到先不设置用tab建切换到OK,回车。
[root@localhost root]# service network restart
//重新启动网络服务器 [root@localhost root]# ifconfig //用inconfing命令查看是否配置成功。 [root@localhost root]# ping -c 4 172.19.22.84 //网络是可以ping通的,ping 加一个选项c,跟参数4,意思是发送4次数据包。到指定的主机中。返回的信息显示是通的
//在windows xp创建一个文件夹,如:在F盘创建一个windows,在windows文件夹,并设为共享,设置共享名为share,共享的文件夹其实为windows,然后再windows文件夹中创建一个linux.txt文件,如果不能设置共享,就要安装网络向导了,然后关掉防火墙。
现在我们开始在linux下借助于smbmount命令来实现网络驱动器映射,具体命令是:
smbmount //windowsHostName/ShareName /mnt/smbdir -U administrator 说明:此处的sharename指代windows共享目录名称,smbdir指代挂载点名称,U指代登陆windows系统的用户名,administrator指代登陆windows主机下的共享文件夹sharename映射为/mnt/smbdir.目录具体步骤是: 在实现网络驱动映射前,首先在linux下建个文件夹: [root@localhost root]# mkdir -p /mnt/linux //在/mnt/目录下建一个名为linux的目录挂载点,如果/mnt不存在,就先创建一个/mnt目录在建一个linux目录,如果/mnt存在,就直接建linux目录。这就是mkdir 带一个参数-p的作用。 [root@localhost root]# smbmount //172.19.22.84/share /mnt/linux -U administrator //用smbmount挂载工具挂载windows的共享目录到,/mnt/linux目录中,如果windows用户没有设置密码,直接回车。如果设置密码,输入windows登陆用户密码,回车会行了。 [root@localhost root]# ls -l /mnt/linux/ //显示/mnt/linux目录下是否有linux.txt文件 [root@localhost root]# smbclient -L //172.19.22.84 //smbmount是samba的Linux的客户端,查看windows的共享资源 接下来配置,用samba服务将linux下的共享目录共享出来 Linux下有samba有四种安全级别,即Share、User、Server、Domain,它们的安全级别由低到高,在配置文件中具体由security参数指定。其中,Share级是指用户不需要账户和口令即可登录服务器;User级是Samba服务器默认的安全级别,是指服务器负责检查登陆者的账户和口令;Server级是指账户和口令的检查由另外的Samba或Windows服务器负责;Domain级是指由一台Windows NT/2000域服务器负责检查账户和口令。用户在配置Samba服务器时,可以根据所需要的不同安全等级来具体配置 [root@localhost root]# cd /etc/samba/ //切换到/etc/samba目录 [root@localhost samba]# mv smb.conf smb.conf.bak //将smb.conf文件改名为smb.conf.bak [root@localhost samba]# grep -v "#" smb.conf.bak > ./smb.conf //显示去掉前面“#”说明,并显示文件的内容重定向导到当前目录的smb.conf文件中。 [root@localhost samba]# vim smb.conf //打开编辑smb.conf配置文件 [global] //设置全局参数global workgroup = MYGROUP //windows的工作组 netbios name=Linuxsamba //设置主机名,Linux系统的主机名 server string = Samba Server //samba服务说明 ; hosts allow = 192.168.1. 192.168.2. 127. printcap name = /etc/printcap //设置打印机配置文件路径 load printers = yes //设置是否允许共享打印 printing = cups //设置目录文件的路径 ; guest account = pcguest // log file = /var/log/samba/%m.log //设置目录文件的路径 max log size = 0 //对日志文件的文件长度不作限制 security = share //设置User级的安全等级 ; password server = <NT-Server-Name> ; password level = 8 ; username level = 8 encrypt passwords = yes //设置用户采用口令加密 smb passwd file = /etc/samba/smbpasswd //设置口令文件的路径 ; ssl CA certFile = /usr/share/ssl/certs/ca-bundle.crt unix password sync = Yes //设置Samba用户和Linux系统账户同步 passwd program = /usr/bin/passwd %u //设置本地口令程序 passwd chat = *New*password* %n\n *Retype*new*password* %n\n *passwd:*all*authentication*tokens*updated*successfully* pam password change = yes //设置用户使用pam更改口令 ; username map = /etc/samba/smbusers ; include = /etc/samba/smb.conf.%m obey pam restrictions = yes //认证用户时,服从pam管理 socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 //设置服务器和客户间会话的Socket选项 dns proxy = no //不为客户做DNS查询 [homes] //设置用户的主目录共享 comment = Home Directories //提供用户主目录服务 browseable = no //其他用户不能浏览该用户主目录 writable = yes //允许用户进行写操作 valid users = %S create mode = 0664 //创建文件模式制定的权限为当前用户为读写,组用户为读写,其他用户为读 directory mode = 0775//创建目录模式为当前用户为读写执行权限,组用户为读写执行权限,其他用户为读执行权限 ; map to guest = bad user ; [netlogon] //网络登录服务共享名 ; comment = Network Logon Service //网络登录说明 ; path = /usr/local/samba/lib/netlogon //网络登录的共享文件夹路径 ; guest ok = yes //是否允许匿名用户访问 ; writable = no //是否允许匿名用户读操作 ; share modes = no //共享模式默认为否 [Profiles] //共享目录为profile ; path = /usr/local/samba/profiles //共享目录路径 ; browseable = no //是否可浏览的 ; guest ok = yes //是否允许匿名用户访问 [printers] //设置全部打印机共享 comment = All Printers //共享说明为所有的打印共享 path = /var/spool/samba //打印共享目录为/var/spool/samba browseable = no //浏览时是否显示 guest ok = no //是否允许匿名用户访问 writable = no //是否允许匿名用户写操作 printable = yes //是否允许打印 ;[tmp] //设置共享目录名为tmp ; comment = Temporary file space //共享目录说明 ; path = /tmp //共享目录 ; read only = no //是否为只读操作 ; public = yes //是否是公用的 ;[public] //公用目录共享名 ; comment = Public Stuff //共享说明 ; path = /home/samba //共享目录的路径 ; public = yes //是否公开目录 ; writable = yes //是否有写的权限 ; printable = no //是否允许打印 ; write list = @staff //staff组有写的权限 ;[fredsprn] ; comment = Fred's Printer //共享目录说明 ; valid users = fred //说明访问fredsprn的用户是fred ; path = /home/fred //共享路径 ; printer = freds_printer //打印机类型 ; public = no //是否允许匿名用户访问 ; writable = no //目录是否可写 ; printable = yes //是否可以打印 ;[pchome] ; comment = PC Directories ; path = /usr/local/pc/%m ; public = no ; writable = yes ;[myshare] //共享目录名 ; comment = Mary's and Fred's stuff //共享目录说明 ; path = /usr/somewhere/shared //共享目录路径 ; valid users = mary fred //允许mary 和fred用户访问 ; public = no //是否允许匿名用户访问 ; writable = yes //是否有写的权限 ; printable = no //是否允许打印 ; create mask = 0765 //创建文件的默认的权限,当前用户有读写执行,组有读写权限,读执行权限 现在来试一下share安装级别,找到security=user,将其改为security=share,如果很多显示文件,可以通过下列方式寻找,在命令模式中输入/security 然后回车就行跳到安全级别security单词位置先查了一遍smb.conf文件所有的单词都标上另特定的颜色,最后跳到第一个security单词位置,按i进入编辑模式。按左右光标进行向左向右移动,按上下光标进行上下移动。
编辑好后,将光标移到末尾[myshare]共享目录这行,按Esc键转为命令模式。要将[myshare]共享目录名以后的样本前的分号去掉,将光标定在[myshare]行
在命令模式,输入”:”,”.”点代表“当前行”,”,”逗号“到”,“$”最后一行,”s”替换“/^”行首的“;”,”\”转意符合,“//”删除
如果到这部会发现[myshare]的分号没有被删除,可以手动删除
然后保存退出
[root@localhost samba]# mkdir -p /usr/somewhere/else/public
//创建目录public目录,如果前面的目录不存在,就同时创建。 [root@localhost samba]# mkdir -p /usr/somewhere/shared //创建目录与共享目录名下的path对应,如果没有shared前面的目录不存在,先创建,如果存在不会提示 [root@localhost samba]# service smb restart //重启smb服务,让配置生效
开始—运行或(win+R)在打开输入linux的IP地址:\\172.19.22.85,然后按确定
可以看到myshare、public共享目录及打印机和传真共享
在目录中创建word文件不允许创建
[root@localhost samba]# ls -ld /usr/somewhere/else/public/
//因为window访问属于其它用户,从显示的详细的文件信息中看出,其它用户只有执行的权限,其它用户对目录没有读写的权限 drwxr-xr-x 2 root root 4096 4月 12 22:19 /usr/somewhere/else/public/ [root@localhost samba]# chmod o+rw /usr/smewhere/else/public/ //设置其它用户的权限,其它用户可以读写
//关掉窗口在重新打开,可以对目录进行读写操作了
如果访问myshare是不允许访问的,安全级别不是share不能访问。
[root@localhost samba]# useradd mary
//创建mary用户 [root@localhost samba]# useradd fred //创建fred用户 [root@localhost samba]# smbpasswd -a mary //设置smb用户mary的密码,可以用smbpasswd +用户,进行修改密码,加选项参数-d:删除用户权限,无法访问。-x:删除用户。-e:使用户重新恢复权限。-m:加成信任主机账户 New SMB password: Retype new SMB password: unable to open passdb database. Added user mary. [root@localhost samba]# smbpasswd -a fred //设置smb用户fred的密码 New SMB password: Retype new SMB password: Added user fred. [root@localhost samba]#
[root@localhost samba]# grep mary /etc/passwd
//查看mary用户密码,如果将:x:中的x去掉,该用户就不要用密码,就可以登录了。 mary:x:501:501::/home/mary:/bin/bash [root@localhost samba]# grep fred /etc/passwd fred:x:502:502::/home/fred:/bin/bash
[root@localhost samba]# more /etc/samba/smbpasswd
//smb用户的密码被加密保存在/etc/samba/smbpasswd文件中
将Security=share的级别修改为security = user,然后重启smb服务
在访问就会弹出一个连接到172.19.22.85的对话框,要求输入用户及密码
访问一次后,mary的用户和密码被系统记住了,如果在访问会直接跳到下面的界面。要想让目录可以读写,要同时满足两条件,一个是smb.conf配置权限设置,一个是目录权限设置
[root@localhost samba]# ls -ld /usr/somewhere/shared/
//查看权限,其他用户是不可读写的 [root@localhost samba]# chmod o+rw /usr/somewhere/shared/ //设置其它用户的权限为读写 [root@localhost samba]# ls -ld /usr/somewhere/shared/ //查看修改的权限,其它用户是可读可写可执行 drwxr-xrwx 2 root root 4096 4月 12 22:19 /usr/somewhere/shared/
//用fred用户登录的,如果以前做的是服务器记住访问用户,当重启Linux系统后就用fred用户登录
//可读可写可了
练习security=user安全级别。设一个简单的共享。
编辑samba主配置文件/etc/samba/smb.conf [root@localhost root]# cd /etc/samba //切换到/etc/samba目录 [root@localhost samba]# mv smb.conf smb.conf.bak //将smb.conf改名为smb.conf.bak,进行备份 [root@localhost samba]# grep -v "#" smb.conf.bak > ./smb.conf //去掉smb.conf.bak文件以“#”开头的说明信息,显现剩下的内容重定向导到当前目录的smb.conf文件中 [root@localhost samba]# vim smb.conf //打开编辑smb.conf文件 [redhat] //共享目录名为redhat comment=redhat is share directory //说明redhat是一个共享目录 path=/mnt/share //共享目录的路径 valid users = redhat @root //只用redhat用户及root超级用户可以访问 wirte list = redhat //只有redhat用户有写的权限 writable = yes //说明目录是可写的 public = no //是否是公用的 printable = yes //是否可以打印 create mode = 0664 //创建文件后,文件的权限 directory mode = 0775 //创建目录后,目录的权限 然后保存退出。 [root@localhost samba]# useradd redhat //创建一个redhat用户 [root@localhost samba]# smbpasswd -a redhat //对redhat添加smb密码,与passwd redhat没有关系呀,这个是登陆本机用户密码。 [root@localhost samba]#smbpasswd -a root //给root用户添加smb密码。 [root@localhost samba]# mkdir -p /mnt/share //创建路径目录,如果/mnt不存在,同时创建。 [root@localhost samba]#chmod 0777 /mnt/share //给用户添加,当前用户,组,及其他用户,对目录/mnt/share有读写执行的权限。 [root@localhost samba]# service smb restart //重启smb服务,让配置文件重新加载 最好在win7进行访问,win+R(开始--运行):\\IP(linux下的IP地址)回车。 用户输入:redhat 密码:***(你设置的redhat的smb密码) 转载请保留固定链接: https://linuxeye.com/configuration/560.html |