欢迎光临、这里是ZT测试空间,希望大家互相共享资源,给我建议和留言!MSN:zhangtieing@hotmail.com

发布新日志

  • 30岁前不要在乎的事(经典)

    2008-04-29 18:25:21Digest 1


    30岁前不要在乎的事

    1.放弃
    把握的反面就是放弃,选择了一个机会,就等于放弃了其它所有的可能。当新的机会摆在面前的时候,敢于放弃已经获得的一切,这不是功 亏一篑,这不是半途而废,这是为了谋求更大的发展空间;或者什么都不为,只因为喜欢这样做,因为,年轻就是最大的机会。人,只有在三十岁之前才会有这个胆 量,有这个资本,有这个资格。

    2.
    失恋
    不是不在乎,是在乎不起。三十岁前最怕失去的不是已经拥有的东西,而是梦想。爱情如果只是一个过程,那么正是这个年龄应当经历的, 如果要承担结果,三十岁以后,可能会更有能力,更有资格。其实,三十岁之前我们要做的事情很多,稍纵即逝,不能过久地沉溺在已经干涸的爱河的河床中,

    3.
    漂泊

    漂泊不是一种不幸,而是一种资格。趁着没有家室拖累,趁着身体健康,此时不飘何时飘?当然,漂泊的不一定是身体,也许只是幻想和梦境。新世纪的时尚领袖是飘一代,渴望漂泊的人惟一不飘的是那颗心。

    4.
    失业
    三十岁以前就尝到失业的滋味当然是一件不幸的事,但不一定是坏事。三十岁之前就过早地固定在一个职业上终此一生也许才是最大的不幸。失业也许让你想起埋藏很久而尘封的梦想,也许会唤醒连你自己都从未知道的潜能。也许你本来就没什么梦想,这时候也会朝着你去做梦。

    5.
    评价
    我们最不应该做出的牺牲就是因为别人的评价而改变自我,因为那些指手画脚的人自己也不知道他 们遵从的规则是什么。千万不要只遵从规矩做事,规矩还在创造之中,要根据自己的判断做每一件事,虽然这样会麻烦一点。

    6.
    浅薄
    如果每看一次《泰坦尼克号》就流一次眼泪,每看一次《大话西游》就笑得直不起腰,就会有人笑 你浅薄。其实那只能说明你的神经依旧非常敏锐,对哪怕非常微弱的刺激都会迅速做出适应的反应;等你的感觉迟钝了,人们就会说你深沉了。

    7.
    疯狂
    这是年轻人最好的心理调适,只能说明你精力旺盛,身心健康。说你疯狂是某些生活压抑、心力交瘁的中老年人恶意的评价,他们就像一部年久修的机器,最需要调试,但只能微调,一次大修就会让他们完全报废。

    8.
    失意
    包括感情上的,事业上的,也许仅仅是今天花了冤枉钱没买到可心的东西,朋友家高朋满座自己却插不上一句话。过分在乎失意的感受不是拿命运的捉弄来捉弄自己,就是拿别人的错误来惩罚自己。

    9.
    代价
    不是不计代价,而是要明白做任何事都要付出代价。对我们这个年龄的人来说,这绝不是一句废话。否则,要到三十岁的时候才会明白自己曾经付出了多少代价,却不明白为什么付出,更不明白自己得到了多少,得到什么

    10.
    稳定
    三十岁之前就在乎稳定的生活,那只有两种可能,要么就是中了彩票,要么就是未老先衰。

    11.
    房子
    除非你买房子是为了升值,要么就是你结婚了。我有个同学,家在外地,大学毕业之后,单位没有宿舍,家里就给他买了一套房子。他曾经有过去北京工作的机会,但是他觉得刚买了房子就离开这座城市说不过去,就放弃了。到现在他工作稳定,但一事无成。
    唯一的成就就是结婚了,并且有了孩子,因为他觉得该让这房子永远空着,所以房子变成了家。房子是都市生活的寓言,这个寓言不应该过早的和我们相关

    12.
    谣言
    这是一种传染病,沉默是最好的疫苗。除非你能找出传染源,否则解释恰恰会成为病毒传播最理想的条件

    13.
    薪水
    只要是给人打工,薪水再高也高不到哪儿去。所以在三十岁之前,机会远比金钱重要,事业远比金钱重要,将来远比金钱重要。对大多数人来说,三十岁之前干事业的首要目标绝不是挣钱,而是挣未来重要.

    14.
    存款
    这倒不一定是因为我们钱少,年轻人现在谁都知道钱是有生命的。机会这么多,条件这么好,可以拿钱去按揭,做今天的事,花明天的钱;也可以拿钱去投资,拿钱去充电。钱只有在它流通的过程中才是钱,否则只是一沓世界上质量最好的废纸。

    15.
    幼稚
    不要怕人说我们幼稚,这正说明你还年轻,还充满活力。「成熟」是个吓人的词儿,也是个害人的 词儿。成熟和幼稚是对一个人最大而无当、最不负责任、最没用的概括。那些庸人,绝不会有人说他们幼稚。不信,到哪天你被生活压得老气横秋,暮气沉沉的时候,人们一定会说你成熟了,你就会知道「成熟」是个什么东西。

    16.
    缺陷
    也许你个子矮,也许你长得不好看,也许你的嗓音像唐老鸭……那么你的优势就是你不会被自己表面的浅薄的亮点所耽搁,少花一些时间,少走一些弯,直接发现你内在的优势,直接挖掘自己深层的潜能。

    17.
    压力
    中年人能够承受多大压力检验的是他的韧性;年轻人能承受多大压力,焕发的是他的潜能。

    18.
    孤独
    这是为自由付出的代价

  • Vmware5.0 下安装NetWare6.5全攻略(转)

    2008-01-04 18:11:52

    该系统应用较少,没有系统,出于系统爱好,收藏备查,转自:http://bbdd.bokee.com/


    1、  至于为什么要在vmware里面安装netware,偶也不知道,这个完全是个人自由,希望想钻牛角尖的人马上离开这个帖子。在虚拟机里装服务器都是为了测试和学习,要是想真正应用的话,还是掏荷包买个服务器吧……

    2、  至于vmwarenetware如何获得,呵呵,秘密~~~

    3、  开始安装

    4、  首先,在vmware新建一个虚拟机,注意,要选择netware那个大类,当然,您要是喜欢用DOS的也成,反正底层应该差不多撒(不懂瞎掰的,因为简单看了一下netwaredrdos,感觉结构和文件功能都和ibmdos很像,况且以前的netware也是靠dos起来的……),然后选择小类,就netware6吧!

    5、  接下来都挺简单的,就不细讲了,主要是硬盘就默认用scsi的吧(已经是3.X的年代了,不用担心要先装dos,而dos不认识scsi设备??)内存512M(不要小气~小了待会它不干的!偶的机子1G内存,吼吼~)

    6、  OK,把光盘扔进去,引导……然后偶看着你做,你肯定出错,无暇米捏?vmware报警啦!说该guest系统访问了XXX的内存(典型的多管闲事,虽然是为了我们的安全考虑^_^),我们先看看vmware公司自己怎么说的:

    7、 

    PAE-Enabled Guest Operating Systems  

    Depending upon the version of the VMware product you are running, PAE-enabled guest operating systems may not be supported.

    If you are running VMware ESX Server, VMware GSX Server 2.0.1 or earlier or VMware Workstation 3.x or earlier, PAE-enabled guest operating systems are not supported, with one exception: NetWare 6 will work as a guest operating system when created with VMware GSX Server 2.0.1.

    If you are running GSX Server 2.5 and are trying to start a Linux or NetWare 6 guest operating system, check the virtual machine's configuration file (.vmx on Windows hosts, .cfg on Linux hosts) and look for the following line:

    paevm=false

    If the line appears, change it to

    paevm=true

    If you are running GSX Server 2.5 and are trying to start any other PAE-enabled guest operating system, open the virtual machine's configuration file and add the following line anywhere within the file:

    paevm=true

    Save the configuration file and try starting the virtual machine again.

    If your problem persists, file a support request.

    看明白了吧?就是要在相应文件(.vmx on Windows hosts, .cfg on Linux hosts)里面加一句:paevm=true

    8、  再次启动安装,就8会报错了

    9、  I,装个新的^_^

    10、              一路auto进去,知道看到熟悉的画面,是不是和以前的netware安装很像?

    11、              继续配置,其实都是虚拟机,默认的就OK

    12、              接下来它就开始装基本系统部分了(不知道这样定义准确不,好像苹果机安装的时候也是这样叫的^_^

    13、              复制完成后选网卡,要选PCnet-FX那个哦?因为其他的偶没试过!哈哈~

    14、              继续复制,完成sys卷的部分(好像没有网卡就不能装这个部分?那用来干什么?)

    15、              复制完自动进入……图形界面(解放了~)

    16、              选择要安装的服务,这次all算了,反正测试,不装白不装~!

    17、              放入第二张盘,等待……(什么时候光纤硬盘也几百块就好了,sigh

    18、              敲一些配置信息,这个不用多说了……配置中,感觉虚拟机跑什么都慢。好多的口令要设置啊……罗嗦。

    19、              配置完了就copy files……郁闷捏,那么慢吞吞。

    20、              这次比前面时间都长,完成后会有提示框,要求弹出移动媒体,然后重启。

    21、              现在已经装完了,等着重启完就可以进入X了(不懂netware,应该称呼那个桌面环境可以为X吧)

    22、              别急,进入之后要装vmwaretools哦,不然切换鼠标不累啊?

    23、              点击vm-安装tools

    24、              然后用您所掌握的任何方法运行光驱里面的相应文件,最快的就是在文件浏览器里面找到vmwtools进去,找到setup.ncf,右键,执行,over。看看你的鼠标移动出来?

    25、              接下来……还能干吗?做试验呗,自己接进ipx协议的tree(其实早就支持ip了),尽情感受netware的魅力吧(感觉象在做广告)。

  • Linux内核编译过程 (转载)

    2007-12-26 15:07:51

    转载:http://linux.chinaunix.net/bbs/thread-208791-1-1.html
    菜鸟编译Linux内核               
         双眼皮的猪         
      菜鸟俺,最近研究了一下Linux内核的编译,有些许心得,望同大家分享一下,故有此文…我们这里要谈的不涉及到源码,只是一些内核编译的步骤及相关知识…因为本人是菜鸟。所以,也就希望和菜鸟们分享一下…
    首先,您要确定您有一台装有Linux的系统,编译内核可以在本机上直接对本机内核进行编译,也可以从网上下载内核在其基础上进行编译.我们这里详细讲一下升级内核的方法,
    您可以从www.kernel.org下载到最新的Kernel版本,我们这里以RedHat9为例(其他版本其实也都一样,只是在make menuconfig中有点不同),详细讲一下内核编译的步骤 :
    首先,确认您是以root 用户登陆.把内核源码cp到/usr/src目录底下(请确认您是以root的身份在进行操作,否则会返回Permission Denied的提示):
    mkdir /usr/src/linux-2.4.22
    cp 2.4.22.tar.bz2 /usr/src/linux-2.4.22 (我用的是2.4.22的kernel)
    解压缩之,熟悉linux系统的朋友应该会知道:
    bunzip2 ***.tar.bz2 | tar xvf
    进入到/usr/src/linux-2.4.22目录,,请确定您是在此目录下操作,而且保证您所敲入的命令是正确的,不然会返回No rule to make target ***,stop类似的错误提示,这可是菜鸟们所要注意的哦。不然开头搞不好。后面就不用谈了哦…
    1#cd /usr/src/linux-2.4.22
    2#make mrproper

    其实这个步骤是可以不用要的,这个目的是清除原先此目录下残留的.config和.o(object文件),如果我们是刚下载的源码,那么这一步您就可以 省了:),但是如果您已经编译过多次内核的话,这一步可是一定要的哦,不然以后出现很多小问题,可别怨我没告诉你….config文件我们会在后面提到…
    3#make menuconfig或make config或make xconfig
    这就开始编译内核了,打起十二分精神,编译不好,系统是无法启动的啦.小心应付,其实这个步骤还有其他两种方式,make config以及make xconfig,make config是一个一个的回答问题,命令行方式,您如果回答错了一个,您就不能改正了哦(所以不推荐这种编译方式),make menuconfig和make xconfig提供了更友好的操作方式,不过make menuconfig需要ncurse包,而make xconfig也需要某个东东,好象是tk,忘记了,一般都安装了,俺就不提了,如果没有您可没法运行的哦.什么你不知道什么是ncurse和tk是什 么?那我就不说了,去www.google.com去搜索一下吧...
    这里边很多东东都要注意选啊,这个要求您对硬件,软件,网络有一定的认识,实在不知道就按默认的来吧.免得以后启动不了骂天骂地都没用哦,我可是好多次启动不了,最后才摸出窍门的…
    这个不是这个帖子的主题(其实我很想写的,但是没人合作,一个人写又太累,再加上我最近也忙考试,所以…)所以我们就略过哦…
    在make menuconfig中,有的让您选择
  • , 有的让您选择[M],有的让你选择[],*表示选中直接加载进kernel,而M则表示会在后面的make modules中编译成modules,让您随时可以通过insmod和modprobe调入内核…个人认为Linux的这个功能确实非常非常的棒…而这 可是其他操作系统所没有的哦. ..而make *config的目的就是生成.config文件.至于想知道.config文件是干啥子的,看一下就知道了…J
    这个步骤完成之后,系统会提醒您,next step you should run “make dep”
    4#make dep  (一到两分钟)
    在确定要编译哪些东东之后(make *config),这个要确定依赖性,这个东东,手工也可以完成的,只是….怕您要把什么东东都放下,然后花上十天半个月的来搞,还把您忙的焦头烂额,还 会出错,不过我们用这条指令就可以完成了,也就不用麻烦您那么忙着搞了,呵呵,这个确定依赖性以后,然后就要清除一些东东了…
    5#make clean  (少于一分钟)
    清除一些不必要的文件,那些乱七八糟的东东是可能会导致您在编译过程中出现错误的哦,一定要做哦…
    6#make bzImage(15分钟左右)-
    哦,这个可是最最最重要的啦.这个就是生成您的新核心了,不要告诉我您不知道核心是什么啊,也就是kernel啦,所有的系统硬件软件交互都靠它了哦..

    其实可以是make zImage的,但是你要确保您所编译的这个新内核在640K之下,您就可以使用make zImage,如果比640K大,那就要用make bzImage,您要说没编译出来咋知道多大呢?我的看法是建议用bzImage,因为我编译出来的内核一般都是800~900K左右. …我是菜鸟,本帖子也是为我一样的菜鸟所写,所以. ..咱们就默认make bzImage…
    还要注意哦,这段时间你是没法做事的,你会看见屏幕上一行一行的字往下跑,不用担心哦,你可以选择把这些标准输出上的东东都重定向到/dev/null去 哦,这样您就看不到这些东东了,当然,你也可以把它放在背景执行啊,在运行要开始的时候在后面加上一个&符号,这个表示是后台运行…如果您怕这些 会对您编译内核有什么影响(其实没什么影响哦),那您干脆就这样,按Alt+F2,直接打开另一个虚拟终端,在那里边做事,等到编译完的时候。机器会咚的 一声通知您的哦,您要真不想等的话,就去玩会吧,听听歌什么的,过会再回来,这里可是考验您耐心的时候哦,如果这您都没耐心,那后面还有个耗时的步骤哦, 还是忍忍吧,为了不让系统浪费资源,你还是忍忍哦,成功后您一定会很高兴的…
    假如您的内核现在已经编译好了,当然越小越好哦J,这时候系统会有个提示编译后的bzImage放到哪里去了,提示最后几行,已经告诉了您的新编译出的核 心位置啊,一般都在这里哦(我这里是RedHat9),/usr/src/linux-2.4.22/arch/i386/boot/,这时候您要做的就 是把它放到/boot目录底下去哦,不然系统可没法启动的 …
    #cp /usr/src/linux-2.4.22/arch/i386/boot/bzImage /boot/vmlinuz-2.4.22
    (这里其实已经把bzImage更名为vmlinuz-2.4.22,呆会在/boot/grub/grub.conf里就指定这个新内核)

    7#make modules(耗费时间取决于您所选择编译为modules的数量)
    哇哇,又一个耗费时间的步骤来了,您还是找点什么做做吧,估计也要好久哦,大概20分钟吧,这个步骤就是把您在make menuconfig里边所选择为M的东东,全部编译成模块并放在/usr/src/linux-2.4.22/下…如果你选择的M比较多的话,还是…去 玩会吧,家务没做啊?功课没做啊什么的?不过如果您比较喜欢把所有东东都编进内核的话,那就不需要多长时间,少选一些为M,这样很快就可以完成,我的只用 了一分钟就完成了,不过如果您有很多不知道而选择默认的话,那恐怕就要好花时间了. ..
    8#make modules_install
    hoho,这里可是安装module的步骤了,您所选择的模块编译完成后都放在/usr/src/linux-2.4.22某子目录下,哪个子目录您看一 下就知道了,make modules之后会有提示的..我也忘记了,呵呵:),这多不好,而insmod以及相关指令都是从/lib/modules/linux- 2.4.22下取module的啊,这个指令就是把编译好的mod放到/lib/modules下去的哦,如果开始没有Linux-2.4.22目录, (也就是说您是第一次编译2.4.22的内核),那么这条指令就会自动创建该目录,如果已经有了。那就会把编译后的内核放进该目录 …您以后要把mod调进kernel的时候(insmod,modprobe)都从这里寻找.o的哦…
    注意哦,如果你用的是SCSI硬盘并且采用的是ext3分区格式的话,请注意,您一定要制作initrd.img(因为SCSI卡的驱动包括在这个里边),如果你使用的是IDE硬盘,您可以跳过这一步,当然,您要是有耐心的话,这里学习一下也没什么坏处哦
    mkinitrd可以制作initrd.img,一般是这么使用的,如果想具体了解的话,可以man mkinitrd,如果只想搞个initrd.img出来的话,那就mkinitrd /boot/initrd-custom.img 2.4.22就在/boot目录下创建了一个initrd-custom.img文件,也就是初始化镜像…(initialed ramdisk)…里边主要有一些驱动,因为放在内核中就显得过大,所以编译进initrd.img,在启动中释放…而这个2.4.22就表示/lib /modules下面的2.4.22目录了…
    到这里,以下就有两种做法哦…
    一  手动更新System.map文件
    它是当前正在运行的kernel的fuctions的说明,如果您编译内核后不更新System.map,如果碰到问题.,Trouble shooting就很困难了哦,您可有可能遇见很多烦人的信息哦,所以我们还是手动更新一次哦,也蛮简单的…
    #cp /usr/src/linux-2.4.22/System.map /boot/System.map
    系统会提示您:
    Overwrite the ‘boot/System.map’
    敲入Y,回车
    二 make install(该动作自动完成initrd vmlinuz system 三文件的创建,复制到/boot下,并再grub中自动添加一条新的内核的引导记录,偷懒可以用一下)
    说到make install我们这里又有点话要说哦,make install就相当于一个自动化的过程啦,因为其他东东它都会帮您做好的,如果您确实比较懒,或者已经对前边的步骤已经很没耐心了,您就直接执行此步骤 吧…当然您可以很快做好新系统了,而且可以重新从新内核启动哦,但是您可能对这中间发生的事情就不明白了哦,小时侯上课的时候老师谈什么要授之以渔,而不 要授之以鱼,没办法。您要是觉得麻烦,俺就省了,俺手还觉得累,呵呵:)
    还是谈谈这个过程吧,这期间,系统会把您的当前release版本号后面加上一个custom然后写到grub.conf里边去,重新启动后您就可以看到2.4.22custom的选单了 …
    至于这个文件名是怎么决定出来的呢?您可以看一看/usr/src/linux-2.4.22哦,里边有个Makefile,您试一下
    #head –n 5 Makefile
    相信你已经看出来了吧…这也就是命名的原因啦,于是您也可以自己修改您的Linux哦…自己custom一下release名称岂不爽哉…
    从以上步骤来看,基本上已经没有什么问题了,当然,请确认您在make menuconfig里边没有做过任何错误的事情哦,不然重新启动后,依然引导不了的,譬如fs里边一定要选中VFS,EXT3编译为M,因为现在系统一 般都采用了ext3格式,您要是漏掉这个东东,加载不了分区,可别怨我没告诉你哦,当然second extended fs更是一定要选啦:)
    我在编译的历史中曾经有VFS:Unable to mount root fs on 00:00的经历,一直卡在那里,好久都没解决啊,不过后来终于发现应该是fs的问题,或者是您的root分区没指定好啊..
    看了这么多。相信您也很累了,帖子也快到头了,因为马上就要完了…(如果上边您选择了make install,这里您就不用看了哦)最最最最后一点,我们要修改Grub.conf(如果您采用的是grub来引导的话,抱歉我不懂lilo,因为我也 是菜鸟…),使系统在重新启动后可以从新的内核启动…
    #vi /boot/menu.lst
    menu.lst跟grub.conf内容是一样的哦,是个link,不过这里边可是彩色的文字,我很喜欢,就编辑它了..
    在原来的基础上添加一行:
    title  new Linux(2.4.22)    //这里您可以自己命名,也就是出现在grub启动菜单里的东东哦
    kernel /vmlinuz-2.4.22 ro root=LABEL=/
    上边这行是指定kernel 的路径,记得我们前边生成一个vmlinuz-2.4.22的新内核吗?对了哦,就是它了…这里指定为它后,在您选择以这个选项启动后,就会起用这里的新内核了.
    后面跟着的ro 表示是readonly,就是只读的意思咯,root=LABEL=/是指定路径
    initrd /initrd.img
    这里要指定为您所制作的initrd.img哦,如果这个制作错误的话,可启动不了的哦…当然,这说的是您使用的是SCSI硬盘,如果是IDE硬盘的话。 您可以在这里写上no initrd取代,这样系统就不会使用intird啦,当然这个最好还是带着吧,前边我们也讲了它的作用了,主要还是一些驱动….以及系统初始化的程序…
    三内核文件介绍参考:http://hi.baidu.com/shenlang277/blog/item/fb948202fafd760c4bfb51de.html
  • 初尝 linux内核编译 (成功)

    2007-12-20 21:56:10

       a、为了好玩,赶潮流或做实验,那就可以大胆的进行下面的操作!
      b、为了支持新硬件,为了得到更好的性能,那么请问:有没有已经对系统进行了备份!
    内核参数请参考:http://lamp.linux.gov.cn/Linux/kernel_options.html  
    http://blog.csdn.net/lengxingfei/archive/2007/10/02/1809585.aspx
    http://linux.chinaunix.net/bbs/viewthread.php?tid=632835&extra=page%3D1%26amp%3Bfilter%3Ddigest
      1、选择下载内核版本
      http://www.kernel.org/pub/linux/kernel/ 这里有最新的内核版本
      因为红旗3.0内核版本为V2.4.17-1 我们就选择一个V2.4.20的最新稳定内核来进行升级
      下载一个完整内核文件名为linux-2.4.20.tar.bz2
      a) 在任何一个子目录下(但通常是在/usr/src/下,我们先在/root下解开)解开新的内核源程序:
      # bzip2 -d linux-2.4.20.tar.bz2 ;解压将会在当前目录下生成linux-2.4.20.tar
      # tar xvf linux-2.4.20.tar ;解包
      # mv linux-2.4.20 /usr/src ;把解开的数据移动到/usr/src目录下
      b) 建立一个符号连接到你的新内核目录,这一步可以不做,只是为了操作方便
      # ln -s /usr/src/linux-2.4.20 /usr/src/linux ;以后对新内核的访问就通过linux 这个连接进行
      c)配置内核前的准备工作
     配置内核前的准备工作
      # cd /usr/include
      
       # rm -rf asm linux scsi  asm-generic(或改名保存)
      
      # ln -s /usr/src/linux/include/asm-i386 asm
      
         # ln -s /usr/src/linux/include/linux linux
        # ln -s /usr/src/linux/include/scsi scsi
          # ln -s /usr/src/linux/include/asm-generic asm-generic
      d)配置内核
      我是在不删除原有内核的情况下进行编译,如果你不想保留原有内核,建议先做好启动盘
      启动盘制作:#mkbootdisk --device /dev/fd0 `uname -r` ;`uname -r` 是取得当前内核版本号
      对于我们红旗3.0来说可以使用 #mkbootdisk --device /dev/fd0 2.4.17-1
      重新启动机子﹐确定启动盘能正确引导。
      转到目录/usr/src/linux下 进行编译配置
      1)#make mrproper ;清除任何将引起问题的附加额外源代码 (建议执行)
      2)#make xconfig ;这是在X window下的图形界面,很方便
      或 make menuconfig ;如果是在字符下建议使用
      或 make config ;这个方法不建议使用很麻烦, 很古老!
       或 make  oldconfig ;如果有很小的改动,可以使用,使用得不多
      选择好新内核中要开启的选项,;除了【】【*】外,【M]表示模块被动态编译,需要时可以载入
         这一步将/usr/src/linux目录下生成一个配置文件.config文件
      3)#make dep ;确定那些文件已经改动,那些需要重新编译;确保关键文件在正确的位置.
      4)#make clean ;删除那些不需要的旧文件(例如:内核原有的拷贝);确保所有东西均保持最新状态.
      5)#make zImage ;将一个新内核建立在一个压缩文件中(会生成/usr/src/linux/arch/i386/boot/zImage文件)
      ;注意有大小写区分
      如果提示System is too big.出错进用make bzImage进行压缩建立(会生成/usr/src/linux/arch/i386/boot/bzImage文件)
      e)如果你用了模块,你还需要建造和安装模块
      make modules  ;编译选择的模块
      make modules_install  ;将编译后的模块转移到系统的标准位置
      depmod -a  ;分析可载入模块的相依性
      f)安装新内核
      复制内核文件到/boot目录
      # cp /usr/src/linux/System.map /boot/System.map-2.4.20  ;特定内核的内核符号表
        # cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.4.20
      编辑/etc/lilo.conf文件添加
      image=/boot/vmlinuz-2.4.20
      label=linux-2.4.20
      root=/dev/hda1 ;这一项可以参考原来的root项
      #lilo ;只有执行了lilo命令之后﹐ LILO 才会真正装到系统之上
       grub只需改相应的内核名为新的即可

      g)重启
      #shutdown -r now
      提示:开机启动LILO、出现系统选择时选择“linux-2.4.20”用新内核来启动我们的Linux
      进入后可以用#uname -r 来查看当前的内核版本
      h)问题
      有可能如果系统不能正常启动或有些设备不认时,可能是我们在make menuconfig时有些选择不正确,只有在来从这一步来一次!
      内核升级不可能一次成功,除非您对内核中的每个选项非常了解
      
      而且升级后是否稳定,这也是个问题因为有些问题不可能一下子就会发生,可能要过很长时间才会暴露出来!
      但从内核升级的过程中您将会更加了解Linux的工作流程,希望以上的内容对大家在学习中有所帮助!

    附录:vmware下面编译内核必选的选项
    如果你在vmware下重新编译内核,硬盘用的是scsi的,以下选项必选:
    Device Drivers  --->SCSI device support  ---><*>   SCSI disk support
    Device Drivers  --->SCSI device support  --->SCSI low-level drivers  ---> <*> BusLogic SCSI support

    Device Drivers  ---> Fusion MPT device support  ---><M> Fusion MPT (base + ScsiHost) drivers和<M>   Fusion MPT misc device (ioctl) driver(这个要不要,不确定)
    注意:只能选模块方式,直接编译进内核,就出错,不知道为什么,这个浪费了我好多时间才找到,编译了几十次的成果。
        出错信息如下:No module mptbase found for kernel vmware。。。。。。。

    Device Drivers  ---> USB support  ---><*>   USB Mass Storage support

    Device Drivers  ---> Networking support  --->Ethernet (10 or 100Mbit)  ---> <*>   AMD PCnet32 PCI support(看到文章说这个必选,应该是网卡吧)
  • Linux 下mysql的安装及配置

    2007-11-15 13:55:44

    一,前言

    二、安装Mysql

    1、下载MySQL的安装文件
    安装MySQL需要下面两个文件:
    MySQL-server-5.0.9-0.i386.rpm
    MySQL-client-5.0.9-0.i386.rpm
    下载地址为:http://dev.mysql.com/downloads/mysql/5.0.html,打开此网页,下拉网页找到“Linux x86 RPM downloads”项,找到“Server”和“Client programs”项,下载需要的上述两个rpm文件。
    2、安装MySQL
    rpm文件是Red Hat公司开发的软件安装包,rpm可让Linux在安装软件包时免除许多复杂的手续。该命令在安装时常用的参数是 –ivh ,其中i表示将安装指定的rmp软件包,V表示安装时的详细信息,h表示在安装期间出现“#”符号来显示目前的安装过程。这个符号将持续到安装完成后才停止。
    1)安装服务器端
    在有两个rmp文件的目录下运行如下命令:
    [root@test1 local]# rpm -ivh MySQL-server-5.0.9-0.i386.rpm
    显示如下信息。
    warning: MySQL-server-5.0.9-0.i386.rpm: V3 DSA signature: NOKEY, key ID 5072e1f5
    Preparing... ########################################### [100%]
    1:MySQL-server ########################################### [100%]
    。。。。。。(省略显示)
    /usr/bin/mysqladmin -u root password 'new-password'
    /usr/bin/mysqladmin -u root -h test1 password 'new-password'
    。。。。。。(省略显示)
    Starting mysqld daemon with databases from /var/lib/mysql
    如出现如上信息,服务端安装完毕。测试是否成功可运行netstat看Mysql端口是否打开,如打开表示服务已经启动,安装成功。Mysql默认的端口是3306。
    [root@test1 local]# netstat -nat
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address Foreign Address State
    tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
    上面显示可以看出MySQL服务已经启动。
    2)安装客户端
    运行如下命令:
    [root@test1 local]# rpm -ivh MySQL-client-5.0.9-0.i386.rpm
    warning: MySQL-client-5.0.9-0.i386.rpm: V3 DSA signature: NOKEY, key ID 5072e1f5
    Preparing... ########################################### [100%]
    1:MySQL-client ########################################### [100%]
    显示安装完毕。
    用下面的命令连接mysql,测试是否成功。
    三、登录MySQL

    登录MySQL的命令是mysql, mysql 的使用语法如下:
    mysql [-u username] [-h host] [-p[password]] [dbname]
    username 与 password 分别是 MySQL 的用户名与密码,mysql的初始管理帐号是root,没有密码,注意:这个root用户不是Linux的系统用户。MySQL默认用户是root,由于初始没有密码,第一次进时只需键入mysql即可。
    [root@test1 local]# mysql
    Welcome to the MySQL monitor. Commands end with ; or \g.
    Your MySQL connection id is 1 to server version: 4.0.16-standard
    Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
    mysql>
    出现了“mysql>”提示符,恭喜你,安装成功!
    增加了密码后的登录格式如下:
    mysql -u root -p
    Enter password: (输入密码)
    其中-u后跟的是用户名,-p要求输入密码,回车后在输入密码处输入密码。

    注意:这个mysql文件在/usr/bin目录下,与后面讲的启动文件/etc/init.d/mysql不是一个文件。

    四、MySQL的几个重要目录

    MySQL安装完成后不象SQL Server默认安装在一个目录,它的数据库文件、配置文件和命令文件分别在不同的目录,了解这些目录非常重要,尤其对于Linux的初学者,因为 Linux本身的目录结构就比较复杂,如果搞不清楚MySQL的安装目录那就无从谈起深入学习。

    下面就介绍一下这几个目录。

    1、数据库目录
    /var/lib/mysql/

    2、配置文件
    /usr/share/mysql(mysql.server命令及配置文件)

    3、相关命令
    /usr/bin(mysqladmin mysqldump等命令)

    4、启动脚本
    /etc/rc.d/init.d/(启动脚本文件mysql的目录)
    五、修改登录密码

    MySQL默认没有密码,安装完毕增加密码的重要性是不言而喻的。

    1、命令
    usr/bin/mysqladmin -u root password 'new-password'
    格式:mysqladmin -u用户名 -p旧密码 password 新密码

    2、例子
    例1:给root加个密码123456。
    键入以下命令 :
    [root@test1 local]# /usr/bin/mysqladmin -u root password 123456
    注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。

    3、测试是否修改成功
    1)不用密码登录
    [root@test1 local]# mysql
    ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO)
    显示错误,说明密码已经修改。
    2)用修改后的密码登录
    [root@test1 local]# mysql -u root -p
    Enter password: (输入修改后的密码123456)
    Welcome to the MySQL monitor. Commands end with ; or \g.
    Your MySQL connection id is 4 to server version: 4.0.16-standard
    Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
    mysql>
    成功!
    这是通过mysqladmin命令修改口令,也可通过修改库来更改口令。

    六、启动与停止

    1、启动
    MySQL安装完成后启动文件mysql在/etc/init.d目录下,在需要启动时运行下面命令即可。
    [root@test1 init.d]# /etc/init.d/mysql start

    2、停止
    /usr/bin/mysqladmin -u root -p shutdown

    3、自动启动
    1)察看mysql是否在自动启动列表中
    [root@test1 local]# /sbin/chkconfig –list
    2)把MySQL添加到你系统的启动服务组里面去
    [root@test1 local]# /sbin/chkconfig – add mysql
    3)把MySQL从启动服务组里面删除。
    [root@test1 local]# /sbin/chkconfig – del mysql
    七、更改MySQL目录

    MySQL默认的数据文件存储目录为/var/lib/mysql。假如要把目录移到/home/data下需要进行下面几步:

    1、home目录下建立data目录
    cd /home
    mkdir data

    2、把MySQL服务进程停掉:
    mysqladmin -u root -p shutdown

    3、把/var/lib/mysql整个目录移到/home/data
    mv /var/lib/mysql /home/data/
    这样就把MySQL的数据文件移动到了/home/data/mysql下

    4、找到my.cnf配置文件
    如果/etc/目录下没有my.cnf配置文件,请到/usr/share/mysql/下找到*.cnf文件,拷贝其中一个到/etc/并改名为my.cnf)中。命令如下:
    [root@test1 mysql]# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf

    5、编辑MySQL的配置文件/etc/my.cnf
    为保证MySQL能够正常工作,需要指明mysql.sock文件的产生位置。 修改socket=/var/lib/mysql/mysql.sock一行中等号右边的值为:/home/mysql/mysql.sock 。操作如下:
    vi my.cnf (用vi工具编辑my.cnf文件,找到下列数据修改之)
    # The MySQL server
    [mysqld]
    port = 3306
    #socket = /var/lib/mysql/mysql.sock(原内容,为了更稳妥用“#”注释此行)
    socket = /home/data/mysql/mysql.sock (加上此行)

    6、修改MySQL启动脚本/etc/rc.d/init.d/mysql
    最后,需要修改MySQL启动脚本/etc/rc.d/init.d/mysql,把其中datadir=/var/lib/mysql一行中,等号右边的路径改成你现在的实际存放路径:home/data/mysql。
    [root@test1 etc]# vi /etc/rc.d/init.d/mysql
    #datadir=/var/lib/mysql (注释此行)
    datadir=/home/data/mysql (加上此行)

    7、重新启动MySQL服务
    /etc/rc.d/init.d/mysql start
    或用reboot命令重启Linux
    如果工作正常移动就成功了,否则对照前面的7步再检查一下。

    八、MySQL的常用操作

    注意:MySQL中每个命令后都要以分号;结尾。

    1、显示数据库
    mysql> show databases;
    +----------+
    | Database |
    +----------+
    | mysql |
    | test |
    +----------+
    2 rows in set (0.04 sec)
    Mysql刚安装完有两个数据库:mysql和test。mysql库非常重要,它里面有MySQL的系统信息,我们改密码和新增用户,实际上就是用这个库中的相关表进行操作。

    2、显示数据库中的表
    mysql> use mysql; (打开库,对每个库进行操作就要打开此库,类似于foxpro )
    Database changed

    mysql> show tables;
    +-----------------+
    | Tables_in_mysql |
    +-----------------+
    | columns_priv |
    | db |
    | func |
    | host |
    | tables_priv |
    | user |
    +-----------------+
    6 rows in set (0.01 sec)

    3、显示数据表的结构:
    describe 表名;

    4、显示表中的记录:
    select * from 表名;
    例如:显示mysql库中user表中的纪录。所有能对MySQL用户操作的用户都在此表中。
    Select * from user;

    5、建库:
    create database 库名;
    例如:创建一个名字位aaa的库
    mysql> create databases aaa;
    6、建表:
    use 库名;
    create table 表名 (字段设定列表);
    例如:在刚创建的aaa库中建立表name,表中有id(序号,自动增长),xm(姓名),xb(性别),csny(出身年月)四个字段
    use aaa;
    mysql> create table name (id int(3) auto_increment not null primary key, xm char(8),xb char(2),csny date);
    可以用describe命令察看刚建立的表结构。
    mysql> describe name;

    +-------+---------+------+-----+---------+----------------+
    | Field | Type | Null | Key | Default | Extra |
    +-------+---------+------+-----+---------+----------------+
    | id | int(3) | | PRI | NULL | auto_increment |
    | xm | char(8) | YES | | NULL | |
    | xb | char(2) | YES | | NULL | |
    | csny | date | YES | | NULL | |
    +-------+---------+------+-----+---------+----------------+

    7、增加记录
    例如:增加几条相关纪录。
    mysql> insert into name values('','张三','男','1971-10-01');
    mysql> insert into name values('','白云','女','1972-05-20');
    可用select命令来验证结果。
    mysql> select * from name;
    +----+------+------+------------+
    | id | xm | xb | csny |
    +----+------+------+------------+
    | 1 | 张三 | 男 | 1971-10-01 |
    | 2 | 白云 | 女 | 1972-05-20 |
    +----+------+------+------------+

    8、修改纪录
    例如:将张三的出生年月改为1971-01-10
    mysql> update name set csny='1971-01-10' where xm='张三';

    9、删除纪录
    例如:删除张三的纪录。
    mysql> delete from name where xm='张三';

    10、删库和删表
    drop database 库名;
    drop table 表名;

    九、增加MySQL用户

    格式:grant select on 数据库.* to 用户名@登录主机 identified by "密码"
    例1、增加一个用户user_1密码为123,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入MySQL,然后键入以下命令:

    mysql> grant select,insert,update,delete on *.* to user_1@"%" Identified by "123";
    例1增加的用户是十分危险的,如果知道了user_1的密码,那么他就可以在网上的任何一台电脑上登录你的MySQL数据库并对你的数据为所欲为了,解决办法见例2。

    例2、增加一个用户user_2密码为123,让此用户只可以在localhost上登录,并可以对数据库aaa进行查询、插入、修改、删除的操作(localhost指本地主机,即MySQL数据库所在的那台主机),这样用户即使用知道user_2的密码,他也无法从网上直接访问数据库,只能通过 MYSQL主机来操作aaa库。

    mysql>grant select,insert,update,delete on aaa.* to user_2@localhost identified by "123";

    用新增的用户如果登录不了MySQL,在登录时用如下命令:

    mysql -u user_1 -p -h 192.168.113.50 (-h后跟的是要登录主机的ip地址)

    十、备份与恢复

    1、备份

    例如:将上例创建的aaa库备份到文件back_aaa中

    [root@test1 root]# cd /home/data/mysql (进入到库目录,本例库已由val/lib/mysql转到/home/data/mysql,见上述第七部分内容)
    [root@test1 mysql]# mysqldump -u root -p --opt aaa > back_aaa

    2、恢复

    [root@test mysql]# mysql -u root -p ccc < back_aaa

    另外操作:修改mysql字符编码成为UTF8

    启动mysql后,以root登录mysql
    isher@isher-ubuntu:~$ mysql -u root
    >show variables like 'character%'; #执行编码显示
    +--------------------------+----------------------------+
    | Variable_name | Value |
    +--------------------------+----------------------------+
    | character_set_client | latin1 |
    | character_set_connection | latin1 |
    | character_set_database | latin1 |
    | character_set_filesystem | binary |
    | character_set_results | latin1 |
    | character_set_server | latin1 |
    | character_set_system | utf8 |
    | character_sets_dir | /usr/share/mysql/charsets/ |
    +--------------------------+----------------------------+

    在某些时候,我们续要修改mysql默认数据库的编码,以保证某些迁移的程序可以正常显示,编辑my.cnf文件进行编码修改,windows可以直接用Mysql Server Instance Config Wizard 进行设置

    在linux下修改3个my.cnf的1个/etc/mysql/my.cnf文件

    找到客户端配置[client] 在下面添加
    default-character-set=utf8 默认字符集为utf8
    在找到[mysqld] 添加
    default-character-set=utf8 默认字符集为utf8
    init_connect='SET NAMES utf8' (设定连接mysql数据库时使用utf8编码,以让mysql数据库为utf8运行)

    修改好后,重新启动mysql 即可,查询一下show variables like 'character%';
    +--------------------------+----------------------------+
    | Variable_name | Value |
    +--------------------------+----------------------------+
    | character_set_client | utf8 |
    | character_set_connection | utf8 |
    | character_set_database | utf8 |
    | character_set_filesystem | binary |
    | character_set_results | utf8 |
    | character_set_server | utf8 |
    | character_set_system | utf8 |
    | character_sets_dir | /usr/share/mysql/charsets/ |
    +--------------------------+----------------------------+

    此方法用于标准mysql版本同样有效,对于/etc/my.cnf文件,需要从mysql/support-files的文件夹cp my-large.cnf一份到/etc/my.cnf。

    转自:http://www.linuxdiyf.com/viewarticle.php?id=66623,试验成功,详细全面,推荐!

  • LINUX 下Apache 2.2+ MySQL 5.0+PHP 5.0的安装与配置

    2007-11-15 13:51:32

    1.安装环境
    操作系统:Red Hat Linux Enterprise AS 4.0
    数据库:MySQL 5.0.24
    Web服务器:Apache 2.2.3
    脚本语言:PHP 5.1.6

    2.安装MySQL 5.0.24
    -------------下载软件包mysql-5.0.24.tar.gz,地址http://www.mysql.com-------------
    # tar zvxf mysql-5.0.24.tar.gz //

    解压缩
    # cd mysql-5.0.24 //进入解压缩后的文件目录
    # ./configure --prefix=/usr/local/mysql \ //设定安装目录
    --enable-thread-safe-client \ //编译线程安全版的客户端库
    --without-debug \ //关闭debug功能
    --localstatedir=/data/mysqldata \ //设定数据库文件目录
    # make //编译
    # make install //安装
    # /usr/local/mysql/bin/mysql_install_db //初始化授权
    # chown –R root:root /usr/local/mysql //文件属性改为root用户
    # cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf //复制配置文件
    ----------------------------------启动MySQL服务----------------------------------
    # /usr/local/mysql/bin/mysqld_safe --user=root & //启动MySQL
    ----------------------------------修改MySQL密码----------------------------------
    # /usr/local/mysql/bin/mysqladmin -uroot password mysqlsecret //修改密码
    ----------------------------------关闭MySQL服务----------------------------------
    # /usr/local/mysql/bin/mysqladmin -uroot -pmysqlsecret shutdown //关闭MySQL

    3.安装Apache 2.2.3
    -------------下载软件包httpd-2.2.3.tar.gz,地址http://www.apache.org-------------
    # tar zvxf httpd-2.2.3.tar.gz
    # cd httpd-2.2.3
    # ./configure --prefix=/usr/local/apache \
    --enable-module=most \
    --enable-shared=max
    # make
    # make install
    ----------------------------------启动Apache服务----------------------------------
    # /usr/local/apache/bin/apachectl start
    ----------------------------------关闭Apache服务----------------------------------
    # /usr/local/apache/bin/apachectl stop
    ----------------------------------重启Apache服务----------------------------------
    # /usr/local/apache/bin/apachectl restart

    4.安装PHP 5.1.6
    -------------------下载软件包php-5.1.6.tar.gz,地址www.php.net--------------------
    # tar zvxf php-5.1.6.tar.gz
    # cd php-5.1.6
    # ./configure --prefix=/usr/local/php \
    --with-mysqld=/usr/local/mysql \
    --with-apxs2=/usr/local/apache/bin/apxs
    # make
    # make install
    # cp php.ini-dist /usr/local/php/lib/php.ini

    5.配置Apache服务的httpd.conf文件
    *在LoadModule处添加 LoadModule php5_module module/libphp5.so
    *在DirectoryIndex处添加 index.php
    *在AddType application处添加
    AddType application/x-httpd-php .php .phtml
    AddType applicatoin/x-httpd-php-source .phps

    转自:http://www.linuxdiyf.com/viewarticle.php?id=65597,经试验成功,精简推荐!

  • Linux进行磁盘配额quota的设置

    2007-11-14 18:32:26

    先看内核是否支持

      [root@panda redhat]# grep CONFIG_QUOTA /boot/config-2.6.9-5.EL

      CONFIG_QUOTA=y
      CONFIG_QUOTACTL=y

      就代表是支持的

    通过quota进行磁盘配额,可以控制使用者对磁盘空间和文件的控制,我们以一个实例作为说明,对2个使用者user01、user02分别进行磁盘使用空间和创建文件的限制。
    首先,创建一个新的分区,将/tmp挂载在新的分区。
    #fdisk /dev/hda

    创建后执行:

    #partprobe
    重新写分区表

    #mkfs –t ext3 /dev/hda7 格式化分区
    #mount /dev/hda7 /tmp 将/tmp挂载到hda7分区

    修改分区表

    #vi /etc/fstab增加usrquota,grpquota
    /dev/hda7 /tmp ext3 defaults, usrquota,grpquota 0 0

    创建使用者

    #useradd user01
    #useradd user02
    #cd /tmp
    #mount –o remount /tmp
    #quotacheck –cvug /tmp
    #quotaon –vug /tmp 开启quota
    Quota会在/tmp目录下自动创建quota.user quota.group

    对使用者user01进行磁盘空间使用限制

    #edquota –u user01 修改quota配置文件
    Block limits File limits
    User used soft hard timeleft used soft hard timeleft
    userq -- 0 5000 8000 0 0 0

    Block limits是对磁盘空间使用的限制,以字节为单位,soft是指软限制,hard是指硬限制,如例,soft限制为5MB,hard限制为8MB,当使用者user01使用空间超过5MB时,系统会进行提示,但可以继续使用空间,而当使用者user01使用空间达到8MB时,就会限制使用者user01继续使用/tmp空间
    我们可以进行一下测试,手动创建相对大的文件:

    #dd if/dev/zero ōf=user01file bs=1M count=4 将创建成功
    #dd if/dev/zero ōf=user01file bs=1M count=6 将创建成功,但会有提示
    #dd if/dev/zero ōf=user01file bs=1M count=9 将创建失败,超出hard限制

    对使用者user02进行创建文件使用限制

    #edquota –u user02 修改quota配置文件
    Block limits File limits
    User used soft hard timeleft used soft hard timeleft
    userq -- 0 0 0 0 50 80

    File limits是对使用者创建文件的限制,soft和hard同上是软限制和硬限制,分别是50、80,当使用者user02创建文件超过50个时,系统会进行提示,但仍可以继续创建文件,而当使用者user02创建文件超过80个文件时,就会限制使用者user02继续创建文件,但要注意,因为使用者user02是在/tmp目录下进行了磁盘配额限制,所以/tmp目录会算做一个文件,所以user02最多只能创建79个文件。

    我们可以进行一下测试,手动创建文件:
    #for i in $(seq 1 60);do echo 「user02file$i」;touch user02file$i;done

    创建60个文件,此时quota会进行提示,而当超过80个文件的时候,quota就会限制使用者user02继续创建文件

    #edquota –t

    可以设置timeleft的值,在这里我们都设定为2分钟,重复上面的例子,使用者user02创建60个文件,此时会出现quota的提示,但仍可以创建文件,但当我们等待2分钟后,你会发现,user02已经不能再进行创建文件了,这里就是timeleft的作用,就是当你超过soft限制时,设定有效的时间。
    其它相关命令

    #repquota 重载quota设置
    #quota –v 察看quota设置
    #quota on/off quota开启/关闭

    这样我们就可以对使用者进行相应的限制了。

    转载:http://www.linuxdiyf.com/viewarticle.php?id=40512,经试验成功

  • LINUX下NFS简单搭建过程

    2007-11-14 14:07:27

    一、概念

    NFS(Network File System/网络文件系统):

    1、设置Linux系统之间的文件共享(Linux与Windows中间文件共享采用SAMBA服务);

    2、NFS只是一种文件系统,本身没有传输功能,是基于RPC协议实现的,才能达到两个Linux系统之间的文件目录共享;
    3、NFS为C/S架构;

    二、服务器配置

    1、配置文件

    主要配置文件为:/etc/exports

    格式为: 共享目录 可mount主机IP(参数1,参数2,……)

    如:/var/nfs 172.20.*.*(rw,sync,all_squash,anonuid=65534,anongid=65534)

    说明:必须注意nfs/目录的访问权限,必须设置成777权限;父目录/var权限无要求,普通的755即可;

    2、启动相关服务

    然后依次启动相关服务:portmap,nfslock,nfs

    3、检查共享目录

    随后可以采用showmount –e查看一下,看看共享的目录情况:

    [root@ns var]# showmount -e

    Export list for ns.osserver:

    /var/nfs 172.20.*.*

    OK,到此为止,NFS服务器搭建完毕;

    三、客户端配置

    1、确保portmap运行

    客户端必须确保RPC协议相应的portmap正常运行,否则mount将失败;

    2、挂载/var/nfs目录(本地挂载点为/mnt/nfs)

    mount -t nfs 172.20.65.16:/var/nfs /mnt/nfs

    成功mount以后,即可同本地目录一样随意操作;

    四、其它相关命令

    1、当修改了/etc/exports文件后,可以不用重新启动nfs服务,直接采用exports –rv 即可重新导出共享目录;

    该命令格式如下:

    exportfs [-aruv]

    -a :全部mount或者unmount /etc/exports中的内容

    -r :重新mount /etc/exports中分享出来的目录

    -u :umount 目录

    -v :在 export 的时候,将详细的信息输出到屏幕上。

    具体例子:

    [root@ns var]# showmount -e

    Export list for ns.osserver:

    /var/nfs 172.20.*.*

    [root@ns var]# exportfs –au #全部卸载

    [root@ns var]# showmount -e

    Export list for ns.osserver:

    [root@ns var]# exportfs –rv #全部重新 export 一次

    exporting 172.20.*.*:/var/nfs

    [root@ns var]#

    2、showmout命令对于NFS的操作和查错有很大的帮助,所以我们先来看一下showmount的用法

    showmout

    -a :这个参数是一般在NFS SERVER上使用,是用来显示已经mount上本机nfs目录的cline机器。

    -e :显示指定的NFS SERVER上export出来的目录。

    例如:

    [root@localhost ~]# showmount -e 172.20.65.16

    Export list for 172.20.65.16:

    /var/nfs 172.20.*.*

    [root@ns var]# showmount -a

    All mount points on ns.osserver:

    172.20.*.*:/var/nfs

    五、常见问题解答

    1、提示:mount to NFS server '172.20.67.203' failed: server is down.

    解决方案:可能是NFS服务器的防火墙有问题;

    2、提示:mount: RPC: Timed out

    解决方案:由于RPC协议没运行;启动portmap服务;

    也有可能是防火墙问题;Server/Client均有可能。

    说明,注意

    1、exports参数说明
    rw: 读写模式;
    async: 异步磁盘读写;
    anonu(g)id: 指定NFS在进行操作时所使用的匿名用户uid/gid

    2、NFS 管理命令
    showmount -e 在NFS Server上执行此命令显示NFS Server上所有的共享卷;
    showmount -e 10.0.0.1 在NFS Client上执行此命令显示NFS Server上所有共享卷;
    export -av 根据/etc/exports导出所有卷;
    export -rv 重新导出所有卷,增加/etc/exports中的新项目、删除不存在的项目、更新改变的项目;

    3、NFS 相关文件
    /etc/exports
    是NFS Server最基本的配置文件之一,文件中列出了共享的文件系统和允许访问这些文件系统的主机。
    /proc/fs/nfs/exports
    导出文件列表的内核视图,包括导出的参数。
    /var/lib/nfs/etab
    状态文件,其中列出了当前的高级列表。此文件包含了/etc/exports中相同格式的所有项目,同时包含了由exportfs -i手工导入的项目。
    /var/lib/nfs/rmtab
    状态文件,列出了挂接导出文件的远程客户机清单。
    /var/lib/nfs/xtab
    状态文件,当前底层导出清单。

    4、/etc/exports 中client的书写规则
    (1) 单个主机
    可以用短名及完全限定名,或者用IP地址,例如student01、student01.flying.com.cn或者192.168.10.1都是合法的主机名。

    (2) Net-Group
    可以列出/etc/netgroup文件中或NFS网组映射中定义的整组主机。网组名以@开头。

    (3) 通配符主机
    *.discuz.net *.*.comsenz.com

    (4) 掩码
    192.168.1.0/255.255.255.0

    5、起停顺序
    启动:
    portmap
    nfslock
    nfs
    停止:
    nfslock
    nfs
    portmap

    6、安全性
    portmap: 111
    NFS: 2049

    防止使用IP欺骗和RPC重定向技术通过lo回环进行攻击以及限定授权主机:
    iptables -A INPUT -p udp -d 127.0.0.1 --dport 111 -j DROP
    iptables -A INPUT -p udp -d 127.0.0.1 --dport 2049 -j DROP
    iptables -A INPUT -p udp -s 10.0.0.2 --dport 111 -j ACCEPT
    iptables -A INPUT -p udp -s 10.0.0.2 --dport 2049 -j ACCEPT

    转自:http://www.linuxdiyf.com/viewarticle.php?id=63303,经试验成功!

  • Linux操作系统下简单的远程桌面实现方法(vnc)

    2007-10-15 17:09:27

    简单的介绍一个远程桌面———vnc方式的实现方法

    前提是server端要有一个vnc-server的和cnv的client端(其实就是生成vncviewer命令的包,但是一般的linux是包含此命令的)

    安装相关包之后配置即可使用

    Server端的设置

    1) 修改 /etc/sysconfig/vncserver,加入以下这一行

    VNCSERVERS="1:root"

    这里添加的用户要存在。

    2) 运行 vncpasswd,设置vnc登录密码

    3) 启动 vncserver服务

    # /etc/init.d/vncserver start

    Client端

    在另一台系统上运行VNC客户端,使用2)步中设置的密码进行连接。有以下三种客户端可供选择:

    a) 如果在Linux下,运行命令 vncviewer serveripaddress:1 (serveripaddress为服务器的IP地址)。

    b) 如果是Windows,需要去这里下载一个Windows客户端:http://www.realvnc.com/download.html。

    c) 也可以从浏览器访问VNC服务器: http://serveripaddress:5801/,浏览器要打开java选项。

    注:

    缺省vnc启动的是twm窗口管理器,如果想启动KDE,可以修改 /root/.vnc/xstartup

    注释掉最后一行twm &,改为:

    # twm &

    startkde &

    vnc-server

    文件: vnc-server-4.0-8.1.i386.rpm

    大小: 1199KB

    下载: http://blog.chinaunix.net/upfile/070911153821.rpm

    vnc

    文件: vnc-4.0-8.1.i386.rpm

    大小: 155KB

    下载: http://blog.chinaunix.net/upfile/070911153834.rpm

  • apache2.2简易安装与配置(转载)

    2007-10-10 17:29:00

    一、软件安装
    1、源文件件解压
       从官方网站下载httpd-2.2.2.tar.tar 安装包,考到/usr/src/目录
       tar zxvf httpd-2.2.2.tar.tar
    2、编译安装(可安INSTALL文档说明进行)
       cd /usr/src/httpd-2.2.2
       ./configure --prefix=/usr/local/apache2
       make
       make install
    3、启动与关闭APACHE2服务
       /usr/local/apache2/bin/apachectl stop
       /usr/local/apache2/bin/apachectl start
    4、测试APACHE2是否服务启动成功
       如果显示it works就表示服务已成功。
    二、软件配置篇
     1、基本环境配置
        编译安装的APACHE配置文件为 /usr/local/apache2/conf/httpd.conf
        ServerRoot "/usr/local/apache2"   apache的安装路径。相对路径都以该目录根。
        Listen 80   web侦听端口
        User daemon  
        Group daemon    apache启动服务的用户和组。2.2以前版本可能会用nobady用户及组。
        ServerAdmin you@example.com   管理员邮件地址。
        #ServerName www.example.com:80 定义客户端从服务器读取数据时返回给客房端的主机名。默认值为localhost。需要时才设置,否则注释掉。
        DocumentRoot "/usr/local/apache2/htdocs"  apache默认站点的根目录。
        <IfModule dir_module>
        DirectoryIndex index.html
        </IfModule>
                          此处可增加站点默认的首文件名。
     2、目录设置
        <Directory /yourdir>
         ......
        </Directory>
       options属性有
       ExecCGI:使该目录下的CGI具有可执行的能力。
       FolowSymLinks: 让你的link的目录或者文件,虽然在其它目录下,仍可以连接出去。
       Includes:在服务器端的工作可进行。
       Indexes:如果在该目录下面找不到index.html时,就显示整个目录下的文件名。请慎用。
       MultiViews:这有点类似多国语言支持。
       ALL:全部属性都启动。但不包含MultiViews.
    如:
    <Directory "/usr/local/apache2/htdocs">
       Options Indexes FollowSymLinks
       AllowOverride None
       Order allow,deny
       Allow from all
    </Directory>
    这是默认的站点目录设置,建议去掉indexes属性。
     3、访问控制(配合Directory块对目录进行访问控制)
        Order 明确了访问控制指令按什么顺序执行的。
        Allow 允许访问站点的主机名列表。
        Deny  拒绝访问站点的主机名列表。
    如:以例目录设置例子。

     
     
     
    三、虚拟主机篇
      1、启用虚拟主机
        去掉httpd.conf文件中 Include conf/extra/httpd-vhosts.conf 前面的# 注释.
      2、编辑/usr/local/apache2/conf/extra/httpd-vhosts.conf 文件
         1)注释掉以下内容,或者修改它。因为默认这几个站点我们根本不存在,如不去掉,启用apache服务会报错。
    <VirtualHost *:80>
        ServerAdmin webmaster@dummy-host.example.com
        DocumentRoot /www/docs/dummy-host.example.com
        ServerName dummy-host.example.com
        ServerAlias www.dummy-host.example.com
        ErrorLog logs/dummy-host.example.com-error_log
        CustomLog logs/dummy-host.example.com-access_log common
    </VirtualHost>
    <VirtualHost *:80>
        ServerAdmin webmaster@dummy-host2.example.com
        DocumentRoot /www/docs/dummy-host2.example.com
        ServerName dummy-host2.example.com
        ErrorLog logs/dummy-host2.example.com-error_log
        CustomLog logs/dummy-host2.example.com-access_log common
    </VirtualHost>
      3、加入虚拟站点,如现加了以下两个站点。
    <VirtualHost *:80>
        ServerAdmin webmaster@dummy-host.example.com
        DocumentRoot /usr/local/apache2/htdocs/web1
        ServerName www.web1.com
     </VirtualHost>
    <VirtualHost *:80>
        ServerAdmin webmaster@dummy-host2.example.com
        DocumentRoot /www/web2
        ServerName www.web2.com
    </VirtualHost>
      4、保存重启apache服务。
         此时会有这样的现象,www.web1.com能打开,而www.web2.com 却打不开。原因是因为web1的目录在/usr/local/apache2/htdocs 目录之下,而我们已对/usr/local/apache2/htdocs目录进行了权限控制处理。但web2站点的目录/www/web2 并未进行其访问授权。所以打不开。提示权限不够之类的信息。
      5、编辑httpd.conf 文件,加入以下内容。
        
    <Directory "/www/web2">
       Order allow,deny
       Allow from all
    </Directory>
       6、保存退出重启apache服务,一切正常。
    转载:http://blog.chinaunix.net/u/21771/showart.php?id=327703
  • linux 下bugzilla安装配置(整理)

    2007-10-10 16:26:18

    在linux下安装bugzilla,以前做过,由于涉及到很多其他服务器的安装,故重温一下,以便查阅,正所谓“好记性比不过烂笔头啊",下面开始了。。
    涉及到的安装:apache+mysql+sendmail+perl+bugzilla要求的perl模块+bugilla(系统有不用安了)
       软件的安装无非是这几种方式:rpm安装,tar.gz安装,从系统光盘安装,除系统光盘自带的安装外,下面从两种途径来进行。
    一、安装Apache
    *******tar包安装

          1、下载源码包: htttp://download.chinaunix.net/down.php?id=114&ResourceID=66&site=1

          2、解包:tar -xvf apapche-httpd-2.2.0.tar.bz2

          3、安装:cd apache-http*

                          ./configure --prefix=/usr/local/apache2 --enable-module=so

                          make    然后再    makeinstall     完成安装

          4、配置:vi /usr/local/apache2/conf/httpd.conf   

              添加: AddHandler cgi-scrīpt .cgi
                  <Directory "/var/www/bugzilla/"> *你的bugzilla目录
                  Options All
                  AllowOverride Limit
                  Order allow,deny
                  Allow from all    
                  </Directory>

              修改
          “DirectoryIndex index.html”在"index.html"前加入“index.cgi”

    找到,DocumentRoot "/var/www/html",将引号中的内容替换为bugzilla的安装路径,本例为 /root/bugzilla/bugzilla-2.18rc2 ,替换完结果为:

    DocumentRoot“/root/bugzilla/bugzilla-2.18rc2”

    说明:指定Apache服务器存放网页的根目录

    (可选)找到 ServerName

    在行#ServerName new.host.name:80 下面添加如下内容:

    ServerName 192.168.94.40:80


          5.启动与关闭APACHE2服务

             /usr/local/apache2/bin/apachectl stop

             /usr/local/apache2/bin/apachectl start     
          6、测试APACHE2是否服务启动成功
             http://ip或localhost
             如果显示it works就表示服务已成功。

    *******rpm包安装

    1、首先检查是否已经安装了httpd服务

    rpm-q httpd

    没有就安装,如:rpm-ivh httpd-2.0.40-21.i386.rpm

    4、启动关闭httpd,命令

    /etc/rc.d/init.d/httpd start/stop/restart 或 service httpd ...分别对应 启动/停止/重启

    配置测试同上(可能httpd.conf文件位置不一样)。

    二、安装mysql

    ********tar包安装

          1、下载源码包:http://download.chinaunix.net/down.php?id=24933&ResourceID=7159&site=1

          2、解包:tar -zxvf mysql-5.0.32.tar.gz

          3、安装:cd mysql-5.0*

                          ./configure --prefix=/usr/local/mysql

                          make     然后    make install    完成安装

          4、初始化mysql:/usr/local/mysql/bin/mysql_install_db --user=root

                                      /usr/local/mysql/bin/mysqld_safe --user=root &  (启动mysql服务端)

                                      /usr/local/mysql/bin/mysql --user=root    ( 启动mysql客户端)

                                      use mysql; (选择系统数据库)  

                                      update user set Password=password('YourPassword') where User='root';(设置数据库root密码)

    insert into user  (User,Host,Password,Select_priv,Insert_priv,Update_priv,Delete_priv,Index_priv,Alter_priv,Create_priv,Drop_priv,Grant_priv,Reload_priv,Shutdown_priv,Process_priv,File_priv) values('mysql','',password('YourPassword'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'); (增加数据库用户)

    *********rpm安装
    安装和启动

    1、mysql依赖于三个安装包中,分别是:

    MySQL-server-4.0.21-0.i386.rpm

    MySQL-client-4.0.21-0.i386.rpm

    MySQL-devel-4.0.21-0.i386.rpm

    2、安装三个包:

    rpm-ivhMySQL*.rpm

    3、启动mysql数据库

    /etc/rc.d/init.d/mysql start

    4、查看mysql进程

    ps-ef | grep mysql

    配置及初始化

    1、连接到mysql

    mysql -u root

    注意:初始安装的MySQL,超级用户没有口令

    2、设置口令,在mysql提示符下,输入命令

    Set password for root=password("123456") ;

    为root设置口令为123456 ,注意sql语句以“;”结束

    设置后进入为:

    mysql -u root -p

    (输入密码)!

    3、创建数据库bugs

    Create database bugs ;

    show databases;

    use bugs;

    4、创建用户bugs

    Grant select,insert,update,delete,index,alter,create,lock tables,create temporary tables,drop,references ON bugs.* TO bugs@localhost identified by ‘123456’

    5.退出数据库
    exit 或 quit

    注意:(1)mysql中的sql语句是不区分大小写的,所以在mysql提示符下的输入不必在意大小写

    (2)mysql语句必须要以分号“;”结束

    (3)退出语句exit和quit后可以不写分号

    三、安装Perl(系统自带不用安)

          1、下载源码包:http://download.chinaunix.net/down.php?id=78&ResourceID=44&site=1

          2、解包:tar -jvxf perl-5.8.8.tar.bz2

          3、安装:rm -f config.sh Policy.sh

                          sh Configure -de

                          make    然后 make test    通过后再 make install

          (类似的开发工具包建议在安装系统时就装上,以后会少很多麻烦。假如这里编译出现问题,根据提示,找到相应的包装上就可以了。也可以用ubuntu的apt-get install。

    四、安装perl模块

    ***网络自动安装

          1、首先初始化perl的cpan:perl -MCPAN -e 'shell'

                命令执行以后会进行一系列的配置,都有提示这一步是比较简单的,一般一路回车就可以了,最后会选模块搜索服务器,这个在大陆比较快(http://cpan.linuxforum.net/)把它选在前面就可以了。

               cpan是Comprehensive Perl Archive Network的英文缩写,一个巨大的网络资源库。有了它后面安装perl的模块会相对简单一些。

          2、安装bugzilla所需的perl模块

          必要模块:    

          1. CGI 2.93 or CGI 3.11 if using mod_perl
          2. Date::Format (2.21)
          3. DBI (1.41)
          4. DBD::mysql (2.9003) if using MySQL
          5. DBD::Pg (1.45) if using PostgreSQL
          6. File::Spec (0.84)
          7. Template (2.12)
          8. Email::Send (2.00)
          9. Email::MIME::Modifier (any)

    其中DBD模块在本章中先不进行安装,因为这个模块需要先安装mysql,其他模块均可安装

         可选模块:

          1. GD (1.20) for bug charting
          2. Template::Plugin::GD::Image (1.20) for Graphical Reports
          3. Chart::Base (1.0) for bug charting
          4. GD::Graph (any) for bug charting
          5. GD::Text (any) for bug charting
          6. XML::Twig (any) for bug import/export
          7. MIME::Parser (5.406) for bug import/export
          8. LWP::UserAgent (any) for Automatic Update Notifications
          9. PatchReader (0.9.4) for pretty HTML view of patches
         10. Image::Magick (any) for converting BMP image attachments to PNG
         11. Net::LDAP (any) for LDAP Authentication
         12. SOAP::Lite (any) for the web service interface
         13. HTML::Parser (3.40) for More HTML in Product/Group Descrīptions
         14. HTML::Scrubber (any) for More HTML in Product/Group Descrīptions
         15. Email::MIME::Attachment::Stripper (any) for Inbound Email
         16. Email::Reply (any) for Inbound Email
         17. mod_perl2 (1.999022) for mod_perl
         18. CGI (2.93) for mod_perl
         19. Apache::DBI (0.96) for mod_perl2

             不过,别急~ perl提供了很简便的模块安装方式:(单模块安装方式)perl -MCPAN -e 'install 模块名'或用cpan:perl -MCPAN -e 'shell'连上后,键入:install xxx 。

    (批量安装方式)比如安装bugzilla的模块,执行这个命令就可以了:perl -MCPAN -e 'install "Bundle::Bugzilla"' 。(上面个命令是将所有模块一起装,还可以将各模块分开装,比如:perl -MCPAN -e 'install GD::Graph"')。

    ******手动下载安装

    先要到网上把bugzilla所需的模块都下下来(http://download.chinaunix.net)然后分别解压,安装就OK了。perl模块的安装稍微有点不同。
    ./configure换成perl Makefile.PL 后面一样了make  make test(可选)  然后 make install


    五、安装sendmail或者(qmail)

            红帽sendmail默认已经可以用了,如果没有,建议安装qmail。

    没有就安装:下载相关的rpm包,解压安装后,关键是配置。。

    sendmail 的配置

    首先进入 /etc/mail 目录

    1、配置文件 sendmail.mc

    (1)打开文件 sendmail.mc

    visendmail.mc

    (2)在命令状态下,输入

    /DAEMON_OPTIONS

    查找字符串:

    DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

    (3)在该字符串前面加上dnl ,把该行注释掉,即:

    dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

    保存退出

    (4)执行命令

    m4/etc/mail/sendmail.mc > /etc/mail/sendmail.cf

    输出新的配置文件

    2、配置文件access

    (1)打开文件 access

    viaccess

    (2)在文件中添加

    192.168.94RELAY

    (注意:网段根据实际确定)

    保存退出

    (3)执行命令

    makemaphash/etc/mail/access.db< /etc/mail/access

    建立索引文件

    3、配置文件local-host-names

    (1)打开文件 local-host-names

    vilocal-host-names

    (2)在文件中添加

    btest.com

    mail.btest.com

    设置本地域名,以进行本地传递

    4、修改hosts文件,用于接收邮件

    hosts文件位于 /etc目录下

    (1)进入/etc目录,打开hosts文件

    vihosts

    (2)添加linux服务器的IP地址和别名,内容如下:

    192.168.94.40btest.com

    5、修改完以上配置文件,重启sendmail

    /etc/rc.d/init.d/sendmailrestart

    (注意可能时间会比较慢)

     
    安装配置POP3IMAP(可选)

    1、加载CD2,进入RedHat/RPMS目录,找到文件imap-2001a-18.i386.rpm和imap-devel-2001a-18.i386.rpm ,进行安装

    rpm-ivhimap*.rpm

    2、进入目录 /etc/xinetd.d目录

    3、找到imap文件和ipop3 这两个文件,分别进行修改,把原来内容中

    disable的值由 yes 变为 no

    保存退出

    4、重新启动

    /etc/rc.d/init.d/xinetdrestart

    5、添加一个用户,并设置密码

    adduserzhaods

    passwdzhaods

    密码:123

    六、安装bugzilla

          1、下载源码包:http://ftp.mozilla.org/pub/mozilla.org/webtools/bugzilla-2.22.2.tar.gz

          2、解包:tar zxvf bugzilla-2*

          3、配置:mkdir /var/www/bugzilla    (创建bugzilla目录)

                          cd bugzilla*        然后         mv * /var/www/bugzilla    (移动bugzilla文件到apache服务目录)

                          chmod -R 777 /var/www/bugzilla    (改变权限)

                          /var/www/bugzilla/checksetup.pl (检查安装,如果上一步的perl模块没有装好,这里会提示)

                          vi /var/www/bugzilla/localconfig 修改以下内容:

                                             $db_host = "localhost";
                                             $db_name = "bugs";
                                             $db_user = "mysql";
                                             $db_pass = "YourPassword";

                          /var/www/bugzilla/checksetup.pl (自动创建数据库,设置目录权限,完了以后,要你输入bugzilla管理员的邮箱,密码等,这是登录用的,要记住。)

                          再来一次 /var/www/bugzilla/checksetup.pl 确认已经成功

    七,其他可能问题

    1。收不到邮件,要修改 /etc/hosts 文件,添加相关的ip记域名

    2。bugzilla配置文件设置(参考,老版本,有问题可以试一下)

       1、在自己的bugzilla安装路径下(如本例为/root/bugzilla/bugzilla-2.18rc.2目录),找到文件   localconfig

       vilocalconfig

       2、找到

       $index_html=0

       改为:

       $index_html=1

    这样会生成一个index.html文件,该文件指向index.cgi

    3、找到

    $db_pass=‘’

    改为:

    $db_pass=‘123456’

    注意:单引号中为创建bugs用户的密码,一定与前面设置的相同

    修改后保存退出

    4、在bugzilla安装路径,输入命令:

    perlchecksetup.pl

    创建bugs数据库中的表

    最后将提示输入如下信息:

    • Enter the e-mail address of the administrator:

    输入:zhaods@btest.com

    说明:要求输入bugzilla管理员e-mail地址,注意是自己前面配置的邮箱帐户,这是登录bugzilla的帐户

    • You entered 'zhaods@btest.com'.Is this correct? [Y/n]

    说明:确认刚才输入的e-mail地址是否正确,回答 y 即可

    • Enter the real name of the administrator:

    输入:zhaods

    说明:输入真实姓名

    • Enter a password for the administrator account:

    输入:123

    说明:登录bugzilla的密码,可以与前面不同,但一定要记住

    • Please retype the password to verify:

    输入:123

    说明:进行密码确认

    (6)这时将出现如下信息:

    'zhaods@btest.com' is now set up as an administrator account.

    表示帐户创建成功

    (7)这时,可以到mysql数据库中查看

    A、输入命令:

    mysql-uroot-p123456

    进入mysql

    B、在mysql提示符下输入命令:

    Usebugs;

    连接bugs数据库

    C、在mysql提示符下输入命令:

    Showtables;

    可以看到bugs数据库中已经创建好了表

    (8)退出mysql即可

    一切OK了后,用邮件客户端工具(如:outlook/foxmail,或linux下的kmail等)来接收邮件,重启http和network,在IE里打开地址(如:http://192.168.1.188/bugzilla)即可看到bugzilla的界面...

    参考:http://www.cy-btesting.com/news01/news140.htm
         http://hi.baidu.com/godmap/blog/item/d56569dac15c5adab7fd485d.html

  • 在一台机器上打造四个操作系统(原创+痛苦)

    2007-09-30 15:31:21

     前不久,刚进一公司,作为新人,部门负责人突然要求我搭建测试环境,linux和windows,由于机器有限,要求在一台机器上安装四个系统2个windows(2k/xp),2个linux(red hat/red flag),虽说我这些系统都安装过,但也没有这样的安法(特别是解决他们的启动问题),知道这绝对不会是件很容易的事,以下证明了,确实是这样。。
     leader把话一说,搬来一台机器,丢了一碟光盘,走人了,要是一切正常还好,其实还有潜在问题,如:(光驱,硬盘,网卡,光盘),搞死我了。
     好了,闲话不多说,已经过去了,具体的操作如下。
    1.    80G(实际74.4G)的硬盘,首先要计划一下分区,安装顺序
                      1.windows 2000       20G
                      2.windows xp         20G
                      3.red hat server 4   15G
                      4.red flag server 5  15G
    了解一下linux系统中的磁盘结构
                       IDE设备: /dev/hdx
                       SCSI设备: /dev/sdx
                       最多4个主分区 hda1,2,3,4 或 sda1,2,3,4
                       逻辑分区从hda5开始计算(对应windows系统中的逻辑分区)
    我先安装Windows 2000,划硬盘为 C+D+空闲,C盘用来安装2000,D盘XP,空闲也就是逻辑分区要划三个分区,2个linux和一个交换分区(swap),swap给2个linux共用,一般为物理内存的2倍,依据上面的磁盘结构,
    linux系统的安装是从hda6开始的,还应该有hda7(swap用),hda8(另一linux系统用),hda5包括他们三个分区,为逻辑分区,那么他们对应上面的结构应为
                          OS               大小   windows表示  linux表示
                主分区
                      1.windows 2000       20G      C盘       hda1
                      2.windows xp         20G      D盘       hda2
               逻辑分区                                        hda5
                      3.red hat server 4   15G                hda6
                         swap(交换分区)                        hda7
                      4.red flag server 5  15G                hda8

    2.我是先安装2000在C盘,D盘安装XP,安好以后再安装red flag ,选用手动分区,在未划分的空闲分区上建  一个hda6(系统自动指派),指定15G,格式ext3,挂载点为 “/”,hda7(swap分区),无挂载点,大小为1024M(我机器内存为512M),选文件格式为swap即可;hda8(安装red hat),指定15G(或选全部未使用空间),格式ext3,挂载点为 “/”.

    3.依次安装好以后,启动,你会发现启动时,最后安装的一个linux系统会把前一个linux系统的启动引导覆盖了,不能进上一个linux系统,这样就要你进入系统编辑一下linux中的grub(系统引导工具)的配置文件grub.conf,进入最后安装的一个linux系统(对应red hat),用命令挂载hda6分区;如:mount /dev/hda6 /mnt/cd,成功后进入/mnt/cd目录,打开/etc/grub.conf文件,大致内容如下:
    *************************************************
    # grub.conf generated by anaconda
    #
    # Note that you do not have to rerun grub after making changes to this file
    # NOTICE:  You do not have a /boot partition.  This means that
    #          all kernel and initrd paths are relative to /, eg.
    #          root (hd0,5)
    #          kernel /boot/vmlinuz-version ro root=/dev/sda6
    #          initrd /boot/initrd-version.img
    #boot=/dev/sda
    default=0    *默认启动项,从0开始,如想启动hda8,就改为7
    timeout=5    *系统选择等待时间,可设置长一些
    gfxmenu (hd0,5)/boot/message
    title RedFlag (2.6.22.6-1)
        root (hd0,5)
        kernel /boot/vmlinuz-2.6.22.6-1 ro root=LABEL=/123 vga=788 splash=silent resume=/dev/sda2
        initrd /boot/initrd-2.6.22.6-1.img
    *************************************************
    将其中title 。。开头到末尾的字段复制一下
    如上面的:
    title RedFlag (2.6.22.6-1)
        root (hd0,5)
        kernel /boot/vmlinuz-2.6.22.6-1 ro root=LABEL=/123 vga=788 splash=silent resume=/dev/sda2
        initrd /boot/initrd-2.6.22.6-1.img
    退出,同样打开当前系统根目录下的/etc/grub.conf,粘贴内容以后到文件的末尾,紧跟上一个title..段落。
    保存,重启系统(*为我加的注释)
    4。基本就是这些,注意我上面提到的硬件问题(不出现更好,出现了看看下面)如:安装时光驱读不了linux系统盘,看一下光驱的接口,SATA或IDE接口
    有的linux不支持SATA 光驱,要换一个IDE光驱来安装,要是硬盘也是这种情况,将硬盘的bois里面的接口改为IED,再启动即可。。。
    5。后来,在我安装好以后居然连网卡都出现问题了,在windoes里面是好的,linux下不识别,现在的网卡大部分又是集成的,要么换用一个网卡,要么到网上下载一个驱动(费时间且有的还要编译),最终我就跟头反应换了一台机器,从新走前面所有的操作,网卡能被识别,我想终于一切OK了,后来发现连光盘-安装盘经过折腾也坏了,公司没有多的,建议我去刻录一个,连源文件都没有,要疯了,去要了一张光盘到网上down一个,刻录后安好了,再也不能这样对我了,最后才真正大功告成了,把东西收拾一下,拿到头那小声说了一声,“安好了,可以用了”,他头都没地“恩”了一声就完了。。我就回到座位上,work ,work,good work!。。。
  • 穷人与富人的13点区别(经典)

    2007-09-30 13:33:27

                                  富人和穷人的十三大经典差

        1.自我认知穷人:很少想到如何去赚钱和如何才能赚到钱,认为自己一辈子就该这样,不相信会有什么改变。富人:骨子里就深信自己生下来不是要做穷人,而是要做富人,他有强烈的赚钱意识,这已是他血液里的东西,他会想尽一切办法使自己致富。
     
        2.休闲穷人:在家看电视,为肥皂剧的剧情感动得痛哭流涕,还要仿照电视里的时尚打扮自己。富人:在外跑市场,即使打高尔夫球也不忘带着项目合同。

        3. 交际圈子穷人:喜欢走穷亲戚,穷人的圈子大多是穷人,也排斥与富人交往,久而久之,心态成了穷人的心态,思维成了穷人的思维,做出来的事也就是穷人的模式。大家每天谈论着打折商品,交流着节约技巧,虽然有利于训练生存能力,但你的眼界也就渐渐囿于这样的琐事,而将雄心壮志消磨掉了。富人:最喜欢交那种对自己有帮助,能提升自己各种能力的朋友。不纯粹放任自己仅以个人喜好交朋友。

        4.学习穷人:学手艺。富人:学管理。

        5. 时间穷人:一个享受充裕时间的人不可能挣大钱,要想悠闲轻松就会失去更多挣钱的机会。穷人的时间不值钱的,有时甚至多余,不知道怎么打发,怎么混起来才不烦。如果你可以因为买一斤白菜多花了一毛钱而气恼不已,却不为虚度一天而心痛,这就是典型的穷人思维。富人:一个人无论以何种方式挣钱,也无论钱挣得是多是少,都必须经过时间的积淀。富人的玩也是一种工作方式,是有目的的。富人的闲,闲在身体,修身养性,以利再战,脑袋一刻也没有闲着;穷人的闲,闲在思想,他手脚都在忙,忙着去麻将桌上多摸几把。

        6.归属感穷人:是颗螺丝钉。穷人因为自身的卑微,缺少安全感,就迫切地希望自己从属并依赖于一个团体。于是他们以这个团体的标准为自己的标准,让自己的一切合乎规范,为团体的利益而工作,奔波,甚至迁徙。对于穷人来说,在一个著名的企业里稳定地工作几十年,由实习生一直干到高级主管,那简直是美妙得不能再美妙的理想了。富人:那些团体的领导者通常都是富人,他们总是一方面向穷人灌输:团结就是力量,如果你不从属于自己这个团体,你就什么都不是,一文不名。但另一方面,他们却从来没有停止过招兵买马,培养新人,以便随时可以把你替换。

        7. 投资及对待财富穷人:经典观点就是少用就等于多赚。比如开一家面馆,收益率是100%,投入2万,一年就净赚2万,对穷人来说很不错了。穷人即使有钱,也舍不得拿出来,即使终于下定决心投资,也不愿冒风险,最终还是走不出那一步。穷人最津津乐道的就是鸡生蛋,蛋生鸡,一本万利……但是建筑在一只母鸡身上的希望,毕竟是那样脆弱。富人:富人的出发点是万本万利。同样的开面馆,富人们会想,一家面馆承载的资本只有2万,如果有1亿资金,岂不是要开5000家面馆?要一个一个管理好,大老板得操多少心,累白多少根头发呀?还不如投资宾馆,一个宾馆就足以消化全部的资本,哪怕收益率只有20%,一年下来也有 2000万利润啊!
    8.激情

        能不能干成大事,首先要看有没有激情穷人:没有激情。他总是按部就班,很难出大错,也绝不会做最好。没有激情就无法兴奋,就不可能全心全意投入工作,大部分的穷人不能说没有激情,但他的激情总是消耗在太具体的事情上;上司表扬了,他会激动;商店打折了,他会激动;电视里破镜重圆了,他的眼泪一串一串往XL,穷人有的只是一种情绪。富人:“燕雀安知鸿鹄之志?”“王侯将相,宁有种乎?”有这样的激情,穷人终将不是穷人!激情是一种天性,是生命力的象征,有了激情,才有了灵感的火花,才有了鲜明的个性,才有了人际关系中的强烈感染力,也才有了解决问题的魅力和方法。

        9. 自信穷人:穷人的自信要通过武装到牙齿,要通过一身高级名牌的穿戴和豪华的配饰才能给他们带来更多的自信,穷人的自信往往不是发自内心和自然天成的。富人:李嘉诚在谈到他的经营秘诀时说:“其实也没什么特别的,光景好时,决不过分乐观;光景不好时,也不过度悲观”。其实就是一种富人特有的自信。自信才能不被外力所左右,自信才可能有正确的决定。

        10.习惯穷人:有个故事,一个富人送给穷人一头牛。穷人满怀希望开始奋斗。可牛要吃草,人要吃饭,日子很难。穷人于是把牛卖了,买了几只羊,吃了一只,剩下的来生小羊。可小羊迟迟没有生下来,日子又艰难了。穷人又把羊卖了,买成鸡。想让鸡生蛋赚钱为生,但是日子并没有改变,最后穷人把鸡也杀了,穷人的理想彻底崩溃了。这就是穷人的习惯。富人:据一个投资专家说,富人成功秘诀就是:没钱时,不管多困难,也不要动用投资和积蓄,压力使你找到赚钱的新方法,帮你还清账单。这是个好习惯。性格形成习惯,习惯决定成功。

        11. 上网络穷人:上网聊天。穷人聊天,一是穷人时间多,二是穷人的嘴天生就不能闲着。富人讲究荣辱不惊,温柔敦厚,那叫涵养,有涵养才能树大根深。穷人就顾不了那么多,成天受着别人的白眼,浑身沾满了鸡毛蒜皮,多少窝囊气啊,说说都不行?聊天有理!富人:上网找投资机会。富人上网,更多的是利用网络的低成本高效率,寻找更多的投资机会和项目,把便利运用到自己的生意中来。

        12.消费花钱穷人:买名牌是为了体验满足感,最喜欢试验刚出来的流行时尚产品,相信贵的必然是好的。富人:买名牌是为了节省挑选细节的时间,与消费品的售价相比,他们更在乎产品的质量,比如会买15元的纯棉T恤,也不会买昂贵的莱卡制品。

        13.回帖穷人:一般穷人都只看帖,不回帖。想的是:我回帖自己不会增加财富。富人:一般富人看帖后觉得有道理就回帖。想的是:我回一帖,将来自己可能会赚到更多的回帖。

        来源:浙江在线新闻网站
  • solaris 10在vmware中的安装图解(转)

    2007-05-01 01:31:01

    目前我遇到安装时间最长的系统,搞了4个多小时,感谢原创呕心沥血之作,实践成功!

    原文链接:http://www.chinaunix.net/jh/6/524594.html

    转载请注明作者名及原文出处

  • Samba使用大全(绝对经典)

    2007-05-01 01:11:19

    Samba使用大全(绝对经典)

    (一)samba服务器
    Samba协议基础
    在NetBIOS 出现之后,Microsoft就使用NetBIOS实现了一个网络文件/打印服务系统,这个系统基于NetBIOS设定了一套文件共享协议, Microsoft称之为SMB(Server Message Block)协议。这个协议被Microsoft用于它们Lan Manager和Windows NT服务器系统中,实现不同计算机之间共享打印机、串行口和通讯抽象(如命名管道、邮件插槽等)。
    随着 Internet的流行,Microsoft希望将这个协议扩展到Internet上去,成为Inter net上计算机之间相互共享数据的一种标准。因此它将原有的几乎没有多少技术文档的SMB协议进行整理,重新命名为 CIFS(Common Internet File System),并打算将它与NetBIOS相脱离,试图使它成为Internet上的一个标准协议。
    因此,为了让Windows和Unix计算机相集成,最好的办法即是在Unix计算机中安装支持SMB/CIFS协议的软件,这样 Windows客户就不需要更改设置,就能如同使用Windows NT服务器一样,使用Unix计算机上的资源了。Samba是用来实现SMB的一种软件,它的工作原理是,让NETBIOS(Windows95网络邻居的通讯协议)和SMB(Server Message Block)这两个协议运行于TCP/IP通信协议之上,并且使用Windows的NETBEUI协议让Unix计算机可以在网络邻居上被Windows 计算机看到。它的功能有:
    1.共享Linux磁盘给Win95/NT
    2.共享Win95/NT磁盘给Linux机器
    3.共享Linux打印机给win95/NT
    4.共享win95/NT打印机给Linux机器。
    同时它的文件服务功能比NT系统还高,而且在Windows2000之前就提供了用户磁盘空间限制的功能。
    Samba的配置
    在我写这篇文章的时候,Samba的版本已经到了2.2.2了,需要的可以通过ftp: //samba.org/pub/samba/Binary_Pa...011013.i386.rpm得到最新的rpm安装包。然后执行rpm -Uvh samba-2.2.2-20011013.i386.rpm来安装或者升级它。安装完后,可以看见/etc/samba这么一个目录,里面存放和 Samba相关的一些文件,最主要的是smb.conf,现在根据配置文件讲讲它的配置选项:
    全局设置:
    workgroup = MYGROUP
    定义该Samba服务器所在的工作组或者域(如果下面的security=domain的话)。
    server string = MY Samba Server
    设定机器的描述,当我们通过网络邻居访问的时候可以在备注里面看见这个内容,而且还可以使用samba设定的变量。这里说一下samba定义的变量:
    %S = 当前服务名(如果有的话)
    %P = 当前服务的根目录(如果有的话)
    %u = 当前服务的用户名(如果有的话)
    %g = 当前用户说在的主工作组
    %U = 当前对话的用户名
    %G = 当前对话的用户的主工作组
    %H = 当前服务的用户的Home目录
    %v = Samba服务的版本号。
    %h = 运行Samba服务机器的主机名
    %m = 客户机的NETBIOS名称
    %L = 服务器的NETBIOS名称
    %M = 客户机的主机名
    %N = NIS服务器名
    %p = NIS服务的Home目录
    %R = 说采用的协议等级(值可以是CORE, COREPLUS, LANMAN1, LANMAN2,NT1)
    %d = 当前服务进程的ID
    %a = 客户机的结构(只能识别几项:Samba,WfWg,WinNT,Win95)
    %I = 客户机的IP
    %T = 当前日期和时间
    hosts allow = 网络或者主机
    这里可以设置允许访问的网络和主机IP,比如允许192.168.1.0/24和192.168.2.1/32访问,就用host allow = 192.168.1. 192.168.2.1 127.0.0.1(网络注意后面加”.”号,各个项目间用空格隔开,记得把本机也加进去)
    printcap name = printcapFile
    到printcapFile(一般是/etc/printcap)这个文件中取得打印机的描述信息
    load printers = yes|no
    设定是否自动共享打印机而不用设置下面的[printer]一节的相关东西
    printing = PrintSystemType
    定义打印系统的类型,缺省是lprng,可选项有:bsd, sysv, plp, lprng, aix, hpux, qnx。
    guest account = pcguest
    定义游客帐号,而且需要把这个帐号加入/etc/passwd,不然它就用缺省的nobody
    log file = LogFileName
    定义记录文件的位置LogFileName(一般是用/var/log/samba/%m.log)
    max log size = size
    定义记录文件的大小size(单位是KB,如果是0的话就不限大小)
    security = security_level
    定义Samba的安全级别,按从低到高分为四级:share,user,server,domain。它们对应的验证方式如下:
    share:没有安全性的级别,任何用户都可以不要用户名和口令访问服务器上的资源。
    user:samba的默认配置,要求用户在访问共享资源之前资源必须先提供用户名和密码进行验证。
    server:和user安全级别类似,但用户名和密码是递交到另外一个服务器去验证,比如递交给一台NT服务器。如果递交失败,就退到user安全级。
    domain:这个安全级别要求网络上存在一台Windows的主域控制器,samba把用户名和密码递交给它去验证。
    后面三种安全级都要求用户在本Linux机器上也要系统帐户。否则是不能访问的。
    password server = <NT-Server-Name>
    当前面的security设定为server或者domain的时候才有必要设定它。
    password level = n
    这是设定针对一些SMB客户像OS/2之类而设的,这样的系统在发送用户密码的时候,会把密码转换成大写再发送,这样就和samba的密码不一致,这个参数可以设定密码里允许的大写字母个数,这样samba就根据这个数目对接收到的密码进行大小写重组,以重组过的密码尝试验证密码的正确性。n越大,组合的次数就越多,验证时间就越长,安全性也会因此变得越低。例如n=2,用户的密码是abcd,但发送出去其实是ABCD,samba就会把这个 ABCD进行大小写重组,组合后的结果可以是: Abcd, aBcd, abCd, abcD, abcd, ABcd, AbCd, AbcD,aBCd,aBcD,abCD。
    所以如果没有必要,就把n定为是零。这样的话samba只尝试两次,一个是接收到的密码,另一个尝试的是这个密码都是小写的情况。
    username level = n
    这个是对于用户名的情况,说明和上面一项类似。
    encrypt passwords = yes|no
    设置是否对密码进行加密,samba本身有一个密码文件/etc/samba/smbpasswd,如果不对密码进行加密则在验证会话期间客户机和服务器之间传递的是明文密码,samba直接把这个密码和Linux里的/etc/samba/smbpasswd密码文件进行验证。但是在 Windows 95 OS/R2以后的版本和Windows NT SP3以后的版本缺省都不传送明文密码,要让这些系统能传送明文密码必须在其注册表里更改,比较麻烦,好的方法就是把这里的这个开关设置为yes。
    smb passwd file = smbPasswordFile
    设置存放samba用户密码的文件smbPasswordFile(一般是/etc/samba/smbpasswd)。
    ssl CA certFile = sslFile
    当samba编译的时候支持SSL的时候,需要指定SSL的证书的位置(一般在/usr/share/ssl/certs/ca-bundle.crt)。
    unix password sync = yes|no
    passwd program = /usr/bin/passwd %u
    passwd chat = *New*UNIX*password* %n
    *ReType*new*UNIX*password* %n
    *passwd:*all*authentication*tokens*updated*successfully*
    这三项设置能否从windows的应用程序修改unix系统的用户密码
    username map = UsermapFile
    指定用户映射文件(一般是/etc/samba/smbusers),当我们在这个文件里面指定一行root = administrator admin的时候,客户机的用户是admin或者administrator连接时会被当作用户root看待。
    include = MachineConfFile
    指定对不同机器的连接采用不同的配置文件MachineConfFile(一般为了灵活管理使用/etc/samba/smb.conf.%m,由于采用了samba的变量,把配置文件和客户机的NETBIOS名称关联起来,能很容易地控制这些客户机的权限和设置)。
    socket ōptions = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
    这个是网络socket方面的一些参数,能实现最好的文件传输性能。相关的选项还有SO_KEEPALIVE、 SO_REUSEADDR、SO_BROADCAST、IPTOS_LOWDELAY、IPTOS_THROUGHPUT、SO_SNDLOWAT (*)、SO_RCVLOWAT(*),带*号的要指定数值。一般如果在本地网络,就只用IPTOS_LOWDELAY,如果是有一个本地网络的,就用 IPTOS_LOWDELAY TCP_NODELAY,如果是广域网络,就试试IPTOS_THROUGHPUT。
    interfaces = interface1 interface2
    如果有多个网络接口,就必须在这里指定。如interface = 192.168.12.2/24 192.168.13.2/24
    remote browse sync = host(subnet)
    这里指定浏览列表同步信息从哪里取得, 如果用host(比如192.168.3.25)或者整个子网(192.168.5.255)。

    ★这里说明一下什么是浏览(Browse):
    在SMB 协议中,计算机为了访问网络资源,就需要了解网络上存在的资源列表(例如在Windows下使用网络邻居查看可以访问的计算机),这个机制就被称为浏览(Browse)。虽然SMB协议中经常使用广播的方式,但如果每次都使用广播的方式了解当前的网络资源(包括提供服务的计算机和各个计算机上的服务资源),就需要消耗大量的网络资源和浪费较长的查找时间,因此最好在网络中维护一个网络资源的列表,以方便查找网络资源。只有必要的时候,才重新查找资源,例如使用Windows下的查找计算机功能。
    但没有必要每个计算机都维护整个资源列表,维护网络中当前资源列表的任务由网络上的几个特殊计算机完成的,这些计算机被称为Browser,这些Browser通过记录广播数据或查询名字服务器来记录网络上的各种资源。
    Browser 并不是事先指定的计算机,而是在普通计算机之间通过自动进行的推举产生的。不同的计算机可以按照其提供服务的能力,设置在推举时具备的不同权重。为了保证一个Browser停机时网络浏览仍然正常,网络中常常存在多个Browser,一个为主Browser(Master Browser),其他的为备份Browser。★

    remote announce = host(subnet)
    指定这些机器向网络宣告自己,而不是有Browser得到。
    local master = yes|no
    这个参数指定nmbd是否试图成为本地主浏览器,默认值是yes,如果设为no则samba服务器就永远都不会成为本地主浏览器。但即使设置了yes,也不等于samba服务器就会成为本地主浏览器。只是参与本地主浏览器选择。
    os level = n
    n的值是个整数,决定了nmbd是否有机会成为本地广播区域的工作组里的本地主浏览器,默认值是零,零则意味着nmbd失去浏览选择。如果要nmbd更有机会成为本地主浏览器的话,可以设为65。
    domain master = yes|no
    这个参数让nmbd成为一个域浏览器,取得各本地主浏览器的浏览列表,并将整个域的浏览列表递交给各本地主浏览器。
    preferred master = yes|no
    这个参数指定nmbd是否是工作组里的首要的主浏览器,如果指定为yes,nmbd在启动的时候就强制一个浏览选择。

    ★Domain master和local master
    工作组和域这两个概念在进行浏览时具备同样的用处,都是用于区分并维护同一组浏览数据的多个计算机。事实上他们的不同在于认证方式上,工作组中每台计算机都基本上是独立的,独立对客户访问进行认证,而域中将存在一个(或几个)域控制器,保存对整个域中都有效的认证信息,包括用户的认证信息以及域内成员计算机的认证信息。浏览数据的时候,并不需要认证信息,Microsoft将工作组扩展为域,只是为了形成一种分级的目录结构,将原有的浏览和目录服务相结合,以扩大Mircrosoft网络服务范围的一种策略。
    工作组和域都可以跨越多个子网,因此网络中就存在两种Browser,一种为 Domain Master Browser ,用于维护整个工作组或域内的浏览数据,另一种为Local Master Browser,用于维护本子网内的浏览数据,它和Domain Master Browser通信以获得所有的可浏览数据。划分这两种Browser 主要是由于浏览数据依赖于本地网广播来获得资源列表,不同子网之间只能通过浏览器之间的交流能力,才能互相交换资源列表。
    但是,为了浏览多个子网的资源,必须使用NBNS名字服务器的解析方式,没有NBNS的帮助,计算机将不能获得子网外计算机的NetBIOS名字。Local Master Browser也需要查询NetBIOS名字服务器以获得Domain Master Browser的名字,以相互交换网络资源信息。
    由于域控制器在域内的特殊性,因此域控制器倾向于被用做Browser,主域控制器应该被用作Domain Master Browser,他们在推举时设置的权重较大。★

    preserve case = yes|no
    short preserve case = yes|no
    指定拷贝DOS文件的时候保持大小写,缺省是no
    default case = lower|upper
    所有的DOS文件的缺省是大写还是小写
    case sensitive = yes|no
    大小写敏感,一般是no,不然会出现一些问题。
    共享设置:

    ★共享资源:
    每个SMB服务器能对外提供文件或打印服务,每个共享资源需要被给予一个共享名,这个名字将显示在这个服务器的资源列表中。如果一个资源的名字的最后一个字母为$,则这个共享名就为隐藏共享,不能直接表现在浏览列表中,而只能通过直接访问这个名字来进行访问。在SMB协议中,为了获得服务器提供的资源列表,必须使用一个隐藏的资源名字IPC$来访问服务器,否则客户无法获得系统资源的列表。★

    共享设置中有个比较奇怪的段:
    [homes],在smb.conf文件中一般没有对这个目录的设定特定内容比如路径等。当客户机发出服务请求时,就在smb.conf文件的其它部分查找友特定内容的服务。如果没有发现这些服务,并且提供了homes段时,那么就搜索密码文件得到用户的Home目录。通过Homes段, Samba可以得到用户的Home 目录并使之共享。下面是这个段的最基本的几个设置。
    [homes]
    comment=Home Directory
    browseable=no
    writable=yes
    比较正常的共享的配置如下例:
    [MyShare]
    comment = grind’s file
    path = /home/grind
    allow hosts = host(subnet)
    deny hosts = host(subnet)
    writable = yes|no
    user = user(@group)
    valid users = user(@group)
    invalid users = user(@group)
    read list = user(@group)
    write list = user(@group)
    admin list = user(@group)
    public = yes|no
    hide dot files = yes|no
    create mode = 0755
    directory mode = 0755
    sync always = yes|no
    short preserve case = yes|no
    preserve case = yes|no
    case sensitive = yes|no
    mangle case = yes|no
    default case = upper|lower
    force user = grind
    wide links = yes|no
    max connections = 100
    delete readonly = yes|no
    其中[]里面的MyShare指定共享名,一般就是网络邻居里面可以看见的文件夹的名字。
    comment指的是对改共享的备注。
    path 指定共享的路径,其中可以配合samba变量使用。比如你可以指定path=/data/%m,这样如果一台机器的NETBIOS名字是grind,它访问MyShare这个共享的时候就是进入/data/grind目录,而对于NETBIOS名是glass的机器,则进入/data/glass目录。
    allow hosts和deny hosts和前面的全局设置的方法一样这里不再提及。
    writeable指定了这个目录缺省是否可写,也可以用readonly = no来设置可写。
    user设置所有可能使用该共享资源的用户,也可以用@group代表group这个组的所有成员,不同的项目之间用空格或者逗号隔开。
    valid users指定能够使用该共享资源的用户和组。
    invalid users指定不能够使用该共享资源的用户和组。
    read list 指定只能读取该共享资源的用户和组。
    write list指定能读取和写该共享资源的用户和组。
    admin list指定能管理该共享资源(包括读写和权限赋予等)的用户和组。
    public指明该共享资源是否能给游客帐号访问,这个开关有时候也叫guest ok,所以有的配置文件中出现guest ōk = yes其实和public = yes是一样的。
    hide dot files指明是不是像unix那样隐藏以“.”号开头的文件。
    create mode指明新建立的文件的属性,一般是0755。
    directory mode指明新建立的目录的属性,一般是0755。
    sync always指明对该共享资源进行写操作后是否进行同步操作。
    short preserve case指明不管文件名大小写。
    preserve case指明保持大小写。
    case sensitive指明是否对大小写敏感,一般选no,不然可能引起错误。
    mangle case指明混合大小写。
    default case指明缺省的文件名是全部大写还是小写。
    force user强制把建立文件的属主是谁。如果我有一个目录,让guest可以写,那么guest就可以删除,如果我用force user= grind强制建立文件的属主是grind,同时限制create mask = 0755,这样guest就不能删除了。
    wide links指明是否允许共享外符号连接,比如共享资源里面有个连接指向非共享资源里面的文件或者目录,如果设置wide links = no将使该连接不可用。
    max connections = n设定同时连接数是n。
    delete readonly指明能否删除共享资源里面已经被定义为只读的文件。
    有两类特殊的共享,分别是光驱和打印机
    光驱的共享设置:
    [cdrom]
    comment = grind’s cdrom
    path = /mnt/cdrom
    public = yes
    browseable = yes
    root preexec = /bin/mount -t iso9660 /dev/cd0 /mnt/cdrom
    root postexec = /bin/umount /mnt/cdrom
    这里root preexec指明了连接时用root的身份运行mount命令,而root postexec则指明了断开时用root身份运行umount,有效实现了对光驱的共享。
    打印机共享的设置:
    [printers]
    path = /var/spool/samba
    writeable = no
    guest ōk = yes
    printable = yes
    printer 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/.config
    eval `cat $config_file`
    share=`echo $share | sed "s/[]///g"`
    if [ "$user" != "" ]; then
    usercmd="-U"
    else
    usercmd=""
    fi
    if [ "$workgroup" != "" ]; then
    workgroupcmd="-W"
    else
    workgroupcmd=""
    fi
    if [ "$translate" = "yes" ]; then
    command="translate ; print -"
    else
    command="print -"
    fi
    cat | /usr/bin/smbclient "$share" "$password" -E ${hostip:+-I}
    $hostip -N -P $usercmd "$user" $workgroupcmd "$workgroup"
    -c "$command" 2>/dev/null
    3.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 1
    cat ./mf.cfg $MF_RULES | m4 > $TMP_FILE
    if [ -n "$DEBUG" ]; then
    case "$DEBUG" in
    2)
    DEBUGSTRING="--debug --debug"
    ;;
    3)
    DEBUGSTRING="--debug --debug --debug"
    ;; 4)
    DEBUGSTRING="--debug --debug --debug --debug"
    ;;
    5)
    DEBUGSTRING="--debug --debug --debug --debug --debug"
    ;;
    *)
    DEBUGSTRING="--debug"
    ;;
    esac
    else
    DEBUGSTRING=""
    fi
    # Run magic filter
    /usr/bin/magicfilter-t $TMP_FILE $DEBUGSTRING $* < /dev/stdin
    RETVAL=$?
    if [ -f $TMP_FILE ]; then
    rm -f $TMP_FILE;
    fi
    ;;
    esac
    else
    DEBUGSTRING=""
    fi
    # Run magic filter
    /usr/bin/magicfilter-t $TMP_FILE $DEBUGSTRING $* < /dev/stdin
    RETVAL=$?
    if [ -f $TMP_FILE ]; then
    rm -f $TMP_FILE;
    fi
    if [[ $RETVAL -eq 0 ]]; then
    TERMINATION=`grep '^[[:space:]]*#[[:space:]]*TERMINATION=' ./mf.cfg | se
    d 's/^[[:space:]]*#[[:space:]]*TERMINATION=//;'`
    if [ -n $TERMINATION ]; then
    echo -n -e $TERMINATION;
    fi
    fi
    同时需要在/var/spool/lpd/grind下面有这么两个文件:mf.cfg和scrīpt.cfg。
    mf.cfg的内容是:
    define(TEXTfilter, text ""
    14 )dnl
    define(PSfilter, `filter /usr/share/printconf/util/mf_postscrīpt_wrapper --mfomatic -d lj5gray-75168.foo')dnl
    scrīpt.cfg的内容是:
    share="//glass/HPLaserj" #glass机器上面共享的打印机
    hostip="192.168.1.123" #glass这台机器的IP
    user=""
    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 glass
    Sharename Type Comment
    --------- ---- -------
    IPC$ IPC 远程 IPC
    HPLaserJ Printer HP LaserJet 6P
    ADMIN$ Disk 远程管理
    littlep Disk
    C$ Disk 默认共享
    Server Comment
    --------- -------
    GLASS
    GRIND
    Workgroup Master
    --------- -------
    BLUESUN GLASS
    WORKGROUP HEIHEI
    第一段列举了该机器(glass)上面的共享资源,第二段列举了glass所在的工作组里面所有提供samba服务的机器,第三列举了其他工作组提供 browse服务的Master机器(关于Master和Browse服务可以参考我的前面一篇samba使用大全-samba服务器)。
    使用网络资源:
    smbclient //IP或者NETBIOS名称/共享资源名 [-U 用户名]
    命令执行效果如下:
    smbclient //glass/littlep
    added interface ip=192.168.1.123 bcast=192.168.1.255 nmask=255.255.255.0
    Got a positive name query response from 192.168.1.123 (192.168.1.123)
    Password:
    Domain=[BLUESUN] ōS=[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 directory
    path = /home/myshare
    writable = yes
    public = yes
    create mode = 0755
    directory mode = 0755
    force 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

    有分号的是注释

    meteorsky

    我发现force user = ...这一行的作用不是“force user强制把建立文件的属主是谁。如果我有一个目录,让guest可以写,那么guest就可以删除,如果我用force user= grind强制建立文件的属主是grind,同时限制create mask = 0755,这样guest就不能删除了”这个意思,而是任何登陆的用户进入这个目录时就被当作root,作为root当然可以进行任何操作,登陆身份的改变是在刚登陆之后。
    我在linux系统中察看当前连接到samba的用户id时发现:不管我用那一个用户登陆samba服务器,只要我进入MyShare目录,当前的用户id就变为root,

    可是,这样的话,我就无法实现限制用户在指定目录里只能写,不能删除的权限了,这样的权限限制在windows的ntfs文件系统中是很容易实现的,

    不知道在samba中如何才能实现这样的限制,抑或根本就实现不了?
    还请大家帮忙!!

    Samba服务器的使用

    一、Samba基础

    1、 简介
    1).SMB协议
    SMB(Server Message
    Block,服务信息块)协议可以看作是局域网上的共享文件/打印机的一种协议,它可以为网络内部的其它Windows和Linux机器提供文件系统、打印服务或是其他一些信息。
    SMB的工作原理是让NetBIOS(Win95网络邻居通信协议)与SMB这两种协议运行在TCP/IP的通信协议上,且使用NetBIOS
    nameserver让用户的Linux机器可以在Windows的网络邻居里被看到,所以就可以和Win95/NT主机在网络上相互沟通,共享文件与服务了。
    目前Microsoft正在开发一种新的文件和打印共享协议--CIFS(Common Internet Files
    System,通用网络文件协议),该协议支持TCP/IP和DNS等协议,能在www上支持文件和打印共享。在CIFS下服务器实际上是DNS 名,由主机名和域名组成。这种变化是从NetBIOS命令结构中分离出来的。目前CIFS还没有得到广泛的应用。现在在Linux和Win95/NT之间的文件共享注意还是 SMB和NFS。

    2).什么是Samba
    Samba是用来实现SMB的一种软件,由澳大利亚的Andew Tridgell开发,是一种在Linux(Unix)环境下运行的免费软件。
    通过使用Samba,Linux系统可以实现如下功能:
    文件服务和打印服务(在Linux和Win95/NT之间系统之间提供打印机和磁盘的共享)
    登陆服务器,使用Windows客户能注册到网络上
    作为主要域控制器和域中成员的功能
    WINS服务器以及浏览功能
    支持SSL(Secure Socket Layer)
    支持SWAT (Samba Web Administration Tool )
    Samba除了支持Linux(Unix)和Win95/NT之外,还支持DOS、IBM OS/2、Macintosh 等操作系统。

    在Samba的软件包中所包括的组件参看表1-1:

    表1-1 Samba软件包的组成列表

    2、Samba的记录文件
    Samba为smbd、nmbd和访问Samba的客户提供了下列记录文件,分别记录有关smbd、nmbd运行信息和每个客户的访问信息:
    记录smbd 信息
    /var/log/samba/log.smb
    记录nmbd信息
    /var/log/samba/log.nmb
    记录客户访问信息
    /var/log/samba/log.%m

    3、启用Samba服务器
    Samba的运行包含两个后台守护进程:smbd和nmbd,它们是Samba的核心,在全部时间内运行。nmbd
    程序使得通过企图计算机可以浏览Linux服务器。Smbd守护进程在SMB软件包到达网上时对它们进行处理,并且为使用或共享它的资源与 Linux进行协调。如果指定的是一个文件,该资源就是一个文件;而一个打印机请求就要求访问一台打印机。实际上,在请求访问打印机时,Smbd把要打印的信息存储到打印机队列中;在请求访问一个文件时,Smbd把数据发到内核,最后将它存到磁盘上。
    你可以从inetd选择启动它们,但这种方法会使Samba变慢。建议使用下面命令可以启动这两个进程:
    /etc/rc.d/init.d/smb start
    /usr/sbin/samba start
    如果想要在系统启动时自动启动samba,可以使用/usr/sbin/turboservice命令,选中其中的"SMB (Windows)File
    Services"。

    二、Samba配置及使用
    1、定制文件/etc/smb.conf
    在安装完Samba后,还需要定制它的配置文件smb.conf,才能使Samba正常工作以符合要求。由于SMB是一个非常复杂的协议,所以配置Samba的工作也是比较繁琐的,大约有超过170条配置项出现在smb.conf文件中。

    1).smb.conf的语法
    smb.conf文件有一个清晰的语法结构,与Windows的*.ini文件十分类似。如下所示:
    该文件被分成几部分,每一部分都包括几个参数,用来定义Samba输出的共享及其详细操作。

    文件被分隔成若干节,每一节都由一个被方括号括起来的标识开始(例如,[global]、[home]、[printers]),每一个配置参数或是一个全局参数(影响或控制整个服务器),或是一个服务参数(影响或控制服务器提供的某项服务 )。
    global部分定义的参数用来控制Samba的总特性。除global部分外,每一部分都定义了一个专门的服务。
    你可以使用下面的语句来指定一个参数:
    name=VALUE
    name可以是一个单词或者用空格隔开的多个单词。VALUE可以是布尔值(ture或false;yes或no;1或0)、数字或字符串。
    注释以分号开头,可以单独一行,也可以跟在一条语句之后。
    通过在一行的最后一个字符后加反斜杠"\\"可以将一行分成多行。
    每一部分的名字和参数都不区分大小写,例如,参数browseable=yes与browseable=YES是完全等价的

    2).smb.conf文件的功能
    smbd和nmbd这两个守护进程启动时(通常为系统引导时)读配置文件smb.conf,这一配置文件向这两个守护进程说明输出
    什么共享、共享输出给谁以及如何进行输出等等。
    因为安全问题是最重要的,所以你必须指定哪些计算机可以访问这一共享,smb.conf文件可以很灵活的明确指定每一服务有哪些用户可以访问。随着Linux网络的增大,这一控制越来越重要。

    3).smb.conf文件结构
    smb.conf文件主要包括三部分:
    global(全局)参数
    directory shares (目录共享)部分--包括标准的[home]部分
    printer shares(打印共享)部分
    其中,global参数用来设置整个系统的规则;[home]部分和[printer]部分是服务的特定例程,services(服务)这一术语是网络客户机共享或输出的目录和打印机的Samba术语。这些服务定义了哪些用户可以访问这些目录和打印机以及如何访问这些目录和打印机。

    清单1-1给出了smb.conf文件的一个简单的例子。
    清单1-1 smb.conf文件的一个简单示例
    [global]
    netbios name = FRODO
    workgroup = UAB-TUCC
    server string = John Blair\'s Linux Box
    security = user
    printing = lprng
    log file = /var/log/samba
    lock directory = /var/lock/samba
    [homes]
    comment = Home Directory
    browseable = no
    read ōnly = no
    [printers]
    browseable = no
    guest ōk = yes
    printable = yes
    在 [global] 段中设置了主机名称, 主机所在的工作组名称和浏览时可看到的对本机的描述。安全参数告诉 Samba
    使用"用户级别"的安全保护方式。 SMB 有两种安全模式: 共享级别, 将资源加密码控制;用户级别, 可以使用某一用户的所有资源。
    这里不能详细解释两种方式的微妙差别, 但大部分情况下, 你会想用用户级别安全控制。
    [global] 段中还定义了日志文件目录和锁定文件的位置。日志文件在解决故障和完善系统时是很有用的,锁定文件可以阻止多个用户同时修改相同的文件。
    [homes] 段中的设置控制了每一个用主目录的共享权限。comment 参数指定的字符串在你浏览本机资源时出现在指定资源的旁边。
    browseable 参数控制一项服务是否能够出现在网络资源浏览表中。这里是一些非直觉的东西, browseable = no
    意味着这个目录将在浏览时显示为要验证的用户名称。 举例来说, 指定 browseable = no, 当我浏览这个 Samba 服务器时,
    我将看到一个名称为 cuckoo 的共享目录。当指定 browseable = yes 时, 我将看到一个名为 homes 和 cuckoo
    的共享目录。设置 read ōnly = no 将允许通过验证的用户对主目录有写入的权限。 但是, 如果他们的主目录的 UNIX 权限 不允许写入,
    那么他们就没有写的权限。 无论 UNIX 的权限怎样, 设置 read ōnly = yes 后, 他们的主目录是只读的。
    printing 命令描述了本地打印系统类型, 这可以让 Samba 知道怎样提交打印任务, 显示打印队列, 删除打印任务和其它操作。
    如果打印系统是 Samba 所不知道的, 你必须在每次执行打印操作时指明命令。
    清单中[printing]一段配置允许任何能够登录到 Samba 服务器的用户使用 printcap 中出现的 每一台打印机。 正常情况下,
    如果使用用户级别安全控制, guest ōk = yes 并不能授权每一个用户(使用系统)。 每一个打印服务必须定义为 printable =
    yes。
    下面的一段配置片断增加了一个命名为 public 的共享目录, 直接对匿名FTP目录有只读的 权限。 你必须在客户机上建立打印机驱动程序。 对于
    Windows 95 和 Windows NT 客户机, 你可以使用printer name 和 printer driver命令自动建立打印驱动。

    [public]
    comment = Public FTP Directory
    path = /home/ftp/pub
    browseable = yes
    read ōnly = yes
    这段描述并不是解释一些微妙的主题,
    例如用户级和共享级安全性的区别或者其它的授权认证主题。它仅仅让我们看到了Samba这座冰山的一角。另一方面,这是一个良好的例子,从中我们可以了解产生一个简单但可工作的smb.conf文件是多么容易。
    下面,我们举另一个例子说明如何通过Samba把Linux的打印机共享给Windows机器。
    为了共享Linux的打印机给Windows机器,必须确定Linux机器上的打印机已经设置好。如果能从Linux上打印,那么设定Samba 的打印机共享是很简便的。只要根据自己的情况,对smb.conf文件有关打印的部分进行修改就可以了。在修改中唯一需要注意的是确保打印机的路径要与 /etc/printcap中的spool目录相符合,然后就可以在Win95/NT上配置网络打印机了(关于如何在Win95/NT上配置网络打印机,本文不做介绍)。

    4).标准smb.conf文件清单
    在Samba的软件包里的example目录中有一个缺省的配置文件 smb.conf.defaults。我们可以对它做适当修改后拷贝到你的安装目录下的lib目录里,并改名为smb.conf。清单1-2是Samba 系统提供的标准的配置文件。为方便读者阅读,本文翻译了文件中的注释并适当的添加了解释。

    清单1-2 标准smb.conf 文件
    # 这是服务器的主要配置文件。您应该阅读smb.conf(5)的用户手册以了解下面
    # 列出的每一个选项。Samba有很多的选项,它们之中的大多数并没有出现在这
    # 个例子中。
    #
    # 以分号";"或井号"#"开始的每一行都是注释,在执行时被忽略。在本例中
    # 我们使用"#"作为注释而使用";"作为可选配置的注释。
    #
    # 注意:无论何时修改了这个配置文件,您都要运行"testparm"命令来检查您所
    # 做的修改有没有基本的语法错误。
    #
    #=================== 全局变量设置Global Settings ====================
    [global]
    # workgroup用来指定您的机器在网络上所属的NT域名或组名。格式是
    # workgroup = NT-Domain-Name or Workgroup-Name。缺省的组名是 MYGROUP。
    workgroup = MYGROUP
    # server string 用来设置NT描述域。缺省值是Samba Server 。
    server string = Samba Server
    # 下面的选项对于安全很重要。它允许您设置哪些领域的机器可以访问您的Samba
    # 服务器。下面的这个例子允许两个C类子网和"lookup"的连接请求而禁止来
    # 自其他网段机器的连接请求。有关的例子请参看smb.conf的用户手册。
    ; hosts allow = 192.168.1. 192.168.2. 127.
    # 允许自动加载打印机列表,而不需要您单独设置每一台打印机。
    load printers = yes
    # 您也许希望覆盖原有的printcap 文件。
    ; printcap name = /etc/printcap
    # 对于SystemV系统,如果将printcap名设置为lpstat 将允许您从SystemV 的
    # spool中自动获得打印列表。
    ; printcap name = lpstat
    # 除非您的打印机不是标准型号,否则您没有必要在下面指定打印机系统的类型。
    # 目前支持的打印机系统包括:bsd, sysv, plp, lprng, aix, hpux, qnx
    ; printing = bsd
    # 如果希望建立一个客户帐号,去掉下面语句前面的分号";"。同时,您必须在
    # /etc/passwd中加入这个帐号的定义,否则将使用用户"nobody"作为客户帐户。
    ; guest account = pcguest
    # 此选项将为每一个与服务器连接的机器定义一个单独的日志文件。
    log file = /usr/local/samba/var/log.%m
    # 此选项设置最大的日志文件的大小(以KB为单位)
    max log size = 50
    # 定义安全模式。大多数人都喜欢用户级安全模式,详细内容参看security_level.txt
    security = user
    # 只有当安全模式设置为服务器级(security = server)时,才定义下面选项。
    ; password server = <NT-Server-Name>
    # 如果用户想使用加密口令的话,请参阅ENCRYPTION.txt、Win95.txt和 WinNT.txt
    # 文件,请在阅读以上文件后使用下面选项。
    ; encrypt passwords = yes
    # 使用此选项允许您对每一个机器使用不同的配置。%m将被替换成与服务器
    # 请求连接机器的NetBIOS名。
    ; include = /usr/local/samba/lib/smb.conf.%m
    # 大多数人会发现此选项将显著提高服务器的执行效率,请参读speed.txt和用户
    # 手册以了解更多细节。
    socket ōptions = TCP_NODELAY
    # 配置Samba来使用多个网络界面,如果您有多个网络界面,那么必须按照下面
    # 格式在这里列出。请参阅用户手册以获得更多的细节。
    ; interfaces = 192.168.12.2/24 192.168.13.2/24
    # 浏览控制选项
    #如果不想使您的Samba服务器成为局域网内部的主浏览服务器,将此选项设为no
    ; local master = no
    # OS Level决定了该服务器在局域网内的访问优先权。
    ; os level = 33
    # Domain Master将Samba服务器定义为主域浏览器。此选项将允许Samba在子
    #网列表中比较浏览。如您已经有一台Windows NT域控制器,不要使用此选项
    ; domain master = yes
    # Preferred Master使Samba在启动时选择一个本地浏览器并给它获得选择的较高
    # 的机会
    ; preferred master = yes
    #仅当您的网络中有一台在安装时设置为主域控制器的NT服务器时使用此选项。
    ; domain controller = <NT-Domain-Controller-SMBName>
    # 如果想使Samba成为Windows95工作站的登录服务器,则使用此选项。
    ; domain logons = yes
    # 如果允许域登录服务,那么您也许希望每台机器或每个用户的登录脚本运行一
    # 个特定的每工作站的登录批处理文件。,
    ; logon scrīpt = %m.bat
    # 运行一个特定的每用户名登录批处理文件。
    ; logon scrīpt = %U.bat
    # 放置roving profiles 文件的位置(仅用于 Win95 和WinNT) ,%L代表该服务器
    # NetBIOS名,%U是用户名,您必须取消后面定义的[Profiles]前面的注释号。
    ; logon path = \\\\%L\\Profiles\\%U
    # Windows的Internet名服务支持记录部分
    # WINS Support告诉NMBD守护进程支持WINS服务器。
    ; wins support = yes
    # WINS Serve选项告诉NMBD守护进程作为WINS的客户机。
    # 注意:Samba既可以作为WINS服务器也可以作为 WINS客户机,但不能兼
    # 而有之。
    ; wins server = w.x.y.z
    # WINS Prox代表一个非WINS客户通知Samba响应名字解析请求。要使此选项
    # 正常工作必须保证网络中至少有一台WINS服务器。缺省值是NO。
    ; wins proxy = yes
    # DNS Proxy选项决定Samba是否通过DNS 的nslookups 去解析主机的NetBIOS
    # 名。对于1.9.17 以前的版本内置值是yes ,对于1.9.18之后的版本内置值是no 。
    dns proxy = no
    #================== 定义共享服务Share Definitions ===================
    # 所有使用者的home目录
    [homes]
    comment = Home Directories
    # 当一个客户程序以客人用户类出本服务器的共享服务时,不列出homes服务。
    # 但是本机用户创建的主目录服务仍使用[global]节设定的browseable。
    browseable = no
    writable = yes
    # 如果要创建一个netlogon目录则取消下面的注释。
    ; [netlogon]
    ; comment = Network Logon Service
    ; path = /usr/local/samba/lib/netlogon
    ; guest ōk = yes
    ; writable = no
    ; share modes = no
    # 如果要提供一个特定的共享roving profile则取消下面的注释。
    # 缺省值是使用用户的home目录。
    ;[Profiles]
    ; path = /usr/local/samba/profiles
    ; browseable = no
    ; guest ōk = yes
    # 注意:如果您有一个BSD 风格的打印系统,您不需要单独定义每台打印机。
    [printers]
    comment = All Printers
    path = /usr/spool/samba
    browseable = no
    # 设置public = yes 将允许以guest 帐号登录的用户使用打印机。
    guest ōk = no
    writable = no
    printable = yes
    # 此选项定义网络用户共享文件的临时目录。
    ;[tmp]
    ; comment = Temporary file space
    ; path = /tmp
    ; read ōnly = no
    ; public = yes
    # 一个用户共享目录,除了在"staff "组里的用户有些写的权限之外之外,对
    # 其它用户是只读的。
    ;[public]
    ; comment = Public Stuff
    ; path = /home/samba
    ; public = yes
    ; writable = yes
    ; printable = no
    ; write list = @staff
    # 其他例子:
    #
    # 下面定义了一台只有fred可以使用的私人打印机。Spool数据放在fred的home
    # 目录里。注意:fred必须对Spool目录有写的权限,不管这个目录在什么位置。
    ;[fredsprn]
    ; comment = Fred\'s Printer
    ; valid users = fred
    ; path = /homes/fred
    ; printer = freds_printer
    ; public = no
    ; writable = no
    ; printable = yes
    # 下面定义一个只有用户fred才能使用的私人目录。fred 必须对这个目录拥有
    # 写的权限。
    ;[fredsdir]
    ; comment = Fred\'s Service
    ; path = /usr/somewhere/private
    ; valid users = fred
    ; public = no
    ; writable = yes
    ; printable = no
    # 下面定义的是对每个域服务器连接的机器有不同的目录的服务。这将允许您
    # 对于不同的机器使用不同的配置,同样也可以使用%U选项为每个用户使用不
    # 同的配置。%m在连接时将被替换为客户机的主机名。
    ;[pchome]
    ; comment = PC Directories
    ; path = /usr/pc/%m
    ; public = no
    ; writable = yes
    # 下面定义一个所有用户都可以读写的共享目录。注意用户在这个目录中创建的
    # 文件都将归默认用户所有。所以任何可以访问这个目录的用户都可以删除别的
    # 用户在这个目录里放置的文件。显然,这个目录对于默认用户必须是可写的。
    # 当然,也可以指定某个用户,这时,该目录的所有文件将为此用户所有。
    ;[public]
    ; path = /usr/somewhere/else/public
    ; public = yes
    ; only guest = yes
    ; writable = yes
    ; printable = no
    # 下例说明了如何定义让两个用户共享一个目录,他们在这个目录里放置的文件
    # 归他们各自所有。在此例中,这两个用户对该目录都有写的权限。当然文件的
    # 保护应该设置恰当。很显然,这个例子可以扩展到适合于多个用户的情况。
    ;[myshare]
    ; comment = Mary\'s and Fred\'s stuff
    ; path = /usr/somewhere/shared
    ; valid users = mary fred
    ; public = no
    ; writable = yes
    ; printable = no
    ; create mask = 0765

     

    2 共享访问限制
    1).通过主机地址
    使用以下参数来限制通过主机地址访问:
    allow hosts
    hosts allow
    deny hosts
    hosts deny
    "allow hosts"、" hosts
    allow"这两个功能相同的参数指定允许访问一个服务的主机列表,主机列表用","号、空格或制表符隔开。如用于[global]段,则应用于所有服务,而忽略在每个服务中的各自的设置。
    主机列表的组成可以是主机名、IP地址、子网地址或网络号码/掩码。也可以使?quot;EXCEPT"关键字来限制子网中的个别主机的访问。例如:
    hosts allow = 202.204. 3 EXCEPT 202.204.3.30
    允许在202.204.3子网上的主机访问,但禁止其中的202.204.3.30访问。
    "deny hosts"、" hosts deny"这两个功能相同的参数指定禁止访问某个服务的主机列表,与"allow
    hosts"相反。当与"allow hosts"列表冲突时,"allow hosts"列表优先。


    2).通过用户口令
    使用以下参数来限制通过用户口令访问:
    security
    参数security可以确定对客户用户名/口令的验证方式。缺省为"user",即对Samba服务器的任何访问都要通过用户名/口令的验证。如果客户登录客户机,如Windows
    所用的用户名与Samba服务器上的UNIX用户名一致,则通过口令验证后就可以访问;如Windows
    所用的口令也与UNIX一样,那么不经任何提示就可以访问。
    但如果客户机上登录的用户名与Samba服务器上的UNIX用户名不一致,则需要在一个映射文件中(如/etc/smbusers)写入客户机用户名到UNIX用户名的映射,同时使用"username
    map"参数指定映射文件,例如:
    username map = /ect/smbusers
    在/etc/smbusers文件中的内容如下:
    cuckoo = "cuckoo doo"
    这样,在客户机上以"cuckoo
    doo"注册后,再与Samba服务器连接时,输入UNIX客户cuckoo的口令就可以进入,因为Samba已经把"cuckoo
    doo"映射为cuckoo。
    security 参数的另一个值是"share",表示Samba服务器不需要客户机使用用户名/口令来登录,而是根据每个共享的设置来决定是否需要用户名/口令验证。设置security为share一般用于客户机上大多数用户名与Samba服务器上UNIX用户名不相同的情况,以及Samba服务器主要提供guest 访问。
    在smb.conf文件中,如果没有设置"encrypt
    passwords",Samba将使用UNIX的password数据库来验证用户口令。这需要客户机将口令以"普通文件"的方式传递过来。如果设置了"encrypt
    passwords",Samba则使用另一个加密口令文件,通过"smb passwd file"来设置,例如:
    encrypt passwords = yes
    smb passwd file = /etc/smbpasswd

    3).通过用户名
    public
    guest ok
    上面的两个参数的功能相同,都可以使用相应的服务允许guest用户,即不需要用户名/口令验证。如果还指定了"guest
    only",那么相应的服务器只允许由guest用户来访问。
    invalid users
    valid users
    这两个参数分别设置不允许注册某个服务和允许注册某个服务的用户列表。一个用户同时出现在两个列表中的时候,不允许注册优先。列表中的用户名可以用空格隔开,以"@"开头的名字被认为是NIS
    组名或UNIX组名;以"+"开头的名字被认为是UNIX组名;以"&"开头的名字只被认为是NIS组名。
    only user
    此参数控制是否只允许在"user ="列表中指定的用户访问某个服务。如果设置为true,则只有在"user ="列表中的用户才能访问。

    4).通过是否可以读写来控制
    read only
    此参数设置为"yes",则使用服务的用户不能在该服务的目录中创建或修改文件。
    writable
    writeable
    write ok
    这三个参数功能相同。如果它们被设置为"no",则使用服务的用户不能在该服务的目录中创建或修改文件。
    read list
    write list
    这两个参数分别指定只允许对一个服务进行只读访问或同时有"写"权限的主机列表,这里,如果一个主机同时在两个列表里,则"写"优先。

    5).通过是否在浏览器列表中显示来控制
    browsable
    browseable
    这两个功能相同的参数控制该段是否在浏览列表中列出。浏览列表列出的是可获得的共享列表。一般[home]段禁止浏览,以提高安全性。

    3、Windows 9x做为SMB客户的设置
    1).配置microsoft网络客户
    在客户机(WIN9X)上,在控制面板里添加microsoft网络客户。选中microsoft网络客户--标识--计算机名--my_computer_name--my_group,其中,my_computer_name将作为表示客户机的NetBIOS名,
    my_group为组名

    2).编辑注册表记录
    如果在SMB服务器上的smb.conf 文件中没有用到"encrypt
    passwords",即使用"普通文本"格式的口令,则必须要编辑注册表,来允许使用"普通文本"格式的口令。
    在Windows的注册表的以下条目中:
    /HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/VxD/VNETSUP
    新建DWORD值,将新建的值命名为EnablePlainTextPassword;双击EnablePlainTextPassword,将键值设为1。

    3).重新启动
    重新启动计算机,以用户名/口令登陆。该用户名/口令将用于与SMB服务器连接时进行用户身份认证,所以如果要访问SMB服务器上用户自己的home目录,建议使用与SMB服务器上相同的用户名/口令。

    4).访问Samba服务器
    通过网络邻居浏览访问Samba服务器,可以在列表里选择,也可以在命令窗口里使用命令:
    \\\\sambaserver

    4 、Samba服务器提供的其他命令
    smbstatus
    smbstatus指令用于显示当前的SMB服务器的连接状态。例如,在IP地址为202.204.3.16的"cuckoo"客户机上,用户john访问SMB服务器的"public"服务时,命令输出如下:
    /usr/bin/smbstatus
    Samba version 2.0.3
    Service uid gid pid machine
    ----------------------------------------------
    public john john 10009 cuckoo (202.204.3.16) Fri Jul 21 20:3
    No locked files
    Share mode memory usage (bytes):
    1048464(99%) free + 56(0%) used + 56(0%) ōverhead = 1048576(100%) total
    此命令可以附加一些开关来显示不同的内容,下表列出了主要的开关及其含义:
    表1-2 smbstatus命令主要选项表

    nmblookup
    nmblookup命令用于把一个NetBIOS名字映射到IP地址。对于上面的例子,可以使用下面的命令查找主机cuckoo:
    /usr/bin/nmblookup sale
    可以使用合适的选项来允许nmblookup查询一个IP广播域或是一个单独的机器,该命令常用的选项参看表1-3。
    表1-3 nmblookup 命令主要选项列表

    smbclient
    smbclient是访问SMB服务器资源的客户程序。该程序提供的接口与ftp程序类似,访问操作包括从SMB服务器下载文件到本地,或从本地上载文件到SMB服务器,还可以在SMB服务器上检索目录信息等。
    命令语法如下:
    /usr/bin/smbclient //smbserver/service [passwd][-U username]
    其中,smbserver是SMB服务器的NetBIOS名,一般与服务器的主机名一样,但不是必须的。"service"为服务器提供的服务,如文件服务public或打印服务printer。
    passwd是访问某些服务时需要的口令。如果在命令行输入,后面则不会再提示输入口令。否则,将在后面提示输入口令。虽然有些要访问的服务器不需要口令,但仍然会有输入口令的提示。如果不希望有口令提示,则可以在命令行使用"-N"选项。
    如果要使用其他的端口与SMB服务器进行TCP连接,可以使用"-p"选项来指定,缺省值为139。
    "-U"可以指定与SMB服务器连接时使用的用户名。如果没有指定,smbclient使用环境变量USER指定的值作用户名。如果没有USER环境变量,则用"guest"。
    在环境变量USER中,可以设置"USER=username%password",这样就不用在命令行上输入口令。同时,使用ps命令看不到命令行参数,具有一定的安全性。同样,也可以使用"-U
    username%password"的形式指定用户名和口令。?quot;-U"指定的口令"%password"要优先于在命令行[password]中指定的口令。

    "-L"选项可以列出在一个服务器上提供的服务,例如:
    /usr/bin/smbclient -L smbserver
    使用下面的命令可以进入与ftp类似的提示状态:
    /usr/bin/smbclient //smbserver/service
    执行结果:
    smb:\\>
    其中"\\"表示服务器当前的工作目录。在该提示符下可以使用的命令可以通过"?"、"help"命令列出。命令不分大小写。
    在该提示符下除了可以使用很多与ftp类似的命令外,还有命令recurse,它可以被设置为on,以便在使用mget或mput命令时能够get或put匹配的子目录。recurse缺省为off,即只get或put当前目录中的文件。

    在该提示符下还可以使用下面的命令:
    smb:\\>tar c localfile filename
    将服务器上文件名为"filename"的文件和目录(可以使用通配符)经过tar 拷贝到本地的"localfile "文件中。或者:
    smb:\\>tar x localfile filename
    可以把本地tar 文件localfile 中的文件filename拷贝到服务器上;如果filename省略,则拷贝所有的文件。
    上面的命令也可以在smbclient命令行上来执行,如:
    /usr/bin/smbclient //smbserver/service [passwd] -T c local file filename
    /usr/bin/smbclient //smbserver/service [passwd] -T x local file filename
    smbprint
    smbprint是在Linux系统下将打印文件提交给远地SMB服务器打印的脚本程序。程序中调用的命令就是smbclient。下面举例说明此命令的使用方法。
    例如,远端SMB服务器NetBios名为prtserver(Windows
    9X),提供打印服务。服务名为netpcl(NEC激光打印机),不需要口令。
    在Linux系统中配置如下:
    1. 编辑/etc/printcap文件,加入下面一行
    smb:lo=/dev/null:sd=/usr/spool/smb:sh:if=/usr/bin/smbprint:af=/var/spool/lpd/smb/acct
    2.建立目录/usr/spool/smb、/var/spool/lpd/smb
    3.用下面命令建立记帐文件
    touch /var/spool/lpd/smb/acct
    4.建立/var/spool/lpd/smb/.config文件,包含下面内容:
    server = prtserver
    service = necpcl
    password = ""
    5.编辑/usr/bin/smbprint文件,在smbclient命令参数中使"echo
    translate"有效,这样可以使UNIX文件到Windows 9x系统打印时,进行<LF>与<CR/LF>的转换。
    6.启动lpd:
    /etc/rc.d/init.d/lpd start
    7.使用lpr命令打印/etc/hosts文件
    /lpr -P smb/etc/hosts
    lpr缺省使用的打印机名为lp,这里使用的是smb。

    5、使用Samba加密口令
    客户机访问Samba服务器时进行的用户身份认证包括使用"普通文本"格式的口令,通过网络传送给SMB服务器,与UNIX的帐户数据库(如/etc/passwd)进行核查;或者使用加密口令,通过"SMB
    challenge/response"验证进行核查。本文着重介绍加密口令的用法。
    在Samba服务器中使用了与Windows NT兼容的口令加密算法,因此可以像Windows NT一样对Samba的客户进行用户口令核实。
    Windows
    NT 使用一个包含用户口令hashed值的文件,是通过对用户的"普通文本"的口令经过加密算法得到的,称为"hashed口令"。不能从该hashed值返回得到原始的"普通文本"的口令。在Samba服务器上可以形成同样的hashed口令,保存在smbpasswd文件中。
    当一个Samba客户(如Windows 9x
    或NT)使用Samba资源时,它先请求一个连接,并商讨连接使用的协议。Samba回答客户请求时产生一个随机值,发送给客户,并且还储存在Samba服务器上,称为"challenge"。"challenge"对于每一个客户连接是不一样的。
    客户然后使用hashed口令与"challenge"进行加密运算,产生24个字节的"response",发送给Samba服务器。
    Samba服务器使用自己保存的hashed值的用户口令(保存在smbpasswd文件中)与先前产生的"challenge"进行同样的加密运算,将产生的结果与客户发送过来的结果进行比较,如果结果相同,则客户被允许访问;否则,禁止用户访问。

    对于Samba服务器来说,它不存储"普通文本"格式的口令,储存的是从"普通文本"口令转换的hashed口令。并且在网络连接时,"普通文本 "和 "hashed口令"都不被传送,所以比UNIX安全。因为当客户程序与UNIX服务器连接时(如telnet),口令往往是以"普通文本"在网络上传送的,可以被网络窃听软件(如tcpdump)截获。Samba加密口令文件smbpasswd会被利用成为潜在的漏洞。所以该文件是要由root所有,读写权限应该为600。
    Windows 9x
    或NT缺省的用户认证方式是使用加密的口令,这?quot;普通文本"不在网络上传送。相应的,Samba也要使用加密口令的认证方式。但如果想使用"普通文本"格式的口令,可以编辑Windows
    NT的注册表来允许。这样,Samba服务器就可以使用/etc/psswd文件来验证用户口令,而不需要smbpasswd文件。
    要想让Samba使用与Windows
    NT兼容的口令加密算法,则必须在Samba服务器上保存包含与用户名对应的hashed值的口令文件。可以使用/usr/bin/mksmbpasswd.sh程序产生加密口令文件的框架,文件名由"smb
    passwd file"参数设置,这里是/etc/smbpasswd,命令行格式为:

    cat /etc/passwd |mksmbpasswd.sh >/etc/smbpasswd

    然后root可以使用smbpasswd命令可以设置用户口令,例如设置客户cuckoo的smb口令为smbpassword:
    /usr/bin/smbpsswd cuckoo smbpassword
    root还可以使用smbpsswd 进行添加用户、取消口令等操作。但添加的用户必须在/etc/psswd文件中存在。普通用户使用smbpsswd
    命令只能像使用passwd程序一样更改自己的smb口令。


    三、Samba常见故障排除

    Samba的故障排除可以在SMB服务器和SMB客户机上通过各自的命令来完成。
    1 SMB服务器上的操作
    1).使用下面的命令来查看是否有错误的配置。
    /usr/bin/testparm /etc/smb.conf
    2). 在服务器上以及客户机上用ping命令检查tcp/ip是否正常工作。
    3). 在SMB服务器上用
    /usr/bin/smbclient -L SMBserver
    命令将得到一个共享的列表。
    如果出现失败信息,则要检查与服务器相关的"hosts allow"、"hosts deny"、"valid users"、"invlid
    users"等参数的设置。如果出现"connection
    refused",则检查Samba服务器进程是否启动;若Samba以守护进程形式运行的话用"netstat -a"命令检查端口是否处于监听状态。
    4). 运行了命令"/usr/bin/nmblookup SMBserver",将返回SMB服务器的IP地址。否则nmbd没有正确的运行。
    5). 运行"/usr/bin/nmblookup -d 2 \'*\'
    "命令,在子网中运行NetBIOS/TCPIP的主机将会响应。否则说明nmblookup
    不能正确的得到广播地址,可以尝试在smb.conf文件中用interfaces参数人工设置IP地址、广播地址和子网掩码。
    6). 运行"/usr/bin/smbclient
    \' \\\\SMBserver\\homes"命令,需要输入客户在SMB服务器上的用户口令,然后会出现类似"smb>"的提示符。这时可以使用 dir命令浏览客户在SMB服务器帐户目录下的文件,用help命令可以得到其他命令的帮助。如果不能出现类似"smb>"的提示符,并且有 "invalid
    network name"的错误信息,则有可能homes共享没有正确的设置;或者有"Bad password",则要检查"shadow
    password"、"password encryption"以及参数"valid users"和"path"的设置。

    2、SMB客户机上的操作
    1). 运行"net view \\\\SMBserver"命令,应该能够列出SMB服务器上的共享。
    如果出现类似"network name not found"的错误,则要检查客户机上DNS或WINS的设置。如果出现"Invalid network
    name"或"bad password error"的错误,则参照与上面"smbclient
    -L"命令中同样的错误结果的解决方法。要注意客户机将要用客户注册客户机时所用的用户名/口令去与SMB服务器连接,所以在SMB服务器上,用户最好有同样的用户名/口令。
    2). 使用"net use
    x;\\\\SMBserver\\homes"命令,可以把SMB服务器上客户home目录映射到客户机"x:"盘,"x:"应该是一个客户机上未用的盘号。这样,共享的目录可以在客户机上以"x:"盘来看待。正常的信息为"command
    complete successfully"。
    如果要停止使用"x:"盘,可以使用"net use
    x:/delete"命令。如果不能正常的把客户的home目录映射到"x:"盘,则要检查SMB服务器上"hosts
    allow"等参数的配置。如果客户机上的用户名不能与服务器上的用户名匹配,尝试使用"username map"选项。
    3). 如果在SMB服务器上没有使用"encrypted passwords",则在客户机上要在注册表中允许使?quot;普通文本"格式的口令。

    小结

    Samba是SMB的一种实现方法,主要用来实现Linux系统的文件和打印服务。Linux用户通过配置使用Samba服务器可以实现与Windows用户的资源共享。
    守护进程smbd和nmbd是Samba的核心,在全部时间内运行。nmbd
    程序使得通过企图计算机可以浏览Linux服务器。Smbd守护进程在SMB软件包到达网上时对它们进行处理,并且为使用或共享它的资源与Linux进行协调。
    在安装完Samba后,还需要定制它的配置文件smb.conf,才能使Samba正常工作以符合要求。smb.conf文件的的语法结构与 Windows 的*.ini文件十分类似;文件结构主要包括三部分:全局参数部分、目录共享部分、打印共享部分;本文着重介绍了如何配置各选项以完成特定的功能。
    通过使用不同的参数,可以实现对Samba的不同访问控制:通过主机地址限制访问、通过用户口令限制访问、通过用户名限制访问、通过验证读写权限限制访问、通过是否在浏览器列表里显示来控制等。所有这些方法,大大的增强了Samba服务器的安全性。

  • vmware虚拟机系列问题.txt

    2007-05-01 01:09:15

    快捷键:CRTL+B启动       CRTL+Z暂停  CRTL+E关机  CRTL+R重启  CRTL+D设置

    *****************vmware tools 的 正确安装*******************
    1. VM --> 安装VmWare工具 --> instarll
    2. # mount /dev/cdrom /mnt/cdrom
    3. # tar -xzvf VMware...       -C/usr/local/src
    4. # cd /usr/local/src/vmware...
    5. # ./vmware-install.pl  --> 'Enter'
    6. # init 6 
       

    *************** VMware虚拟机与host机器文件共享设置*****************
    条件:host机器安装的是XP,VMware中安装的是RH9.0

    目的:RH9.0能够和XP共享host机器中的文件夹!


    实现步骤:

    1. 在VMware主菜单VM-〉Settings……,在弹出的窗口中切换到Options页,在左侧选择Share folders,在右侧添加一个文件夹作为共享目录,可设置相关权限;

    2. 启动VMware中的RH9.0,安装VMware Tools,注意安装那个.tar.gz包,而不是rpm包,因为在我的机器上安装rpm包后VMware仍然认为VMware Tools没有安装,而安装.tar.gz包后就可以

    3. 进入/mnt/目录,则可以看到多了一个hgfs文件,此即为最终的共享目录!

     

    *****************vmware “经典”错误9297解决方案*******************    

    > *** VMware Workstation internal monitor error (bug 9297) ***

    > The guest operating system you are running is using the Physical

    > Address Extension (PAE) processor option.  For more information

    > aboutrunning PAE-enabled guest operating systems, please consult

    > http://www.vmware.com/info?id=28

     
    If you are running GSX Server 2.5 and are trying to start a Linux or NetWare

    6 guest operating system, check the virtual machine's configuration file

    (.vmx on Windows hosts, .cfg on Linux hosts) and look for the following line:

    paevm=false


    到虚拟机器的数据夹里找设定文件,如果是 Windows 尾檔名是 .vmx,Linux 则是 .cfg,

    用文字编辑器开启后找到一行文字:paevm=false

     
    If the line appears, change it to

    paevm=true


    如果文字存在,改成:paevm=true

     If you are running GSX Server 2.5 and are trying to start any other

    PAE-enabled guest operating system, open the virtual machine's configuration

    file and add the following line anywhere within the file:

    paevm=true

    如果不存在,在设定档里随处加入:paevm=true

     
    Save the configuration file and try starting the virtual machine again.

    改好后储存设定档,然后重新执行虚拟机器。
     

  • Linux中JDK的安装和配置方法

    2007-04-29 19:07:05

    安装JDK

    从sun网站上直接下载JDK:http://java.sun.com/j2se/1.4.2/download.html 提供了两个下载:

    1、RPM in self-extracting file (j2sdk-1_4_2_04-linux-i586.bin, 32.77 MB) 这个是自解压的文件,在linux上安装如下:

    # chmod u+x ./j2sdk-1_4_2_04-linux-i586.bin

    # ./j2sdk-1_4_2_04-linux-i586.bin

    在按提示输入yes后,jdk被解压到./j2sdk1.4.2_04目录下。为与下面2中JDK安装路径一致,我们进行下列操作,在/usr/java下建立安装路径,并将文件考到该路径下:

    # mkdir /usr/java

    # cp -fr ./j2sdk1.4.2_04 /usr/java



    2、RPM in self-extracting file (j2sdk-1_4_2_04-linux-i586-rpm.bin, 32.77 MB)这个也是一个自解压文件,不过解压后的文件是j2sdk-1_4_2_04-linux-i586-rpm包,执行rpm命令装到linux上就可以了。安装如下:

    #chmod u+x ./j2sdk-1_4_2_04-linux-i586-rpm.bin

    # ./j2sdk-1_4_2_04-linux-i586-rpm.bin

    # rpm -ivh j2sdk-1_4_2_04-linux-i586-rpm

    安装软件会将JDK自动安装到 /usr/java/j2sdk1.4.2_04目录下。

    二、配置环境变量

    1.修改用户环境变量

    假设使用java的用户为 kunp,编辑该用户的.bashrc文件进行环境变量设置。

    # vi /home/kunp/.bashrc

    在 .bashrc文件中加入:

    export JAVA_HOME=/usr/java/j2sdk1.4.2_04
    export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
    export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin

    2.修改所有用户的环境变量

    # vi /etc/profile

    在该文件中加入:

    export JAVA_HOME=/usr/java/j2sdk1.4.2_04
    export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
    export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin

    一定要在CLASSPATH路径中加入$CLASSPATH:



    java1.6的安装稍有不同,下载成功后上传至服务器任意目录!

            2. 在当前目录输入

            sh jdk-6u2-linux-i586-rpm.bin

            3.看到 安装程序在询问您是否尊守许可协议页面 ,回车,空格都可以,看完协议.

            出现一行字:Do you aggree to the above license terms? [yes or no]

            安装程序在问您是否愿意遵守刚才看过的许可协议。当然要同意了,输入"y" 或 "yes" 回车。

            4.在命令行输入:

            vi /etc/profile

            在里面添加如下内容

            export JAVA_HOME=/usr/java/jdk1.6.0_02
            export JAVA_BIN=/usr/java/jdk1.6.0_02/bin
            export PATH=$PATH:$JAVA_HOME/bin
            export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
            export JAVA_HOME JAVA_BIN PATH CLASSPATH

            5.进入 /usr/bin/目录

            cd /usr/bin

            ln -s -f /usr/java/jdk1.6.0_02/jre/bin/java

            ln -s -f /usr/java/jdk1.6.0_02/bin/javac

            6. 在命令行输入

            java -version

            屏幕输出:

            java version "jdk1.6.0_02"
            Java(TM) 2 Runtime Environment, Standard Edition (build jdk1.6.0_02)
            Java HotSpot(TM) Client VM (build jdk1.6.0_02, mixed mode)

            7. 安装JDK1.6完毕.

            另:

            查看linux版本信息的方法:
            1)uname -a
            2)cat /proc/version
            3)cat /etc/issue


  • linux系统服务

    2007-04-27 20:35:12

    linux系统服务

    init服务

        init进程是所有进程的发起者和控制者。因为在任何基于Unix的系统(比如linux)中,它都是第一个运行的进程,所以init进程的编号(Process ID,PID)永远是1。如果init出现了问题,系统的其余部分也就随之而垮掉了。
        init进程有两个作用。第一个作用是扮演终结父进程的角色。因为init进程永远不会被终止,所以系统总是可以确信它的存在,并在必要的时候以它为参照。如果某个进程在它衍生出来的全部子进程结束之前被终止,就会出现必须以init为参照的情况。此时那些失去了父进程的子进程就都会以init作为它们的父进程。快速执行一下ps -af 命令,可以列出许多父进程ID(Parent Process ID,PPID)为1的进程来。
        init的第二个角色是在进入某个特定的运行级别(Runlevel)时运行相应的程序,以此对各种运行级别进行管理。它的这个作用是由/etc/inittab文件定义的。

    1. /etc/inittab文件

        /etc/inittab文件中包括了所有init启动运行级别所必须的信息。这个文件中的每一行语句的格式如下所示:      
    id : runlevels: action : process
       
    注意:以#开始的语句是注释语句。看看你自己的/etc/inittab文件就可以发现其中充斥了大量的注释语句。如果确实需要对/etc/inittab文件进行什么改动(一般不会出现这种情况的),记住加上一些注释语句,解释为什么要做那些修改。

    2. Telinit命令

        通知init在什么时候切换系统运行级别的神秘力量实际上就是Telinit命令。这个命令有两个命令行参数:一个参数用来通知init准备切换过去的运行级别;另外一个是-tsec,其中的sec是在通知init之前需要等待的、以秒计算的时间。
        注意:init是否真的切换运行级别是由它自己决定的。很明显,它经常切换,否则这个命令就不会那么有用了。在大多数Unix操作系统的具体实现(包括linux)中,Telinit命令实际上只是一个对init程序的符号链接。基于此,许多人更喜欢使用init直接切换到他们想去的运行级别而不是使用Telinit。就个人而言,我发现使用Telinit切换运行级别更便于理解和记忆。


    inetd进程

        inetd程序是一个守护进程。您可能已经知道守护进程是一些特殊的程序:它们在被启动之后,自愿放弃对调用自己终端的控制权。守护进程与系统其余部分的接口只有依靠进程间通信(Interprocess Communication,IPC)通道、或者依靠向系统全局性日志文件(Log File)才能发送数据项。
        inetd的角色是作为Telnet和FTP等与网络服务器相关的进程的“超级服务器”。这是一个简单的道理:并不是全部的服务器进程(包括那些接受新的Telnet和FTP连接的进程)都会如此频繁地被调用,以至于必须要有一个程序随时运行在内存中。因此为了避免出现可能有几十种服务都运行在内存中准备被使用的情况,它们都列在inetd的配置文件/etc/inetd.conf中。而代替它们的是inetd监听着进入的连接。这样只需要有一个进程在内存中就可以了。
        inetd的另外一个优点是程序员并不想把需要网络连接的进程都编写到系统中去。inetd程序将处理网络代码,并把进入的网络数据流作为各个进程的标准输入(Standard-In,即Stdin)传递到其中。这些进程的输出(Stdout)将会被送回连接到该进程的主机去。
        注意:除非你正在进行编程,否则是不需要连接到inetd的Stdin/Stdout功能上。从另一方面来说,如果有人打算编写一个简单的命令脚本程序并让它出现在网络中,就值得深入研究这个极为强大的功能。

    1.etc/inetd.conf文件

        etc/inetd.conf文件是inetd的配置文件。它的结构很简单:每一行语句代表一种服务。服务定义语句的格式如下所示:

    srvce_name sock_type protocol [no]wait user srvr_prog srvr_prog_args

    2.安全性与inetd.conf文件

        你将会发现在大多数的linux安装中,许多服务在缺省的情况下是打开的。如果你的系统将向因特网开放(包括通过拨号点对点协议被连通),你想做的第一件事就会是把一切都关闭!决不要假设因为你的系统没有对公众进行宣传,别人就不会找到它。从相反的方向看,寻找存在安全性攻击隐患系统的工具软件是既容易找到又容易使用的。
        关闭服务的第一个步骤是把etc/inetd.conf文件里所有用不着的服务性说明语句都改为注释语句。一般来说,你会发现下面的方法更容易使用:先把全部东西都改为注释语句(彻底关闭网络服务),再有选择地打开需要的服务。在完成对etc/inetd.conf文件的修改之后,需要向守护进程报告其配置文件已经被修改了。这是通过向该守护进程发送HUP信号来实现的。先使用下面的命令找出inetd.conf对应的进程ID:

    [ root@ford /root ] # ps auxw | grep inetd | grep -v grep

    这个命令的输出类似于下面的内容:

    root 359 0.0 0.1 1232 168 ? S Jun21 0 : 00 inetd
        root 359 0.0 0.1 1232 168 ? S Jun21 0 : 00 inetd

        输出中的第二列告诉我们进程ID号(这里就是359)。为了发送HUP信号,我们需要使用Kill命令(把这个程序叫做Kill多少有些误导。实际上,它只是向进程发送信号而已。缺省的情况下,它会发出请求某个程序终止运行的信号)。
        下面是使用Kill命令发送HUP信号的方法:       $ kil -1 359
    应该把上面命令中的359换成从你的系统上得到的进程编号。

    syslogd守护进程

        在同一时间会发生许许多多的事情,而在终端窗口中断开连接的网络服务就更是如此了。因此,提供一个记录特殊事件和消息的标准机制就非常有必要了。linux使用syslogd守护进程来提供这个服务。
        syslogd守护进程提供了一个对系统活动和消息进行记录的标准方法。许多其他种类的Unix操作系统也使用了兼容的守护进程。这就提供了一个在网络中跨平台记录的方法。在大型的网络环境里,这更具有价值。因为在那样的环境里,集中收集各种记录数据以获得系统运转的准确情况是很有必要的。你可以把这种记录功能子系统比作Windows NT的SystemLogger。
        syslogd保存数据用的记录文件都是简明的文本文件,一般都存放在/var/log子目录中。每个数据项构成一行,包括日期、时间、主机名、进程名、进程的PID,以及来自该进程的消息。标准C函数库中的一个全局性的函数提供了生成记录消息的简单机制。如果不喜欢编写程序代码,但是又想在记录文件中生成数据项,可以选择使用Logger命令。可以想象,像syslogd这样重要的工具应该是作为开机引导命令脚本程序的一部分来启动的。你准备在服务器环境中使用的任何一个linux发行版本都已经为你设置好了。

    1.调用syslogd

        如果需要手动启动syslogd,或者需要修改开机引导时启动它的命令脚本程序,你就必须注意syslogd的命令行参数,请大家参看有关书籍,这里不做详细介绍。

    2./etc/syslog.conf文件

        /etc/syslog.conf文件包含了syslogd需要运行的配置信息。这个文件的格式有些不寻常,但是现有的缺省配置文件将足以满足使用需要了,除非你需要在特定的文件中查找特定的信息,或者需要把这些信息发送到远程记录计算机去。

    ● 记录信息分类

        在我们掌握/etc/syslog.conf文件格式本身之前,需要先了解记录消息是如何分类的。每个消息都有一个功能值(Facility)和一个优先权值(Priority)。功能值告诉我们这条消息是由哪个子系统产生的,而优先权值则告诉我们这个消息有多重要。这两个值由句号分隔而且都有等价的字符串,从而容易记忆。


    ● /etc/syslog.conf文件的格式

    下面是配置文件里各语句的格式:

    facility/priority combinations separated by commas file
    /process/host to log to

    举例如下:

    kern.info /ver/log/kerned

        syslogd还可以灵活地把记录消息发送到多种不同的保存目的地去。它可以把消息保存为文件、把消息发送到FIFO队列、发送到一组用户、或者(在大型站点集中记录消息的情况下)发送到一个中心记录主机中。为了区分这些目的地,在目的地入口使用了下面的规则:

    ◆ 如果保存目的地的开始字符是斜杠字符(/),消息将发送到某个文件。

    ◆ 如果保存目的地的开始字符是垂直字符(|),消息将发送到某个FIFO队列。

    ◆ 如果保存目的地的开始字符是“@”字符,消息将发送到某个主机。

    cron进程
        cron进程为用户提供一种可以计划在一定时间间隔后自动执行任务的功能。cron通常还会负责at队列中作业的启动。该进程从crontab文件中得到信息,对于每个用户都会有一个独立的crontab文件。运行crontab -l命令,就可以查看已排列的命令列表。
    如果要更改cron信息,必须创建一个crontab文件。crontab有固定的格式,有效行包括六个区域,即:
    分钟(0-59),小时(0-23),日(1-31),月(1-12),星期(0-7,0和7都代表周日),命令(要运行的任务)
    每个区域都可能带一个星号,表示整个区间,每个区域也可以使用x-y的形式包含一个范围,也可能包含一个用逗号隔开的列表。
  • linux心得(转)

    2007-04-27 20:24:26


    一、shell命令
    1.$ date        显示时间
    2.$ who         查看登陆系统的用户
      $ who am i    查看自己的信息
    3.$ echo        在终端机上显示键入在命令行的任何信息,会去掉单词中的空格
      例如:$echo this is test
      显示  this is test
    4.$ ls 列出文件清单
    5.$ cat (查看的文件名称)   显示文件内容
    6.$ wc  (参数 -l 行数 -c 字符数 -w 单词数) (统计的文件名称)    统计文件中的行数,字符数,单词数
    7.$ cp (源文件)  (目标文件)  复制命令
    8.$ mv (源文件) (目标文件) 文件重命名命令,也可以移动文件的位置
    9.$ rm 删除命令
    10.$ pwd 显示当前工作目录
    11.$ cd 改变当前工作目录
    12.$ mkdir 创建目录
    13.$ rmdir 删除目录(目录为空)
    14.$ rm 删除文件 加参数 -r 删除目录和目录中的文件
    15.替换符合:* 替换为目录中的所以文件的文件名。单字替换符合:? 替换单字。[abc]替换 a 或 b 或 c 。[0-9] 匹配0-9的任意字符。如果 [ 后的字符是 !,表示反过来匹配,即可以匹配除方括号中所列字符以外的任何字符。
    16.ln:链接命令。(优点,减小系统占有,使文件同步)
    一般格式:ln from to 把文件from 和文件to 链接起来。
    连接的限制是必须位于同一个文件系统,连接后对于任何一个文件的改变都会影响的另一个文件,但是删除任何一个文件,另一个文件依然存在,不受删除的影响。(判断系统中有那些文件系统用 df 命令)
    不同的系统进行连接加参数 -s ,建立一个符合化连接。此连接与普通连接很相似,不同的是,删除源文件后,该符合连接就不起作用了。
    17.输出的重新定向:命令德输出通常提交到标准输出设备,也可以很方便德转向一个文件来代替,这叫输出重新定向。
    命令:在把输出写入到标准输出德命令后加 > filename
    例如:$ who >filename
    >> 符号为不覆盖原来的文件内容
    $ > filename ,前面没有命令时,shell会创建一个空的文件(长度为0个字符),如果文件已经存在,其内容会消失。
    18.输入重定向:对应于输出的重新定向的就是输入重定向,命令符合是 <
    例如:$ wc -l < filename
    19管道:unix系统可以把两条命令的的效果连接起来,这种连接称作管道。
    例如:$ who | wc -l
          $ ls | wc -l
    20.过滤器:指能够从标准输入接受输入,对输入进行处理后,把结果写入标准输出的任何程序。wc , cat ,sort 是过滤器,ls,who,date,cd,pwd,echo,rm,mv,cp都不是。
    21.标准错误:unix把大部分错误信息都写的这里,标准错误默认也是终端。
    把错误输入到文件试用命令格式:命令 2> 文件
    例如:$ls n* 2> filename
    22.一行键入多个命令,用;号分割
    例如:$ date ;pwd
    23.命令发送到后台:在命令后加一个 & 号,该命令就发送到后台了。
    例如:$ date >> filename &
    24:ps命令:查看进程的命令,参数 -f 查看父进程的命令
    例如:$ ps -f
    25.正规表达式
    :%s/old/new/g  注:g是全部替换  或 :%s/old/new   全部替换:看vi说明
    ifconfig用root用户登陆查看本机的ip地址



    26.cut:从文件中剪出各种各样的数据 【cut -cdhars file】
    cut -c5- data  把data文件中的每一行的第五个到行尾的字符剪出来,并把结果写入标准输出
    who | cut -c1-8 剪出who的输出的每一行的第一个到第八个字符
    who | cut -c1-8 | sort 剪出who的输出的每一行的第一个到第八个字符,并进行排序
    cut -d: -f1 /etc/passwd 剪出/etc/passwd 中的以:开头的第一个字段
    cut -d: -f1,6 /etc/passwd 剪出/etc/passwd 中的以:开头的第一个字段和第六个字段
    27.paste 把多个行合并起来,然后输出   【paste files】
    paste names numbers 将两个文件合并,然后输出
    paste -d'+' names numbers 将两个文件合并中间用+号连接,然后输出
    paste -s names 将一个文件所有行合并,然后输出
    ls | paste -d' ' -s - 把ls的输出用合并一行并用空格分开。
    28.sed 是用来编辑数据的程序,意思是流编辑器。sed不能用于交互。【sed command file】。
    sed 's/unix/UNIX/' intro 将unix改为UNIX
    sed不对原始文件进行更改,要保存更改,必须把sed的输出重定向到一个临时文件,然后把临时文件移回原来的文件。
    sed 's/unix/UNIX/' intro > temp
    mv temp intro
    sed -n '1,2p' intro 显示前两行
    sed -n '/unix/p' intro p命令前用斜扛括住字符串,sed只从标准输入中显示包含这些字符的行。
    sed '1,2d' intro 要删除正行,用d命令。删除1,2行
    29.grep:从一个或多个文件中搜索特定的字符串。【grep pattern files】
    grep shell ed.cmd 从ed.cmd中找出shell所在行
    grep '[A-Z]' list list中包含一个大写字母的行
    grep '[0-9]' list list中包含一个数字的行
    grep '[A-Z]...[0-9]' list list中包含以大写字母开头,数字结尾的5个字符组合的行
    grep '\.pic$' filelist filelist中以.pic结尾的行
    grep -v 'unix' intro 显示不含unix的行
    grep -l 'move_history' *.c 列出包含'move_history' 变量的行
    grep -n 'move_history' *.c 列出包含'move_history' 变量的行,前面加行号。
    30.sort 输出进行排序
    sort -u names 输出中去掉重复的行
    sort -r names 反序排序
    sort names -o new_names 将结果输出到new_names中
    sort -n data 安算术方法排序
    sort +1n data 跳过第一个字段排序
    31.uniq查找连续的重复行。【uniq in_file out_file】
    sort names|uniq -d  显示重复的行
    二、shell编程起步
    1.要让文件可以执行,要改变文件的许可
    chmod +x nu 改变文件nu的许可,然后在当前目录下键入【./nu】即可执行
    2.注释符合为#号
    3.变量:以字母或下划线开头,后跟0个或若干个字母、数字、下划线字符。【variable=value】
    count=1 注意=号两边不能有空格,linux中没有数据类型的概念。
    4.显示变量的值【echo $vairable】$符合不能掉了
    echo $count
    5.空值:如果一个变量没有值,我们就说它含有空值,这是变量没有赋值时的默认值。
    6.文件名替换和变量:shell先做变量替换,后做文件名替换。
    7.$(variable)结构
    假定把一个文件名存于变量filename中,要在文件名后加X
    mv $filename ${filename}X   给文件名后加X
    8.内部的整数算术运算【$((espression))】
    例如:echo $((a=a+1))  应为a没有赋值,所以结果是1,等价于a=0+1
    表达式中可以随意使用括号来强制分组,例如:echo $((i=(i+10)*j))
    如果不想用echo或其他的什么命令而想直接给变量赋值,可以把赋值移到算术扩展前面
    例如:i=$((i*5))
    判断表达式:result=$((i >= 0 && i<= 100)),为真是result=1,为假result=0。
    三、引用
    1.单引号:
    作用(1、)让本来需要用空格分割的字符合在一起
    例如:grep 'susan goldberg' filename 从filename中找出叫susan住址是goldberg的人(filename中有两个susan的人),如果使用(grep susan goldberg filename),将报错(grep:can't open goldberg)。当shell看到第一个单引号时,忽略掉其后直到右引号的所有本来有特殊作用的字符。
    echo '*' 输出 *
    echo '$file' 输出 $file
    2.双引号:双引号不忽略一下三种符合(美圆符合、反引号、反斜扛)
    例如:x=*
    echo $x  输出 当前的文件名
    echo '$x' 输出 $x
    echo "$x" 输出 * (双引号告诉shell在引号内照样进行变量的替换,所以shell把$x替换为*,因为引号中的不做文件名的替换,所以就把*号做为要显示的值传递给echo)
    如果想替换变量的值,又不想shell把替换的内容做特殊字符对待,就应该把变量名括在双引号中。
    可以用双引号来对shell隐藏单引号,反之亦然。
    例如:x="'hello,'said"
    echo $x 输出 'hello,'said
    x='"hello,"saidfff'
    echo $x 输出 "hello," saidfff
    3.反斜扛:反斜扛等价于在一个字符前后加上一个单引号,也有一些例外。
    例如:echo > 报错
    echo \> 输出为 >
    x=*
    echo \$x 输出 $x
    特殊:shell把行尾的反斜扛作为续行,它去掉根在后面的换行字符,也不把换行字符当作参数分隔符。这种结构在分行键入长命令时经常使用。
    双引号中的反斜扛:作用去掉字符的特殊意义。
    例如:x=5
    echo "the value of x is \"$x\""    \"$x\"等价于$x
    输出 the value of x is "5"
    4.命令替换:命令替换是指shell能够将一个命令的标准输出插入在一个命令行的任何位置的功能。shell有两种方法作命令的替换:把shell命令用反引号或者$(...)结构括起来。
    反引号是告诉shell执行括起来的命令,并将括起来的命令的标准输入插入到这个位置。【`command`】
    例如:$echo the data is:`date`
    $(...)结构:例如(echo the is:$(date))
    $(...)结构可以嵌套:echo the are $(who | wc -l) user logged in
    处理echo 命令行的过程中,shell在进行替换时将换行字符去掉了,在变量外括上双引号可以保留换行字符。
    例如:namelist=$(cat names)
    echo "$namelist"   输出的结果有换行字符的
    5、expr 用来进行算术的运算的
    例如:expr 1+2 结果是3
    expr "17*5" 输出是17*5
    expr 17\*6  结果是102
    例如:i=1
    i=$(expr $i + 1)
    echo $i     结果是2
    以大Z结尾的压缩文件的说明:压缩命令compress 文件名,解压uncompress 文件名
    adduser是增加使用者.
    touch filename 作用是重新读取文件
                            第七章  参数传递
    1、$#变量里存储的是命令行中所键入的参数的个数
    2、$*变量里存储的是命令行中所键入的所有的参数
    3、echo "$1        $2" >> filename 【将$1和$2的变量添加到filename文件的后面】
       sort -o filename filename 【增加新项后的新文件保持有序】
    4、删除文件中的数据
    grep -v "$1" phonebook > /temp/phonebook
    mv /temp/phonebook phonebook
    【删除文件中指定名字的行,然后将文件重新定向,再次覆盖源文件。grep -v "$1" phonebook,输出phonebook中不含"$1"的数据行,> /temp/phonebook,将输出写入到根目录下的temp文件夹下的phonebook文件里,然后将当前目录下的phonebook文件用/temp/phonebook文件覆盖掉】
    5、如果要给一个程序传递9个以上的参数,不能用$10,$11,要用${n},例如:${10},shell将$10替换成$1的值后面跟一个0。
    6、shift命令的作用是把位置参数左移。
    当执行shift时,$2的值的将赋给$1,$3的内容将赋给$2,$1的值将丢失。
    通过shift后跟一个数字,可以一次移动几个位置,shift 3,相当与shift shift shift
                            第八章  判断
    1、if命令
    【if command(0表示成功,非0表示失败)
      then
            command
            command
      fi

    2、$?变量
    shell自动将最后执行的命令的退出状态设置到shell变量$?中,可以用echo命令在终端上显示出来。
    3、test命令:【test expression】,其中expression表示要测试的条件。test计算expression,如果结果是真,其返回值是0;如果为假,返回值是非0。
    注意:test把所有操作数和操作符作为单独的参数分别对待,也就是说他们之间至少要有一个空白字符分隔。
    例如:test "$name" = rose 。把给test的参数中的shell变量用引号括起来,可以保证在参数为空时,仍然知道有这个参数。
    4、检测字符串的操作符

    5、test的另一个格式
    test expression 等于 [ expression ]
    例如:if [ "$name" = rose ]
            then
                    echo "name is rose"
          fi
    6、test 整数操作符

    7、test的常用文件操作符

    8、逻辑非操作符!
    可以把一元的逻辑求非操作符放在其他任何test表达式之前,对这个表达式的结果求非。
    例如:/home/phonebook不可读的话,[ ! -r /home/phonebook ] 返回的退出状态为0(真)
    9、逻辑与操作符 -a
    操作符 -a对两个表达式做逻辑与操作,如果两个表达式都为真,则返回真。
    例如:$file 代表的文件是普通并可以读取的文件, [ -f "$file" -a -r "$file" ] 返回真。
    10、小括号
    test命令中可以用小括号改变求值的顺序,只是要保证把小括号用引号括起来。
    例如: [ \( "$number" -ge 0 \) -a \( "$number" -lt 10 \) ]就是 0 =< number < 10。
    11、逻辑或操作符 -o
    和-a类似,两个表达式中一个为真,他求的结果就是真。 -o的优先级小于-a 。
    12、else结构
    【if command1
      then
            command
            command
      else
            command
            command
      fi】
    13、exit命令
    【 exit n 】
    exit命令可以立即终止shell程序的执行,n为希望返回的退出状态。如果不指定,就采用exit之前最后所执行命令的退出状态。
    14、elif结构
    【if command1
      then
            command
      elif command2
      then
            command
      else
            command
      fi】
    15、case命令
    【case value in
            pat1) command
                  command;;
            pat2) command
                  command;;
            *) command;;【没有匹配项时,执行这个命令】
    esac】
    把value依次和pat相比较,直到发现一项匹配,就执行该匹配项后直到双分号之间的所有命令,执行到双分号后,该case语句就结束;如果没有发现匹配的,则case语句的命令一条也不执行。
    16、sh -x 后面跟程序名及其参数,可以对程序进行调试。
    17、|符号,当把|用于两个模式之间时,其作用是逻辑或,即模式pat1 | pat2,表示要匹配pat1 或 pat2
    例如:hour=$(date +%H)
          case "hour" in
            0? | 1[01] ) echo "good morning";;
            1[27]      ) echo "good afternoon";;
            *          ) echo "good evening";;
          esac
    根据时间给出问候。
    18、空命令
    【:】就是单冒号。
    shell 要求then后必须有一条命令,这就是空语句的用武之地。
    例如:if grep "'^system" /user/systems #希望验证文件/user/systems中是否包含变量system,如果不包含,发出错误信息。
          then
            :
          else
            echo "$system is not a valid systems"
            exit 1
          fi
    19、&&和||结构
    【command1 && command2】如果command1返回的是0,就执行command2。如果command1返回的不是0,就跳过command2。
    【command1 || command2】如果command1返回的非0,就执行command2。如果command1返回的是0,就跳过command2。
    当在if中用||时,她的作用相等于,逻辑或。
    20、让程序在后台运行,使用命令:【filename &】就行了。
                                        第九章 循环
  • 系统学习Linux的十一点建议 zt(转自wawa4046 )

    2007-04-27 20:07:33



    一、从基础开始

      常常有些朋友在Linux论坛问一些问题,不过,其中大多数的问题都是很基的。例如:为什么我使用一个命令的时候,系统告诉我找不到该目录,我要如何限制使用者的权限等问题,这些问题其实都不是很难的,只要了解了Linux的基础之后,应该就可以很轻易的解决掉这方面的问题。而有些朋友们常常一接触Linux就是希望构架网站,根本没有想到要先了解一下Linux的基础。这是相当困难的。
      
      二、Linux命令是必须学习

      虽然Linux桌面应用发展很快,但是命令在Linux中依然有很强的生命力。Linux是一个命令行组成的操作系统,精髓在命令行,无论图形界面发展到什么水平这个原理是不会变的,Linux命令有许多强大的功能:从简单的磁盘操作、文件存取、到进行复杂的多媒体图象和流媒体文件的制作。举一个例子:Linux的常用命令find,察看man文档,初学者一定会觉得太复杂而不原意用,但是你一旦学会就爱不释手.它的功能实在太强了,在配合exec参数或者通过管道重定向到xargs命令和grep命令,可以完成非常复杂的操作,如果同样的操作用图形界面的工具来完成,恐怕要多花十几陪的时间。

      不同版本的Linux命令数量不一样,这里笔者把它们中比较重要的和使用频率最多的命令,按照它们在系统中的作用分成几个部分介绍给大家,通过这些基础命令的学习我们可以进一步理解Linux系统:

      安装和登录命令:login、shutdown、halt、reboot、mount、umount、chsh

      文件处理命令:file、mkdir、grep、dd、find、mv、ls、diff、cat、ln

      系统管理相关命令:df、top、free、quota、at、lp、adduser、groupaddkill、crontab、tar、unzip、gunzip、last

      网络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rloginrcp、finger、mail、nslookup

      系统安全相关命令:passwd、su、umask、chgrp、chmod、chown、chattr、sudo、pswho
      

      三、选择一本好的工具书

      工具书对于学习者而言是相当重要的。一本错误观念的工具书却会让新手整个误入歧途。目前国内关于Linux的书籍有很多不过精品的不多,笔者强烈建议阅读影印本的“O'Reilly原版Linux图书http://www.oreilly.com.cn/”,而且出版社还提供了一个非常好的路线图:http://www.oreilly.com.cn/guide/guide_linux.php

      
      四、选择一个适合你的Linux发行版本

      目前全球有超过一百多个Linux发行版本,在国内也能找到十几个常见版本。如何选择请根据你的需求和能力,RedhatLinux和DebianLinux是网络管理员的理想选择。对于英语不是很好的读者红旗 Linux、中标Linux这些中文版本比较适合。现在一些Linux网站有一些Linux版本的免费下载,这里要说的是并不适合Linux初学者。

      五、养成在命令行下工作

      一定要养成在命令行下工作的习惯,要知道X-window只是运行在命令行模式下的一个应用程序。在命令行下学习虽然一开始进度较慢,但是熟悉后,您未来的学习之路将是以指数增加的方式增长的。从网管员来说,命令行实际上就是规则,它总是有效的,同时也是灵活的。即使是通过一条缓慢的调制解调器线路,它也能操纵几千公里以外的远程系统。
      
      六、选择一个适合你的Linux社区

      随着Linux应用的扩展,出现了不少Linux社区。有一些非常优秀的社区往往是Linux高手的舞台,如果在探讨高级技巧的论坛张贴非常初级的问题经常会没有结果。建议选择一些适于初学者的Linux社区。
      
      七、勤于实践

      要增加自己Linux的技能,只有通过实践来实现了。所以,赶快找一部计算机,赶快安装一个Linux发行版本,然后进入精彩的Linux世界,相信对于你自己的Linux能力必然大有斩获。对Linux命令熟悉后,你可以开始搭建一个小的Linux网络,这是最好的实践方法。Linux是网络的代名词,Linux网络服务功能非常强大,不论是邮件服务器、Web服务器、DNS服务器等都非常完善。当然你不需搭建所有服务,可以慢慢来。自己多动手,不要非等着别人帮你解决问题。
      
      八、如何得到联机帮助

      和私有操作系统不同,各个Linux的发行版本的技术支持时间都较短,这对于Linux初学者是往往不够的。其实当你安装了一个完整的Linux系统后其中已经包含了一个强大的帮助,只是可能你还没有发现和使用它们的技巧。

      1.主流Linux发行版都自带非常详细的文档(包括手册页和FAQ),从系统安装到系统安全,针对不同层次的人的详尽文档,仔细阅读文档后40%问题都可在此解决。

      2.查阅经典工具书和Howto,特别是Howto是全球数以万计的Linux、Unix的经验总结非常有参考价值通常40%的问题同样可以解决。

      九、在Linux论坛获取帮助

      如果上面的措施没有解决问题,此时你就需要Linux社区的帮助了。 Linux的使用者一般都是专业人士,他们有着很好的电脑背景且愿意协助他人,Linux高手更具有鼓励新手的文化精神。如何在Linux社区获得帮助,需要说明的是你要有周全的思考,准备好你的问题,不要草率的发问,否则只会得到到草率的回答或者根本得不到任何答案。越表现出在寻求帮助前为解决问题付出的努力,你越能得到实质性的帮助。最好先搜寻一下论坛是否有您需要的文章。这样可以获得事半功倍的效果。

      下面笔者在论坛看到的一个好问题: “安装红旗4.0后,系统紫光输入法自带的双拼方案和我的习惯不一样,如何自定义双拼方案解决?谢谢?”这个问题很简练,笔者五分钟后就给出了解决方法: “首先备份原文件到其他目录,然后删掉/usr/local/unispim/unispimsp.ksc,编辑 /usr/local/unispim/unispimsp.ini,最后重启动计算机,生成新的unispimsp.ksc。”另外得到回复后如果问题解决,向帮助过你的人发个说明,让他们知道问题是怎样解决的,这种补充有助于他人在邮件列表/新闻组/论坛中搜索对你有过帮助的完整解决方案,这可能对他们也很有用。

      下面看看一个让人无法回答的问题:“救命各位高手,向你们请教一些问题:如何在Linux下配制HTTP、FTP、Samba、DNS、DHCP、Sendmail服务器,谢谢”这样的问题我想即使Linux高手也很难快速准确精练的回答你。

      你需要提供精确有效的信息。这并不是要求你简单的把成吨的出错代码或者数据完全转储摘录到你的提问中。如果你有庞大而复杂的测试条件,尽量把它剪裁得越小越好。可能你会遇到这种情况,对于一个问题会出现不同内容回答,这时你需要通过实践来验证。另外把这个问题放在其他Linux社区请求帮助也是一种选择。如果得不到答案,请不要以为我们觉得无法帮助你。有时只是看到你问题的人不知道答案罢了。这时换一个社区是不错的选择。

      另外发问的时候一定要注意到某些礼节。因为Linux社区是一个松散的组织、也不承担回复每个帖子的义务。它不是技术支持。

      十、用Unix思维学习Linux

      Linux是参照Unix思想设计的,理解掌握Linux必须按照Unix思维来进行。思想性的转变比暂时性的技术提高更有用,因为他能帮助你加快学习速度。
      
      十一、学习专业英文

      如果你想深入学习Linux,看不懂因为文档实在是太难了。写的最好的、最全面的文档都是英语写的,最先发布的技术信息也都是用英语写的。即便是非英语国家的人发布技术文档,也都首先翻译成英语在国际学术杂志和网络上发表。安装一个新的软件时先看README,再看INSTALL然后看FAQ,最后才动手安装,这样遇到问题就知道为什么。如果说明文档不看,结果出了问题再去论坛来找答案反而浪费时间。
      
      附:  
      1.掌握至少50个以上的常用命令。
      2.熟悉Gnome/KDE等X-windows桌面环境操作。
      3.掌握.tgz、.rpm等软件包的常用安装方法。
      4.学习添加外设,安装设备驱动程序(比如网卡)。
      5.熟悉Grub/Lilo引导器及简单的修复操作。
      6.熟悉Linux文件系统?和目录结构。
      7.掌握vi,gcc,gdb等常用编辑器,编译器,调试器。
      8.理解shell别名、管道、I/O重定向、输入和输出以及shell脚本编程。
      9.学习Linux环境下的组网。
  • 431/3123>

    用户菜单

    我的栏目

    我的存档

    数据统计

    RSS订阅

    Open Toolbar