在一般的區域網路中 (LAN) 如果都是 Windows 電腦,那麼使用『網路上的芳鄰』這個功能,就可以讓不同的 Windows 電腦分享彼此的檔案囉!那麼萬一這個 LAN 裡面有個 Linux 主機時,我怎麼讓 Linux 也加入這個 Windows 電腦當中的『網路上的芳鄰』呢?!也就是說,讓 Windows 電腦可以透過『網路上的芳鄰』來存取 Linux 主機上面的檔案!呵呵!那就是 SAMBA 這個伺服器的主要目的了!SAMBA 是很有用的一個伺服器,他可以讓您的 Linux 剎那間成為一個檔案伺服器 ( File Server ),並提供整個 LAN 裡面的 Windows 很簡單的就可以對 Linux 主機進行檔案的存取動作。不僅如此, SAMBA 也可以讓 Linux 上面的印表機成為印表機伺服器 (Printer Server) ,鳥哥個人覺得, SAMBA 對於整個 LAN 的貢獻真的是很大!那麼就趕緊來玩一玩吧! ^_^ |
註:或許您會發現在 Windows 網路設定裡面常常看到
NetBEUI 這個咚咚,那是什麼呢?事實上,那個是 NetBIOS Extened User Interface
的簡寫,也是 IBM 在 NetBIOS 發展出來之後的改良版本。雖然這兩者的技術不太相同,不過,我們只要知道一些簡單的概念就可以了!所以,在這裡我們不針對
NetBEUI 來介紹。
[root@test
root]# rpm -qa | grep samba
samba-common-2.2.7a-8.9.0 redhat-config-samba-1.0.4-1 samba-2.2.7a-8.9.0 samba-client-2.2.7a-8.9.0 注意一下,上面顯示的例子是 Red Hat 9 的檔案,其中那個 redhat-config-samba 是 Red Hat 額外提供的設定功能,可以不用安裝他啦! |
[root@test
root]# wget http://ftp.nsysu.edu.tw/Unix/Samba/samba-2.2.8a.tar.gz
註:上面的網址只是一個範例,請自行到中山大學下載! [root@test root]# cd /usr/local/src [root@test src]# tar -zxvf /root/samba-2.2.8a.tar.gz 這個時候會有一個目錄跑出來: /usr/local/src/samba-2.2.8a [root@test src]# cd samba-2.2.8a #(在這個目錄中察看一下 README 喔!) [root@test samba-2.2.8a]# cd source [root@test source]# ./configure --prefix=/usr/local/samba \ > --with-automount --with-smbmount --with-pam \ > --with-mmap --with-quotas --with-libsmbclient 還是要重複的給他強調一下: 1. 請先以 ./configure --help 察看一下 configure 的一些相關的參數用法 2. 如果發生任何錯誤,請不要往下進行 make 的動作,因為還是不對的! 3. 萬一發生任何錯誤時,通常是由於一些函式庫找不到的緣故,請參考此目錄 下的 config.log 這個檔案的內容,裡面會記錄一些錯誤的歷程。 [root@test source]# make #(開始進行編譯!) 這個過程會花一些時間,因為他會將原始碼 (source code) 以您剛剛的設定 並以 gcc 這個 compiler 來進行編譯喔!所以會花一些時間的啦! [root@test source]# make install 將剛剛編譯完成的可執行 binary 檔案安裝到 /usr/local/samba 裡面去! 在這個例子當中,未來您在設定 SAMBA 時,必需要到 /usr/local/samba 當中喔! |
[root@test
root]# cp /etc/samba/smb.conf /etc/samba/smb.conf.bak.raw
[root@test root]# vi /etc/samba/smb.conf # 這個檔案本身就是很詳細的說明檔,限於篇幅,我們沒有將註解的部分寫下來, # 這裡的目的是想讓大家瞭解 smb.conf 的內容規劃咯! [global] workgroup = birdhouse server string = Linux Samba Server netbios name = birdlinux client code page = 950 printcap name = /etc/printcap load printers = yes printing = lprng log file = /var/log/samba/log.%m max log size = 500 # 那個 500 數字是 Kb 喔! security = user encrypt passwords = yes smb passwd file = /etc/samba/smbpasswd socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 # 上面的幾行當中,注意 [global] ,由 [global] 到底下的 [Webpage] 之間的設定 # 都是 [global] 的設定項目!而 [global] 的主要內容都是與主機的設定有關! # 比較重要的有底下幾個設定值: # workgroup 工作群組:同一個區域網路內,要具有相同的 workgroup # netbios name 主機名稱:這個主機名稱就是 netbios 的名字!請注意,如果你 # 沒有設定 netbios name 的話,預設的 NetBIOS name 會以 # HOSTNAME 來替代! # server string 這個是主機的說明,隨便寫寫沒關係! # security 這個重要,是用來規定 SAMBA 主機的安全登入項目,有底下幾種: # share :不進行安全登入,亦即沒有設定帳號與密碼 # user :設定主機的密碼檔作為登入的驗證檔案,這與底下的 # smb passwd file 有關喔! # domain :就是讓您的 SAMBA 作為 PDC 囉! # log file 登錄檔放置的目錄所在喔! # 其他相關的幾個設定項目請參考 man 5 smb.conf 我們底下也會列出幾個常用的 # 設定項目說∼ [Webpage] comment = My Home Page path = /var/www/html read only = no public = yes writable = yes create mode = 0664 directory mode = 0775 # 這個部分則是針對每個分享的目錄或者是裝置進行權限方面的規定了! # 幾個簡單的設定項目有: # comment :這個目錄的說明! # path :這個項目真正的 Linux 檔案系統裡面的目錄,請看底下的說明 # read only:是否唯讀? # public :是否讓所有可以登入的使用者看到這個項目? # writable :是否可以寫入?!這裡需要注意一下喔!那個 read only 與 writable # 不是兩個蠻相似的設定值嗎?如果 writable 在這裡設定為 no ,亦即 # 不可寫入,那跟 read only 不就互相抵觸了?!那個才是正確的設定? # 答案是:最後出現的那個設定值為主要的設定! # create mode 與 directory mode 都與權限有關的咯! |
[homes]
valid users = %S .... |
[root@test
root]# vi /etc/samba/lmhosts
127.0.0.1 localhost 192.168.0.100 birdhome 192.168.0.110 birdbrother1 192.168.0.120 birdbrother2 |
[root@test
root]# cd /etc/samba
[root@test samba]# cp smb.conf smb.conf.bak # 玩伺服器最重要的一個概念就是『有備無患』啊! # 所以,先將重要的資料給他備份下來! ^_^ [root@test samsa]# vi smb.conf # 底下的設定為最基礎的設定值!最重要的地方在於 security = share 的地方! [global] workgroup = birdhouse netbios name = birdhome server string = Bird's testing SAMBA Server client code page = 950 # 這個 client code page 的設定有趣的很!因為 SAMBA 支援多語系的編碼, # 我們習慣的編碼為 cp590 亦即是 code page 950 這個編碼,所以, # 想要讓您的 SAMBA 可以正確的在 Windows 上面顯示出中文,就得加入 # client code page = 950 喔! (如果沒有設定,那麼預設值是 850 呢!) # 如果 max log size = 0 的話,那表示登錄檔檔案大小沒有限制! log file = /var/log/samba/log.%m max log size = 0 security = share socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 interfaces = 192.168.0.100 dns proxy = no [tmp] comment = Temporary file space path = /tmp # 真正的開放出來的路徑在這裡! read only = no public = yes # 上面兩個設定在告訴大家,不但可以存取(read only = no) # 也可以讓大家查詢(public = yes)! [root@test samba]# grep -v '^#' smb.conf |grep -v '^;'|grep -v '^$' # 這個動作在確認一下上面的設定是否相同,因為有時候可能會忘記將某個 # 設定給註解掉呢! ^_^ |
[root@test
samba]# testparm
Load smb config files from /etc/samba/smb.conf Processing section "[tmp]" Loaded services file OK. Press enter to see a dump of your service definitions <==這裡按下 Enter # Global parameters [global] client code page = 950 code page directory = /usr/share/samba/codepages workgroup = birdhouse netbios name = birdhome netbios aliases = netbios scope = server string = Bird's test SAMBA Server interfaces = 192.168.0.100 bind interfaces only = No security = SHARE encrypt passwords = No ..... [tmp] comment = Temporary file space path = /tmp read only = No guest ok = Yes # 你應該會看到如上的畫面,這個 testparm 可以用來察看所有 SAMBA 的屬性, # 這些屬性很多都是預設值!如果沒有 smb.conf 裡面設定時,就是預設值, [root@test samba]# /etc/rc.d/init.d/smb restart Shutting down SMB services: [ OK ] Shutting down NMB services: [ OK ] Starting SMB services: [ OK ] Starting NMB services: [ OK ] # 請注意,上面 /etc/rc.d/init.d/smb 這個檔名是 Red Hat 的設定值, # 很多其他的套件不見得是使用這個檔名的!例如 OpenLinux 使用 samba 這個, # 所以請您務必使用 RPM 的相關指令來檢驗一下檔案名稱,或者使用 # <tab> 按鍵來讓系統自動補齊檔名,就可以知道是什麼檔名囉! # 另外,如前所說的, SAMBA 會啟用兩個 daemons ,所以這裡顯示兩個 OK! [root@test samba]# netstat -tlunp | grep ':13' tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 4307/smbd udp 0 0 192.168.0.100:137 0.0.0.0:* 4311/nmbd udp 0 0 0.0.0.0:137 0.0.0.0:* 4311/nmbd udp 0 0 192.168.0.100:138 0.0.0.0:* 4311/nmbd udp 0 0 0.0.0.0:138 0.0.0.0:* 4311/nmbd # 如果看到這樣,呵呵!就應該沒有問題啦! |
[root@test
root]# smbclient -L //birdhome
added interface ip=192.168.0.100 bcast=192.168.0.255 nmask=255.255.255.0 Password: <==這裡按 Enter Domain=[birdhouse] OS=[Unix] Server=[Samba 2.2.7a-security-rollup-fix]
Sharename Type
Comment
Server
Comment
Workgroup
Master
|
不過,需要特別留意的僅是 Linux 的檔案權限與
SAMBA 設定的權限關係!這個問題我們會在安全性與問題克服裡面進行詳細的說明喔!
(註:這個問題最常發生在使用者身上,因為『即使
SAMBA 主機設定您可以無限制的使用某個目錄下的檔案,但是是否能夠使用,仍然得視登入
SAMBA 的該使用者對於 Linux 的檔案系統是否有存取的權限』喔!)
[root@test
samsa]# vi smb.conf
[global] # 底下為一般設定項目(主機名稱、工作群組等) workgroup = birdhouse netbios name = birdhome server string = Bird's testing SAMBA Server client code page = 950 # 與安全有關的登入資訊項目,這個 security = user 一定要設定, # 而密碼需加密,此外,密碼檔案放置在 /etc/samba/smbpasswd 裡面, # 這個檔案需要自行設定起來喔!等一下會介紹! security = user encrypt passwords = yes smb passwd file = /etc/samba/smbpasswd # 一些與安全性有關的設定,其中, hosts allow 較為有趣一點! # 當您設定了 hosts allow 之後,未在 hosts allow 裡面規定的 IP # 將無法登入 Linux 的 SAMBA 主機喔!特別留意吶!如果您想要完全開放 IP, # 或者使用防火牆管理,那就不要設定 hosts allow 了! hosts allow = 192.168.0. 127. log file = /var/log/samba/%m.log max log size = 0 socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 interfaces = 192.168.0.100 dns proxy = no # 底下則設定每個使用者的家目錄! [homes] comment = Home Directories browseable = no writable = yes valid users = %S create mode = 0664 directory mode = 0775 # create mode 指的是新建立檔案的權限,而 directory mode 則是新建目錄的權限 # 至於 valid users 則是有權限進入者,這裡設定為 %S 喔!所以, # 每個使用者就可以進入自己的家目錄了! [public] comment = Public Stuff path = /home/public public = yes writable = yes [root@test samba]# grep -v '^#' smb.conf |grep -v '^;'|grep -v '^$' # 這個動作在確認一下上面的設定是否相同,因為有時候可能會忘記將某個 # 設定給註解掉呢! ^_^ [root@test samba]# mkdir -p /home/public # 上面既然有提到要開放 /home/public ,當然,這個目錄就必須要存在啊! |
0. 根據 smb.conf
的設定,建立一個密碼檔!
如果您是第一次建立 SAMBA 的使用者,才需要進行這個動作: 因為我們在 smb.conf 裡面設定密碼 smb passwd file = /etc/samba/smbpasswd [root@test root]# cd /etc/samba [root@test samba]# touch smbpasswd [root@test samba]# chown root:root smbpasswd; chmod 600 smbpasswd # 請注意, smbpasswd 這個檔案記錄了能夠使用 SAMBA 伺服器的使用者帳號 # 與密碼,所以當然只有 root 才能夠進行讀寫了!特別留意其權限啊! 1. 開始建立密碼: [root@test samba]# smbpasswd -a bird New SMB password: <==在這裡輸入 bird 的密碼 Retype new SMB password: <==再輸入一遍 bird 的密碼 Added user test. # 請特別留意, SAMBA 的密碼是放在 /etc/samba/smbpasswd 這個檔案內,當然, # 您可以更改這個檔名 (在 smb.conf 裡面改),但是, Linux 系統的帳號密碼 # 是放在 /etc/shadow ,這也就是說, SAMBA 伺服器的密碼與 Linux 底下的 # 帳號密碼並不一定要相同的!至於 smbpasswd 的使用大致上有幾個參數: 2. smbpasswd 之語法解釋 語法:smbpasswd [-adem] username 參數: : 如果都沒有加上任何一個參數,亦即『smbpasswd bird』時,這表示: 修改 SAMBA 密碼檔(/etc/samba/smbpasswd)裡面的 bird 這個帳號的密碼! 也就是說,密碼檔裡面已經存在一個 bird 的帳號了! -a : 在 smbpasswd 密碼檔裡面新增一個使用者 -d : 讓在 smbpasswd 密碼檔裡面的某個帳號的使用者暫時無法使用 SAMBA 當多了 -d 的參數時,在 smbpasswd 裡面某個欄位會多出一個 D 的參數, 代表該帳號目前無法使用喔! -e : 與 -d 參數相反,讓某個帳號恢復使用! -m : 該 username 為機器代碼(Machine Account),這個與 domain model 有關! 範例: [root@test samba]# more smbpasswd bird:1001:01FC5A6BE7BC6929AAD3B435B51404EE:0CB6948805F797BF2A82807973B89537:[UX ]:LCT-3F1ECFE6: [root@vbird samba]# smbpasswd -d bird Disabled user bird. [root@vbird samba]# more smbpasswd bird:1001:01FC5A6BE7BC6929AAD3B435B51404EE:0CB6948805F797BF2A82807973B89537:[DUX ]:LCT-3F1ED105: # 特別留意,當使用 -d 之後,該帳號會在密碼檔案裡面的中括號之特殊欄位中, # 多出一個 D 的參數,讓該帳號暫時無法使用喔! |
[root@test
samba]# testparm
[root@test samba]# /etc/rc.d/init.d/smb restart [root@test samba]# smbclient -L //127.0.0.1 added interface ip=192.168.0.100 bcast=192.168.0.255 nmask=255.255.255.0 Password: <==直接按 Enter Anonymousloginsuccessful Domain=[BIRDHOUSE] OS=[Unix] Server=[Samba 2.2.7a-security-rollup-fix] Sharename Type Comment --------- ---- ------- public Disk Pulic Stuff IPC$ IPC IPC Service (Bird's testing SAMBA Server) ADMIN$ Disk IPC Service (Bird's testing SAMBA Server) ...(略)... # 注意看上面,因為我們沒有在 smbclient 指定登入者,所以登入 # 後的身份會被指名為匿名者 anonymous 喔!由於我們有開放 public 給大家 # 瀏覽,所以還是看的到咚咚的!(註:我有省略一些輸出!) [root@test samba]# smbclient -L //127.0.0.1 -U bird added interface ip=192.168.0.100 bcast=192.168.0.255 nmask=255.255.255.0 Password: <==這裡請務必輸入正確的 bird 的 SAMBA 密碼! Domain=[BIRDHOUSE] OS=[Unix] Server=[Samba 2.2.7a-security-rollup-fix] Sharename Type Comment --------- ---- ------- public Disk Pulic Stuff IPC$ IPC IPC Service (Bird's testing SAMBA Server) ADMIN$ Disk IPC Service (Bird's testing SAMBA Server) bird Disk Home Directories ...(略)... # 仔細分辨一下上下兩個不同點。在多加了 -U username (-U bird 那個地方) # 由於登入者的身份變成 bird 了,因此我們就可以看到 bird 的家目錄了! # 也就是粗體字那一行啊!這樣可以清楚的知道了?! |
[root@test
samsa]# vi smb.conf
[global] #1.底下為一般設定項目(主機名稱、工作群組等) workgroup = birdhouse netbios name = birdhome server string = Bird's testing SAMBA Server client code page = 950 #2.密碼與登錄檔相關的資訊! security = user encrypt passwords = yes smb passwd file = /etc/samba/smbpasswd log file = /var/log/samba/%m.log max log size = 0 socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 #3.其他與 domain 有關的參數 os level = 64 preferred master = yes domain master = yes local master = yes domain logons = yes logon script = startup.bat ; logon script = %U.bat logon path = \\%L\Profiles\%U wins support = yes dns proxy = no time server = yes # 在上面的設定當中,都是與 domain model 有關的參數 # os level 表示與其他主機相比,這部 SAMBA 機器的管理等級,設高一點 # domain logons 表示這部 SAMBA 主機可以提供 Widnows 登入的服務 (PDC) # logon script 表示當使用者登入之後,要到哪裡去執行他的 profile 設定檔, # 我這裡將每個使用者登入時,都要去執行 startup.bat 這個檔案, # 這個檔案放置的地方其實就是底下 [netlogon] 的 path # 設定的目錄,請特別留意 domain 與 netlogon 的關係! # 底下則設定每個使用者的家目錄! [homes] comment = Home Directories browseable = no writable = yes valid users = %S create mode = 0664 directory mode = 0775 # 有特定帳號者可以使用底下這個設定 [netlogon] comment = Network Logon Service path = /home/samba/netlogon writable = no write list = bird root follow symlinks = yes guest ok = yes # 沒有特定帳號者,例如 Windows 98 的使用者,會使用底下的路徑! [Profiles] path = /home/samba/profiles read only = no create mask = 0600 directory mask = 0700 browseable = no [tmp] comment = Temporary file space path = /tmp read only = no public = yes [root@test samba]# grep -v '^#' smb.conf |grep -v '^;'|grep -v '^$' # 這個動作在確認一下上面的設定是否相同,因為有時候可能會忘記將某個 # 設定給註解掉呢! ^_^ [root@test samba]# testparm | more [root@test samba]# /etc/rc.d/init.d/smb restart |
[root@test
root]# mkdir /home/samba
[root@test root]# mkdir /home/samba/netlogon [root@test root]# mkdir /home/samba/profiles [root@test root]# cd /home/samba/netlogon [root@test netlogon]# vi startup.tmp net time \\birdhome /set /yes net use U: \\birdhome\homes net use T: \\birdhome\tmp # net 是 Windows NT 網域的相關指令用法: # net time :表示目前 (client) 使用的時間要與 \\server (在這裡是 birdhome) # 同步的意思!有時候因為 Server 與 Client 不同步,某些程式 # 會有問題! # net use [device:] [directory] # device: 那個 device 是 Windows 的磁碟槽啦! # directory 是 SAMBA 主機相對的目錄! # 在我這個案例當中,每個使用者登入之後,他會在檔案總管當中, # 發現有個 U 槽,而且內容是 \\birdhome\homes 相同; # 發現有個 T 槽,內容則是 /tmp 喔! # 特別留意, startup.bat 必須要是 DOS 的格式,所以在 Linux 上編輯時, # 還要加上一些特殊的轉換動作! [root@test netlogon]# cat -A startup.tmp | tr '$' '\r' > startup.bat [root@test netlogon]# cat -A startup.bat net time \\birdhome /set /yes^M$ net use U: \\birdhome\homes^M$ net use T: \\birdhome\tmp^M$ # 看到了嗎?!每一行的最後面要加上有 ^M 這個 Windows 的傑作才可以! # 除此之外,我們還要將原先在 bird2000 上的 bird 這個使用的個人設定值 # 給他複製過來 SAMBA 主機上面喔!在 Windows 2000 預設的情況下, bird # 這個人的設定值會是在: C:\Documents and Settings\bird # 請將這個 bird 目錄完整的給他複製到 /home/profiles/bird 當中,也就是說, # 在 SAMBA 主機內的 /home/profiles/bird 裡面就有原先 Windows 2000 內的 開始 Application Data Favorites My Documents .... # 等等的檔案資料喔!然後這樣做: [root@test netlogon]# cd /home/samba/profiles [root@test profiles]# chown bird -R bird/ # 這個時候您應該已經將原先 Windows 的 bird 這個人的設定值給他複製到 # /home/samba/profiles/bird 當中了才對! |
[root@test
root]# groupadd smbmachine
# VBird 有時候會有點龜毛,既然我的 /etc/passwd 裡面會有 SAMBA 用的機器碼, # 那麼我就將這幾個機器代碼歸類在特定的 group 之內,那就自訂一個名為 # smbmachine 的 Machine group 好了! ^_^ [root@test root]# useradd -g smbmachine -d /dev/null -s /bin/false bird2000$ [root@test root]# useradd -g smbmachine -d /dev/null -s /bin/false bird98$ [root@test root]# smbpasswd -a -m bird2000$ [root@test root]# smbpasswd -a -m bird98$ # 注意啊!多了一個 -m 的參數,這個參數代表後面接的為 Machine account , # 而不是一般設定的 User account 喔! [root@test root]# usradd bird [root@test root]# smbpasswd -a bird # 假設 bird 這個使用者還沒有被建立,那麼您應該這樣建立他! [root@test root]# smbpasswd -a root # 記得要將 root 的身份設進去 smbpasswd 裡面喔! # 不過,只要在 Windows 2000 的登入設定完成之後,就可以將 root 取消掉了! |
[root@test root]# echo "Hello world" > /dev/lp0 |
[root@test
root]# cd /usr/local/src
[root@test src]# tar -zxvf /root/LPRng-3.8.21.tgz .....(會產生一個名為 LPTng-3.8.21 的檔案)... [root@test src]# cd LPRng-3.8.21 [root@test LPRng-3.8.21]# ./configure --prefix=/usr/local/LPRng \ > --disable-keros_checks --disable-ssl --enable-nls ....( 花一段時間來進行系統確認! ).... 建議可以使用 ./configure --help 來察看每一個設定項目的說明! [root@test LPRng-3.8.21]# make clean all ....再花一段時間來等待∼ [root@test LPRng-3.8.21]# make install # 開始給他安裝下去! 這個時候, LPRng 套件的所有資料都放置在/usr/local/LPRng 裡面了! [root@test LPRng-3.8.21]# vi /etc/man.config # 在這個檔案當中加入一行 MANPATH /usr/local/LPRng/man # VBird 2003/07/20 # 這樣未來在進行資料的 man 時,就可以直接查到 LPRng 的相關參數了! # 例如 man checkpc、 man lprm ... [roo@test LPRng-3.8.21]#vi
/etc/profile
|
0. 先確認 lp
這個系統帳號是否存在?
[root@test root]# id lp uid=4(lp) gid=7(lp) groups=7(lp) 萬一出現了『 id: lp: No such user 』時, 請務必進行底下的動作,以新增印表機管理員帳號: groupadd lp useradd -s /sbin/nologin -d /var/spool/lpd -g lp -r lp mkdir -p /var/spool/lpd/lp0 chown lp:lp -R /var/spool/lpd 如果您的系統當中早就已經有了 lp 這個帳號,那麼上面的動作就不需要進行! 1. 先設定好 printcap 這個主要設定檔! [root@test root]# cp /etc/printcap /etc/printcap.bak.raw#只是備份 [root@test root]# vi /etc/printcap # 如果是使用 Tarball 安裝的,這個檔案在 /usr/local/LPRng/etc/printcap lp0|HP-LaserJet-1100:\ :sh:\ :ml=0:\ :mx=0:\ :sd=/var/spool/lpd/lp0:\ :lp=/dev/lp0:\ #上面說明的是: # lp0 為印表機在 Linux 的名稱,HP-LaserJet-1100 為印表機 lp0 的別名 # 請注意, HP-LasetJet-1100 可以隨意設定,但是 lp0 最好保留, # 因為未來比較容易處理一些突發狀況! # sh 為是否印出標頭,這裡我們沒有設定標頭喔! # ml, mx 為印表機能夠接受的訊息,這裡我們不加限制! # sd 為列印工作的佇列(列印檔案暫存的目錄) # lp 就是印表機的實際裝置代號了! # 事實上,重點僅在於 lp 與 sd 而已∼ ^_^ [root@test root]#
checkpc -f
|
[root@test
root]# /etc/rc.d/init.d/lpd start
[root@test root]# netstat -tln tcp 0 0 0.0.0.0:515 0.0.0.0:* LISTEN [root@test root]# echo "/etc/rc.d/init.d/lpd start" >> /etc/rc.d/rc.local |
[root@test
root]# vi /etc/samba/smb.conf
# 不管在哪裡,找到 smb.conf 然後編輯他就是了!然後加入底下這一段: [global] printcap name = /etc/printcap load printers = yes printing = lprng # 上面這三行預設應該會存在 smb.conf 當中,只要找到這三行, # 並將行首的 ; 拿掉即可!注意,這三行是新增的! # 特別給他留意一下,印表機的分享是經由 [printers] 相關的設定來提供的! [printers] comment = HP LaserJet 1100 printable = yes browsable = no public = no validusers = bird puma addida amani pada printing = lprng path = /var/spool/lpd/samba # 注意一下,上面重要的地方在於: # printable 需要啟動為 yes # validusers 有需要的話就請自行設定,我這裡僅允許五位使用者登入而已! # printing 設定成使用 lprng 這個管理程式 # path 這個就是印表機佇列,我將他設定在 /var/spool/lpd/samba 中 [root@test root]# mkdir -p /var/spool/lpd/samba [root@test root]# chown root:root /var/spool/lpd/samba [root@test root]# chmod 777 /var/spool/lpd/samba [root@test root]# testparm [root@test root]# /etc/rc.d/init.d/smb restart |
[root@test
root]# lpq
# 可以察看印表機的狀態 Printer: lp0@test 'HP-LaserJet-1100' Queue: no printable jobs in queue Status: job 'cfA209test.vbird.idv.tw' removed at 13:29:24.163 [root@test root]# lprm all # 將所有印表機的等待列印的資料通通刪除! |
[root@test
root]# rpm -qa | grep cups
cups-libs-1.1.17-13.3 cups-1.1.17-13.3 qtcups-2.0-15 |
[root@test
root]# vi /etc/cups/cupsd.conf
# 其實這個檔案的設定很類似 httpd.conf 呢!我們只要針對兩個參數來設定即可, # 分別是 / 與 /admin 喔!設定只有 192.168.0.0/24 可以登入! <Location /admin> AuthType Basic AuthClass User Order Deny,Allow Deny From All Allow From 192.168.0.0/24 # 注意一下,上面的 AuthClass User 這個設定值,可以讓您以 Linux 上面的 # User 身份來登入 CUPS 以設定 Printer 喔! # 這個 /admin 的設定內容主要與『印表機管理員』有關的設定 </Location> <Location /> Order Deny,Allow Deny From All Allow From 192.168.0.0/24 # 這個 / 設定值則是決定誰可以登入使用 Printer 呢! </Location> [root@test root]# /etc/rc.d/init.d/cups start [root@test root]# netstat -utln | grep 631 tcp 0 0 0.0.0.0:631 0.0.0.0:* LISTEN udp 0 0 0.0.0.0:631 0.0.0.0:* # 請注意到,啟動了 CUPS 之後,會產生這個 631 的埠口吶! |
[root@test
root]# lpadmin -p HP-1100-LaserJet -m laserjet.ppd
-E \
> -v parallel:/dev/lp0 # 參數說明: # -p 後面接印表機名稱,名稱可以隨便取! # -m 後面接印表機的介面模組檔案(module interface file) # -E 則是說,這個印表機可以用來進行列印之意! # -v 後面接的則是『序列埠 parallel』或者是『網路 socket 』! # 以 lpadmin 設定好印表機後,整個印表機的狀態列其實被放置在 # /etc/cups/printers.conf 裡面喔! |
[root@test
root]# vi /etc/samba/smb.conf
# 不管在哪裡,找到 smb.conf 然後編輯他就是了!然後加入底下這一段: [global] printcap name = cups load printers = yes printing = cups [printers] comment = HP LaserJet 1100 printable = yes browsable = no public = no validusers = bird puma addida amani pada printing = cups path = /var/spool/lpd/samba [root@test root]# mkdir -p /var/spool/lpd/samba [root@test root]# chown root:root /var/spool/lpd/samba [root@test root]# chmod 777 /var/spool/lpd/samba [root@test root]# testparm [root@test root]# /etc/rc.d/init.d/smb restart |
smbclient 語法介紹:
1. 察看 NetBIOS 主機分享的目錄狀態: [root@test root]# smbclient -L \\netbiosname [-U username] # 這個 -L 的參數主要的目的在於察看 netbiosname 那部主機有提供什麼目錄, # 比較需要留意的是,如果沒有加上 -U username 時,那麼預設是以匿名者 # anonymous 來登入該 NetBIOSname 的,所以能看到的目錄或許就會被限制喔! # 另外,NetBIOS 主機名稱在 Linux 底下,需要在前面加上『 \\ 』喔! 範例: [root@test root]# smbclient -L \\bird2000 -U bird added interface ip=192.168.1.2 bcast=192.168.1.255 nmask=255.255.255.0 Password: Domain=[BIRDHOUSE] OS=[Windows 5.0] Server=[Windows 2000 LAN Manager]
Sharename Type
Comment
Server
Comment
Workgroup
Master
Sharename Type
Comment
Server
Comment
Workgroup
Master
# 先以 -L 的參數察看一下
127.0.0.1 這個 IP 的分享情況,發現 bird 可以登入
|
smbmount 語法介紹:
[root@test root]# smbmount \\netbiosname\directory [-o options] 參數說明: netbiosname :可以是 IP 也可以是網芳上面的NetBIOS主機名稱 -o 後面接的參數 options 常用的有底下這些參數: username=你的登入帳號:例如 username=bird password=你的登入密碼:需要與上面 username 相對應啊! codepage=語言格式:這個可以設定支援的語系,例如繁體中文:codepage=cp950 範例: # 假設我要以 bird 身份,密碼為 mypasswd 掛載遠端主機 \\birdhome\tmp # 那個目錄,並且掛載到我 Linux 的 /home/birdhome 這個目錄,如何做? [root@test root]# smbclient -L \\birdhome -U bird # 先以 smbclient 找出可以掛載的目錄!在這個案例中,我有 \\birdhome\tmp # 可以掛載! [root@test root]# smbmount '\\birdhome\tmp' /home/birdhome \ > -o username='bird',password='mypasswd',codepage='cp950' # 再次給他強調一下,因為 \ 在 bash 當中是特殊字元,所以掛載時請特別 # 使用 ' 來將 \ 設定成為一般字元!還有,在 -o 後面的各項參數中, # 中間都是以逗號來隔開的!並且設定值最好也使用單引號 ' 來設定! [root@test root]# df //birdhome/tmp 3020160 186880 2833280 7% /home/birdhome # 如上所示,你應該就可以看到目錄對應 mount point 啦! |
[root@test
root]# mount -t smbfs '\\birdhome\tmp' /home/birdhome
\
> -o username=bird,password='mypasswd',iocharset='cp950' # 上面那個 iocharset 與 codepage 都是用來設定語系的! |
/dev/hda2 /home ext3 defaults,usrquota,grpquota 1 1 修改完畢之後,請千萬記得使用 mount -a 查詢看看有沒有設定錯誤 (上面總共只有六個欄位喔!),這個動作如果發生錯誤,那麼請記得再次的進行 /etc/fstab 的修改!請特別留意啊!因為寫錯的話,很容易造成無法正常開機的窘境! sync; sync; sync; reboot quotacheck -avug 特別注意,如果上述的動作發生『找不到設定檔』的意思的訊息時,您可以這樣做: touch /home/aquota.user; touch /home/aquota.group 然後在進行一次 quotacheck 即可! quotaon -av edquota -u bird Disk quotas for user test (uid 501): Filesystem blocks soft hard inodes soft hard /dev/hdb2 32 40000 50000 8 0 0 因為我們只針對硬碟空間,不針對 inode 做限制,所以只要前面的數字修訂即可!請注意,數字的單位為 kbytes ! |
在 LPI 網站 http://www.lpi.org 裡面提到的,(等待更新中)