SMB HOWTO David Wood, dwood@plugged.net.au v1.0, 10 August 1996 ìY nakano@apm.seikei.ac.jp v1.0j1, 24 September 1996 ±êÍ SMB HOWTO Å·B±Ì¶Í Linux Å Session Message Block (SMB) vgRðµ¤û@É¢Äq×½àÌÅ·BSMB vgRÍA NetBIOS vgRALanManager vgRÆàÄÎêĢܷB Ó: ±Ì¶Í©ÈèÈOÉ©ê½àÌÈÌÅA¢ÜÇ«Ì Linux « ÉÍ ÄÍÜçÈ¢Óª èÜ·B (JF Project) ______________________________________________________________________ Ú 1. ͶßÉ 2. ¼Ìîñ 3. CXg[ 4. f[ðN®·é 5. /etc/smb.conf ÌÝè 6. Linux ÌhCuð Windows }V©ç¤L·é 7. Windows ÌhCuð Linux }VŤL·é 8. Linux }VÌv^ð Windows }V©çp·é 9. Linux }V©ç Windows Ìv^ðg¤ 10. ì 11. Ó« ______________________________________________________________________ 1. ͶßÉ ±êÍ SMB HOWTO Å·B±Ì¶Í Linux Å Session Message Block (SMB) vgRðµ¤û@É¢Äq×½àÌÅ·BSMB vgRÍA NetBIOS vgRALanManager vgRÆàÄÎêĢܷB ±Ì¶Í David Wood (dwood@plugged.net.au) ªÒWµÄ¢Ü·BÇÁî ñâC³Aù³É¢ÄÌ[ÍA±ÌAhXÜŨ辳êÎñ Ì[Xɽf³¹Ü·B SMB vgRÍ Microsoft Windows 3.11ANTA95 ÅfBXNâv^ð ¤L·é½ßÉp¢çêÜ·BAndrew Tridgell ÉæÁÄ©ê½ Samba c [Zbgðp¢êÎALinux ÈÇÌ Unix }VÅà Windows ÌzXgÆ fBXNâv^ð¤LÅ«Ü·B Samba ðp¢ÄÅ«é±ÆÍÈºÌ 4 ÂÅ·B 1. Linux zXgÌhCuð Windows zXgŤL·éB 2. Windows zXgÌhCuð Linux zXgŤL·éB 3. Linux zXgÌv^ð Windows zXgŤL·éB 4. Windows zXgÌv^ð Linux zXgŤL·éB ±Ì¶ÍÈãÌP[Xð·×ÄJo[µÄ¢Ü·B ÆÓ: ±Ì¶ÉLµ½û@âXNvgÍAÒðÜß½½l©ÌO[v ÌÅͤܢĢܷBµ©µÂ«ªÙÈéÆA¤Ü¢©È¢Â\« à èÜ·B»Ìæ¤ÈêÍÒÉ[Åmç¹Ä¢½¾¯êÎA±Ì¶ ÌWÉð§¿Ü·B½¾µÒͽÌÛØàµÜ¹ñB½ðúҵĽñ Å·©HÒͽ¾¾ðµÄ¢éÉ·¬È¢ÌÅ·... 2. ¼Ìîñ ±Ì HOWTO ¶ÅÍALinux }VÅ SMB Ìt@CT[rXAvgT [rXðp·é½ßÌÝè@É¢ÄAîb©çྵĢܷBSamba Í ¡GÅ@\ÈVXeÅ·ÌÅA±Ì¶ÅÍ Samba ÉÖ·éîñ·×Ä ðLq·é±ÆÍūܹñµAܽ»ÌÂàèà èܹñB æè½Ìîñðmè½¢lÍȺ̶£ðÝľ³¢B o Samba ÌzzpbP[WÉÜÜêéhL gBzzpbP[WÍ <ftp://nimbus.anu.edu.au/pub/tridge/samba/> ©çæ¾Å«Ü·B o Linux Printing HOWTO o Print2Win mini HOWTO ===ó=== àÌ Samba ö®~[T[oƵÄÍA <ftp://ring.aist.go.jp/archives/net/samba/> <ftp://ring.asahi- net.or.jp/archives/net/samba/> ÈǪ èÜ·B±Ì|óð¢Ä¢é '96 9 »ÝÅÍA1.9.16p2 ªÅVÌ[Xo[WÌæ¤Å·B ú{êÌðà¶ÆµÄÍȺÌæ¤Èà̪ èÜ·B½¾µ±êçÍ 1.9.15p8 ðx[XÉ¢Ä èÜ·ÌÅA1.9.16p2 ÅÍשȪªÏíÁ ĢܷBÁÉ nmbd ̵¢ª¾¢ÔÏíÁÄ¢éÌÅAman nmbd µÄ¨ ±Æð¨©ßµÜ·B o Unix Magazine '96 3 wÁW PC UNIXxªR¹FAÐRPÍ o Unix User '96 10 ` wvCEp[\i Linuxx^çhm o wÀát« Samba Ìg¢ûx½ì <ftp://etlport.etl.go.jp/pub/windows/knowhow/samba.txt> àÌ Samba hL gƵÄÍoCuI¶Ýƾ¦Üµå¤B o ²¡¶D³ñÌ Samba Web y[W smb.conf Ì|óÈǪ èÜ·B j [XÅÍApêÅ·ª comp.protocols.smb Å Samba ÉÖ·éc_ª³ êĢܷB ==óI== 3. CXg[ ÅVÌ Samba Ì\[XÍ <ftp://nimbus.anu.edu.au/pub/tridge/samba/> © ç¾çêÜ·B Redhat ðgÁÄ¢élÈç Samba ð rpm `®ÅCXg[·é±ÆàÅ «Ü·B¼ÌzzpbP[WÉà Samba ÌoCiCXg[ªÂ\Èà ̪ èÜ·B ===ó=== ú{êÌt@C¼ðLøɵ½¢êÍARpCÌÛÉ Makefile ÅÌ ÝèªKvÉÈèÜ·BãLÌæ¤ÈoCipbP[WÅú{êt@C¼ ªLøÉÈÁÄ¢é©Ç¤©A²¶mÌûª¢çÁµá¢Üµ½çóÒÜŨ mç¹¢½¾¯êÎK¢Å·B ==óI== Samba ðp·é½ßÉÍÈºÌ 2 ÂÌf[vOªKvÅ·B± êçÍÊí /usr/sbin ÉCXg[³êAVXeN®Éu[gAbv XNvgÅN®³êé©AÜ½Í inetd ©çÀs³êÜ·BXNvgÌ áÍA``f[ðN®·é'' ÌßÉ °Ä èÜ·B smbd SMB f[Å·B nmbd NCAgÖ NetBIOS Éæé¼Oð@\ðñµÜ·B ÈºÌ Samba vOÍÊí /usr/bin ÉCXg[³êÜ·i±Ìê ÍIðÂ\Å·jB smbclient UNIX zXg̽ßÌ SMB NCAgvO smbprint SMB zXgÌv^ðp·é½ßÌXNvg smbprint.sysv SVR4 pÌ smbprint smbstatus [JzXgÖÌ SMB Ú±ðXg·évO smbrun SMB zXgÅKvÈAvP[VðÀs³¹é½ßÌâIÈð ð·éXNvgvO ³çÉA±Ì HOWTO ¶ÉÍ print Æ¢¤¼OÌXNvgªüÁÄ¢Ü ·B±êÍ smbprint XNvgÌtgGhÅAóüðæèÈPÉ·é àÌÅ·B Samba ÌpbP[WðCXg[·éÌÍÈPÅ·BãLÌ URL ©ç\[ XðèÉüêAzzA[JCuÌÌ README t@Cð©Ä¾³¢Bܽ docs/INSTALL.txt ÉÍCXg[èÌÚ×Èðàª¢Ä èÜ·B CXg[ɱ¢ÄAf[ð /usr/sbin ÖAvOð /usr/bin ÖAman y[Wð /usr/local/man Éu«Üµå¤B Samba ÌpbP[WðìéÆ«Asmbd ÌRtBM [Vt@CÅ é smb.conf Ìu«êð Makefile ÌÅwèµÜ·BD«ÈƱëÉu ±ÆªÅ«Ü·ªAÊíÍ /etc/smb.conf ªÇ¢Åµå¤BOt@C ÆbNfBNgÉ¢ÄÍȺÌæ¤ÉÝèµÄ¨±Æð¨©ßµÜ ·B ______________________________________________________________________ log file=/var/log/samba-log.%m lock directory = /var/lock/samba ______________________________________________________________________ ===ó=== Samba pbP[WÌftHgÌÝèÅÍAf[¨æÑvOÍ /usr/local/samba/bin ÖAܽ smb.conf ÈÇÍ /usr/local/samba/lib É u©êÜ·B ܽ log file Æ lock directory ÌÝèÍ Makefile ÅàÅ«Ü· ªAsmb.conf ɢĨûªhL g«ªÈéÌÅÇ¢Æv¢Ü ·B ==óI== smb.conf ðCXg[µÜ·BSamba ÌvOðRpCµ½fB NgÉs«A³çÉ example/simple fBNgÉÚ®µÄ README ð Çñź³¢B±¢ÄfBNgÉ é smb.conf ð /etc ÉRs[µÜ ·B±±Å¿åÁÆÓB Redhat ÈÇÌzzpbP[W©ç Samba ðC Xg[µ½êÉÍAùÉ /etc É smb.conf ª é©àµêܹñB±Ì êÍA±Ìt@C©çÝèðͶßéÆǢŵå¤B % smb.conf ð /etc Éu«½È¢êÉÍAD«Èêɨ¢ÄV{ bNNð /etc Éìèܵå¤B ______________________________________________________________________ ln -s /path/to/smb.conf /etc/smb.conf ______________________________________________________________________ 4. f[ðN®·é SMB Ìf[Í /usr/sbin/smbd Æ /usr/sbin/nmbd Ì 2 ÂÅ·B Samba Ìf[ðÀs·éâè©½Í 2  èÜ·Binetd ©çN®·é û@ÆAX^hA[ÌvZXƵÄN®·éû@Å·BêpÌt@C T[oƵÄp¢éêÍ inetd ©çN®·éûªÇ¢Åµå¤B»¤· êνç©ÌRűêçÌf[vZXªñÅàAÌNGXgÉ æÁÄÄÀs³êÜ·BSMB T[oT[rXðXµ©pµÈ¢iVXe ÇÌÆ«¾¯Æ©jÈçÎA/etc/rc.d/init.d XNvg©çÀs·éÆ Ç¢Åµå¤BKvÈÆ«¾¯è®ÅÀsµÄàǢŵå¤B ===ó=== Xs[hÌ_©çÍAf[vZXÌûªí¸©ÈªçLÆ¢¤Ó©à èÜ·BܽAóÒÌzXgÅ 3 ÙÇ Samba ðgpµ½ÔA¿½± ÆÍ èܹñŵ½B ==óI== inetd ©çf[ðN®·éêÍAȺÌsð inetd ÌÝèt@C /etc/inetd.conf ÉÁ¦Ü·B ______________________________________________________________________ # SAMBA NetBIOS services (for PC file and print sharing) netbios-ssn stream tcp nowait root /usr/sbin/smbd smbd netbios-ns dgram udp wait root /usr/sbin/nmbd nmbd ______________________________________________________________________ «·¦½çAȺÌR}hðÀsµÄ inetd ðX^[gµÜ·B ______________________________________________________________________ kill -HUP <pid of inetd> ______________________________________________________________________ <pid of inetd> ÉÍ inetd ÌvZX ID ðüêľ³¢Bps R}h ÅmF·é©A"cat /var/run/inetd.pid" ÈÇÅàí©èÜ·B f[ðVXeÌN®XNvg©çÀs·éêÍAȺÌàeð /etc/rc.d/init.d/smb ƵÄ컵AXNvgÌRgÅwè³êÄ ¢ét@CÖÌV{bNNðìÁľ³¢B ______________________________________________________________________ #!/bin/sh # # /etc/rc.d/init.d/smb - starts and stops SMB services. # # The following files should be synbolic links to this file: # symlinks: /etc/rc.d/rc1.d/K35smb (Kills SMB services on shutdown) # /etc/rc.d/rc3.d/S91smb (Starts SMB services in multiuser mode) # /etc/rc.d/rc6.d/K35smb (Kills SMB services on reboot) # # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ ${NETWORKING} = "no" ] && exit 0 # See how we were called. case "$1" in start) echo -n "Starting SMB services: " daemon smbd -D daemon nmbd -D echo touch /var/lock/subsys/smb ;; stop) echo -n "Shutting down SMB services: " killproc smbd killproc nmbd rm -f /var/lock/subsys/smb echo "" ;; *) echo "Usage: smb {start|stop}" exit 1 esac ______________________________________________________________________ ===ó=== Slackware ÌêÍA/etc/rc.d/rc.local ÉȺÌæ¤ÈsðÇÁµÄ¨¯ ÎǢŵå¤B ______________________________________________________________________ if [ -f /usr/sbin/nmbd ]; then echo "SAMBA servers" /usr/sbin/smbd -D /usr/sbin/nmbd -D fi ______________________________________________________________________ ==óI== 5. /etc/smb.conf ÌÝè Linux Åà¼Ì Unix ãÅàASamba ÌÝèÍ /etc/smb.conf Æ¢¤t@C ÉÜÆßÄL³êĢܷBÇÌVXe\[XðöJ·é©Aܽ»ê çÉÇÌæ¤È§ÀðÈ·©ÈÇÍA±Ìt@CÅÝèµÜ·B ±Ìßɱ 2 ßÅÍ Linux ÌhCuâv^ð Windows }V©ç ¤L·éû@É¢Äq×Ü·B±ÌßŦ· smb.conf ÍAū龯ÈP ɱêçÌ@\ðÀ»·éæ¤É¢½àÌÅ·ÌÅA ÜűüIÈàÌ Æl¦Ä¾³¢B ±Ì smb.conf ÌÚתðçÈÄàSz·éKvÍ èܹñBdvÈTO É¢ÄÍãÌßÅ ç½ßÄྵܷB smb.conf ÌeXÌZNVÍAZNVwb_i[global]A[homes]A [printers] j©çnÜèÜ·B global ZNVÅÍSÄÌZNVɤÊÈÏðwèµÜ·B homes ZNVðwè·éÆA[g[UÍ©ªÌz[fBNg ÖANZXÅ«éæ¤ÉÈèÜ·BÂÜè Samba zXgÅ é Linux }V ÉAJEgðÁÄ¢élª Windows }VÅÚ±·éÆAÞçÂlÂl Ìz[fBNgðpÅ«éæ¤ÉÈèÜ·B±ÌT[rXðp·é ÉÍ Linux }VÉAJEgðÁĢȯêÎÈèܹñB ±±É¦µ½ smb.conf ÌáÅÍA[g[Uª©ªÌz[fBNg ÉANZXµA/tmp fBNgÉ«±ÝÅ«éæ¤ÉµÄ¢Ü ·BWindows [UɱêçÌ\[Xð©¹éÉÍALinux ÌzXgª[ JÈlbg[NãÉȯêÎÈèܹñBWindows Ìt@C}l[W âGNXv[ðp¢êÎA±êçÌhCuðlbg[NhCuƵ ÄڱūܷB ±Ì¶ÌȺÌßÅÍA¼Ì\[Xð¤L³¹é½ßÌ smb.conf t@C ̮ɢÄàq×ĢܷBQlɵľ³¢B ______________________________________________________________________ ; /etc/smb.conf ; ; Make sure and restart the server after making changes to this file, ex: ; /etc/rc.d/init.d/smb stop ; /etc/rc.d/init.d/smb start [global] ; Uncomment this if you want a guest account ; guest account = nobody log file = /var/log/samba-log.%m lock directory = /var/lock/samba share modes = yes [homes] comment = Home Directories browseable = no read only = no create mode = 0750 [tmp] comment = Temporary file space path = /tmp read only = no public = yes ______________________________________________________________________ 6. Linux ÌhCuð Windows }V©ç¤L·é ãÉ °½ÈPÈ smb.conf ©çàðéæ¤ÉALinux ÌhCuð Windows Ì[Uª¤L·éÌÍÈPÅ·Bµ©µ Samba ÌVXeÅÍñíɽ ÌÚðJX^}CYÅ«Ü·BȺɢ©áð¦µÜ·B éfBNgð§ÀȵÉöJ·éÉÍAæöÌßÅ°½smb.conf Ì tmp ZNVðÜ˵ÄA¢Â©Ìp[^ðÝèµÜ·B ______________________________________________________________________ [public] comment = Public Stuff path = /home/public public = yes writable = yes printable = yes ______________________________________________________________________ ±ÌfBNģÀð¿åÁÆϦÄAÇÝoµÍ¾êÅàÂ\ƵA «Ýð staff O[vÌ[UÉÀéÉÍAȺÌæ¤ÉµÜ·B ______________________________________________________________________ [public] comment = Public Stuff path = /home/public public = yes writable = yes printable = no write list = @staff ______________________________________________________________________ hCu¤LÉÖ·é¼Ìè@É¢ÄÍASamba t®Ì¶â man y[W ð©Ä¾³¢B ===ó=== Win 95 Å쬵½t@CÅ嶬¶ÌæÊðµ½èAú{êð³µ \¦³¹é½ßÉÍAglobal ZNVÉȺÌGgðÇÁµÄ¨Æ Ç¢æ¤Å·B ______________________________________________________________________ mangle case = no case sensitive = no default case = upper preserve case = yes short preserve case = yes ______________________________________________________________________ ú{êðp·éÉÍARpCÉ Makefile Å -DKANJI=\"euc\" ÈÇÆwè·éKvª èÜ·Bܽ 1.9.16p2 ©çÍAsmb.conf Å ______________________________________________________________________ coding system = <R[hn> ______________________________________________________________________ Ìæ¤Éwè·é±ÆªÂ\ÉÈèAܽ CAP ƯÉg¤½ßÌ "cap" Æ ¢¤¿R[hnªÇÁ³êܵ½B ȨR[hnð unicode ɵĨÆAú{ê Windows 95 ©ç Samba Ìh CuðÚ±µ½êAVKtH_Ì쬪ūÈÈéÆ¢¤sïª é»¤Å·B ==óI== 7. Windows ÌhCuð Linux }VŤL·é Samba ÌzzpbP[WÉÍAUnix }V̽ßÌ SMB NCAgvO ªÜÜêĢܷB±ÌvOÍ ftp Ìæ¤ÈR}hwüÌC ^[tF[XðÁĢܷB±ÌvOðg¦ÎAWindows ÌT[o ÆA Linux ÌNCAgÆÌ ¢¾ÅAt@CÌâèæèªÅ«Ü·B ===ó=== 2.0 ÈãÈÇÌÅßÌJ[lÅÍ smbfs Æ¢¤t@CVXeª èANT ÈÇÌlbg[NhCuð¼Ú}EgÅ«éæ¤Å·BÚ× ÍAJ[lfBNgº Documentation/filesystems/smbfs.txt ð©Ä º³¢B ==óI== ézXgÅÇñȤLT[rXªpoé©ð²×é½ßÉÍAȺÌæ ¤ÈR}hðÀsµÜ·B ______________________________________________________________________ /usr/sbin/smbclient -L host ______________________________________________________________________ host ÉͲ׽¢zXg̼OðüêÜ·B±ÌR}hðÀs·éÆAT [rX¼ÌXgª¾çêÜ·BT[rX¼ÆÍA Ƚª±ÌzXgÅp Å«éhCuâv^̼OÅ·BൠSMB T[oɽç©ÌZL eB§Àª©©ÁÄ¢éÆpX[hð·©êÜ·ÌÅAguest AJEgÌ pX[h©A»ÌzXgÅÌ È½ÌÂlAJEgÌpX[hðüêÄ º³¢B Àsáð¦µÜ·B ______________________________________________________________________ smbclient -L zimmerman ______________________________________________________________________ ÀsÊÍȺÌæ¤ÉÈéŵå¤B ______________________________________________________________________ Server time is Sat Aug 10 15:58:27 1996 Timezone is UTC+10.0 Password: Domain=[WORKGROUP] OS=[Windows NT 3.51] Server=[NT LAN Manager 3.51] Server=[ZIMMERMAN] User=[] Workgroup=[WORKGROUP] Domain=[] Sharename Type Comment --------- ---- ------- ADMIN$ Disk Remote Admin public Disk Public C$ Disk Default share IPC$ IPC Remote IPC OReilly Printer OReilly print$ Disk Printer Drivers This machine has a browse list: Server Comment --------- ------- HOPPER Samba 1.9.15p8 KERNIGAN Samba 1.9.15p8 LOVELACE Samba 1.9.15p8 RITCHIE Samba 1.9.15p8 ZIMMERMAN ______________________________________________________________________ uEYXgibrowse listjÍAlbg[NãÌ¼Ì SMB T[o̤L \[X𦵽àÌÅ·B NCAgƵÄp·éÉÍȺÌæ¤ÉÀsµÜ·B ______________________________________________________________________ /usr/sbin/smbclient service <password> ______________________________________________________________________ service ÉÍzXg¼Æ¤L¼ðwèµÜ·BzXg zimmerman ɨ¢Ä public Æ¢¤¼OÅöJ³êÄ¢éfBNgðp·é½ßÉ ÍAservice Í \\zimmerman\public ÆÈèÜ·BVFÌvvg©ç± ÌR}hðp·éêÍAobNXbV ðGXP[vµÈ¢Æ¢¯Ü ¹ñ©çAÇÌæ¤ÉüÍ·éKvª èÜ·B ______________________________________________________________________ /usr/sbin/smbclient \\\\zimmerman\\public mypasswd ______________________________________________________________________ mypassword ÉÍA È½Ì pX[hð»ÌÜܢľ³¢B ===ó=== Ⱥͼ{ålÔ«³ñÉæéिåÁÆÈPÈüÍû@Å·B ______________________________________________________________________ /usr/sbin/smbclient '\\zimmerman\public' mypasswd ______________________________________________________________________ ==óI== ȺÌæ¤È smbclient ÌvvgªoÄ«Ü·B ______________________________________________________________________ Server time is Sat Aug 10 15:58:44 1996 Timezone is UTC+10.0 Domain=[WORKGROUP] OS=[Windows NT 3.51] Server=[NT LAN Manager 3.51] smb: \> ______________________________________________________________________ h ÆÅÄÎAsmbclient Ìwvª¾çêÜ·B ______________________________________________________________________ smb: \> h ls dir lcd cd pwd get mget put mput rename more mask del rm mkdir md rmdir rd prompt recurse translate lowercase print printmode queue cancel stat quit q exit newer archive tar blocksize tarmode setmode help ? ! smb: \> ______________________________________________________________________ ftp ðg¦élÈçAman y[Wð©éÜÅàÈ smbclient ªg¦éæ¤ ÉÈéŵå¤B 8. Linux }VÌv^ð Windows }V©çp·é Linux Ìv^ð Windows ©çp·éÉÍALinux ãÅv^ª¿á ñÆ®ì·éæ¤É³µÝè³êÄ¢éKvª èÜ·BLinux ÅÌv gªÅ«Ä¢êÎ SMB Å̤LÍÈPÅ·B [Jv^ÌÝèÉ¢ÄÍ Printing HOWTO ðÝľ³¢B MÒ©gÍ Windows NT ÉÚ±³êÄ¢év^ðgÁÄ¢éÌÅA±Ìß É¢Ä é±ÆÍâÎɳµ¢ÆÍÀèܹñB¾öxÉó¯ÆßĨ¢ ľ³¢BàµïÌIÈgpo±ðÁÄ¢éûª¢çÁµá¢Üµ½çA Ǥ¼ dwood@plugged.net.au ÜÅmç¹Ä¾³¢B»¤·êαÌÍÌà eð®¬Å«Ü·B smb.conf Év^ÌÝèðÁ¦Ü·B ______________________________________________________________________ [global] printing = bsd printcap name = /etc/printcap load printers = yes log file = /var/log/samba-log.%m lock directory = /var/lock/samba [printers] comment = All Printers security = server path = /var/spool/lpd/lp browseable = no printable = yes public = yes writable = no create mode = 0700 [ljet] security = server path = /var/spool/lpd/lp printer name = lp writable = yes public = yes printable = yes print command = lpr -r -h -P %p %s ______________________________________________________________________ v^ÌZNVɨ¯é path ÉÍA/etc/printcap ÅÝèµ½Xv[ fBNgƯ¶fBNgðwèµÄ¾³¢B Ó: Samba ðgÁÄ Unix }VÌv^ð Windows NT }V©ç¤L ³¹éÛÉÍâè_ª¢Â© èÜ·B»Ì¤¿ÌêÂÍANT ©çͤL v^ª³µ©¦È¢Æ¢¤àÌÅ·B±Ìâèðð·éÉÍ Samba zzpbP[WÌ docs/WinNT.txt t@CðQƵĺ³¢BpX[hÉ Ö·éâèà èÜ·B±¿çÌûͯt@Cð©ÄàA¢ç¢ç·é¾¯ ÅðÉÍÈèܹñ... ===ó=== óÒÍ Linux ÉÂȪÁÄ¢é Epson MJ-700V2C ð Samba ÅöJµ Windows 95 ©çgÁĢܷÌÅA»ÌÝèàeðȺÉLµÜ·B½¾ µAöJæÍvCx[gAhXÌ¢½lbg[NÈÌÅAî{IÉZ L eḆÆÍl¦Ä¢Ü¹ñB ܸ smb.conf Å·B ______________________________________________________________________ [global] lock directory = /var/locks/samba workgroup = WORKGROUP browseable = yes allow hosts = 192.168.111. printing = bsd load printers = no printcap name = /etc/printcap password level = 8 create mode = 0750 mangle case = no case sensitive = no default case = upper preserve case = yes short preserve case = yes [lp] comment = MJ-700V2C printer name = lp path = /var/tmp printable = yes writable = yes create mode = 0700 ______________________________________________________________________ /etc/printcap Å·B ______________________________________________________________________ lp:\ :lp=/dev/lp1:\ :sd=/var/spool/lpd/lp:\ :lf=/var/spool/lpd/lp/errs:\ :if=/var/spool/lpd/lp/incat:\ :mx#0:\ :sh:\ :sf: ______________________________________________________________________ CvbgtB^Ì /var/spool/lpd/lp/incat Å·B ______________________________________________________________________ #!/bin/sh /bin/cat exit 0 ______________________________________________________________________ Windows 95 ©çÍAlbg[NhCuðIðµ½ã MJ-700V2C ÌhC oðèÅIñÅCXg[·éKvª èÜ·B ==óI== 9. Linux }V©ç Windows Ìv^ðg¤ Windows }VãÌv^ð¤L·é½ßÉÍȺÌìƪKvÅ·B 1. /etc/printcap ɳµ¢GgªKvÅA»êçÍ[JÈfBN g\¢É¶½àÌÅ éKvª èÜ·iXv[fBNgÌÝ èÈÇjB 2. /usr/bin/smbprint XNvgªKvÅ·B±êÍ Samba Ì\[XpbP [WÉt¢Ä«Ü·ªASamba ÌoCizzpbP[WÉÍt¢Ä±È ¢©àµêܹñBãÅIWiðXC³µ½àÌðڹܷB 3. ASCII t@Cð Postscript `®ÉÏ··éKvª éêÉÍA nenscript ÈÇÌ Postscript Ro[^ðõ·éKvª èÜ·B nenscript ÍÊíÍ /usr/bin ÉCXg[³êĢܷB 4. Samba ðpµ½óüðeÕɵÄêéæ¤ÈtgGhª~µ¯ êÎAȺÉLµ½ÈPÈ perl XNvgðµÄº³¢BASCIIA PostscriptAcreated Postscript ªµ¦éæ¤ÉÈÁĢܷB ȺÉL·ÌÍAWindows NT v^ÉÚ±³ê½ HP 5MP v^ðp ·é½ßÌ /etc/printcap ÖÌGgÅ·B»ê¼êÌàeÍȺÌÊè Å·B cm Rg lp oÍÉg¤foCX¼ sd ±Ìv^̽ßÌXv[fBNg af AJEgt@C mx ÅåÌt@CTCYi0 É·êγ§ÀÉÈèÜ·j if üÍÉp¢çêétB^iܽÍXNvgj ³çÉîñªKvÈçAPrinting HOWTO â printcap Ì man y[Wð©Äº ³¢B ______________________________________________________________________ # /etc/printcap # # //zimmerman/oreilly via smbprint # lp:\ :cm=HP 5MP Postscript OReilly on zimmerman:\ :lp=/dev/lp1:\ :sd=/var/spool/lpd/lp:\ :af=/var/spool/lpd/lp/acct:\ :mx#0:\ :if=/usr/bin/smbprint: ______________________________________________________________________ Xv[fBNgÆAJEgt@Cª¶ÝµÄ¨èA«ÝÂ\Å é±ÆðmFµÄ¨¢Äº³¢Bܽ printcap Ì if sÉAȺÉL· smbprint XNvgÖ̳µ¢pXªÝè³êÄ¢é±ÆA lp sÉ /dev fBNgÉ é³µ¢foCXªÝè³êÄ¢é±ÆàmFµÄº³¢B Í smbprint Å·B±êÍÊí /usr/bin Éu©êĨèA Samba ðìÁ ½ Andrew Tridgell {lÉæÁÄ©ê½àÌÅ·iMÒÌmçÈ¢ Samba ̤ìÒª¼É¢çÁµáÁ½ç·ÝܹñjB±êÍ Samba Ì\[Xpb P[WÉüÁĢܷªAoCizzÌêÉͳ¢©àmêܹñÌÅA ȺɪXèðÁ¦½àÌð¦µÄ¨«Ü·B ȺÉLµ½XNvgðÓ[©Äº³¢B±êÍIWiðC³µ½ àÌÅA½g¢â·ÈÁÄ¢éÆv¢Ü·B ______________________________________________________________________ #!/bin/sh -x # This script is an input filter for printcap printing on a unix machine. It # uses the smbclient program to print the file to the specified smb-based # server and service. # For example you could have a printcap entry like this # # smb:lp=/dev/null:sd=/usr/spool/smb:sh:if=/usr/local/samba/smbprint # # which would create a unix printer called "smb" that will print via this # script. You will need to create the spool directory /usr/spool/smb with # appropriate permissions and ownerships for your system. # Set these to the server and service you wish to print to # In this example I have a WfWg PC called "lapland" that has a printer # exported called "printer" with no password. # # Script further altered by hamiltom@ecnz.co.nz (Michael Hamilton) # so that the server, service, and password can be read from # a /usr/var/spool/lpd/PRINTNAME/.config file. # # In order for this to work the /etc/printcap entry must include an # accounting file (af=...): # # cdcolour:\ # :cm=CD IBM Colorjet on 6th:\ # :sd=/var/spool/lpd/cdcolour:\ # :af=/var/spool/lpd/cdcolour/acct:\ # :if=/usr/local/etc/smbprint:\ # :mx=0:\ # :lp=/dev/null: # # The /usr/var/spool/lpd/PRINTNAME/.config file should contain: # server=PC_SERVER # service=PR_SHARENAME # password="password" # # E.g. # server=PAULS_PC # service=CJET_371 # password="" # # Debugging log file, change to /dev/null if you like. # logfile=/tmp/smb-print.log # logfile=/dev/null # # The last parameter to the filter is the accounting file name. # spool_dir=/var/spool/lpd/lp config_file=$spool_dir/.config # Should read the following variables set in the config file: # server # service # password # user eval `cat $config_file` # # Some debugging help, change the >> to > if you want to same space. # echo "server $server, service $service" >> $logfile ( # NOTE You may wish to add the line `echo translate' if you want automatic # CR/LF translation when printing. echo translate echo "print -" cat ) | /usr/bin/smbclient "\\\\$server\\$service" $password -U $user -N -P >> $log file ______________________________________________________________________ ÙÆñÇÌ Linux pbP[WÉÍAASCII ¶ð Postscript É·é nenscript R}hªÜÜêĢܷBÈºÌ perl XNvgÍA smbprint ðgÁÄóü·éÛÉAæèVvÈC^[tF[Xðñ· éàÌÅ·B ______________________________________________________________________ Usage: print [-a|c|p] <filename> -a prints <filename> as ASCII -c prints <filename> formatted as source code -p prints <filename> as Postscript If no switch is given, print attempts to guess the file type and print appropriately. ______________________________________________________________________ smbprint ðgÁÄ ASCII t@Cðóü·éÆA·¢sÍüs³êĵܢ Ü·B±ÌXNvgÅÍAÂ\ÈÀèPêÌrÅÍÈAóÅüs·é æ¤ÉµÄ¢Ü·B \[XR[hÌtH[}bgÉÍ nenscript ðp¢Ä¢Ü·BASCII t@C Í 2 igÝÉ®`³êAwb_iútAt@C¼ÈÇjªÂ«Ü·B± ÌXNvgð`ɵÄA¼Ì®`û@ðp¢é±ÆàÅ«éŵå¤B Postscript ̶ͷÅÉ®`³êÄ¢éàÌÆÝȵÄA»ÌÜÜÊ·æ ¤ÉÈÁĢܷB ______________________________________________________________________ #!/usr/bin/perl # Script: print # Authors: Brad Marshall, David Wood # Plugged In Communications # Date: 960808 # # Script to print to oreilly which is currently on zimmerman # Purpose: Takes files of various types as arguments and # processes them appropriately for piping to a Samba print script. # # Currently supported file types: # # ASCII - ensures that lines longer than $line_length characters wrap on # whitespace. # Postscript - Takes no action. # Code - Formats in Postscript (using nenscript) to display # properly (landscape, font, etc). # # Set the maximum allowable length for each line of ASCII text. $line_length = 76; # Set the path and name of the Samba print script $print_prog = "/usr/bin/smbprint"; # Set the path and name to nenscript (the ASCII-->Postscript converter) $nenscript = "/usr/bin/nenscript"; unless ( -f $print_prog ) { die "Can't find $print_prog!"; } unless ( -f $nenscript ) { die "Can't find $nenscript!"; } &ParseCmdLine(@ARGV); # DBG print "filetype is $filetype\n"; if ($filetype eq "ASCII") { &wrap($line_length); } elsif ($filetype eq "code") { &codeformat; } elsif ($filetype eq "ps") { &createarray; } else { print "Sorry..no known file type.\n"; exit 0; } # Pipe the array to smbprint open(PRINTER, "|$print_prog") || die "Can't open $print_prog: $!\n"; foreach $line (@newlines) { print PRINTER $line; } # Send an extra linefeed in case a file has an incomplete last line. print PRINTER "\n"; close(PRINTER); print "Completed\n"; exit 0; # --------------------------------------------------- # # Everything below here is a subroutine # # --------------------------------------------------- # sub ParseCmdLine { # Parses the command line, finding out what file type the file is # Gets $arg and $file to be the arguments (if the exists) # and the filename if ($#_ < 0) { &usage; } # DBG # foreach $element (@_) { # print "*$element* \n"; # } $arg = shift(@_); if ($arg =~ /\-./) { $cmd = $arg; # DBG # print "\$cmd found.\n"; $file = shift(@_); } else { $file = $arg; } # Defining the file type unless ($cmd) { # We have no arguments if ($file =~ /\.ps$/) { $filetype = "ps"; } elsif ($file =~ /\.java$|\.c$|\.h$|\.pl$|\.sh$|\.csh$|\.m4$|\.inc$|\.html$|\.htm$/) { $filetype = "code"; } else { $filetype = "ASCII"; } # Process $file for what type is it and return $filetype } else { # We have what type it is in $arg if ($cmd =~ /^-p$/) { $filetype = "ps"; } elsif ($cmd =~ /^-c$/) { $filetype = "code"; } elsif ($cmd =~ /^-a$/) { $filetype = "ASCII" } } } sub usage { print " Usage: print [-a|c|p] <filename> -a prints <filename> as ASCII -c prints <filename> formatted as source code -p prints <filename> as Postscript If no switch is given, print attempts to guess the file type and print appropriately.\n "; exit(0); } sub wrap { # Create an array of file lines, where each line is < the # number of characters specified, and wrapped only on whitespace # Get the number of characters to limit the line to. $limit = pop(@_); # DBG #print "Entering subroutine wrap\n"; #print "The line length limit is $limit\n"; # Read in the file, parse and put into an array. open(FILE, "<$file") || die "Can't open $file: $!\n"; while(<FILE>) { $line = $_; # DBG #print "The line is:\n$line\n"; # Wrap the line if it is over the limit. while ( length($line) > $limit ) { # DBG #print "Wrapping..."; # Get the first $limit +1 characters. $part = substr($line,0,$limit +1); # DBG #print "The partial line is:\n$part\n"; # Check to see if the last character is a space. $last_char = substr($part,-1, 1); if ( " " eq $last_char ) { # If it is, print the rest. # DBG #print "The last character was a space\n"; substr($line,0,$limit + 1) = ""; substr($part,-1,1) = ""; push(@newlines,"$part\n"); } else { # If it is not, find the last space in the # sub-line and print up to there. # DBG #print "The last character was not a space\n"; # Remove the character past $limit substr($part,-1,1) = ""; # Reverse the line to make it easy to find # the last space. $revpart = reverse($part); $index = index($revpart," "); if ( $index > 0 ) { substr($line,0,$limit-$index) = ""; push(@newlines,substr($part,0,$limit-$index) . "\n"); } else { # There was no space in the line, so # print it up to $limit. substr($line,0,$limit) = ""; push(@newlines,substr($part,0,$limit) . "\n"); } } } push(@newlines,$line); } close(FILE); } sub codeformat { # Call subroutine wrap then filter through nenscript &wrap($line_length); # Pipe the results through nenscript to create a Postscript # file that adheres to some decent format for printing # source code (landscape, Courier font, line numbers). # Print this to a temporary file first. $tmpfile = "/tmp/nenscript$$"; open(FILE, "|$nenscript -2G -i$file -N -p$tmpfile -r") || die "Can't open nenscript: $!\n"; foreach $line (@newlines) { print FILE $line; } close(FILE); # Read the temporary file back into an array so it can be # passed to the Samba print script. @newlines = (""); open(FILE, "<$tmpfile") || die "Can't open $file: $!\n"; while(<FILE>) { push(@newlines,$_); } close(FILE); system("rm $tmpfile"); } sub createarray { # Create the array for postscript open(FILE, "<$file") || die "Can't open $file: $!\n"; while(<FILE>) { push(@newlines,$_); } close(FILE); } ______________________________________________________________________ ===ó=== nenscrpt Íú{êðʵܹñªAJE ÉÍ psconv Æ¢¤ú{êÉε½ R}hªüÁĢܷB¼Éà a2psAps2asciiA ps2txtAtoPS ÈÇlX Èà̪lbg[N©çüèÂ\Å·B ȨAóÒͱÌÍÌXNvgðeXgū髪 èܹñÌÅA´¶ É Á½XNvgð»ÌÜÜڹĨ«Üµ½Bü¢µÄú{êðÊ·±Æ ɬ÷µ½ûÍA²Aº³êÎK¢Å·B ==óI== 10. ì ±Ì HOWTO ¶Ìì Í 1996 NÈ~ David Wood É éàÌƵܷB ±ÌßÌé¾ðÜÞ·×Ä̶ªÏX³êÈ¢Àèɨ¢ÄA çäé`® Ö̶̡̱»A¨æÑ»ÌÄzzðµܷB 11. Ó« àµ[Åäө𢽾¯êÎAÌÅÌ[XÌÛÉA±ÌßŨ¼ Oð°Ä´Óµ½¢Æv¢Ü·B ===ó=== ú{êÖÌ|óɽÁÄÍA ª{êK³ñ ikko-@pacific.rim.or.jp Kº ³ñ juk@rccm.co.jp ¼{¯i³ñ shom@i.h.kyoto-u.ac.jp ¥Yíj³ñ minoura@biol.s.u-tokyo.ac.jp ÉëóÌwEâLvÈRg𢽾«Üµ½B ==óI==