📄 samba使用大全(绝对经典)
字号:
comment = grind’s cdrompath = /mnt/cdrompublic = yesbrowseable = yesroot preexec = /bin/mount -t iso9660 /dev/cd0 /mnt/cdromroot postexec = /bin/umount /mnt/cdrom这里root preexec指明了连接时用root的身份运行mount命令,而root postexec则指明了断开时用root身份运行umount,有效实现了对光驱的共享。打印机共享的设置:[printers]path = /var/spool/sambawriteable = noguest ok = yesprintable = yesprinter driver = HP LaserJet 5L这里printable指明该打印机可以打印, guest ok说明游客也能打印,path指明打印的文件队列暂时放到/var/spool/samba目录下。printer driver的作用是指明该打印机的类型,这样我们在安装网络打印机的时候可以直接自动安装驱动而不必选择。添加用户:samba 添加用户比较方便,一般是用smbadduser,用法是smbadduser unixid:netid,举个例子:如果你的本机有个叫grind的用户,你用smbadduser grind:grind,这样从网上邻居访问的时候用户名就用grind,而如果你用了smbadduser grind:glass的话,网上邻居访问的时候提供的用户名就是glass而不是grind了。关于samba服务端的设置基本就是这些,我想一般应用中所要使用的上面几乎都覆盖到了,所以有些不重要的就省略了,如果要更加详细的信息可以用man smb.conf参考。<Samba使用大全(二)-Samba客户端使用Samba网络打印:使用unix网络打印以前的文章比较少涉及,最近试验了一下,效果还是不错的,现在讲讲基本的实现方法:比如你要建立一台网络打印机grind,而打印机对应网络上面的//glass/HPLaserj,所有需要配置的文件有下面几个:1./etc/printcap,内容一般为:grind::sh: #禁止提示的header:ml=0: #打印的文件的长度下限,:mx=0: #最大的打印文件大小,0为不限制:sd=/var/spool/lpd/grind: #打印机的spool目录:lp=|/usr/bin/smbprint: #打印输出需要的设备名或者管道名:lpd_bounce=true: #强制lpd守护进程过滤打印文件:if=/usr/share/printconf/mf_wrapper: #过滤命令文件2.smbprint这个一般在安装完smb相关的rpm包以后就有了,主要内容是:eval acct_file=$$#spool_dir=`dirname $acct_file`config_file=$spool_dir/.configeval `cat $config_file`share=`echo $share | sed "s/[]///g"`if [ "$user" != "" ]; thenusercmd="-U"elseusercmd=""fiif [ "$workgroup" != "" ]; thenworkgroupcmd="-W"elseworkgroupcmd=""fiif [ "$translate" = "yes" ]; thencommand="translate ; print -"elsecommand="print -"ficat | /usr/bin/smbclient "$share" "$password" -E ${hostip:+-I}$hostip -N -P $usercmd "$user" $workgroupcmd "$workgroup"-c "$command" 2>/dev/null3.mf_wrapper是一个magic filter文件,是相关的一些过滤规则。内容是:MF_RULE_DIR='/usr/share/printconf/mf_rules'MF_RULES=$MF_RULE_DIR/mf[[:digit:]][[:digit:]]-*TMP_FILE=`mktemp /tmp/printconf.XXXXXX`' 'exit 1cat ./mf.cfg $MF_RULES | m4 > $TMP_FILEif [ -n "$DEBUG" ]; thencase "$DEBUG" in2)DEBUGSTRING="--debug --debug";;3)DEBUGSTRING="--debug --debug --debug";; 4)DEBUGSTRING="--debug --debug --debug --debug";;5)DEBUGSTRING="--debug --debug --debug --debug --debug";;*)DEBUGSTRING="--debug";;esacelseDEBUGSTRING=""fi# Run magic filter/usr/bin/magicfilter-t $TMP_FILE $DEBUGSTRING $* < /dev/stdinRETVAL=$?if [ -f $TMP_FILE ]; thenrm -f $TMP_FILE;fi;;esacelseDEBUGSTRING=""fi# Run magic filter/usr/bin/magicfilter-t $TMP_FILE $DEBUGSTRING $* < /dev/stdinRETVAL=$?if [ -f $TMP_FILE ]; thenrm -f $TMP_FILE;fiif [[ $RETVAL -eq 0 ]]; thenTERMINATION=`grep '^[[:space:]]*#[[:space:]]*TERMINATION=' ./mf.cfg | sed 's/^[[:space:]]*#[[:space:]]*TERMINATION=//;'`if [ -n $TERMINATION ]; thenecho -n -e $TERMINATION;fifi同时需要在/var/spool/lpd/grind下面有这么两个文件:mf.cfg和script.cfg。mf.cfg的内容是:define(TEXTfilter, text ""14 )dnldefine(PSfilter, `filter /usr/share/printconf/util/mf_postscript_wrapper --mfomatic -d lj5gray-75168.foo')dnlscript.cfg的内容是:share="//glass/HPLaserj" #glass机器上面共享的打印机hostip="192.168.1.123" #glass这台机器的IPuser=""password=""workgroup=""translate="no"完成这个工作后,启动lpd进程,然后就能用lpr等命令使用网络打印机打印了。使用网络共享文件资源:列出网络资源:一般可以用smbclient来列出某台机器相关的资源,smbclient的用法参考http://www.linuxaid.com.cn/training...owtod.jsp?i=241。这里讲比较有用的使用方法:smbclient -L IP或者NETBIOS名称,作用是显示某台提供samba服务的服务器上的共享资源。命令执行效果如下:smbclient -L glassSharename Type Comment--------- ---- -------IPC$ IPC 远程 IPCHPLaserJ Printer HP LaserJet 6PADMIN$ Disk 远程管理littlep DiskC$ Disk 默认共享Server Comment--------- -------GLASSGRINDWorkgroup Master--------- -------BLUESUN GLASSWORKGROUP HEIHEI第一段列举了该机器(glass)上面的共享资源,第二段列举了glass所在的工作组里面所有提供samba服务的机器,第三列举了其他工作组提供 browse服务的Master机器(关于Master和Browse服务可以参考我的前面一篇samba使用大全-samba服务器)。使用网络资源:smbclient //IP或者NETBIOS名称/共享资源名 [-U 用户名]命令执行效果如下:smbclient //glass/littlepadded interface ip=192.168.1.123 bcast=192.168.1.255 nmask=255.255.255.0Got a positive name query response from 192.168.1.123 (192.168.1.123)Password:Domain=[BLUESUN] OS=[Windows 5.0] Server=[Windows 2000 LAN Manager]smb: >接下来的操作和ftp的时候命令一样,用get下载文件而用put上传文件,命令可以用help查看。还有一种方法是用文件系统的方式(这种方式要确定你的内核支持smbfs,如果没有支持的话,编译内核的时候必须选中File systems--->Network File Systems---> SMB file system support (to mount Windows shares etc.) ):smbmount //IP或者NETBIOS名称/共享资源名 /本地挂接点 [-o option]常用的的option有username=<用户名>,password=<密码>,guest(指定为用guest访问,不用提供密码,前面的即使用username=guest参数的话也会要求输入密码),ro(有时候为了系统安全要指定为只读模式),rw,同时多个 option的话用逗号隔开。或者可以用mount -t smbfs [-o option] //IP或者NETBIOS名称/共享资源名 /本地挂接点来实现同样的功能。例子如下:smbmount //glass/littlep /test -o guest或者mount -t smbfs -o guest //glass/littlep /test,然后就能通过访问/test来使用网络上的资源了。如果不需要使用的时候,可以简单地使用smbumount /test或者umount /test来解除这个挂接。关于samba的功能(共享Linux磁盘给Win95/NT、共享Linux打印机给win95/NT、共享win95/NT打印机给Linux机器。、共享Win95/NT磁盘给Linux机器),前面两个属于samba服务器的内容而后两个属于samba客户段的内容,在我的两篇文章中都有介绍了他们的实现方法,但是samba实在是一个强大的工具,无法十分详细地介绍它地全部功能,而且限于笔者的知识有限,有不到之处请各位指出,还望各位多多交流。Samba使用大全中有这样一段:force user强制把建立文件的属主是谁。如果我有一个目录,让guest可以写,那么guest就可以删除,如果我用force user= grind强制建立文件的属主是grind,同时限制create mask = 0755,这样guest就不能删除了。如上面所述,我建立一个共享文件夹(smb.conf片断)...........[MyShare]comment = share directorypath = /home/mysharewritable = yespublic = yescreate mode = 0755directory mode = 0755force user = root按照资料的意思,不论我以任何用户登陆到这个共享文件夹,在这个文件夹里建立的文件都是属于root用户的,当前用户建立文件之后应该就是没有删除的权限了。我试验,在win2000登陆到samba服务器,进入myshare目录,在里面建立好一个文本文件test.txt之后,我在samba服务器上用 root登陆,进入myshare目录,用ls -l查看,test.txt的属主是root,属性是 -rwxr--r--,这样应该说我在win2000上就应该不能删除这个test.txt文件了,但是,在win2000里,却可以删除这个文件,不知道兄弟们有没有注意这个问题?到底怎样解释?还有一个问题,/home/myshare目录是root用户建立的,用命令chmod 777 /home/myshare 更改过权限,上面的权限问题是不是和这个文件夹的权限有关?meteorsky★有分号的是注释
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -