在一般的局域网络中 (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 里面提到的,(等待更新中)