工作,学习,生活,这里将会有一些记录. 备用域名:http://meisw.51099.com 注册 | 登陆
浏览模式: 标准 | 列表2010年07月的文章

Linux的samba服务器在Windows 2003域环境中的配置(1)

工作需求,需要samba服务器使用Active Directory来进行身份认证。折腾了一段时间,终于配置起来了。
Windows 2003域环境的搭建不多说了,网上很多教程,而且都是点鼠标的操作,没啥技术含量,着重讨论Linux的Samba服务器支持域认证的配置过程。

Win 2003 Server作为域控制器,客户端提交的认证请求和授权的过程是通过Kerberos5协议来完成的,所以要让Linux的samba服务器支持域认证,首先需要将Kerberos配置好。看我的配置文件

 

[logging]

 default = FILE:/var/log/krb5libs.log

 kdc = FILE:/var/log/krb5kdc.log

 admin_server = FILE:/var/log/kadmind.log

 

[libdefaults]

 default_realm = MNKW.COM  #指定域

 dns_lookup_realm = false

 dns_lookup_kdc = true

 ticket_lifetime = 24h

 forwardable = yes

 

[realms]

 MNKW.COM = {

  kdc = 192.168.6.37:88  #设置密钥分发中心的接口,即域控制器的IP

  admin_server = 192.168.6.37:749

  default_domain = MNKW.COM

 }

 

 [domain_realm]

 .mnkw.com = MNKW.COM  #指定域

 mnkw.com = MNKW.COM     #指定域

 

[appdefaults]

 pam = {

   debug = false

   ticket_lifetime = 36000

   renew_lifetime = 36000

   forwardable = true

   krb4_convert = false

 }

 

在配置好以上之后,需要执行kinit来验证和初始化kerberos协议是否可以正常运行。

遇到的一些问题:

一、

[root@Gh0st CentOS]# kinit test111@mnkw.com

kinit(v5): Cannot find KDC for requested realm while getting initial credentials

原因:客户端主DNS未指向域控制器

解决:

编辑文件/etc/resolv.conf,将nameserver的值修改成域控制器的IP地址。

 

二、

[root@Gh0st CentOS]# kinit test111@mnkw.com

Password for test111@mnkw.com:

kinit(v5): Clock skew too great while getting initial credentials

原因:

客户端与认证服务器的时间差距太大,将客户端与认证服务器的时间同步即可

 

解决:

安装ntp软件,执行ntpdate  –b 192.168.6.37(域控制器的IP),时间被同步

[root@Gh0st CentOS]# ntpdate  -b 192.168.6.37

17 Sep 12:32:05 ntpdate[10302]: step time server 192.168.6.37 offset 2537.194742 sec

 

三、

[root@Gh0st CentOS]# kinit test111@mnkw.com

Password for test111@mnkw.com:

kinit(v5): KDC reply did not match expectations while getting initial credentials

 

解决:使用大写的域名

[root@Gh0st CentOS]# kinit administrator@MNKW.COM

Password for administrator@MNKW.COM:

[root@Gh0st CentOS]#

 

 

至此,kerberos的协议已经配置完成。http://hi.baidu.com/drinkey/blog/item/471a2f97a628226755fb969c.html

linux自动安装之kickstart配置文件详解

kickstart是什么
        许多系统管理员宁愿使用自动化的安装方法来安装红帽企业 Linux.为了满足这种需要,红帽创建了kickstart安装方法.使用kickstart,系统管理员可以创建一个文件,这个文件包含了在典型的安装过程中所遇 到的问题的答案.
        Kickstart文件可以存放于单一的服务器上,在安装过程中被独立的机器所读取.这个安装方法可以支持使用单一kickstart文件在多台机器上安装红帽企业Linux,这对于网络和系统管理员来说是个理想的选择.
        Kickstart给用户提供了一种自动化安装红帽企业Linux的方法.


如何执行kickstart安装
        kickstart 安装可以使用本地光盘,本地硬盘驱动器,或通过 NFS,FTP,HTTP 来执行.
        要使用 kickstart,必须:
                1.创建一个kickstart文件.
                2.创建有kickstart文件的引导介质或者使这个文件在网络上可用.
                3.筹备安装树.
                4.开始kickstart安装.


创建kickstart文件
        kickstart文件是一个简单的文本文件,它包含了一个项目列表,每个项目由一个关键字来识别.可以用「Kickstart 配置」应用程序创建它或是自己从头编写.红帽企业Linux安装程序也根据在安装过程中的选择创建一个简单的kickstart文件,这个文件被写入到/root/anaconda-ks.cfg.可以用任何能够把文件保存为ASCII文本的文本编辑器或字处理器来编辑它.
        首先,在创建kickstart文件时留意下列问题:
                1.每节必须按顺序指定.除非特别申明,每节内的项目则不必按序排列.小节的顺序为:
                        命令部分,这里应该包括必需的选项.
                        %packages部分,这部分选择需要安装的软件包.
                        %pre和%post部分,这两个部分可以按任何顺序排列而且不是必需的.
                2.不必需的项目可以被省略.
                3.如果忽略任何必需的项目,安装程序会提示用户输入相关的项目的选择,就象用户在典型的安装过程中所遇到的一样.一旦用户进行了选择,安装会以非交互的方式(unattended)继续(除非找到另外一个没有指定的项目).
                4.以井号("#")开头的行被当作注释行并被忽略.
        对于 kickstart 升级,下列项目是必需的:
                1.语言
                2.安装方法
                3.设备规格(如果这个设备是在安装过程中所需要的)
                4.键盘设置
                5.upgrade 关键字
                6.引导装载程序配置
                7.如果任何其他的项目被指定为upgrade,这些项目将被忽略(注意这包括了软件包选择).


kickstart命令选项
        下面的选项可以放入kickstart文件.如果喜欢使用图形化的界面来创建kickstart文件,可以使用"Kickstart 配置"应用程序.(注:如果某选项后面跟随了一个等号(=),它后面就必须指定一个值.在示例命令中,括号([])中的选项是命令的可选参数.)

        autopart(可选)
                自动创建分区,大于1GB的根分区(/),交换分区和适合于不同体系结构的引导分区.一个或多个缺省分区的大小可以用part指令重新定义.

        ignoredisk(可选)
                导致安装程序忽略指定的磁盘.如果使用自动分区并希望忽略某些磁盘的话,这就很有用.
                        例如,没有ignoredisk,如要试图在SAN-cluster系统里部署,kickstart就会失败,因为安装程序检测到SAN不返回分区表的被动路径(passive path).
                如果有磁盘的多个路径时,ignoredisk选项也有用处.
                语法是:
                        ignoredisk --drives=drive1,drive2,...
                        这里driveN是sda,sdb... hda等等中的一个.

        autostep(可选)
                和interactive相似,除了它进入下一屏幕,它通常用于调试.
                --autoscreenshot,安装过程中的每一步都截屏并在安装完成后把图片复制到/root/anaconda-screenshots.这对于制作文档很有用.

        auth或authconfig(必需)
                为系统设置验证选项.这和在安装后运行的authconfig命令相似.在缺省情况下,密码通常被加密但不使用影子文件(shadowed).
                --enablemd5,每个用户口令都使用md5加密.
                --enablenis,启用NIS支持.在缺省情况下,--enablenis使用在网络上找到的域.域应该总是用--nisdomain=选项手工设置.
                --nisdomain=,用在NIS服务的NIS域名.
                --nisserver=,用来提供NIS服务的服务器(默认通过广播).
                --useshadow或--enableshadow,使用屏蔽口令.
                --enableldap,在/etc/nsswitch.conf启用LDAP支持,允许系统从LDAP目录获取用户的信息(UIDs,主目录,shell 等等).要使用这个选项,必须安装nss_ldap软件包.也必须用--ldapserver=和--ldapbasedn=指定服务器和base DN(distinguished name).
                --enableldapauth,把LDAP作为一个验证方法使用.这启用了用于验证和更改密码的使用LDAP目录的pam_ldap模块.要使用这个选项,必须安装nss_ldap软件包.也必须用--ldapserver=和--ldapbasedn=指定服务器和base DN.
                --ldapserver=,如果指定了--enableldap或--enableldapauth,使用这个选项来指定所使用的LDAP服务器的名字.这个选项在/etc/ldap.conf文件里设定.
                --ldapbasedn=,如果指定了--enableldap或--enableldapauth,使用这个选项来指定用户信息存放的LDAP目录树里的DN.这个选项在/etc/ldap.conf文件里设置.
                --enableldaptls,使用TLS(传输层安全)查寻.该选项允许LDAP在验证前向LDAP服务器发送加密的用户名和口令.
                --enablekrb5,使用Kerberos 5验证用户.Kerberos自己不知道主目录,UID或shell.如果启用了Kerberos,必须启用LDAP,NIS,Hesiod或者使用/usr/sbin/useradd命令来使这个工作站获知用户的帐号.如果使用这个选项,必须安装pam_krb5软件包.
                --krb5realm=,工作站所属的Kerberos 5领域.
                --krb5kdc=,为领域请求提供服务的KDC.如果的领域内有多个KDC,使用逗号(,)来分隔它们.
                --krb5adminserver=,领域内还运行kadmind的KDC.该服务器处理改变口令以及其它管理请求.如果有不止一个KDC,该服务器必须是主KDC.
                --enablehesiod,启用Hesiod支持来查找用户主目录,UID 和 shell.在网络中设置和使用 Hesiod 的更多信息,可以在 glibc 软件包里包括的 /usr/share/doc/glibc-2.x.x/README.hesiod里找到.Hesiod是使用DNS记录来存储用户,组和其他信息的 DNS 的扩展.
                --hesiodlhs,Hesiod LHS("left-hand side")选项在/etc/hesiod.conf里设置.Hesiod 库使用这个选项来决定查找信息时搜索DNS的名字,类似于LDAP对 base DN的使用.
                --hesiodrhs,Hesiod RHS("right-hand side")选项在/etc/hesiod.conf里设置.Hesiod 库使用这个选项来决定查找信息时搜索DNS的名字,类似于LDAP对base DN的使用.
                --enablesmbauth,启用对SMB服务器(典型的是Samba或Windows服务器)的用户验证.SMB验证支持不知道主目录,UID 或 shell.如果启用SMB,必须通过启用LDAP,NIS,Hesiod或者用/usr/sbin/useradd命令来使用户帐号为工作站所知.要使用这个选项,必须安装pam_smb软件包.
                --smbservers=,用来做SMB验证的服务器名称.要指定不止一个服务器,用逗号(,)来分隔它们.
                --smbworkgroup=,SMB服务器的工作组名称.
                --enablecache,启用nscd服务.nscd服务缓存用户,组和其他类型的信息.如果选择在网络上用NIS,LDAP或hesiod分发用户和组的信息,缓存就尤其有用.

        bootloader(必需)
                指定引导装载程序怎样被安装.对于安装和升级,这个选项都是必需的.
                --append=,指定内核参数.要指定多个参数,使用空格分隔它们.
                        例如:bootloader --location=mbr --append="hdd=ide-scsi ide=nodma"
                --driveorder,指定在BIOS引导顺序中居首的驱动器.
                        例如:bootloader --driveorder=sda,hda
                --location=,指定引导记录被写入的位置.有效的值如下:mbr(缺省),partition(在包含内核的分区的第一个扇区安装引导装载程序)或none(不安装引导装载程序).
                --password=,如果使用GRUB,把GRUB引导装载程序的密码设置到这个选项指定的位置.这应该被用来限制对可以传入任意内核参数的GRUB shell的访问.
                --md5pass=,如果使用GRUB,这和--password=类似,只是密码已经被加密.
                --upgrade,升级现存的引导装载程序配置,保留其中原有的项目.该选项仅可用于升级.
        clearpart(可选)
                在创建新分区之前,从系统上删除分区.默认不会删除任何分区.
                注:如果使用了clearpart命令,--onpart命令就不能够用在逻辑分区上.
                --all,删除系统上所有分区.
                --drives=,指定从哪个驱动器上清除分区.
                        例如,下面的命令清除了主IDE控制器上的前两个驱动器上所有分区
                        clearpart --drives=hda,hdb --all
                --initlabel,根据不同体系结构把磁盘标签初始化为缺省设置(例如,msdos用于x86而gpt用于Itanium).当安装到一个崭新的硬盘时,这很有用,安装程序不会询问是否应该初始化磁盘标签.
                --linux,删除所有Linux分区.
                --none(缺省),不要删除任何分区.

        cmdline(可选)
                在完全的非交互式的命令行模式下进行安装.任何交互式的提示都会终止安装.这个模式对于有x3270控制台的IBM System z系统很有用.

        device(可选)
                在多数的PCI系统里,安装程序会正确地自动探测以太网卡和SCSI卡.然而,在老的系统和某些PCI系统里,kickstart需要提示来找到正确的设备.device命令用来告诉安装程序安装额外的模块,它有着这样的格式:
                device <type><moduleName> --opts=<options>
                <type>,用scsi或eth代替
                <moduleName>,使用应该被安装的内核模块的名称来替换.
                --opts=,传递给内核模块的选项.注意,如果把选项放在引号里,可以传递多个选项.
                        例如:--opts="aic152x=0x340 io=11"
                                                  
        driverdisk(可选)
                可以在kickstart安装过程中使用驱动软盘.必须把驱动软盘的内容复制到系统的硬盘分区的根目录下.然后必须使用driverdisk 命令来告诉安装程序到哪去寻找驱动磁盘.
                driverdisk <partition> [--type=<fstype>]
                另外,也可以为驱动程序盘指定一个网络位置:
                driverdisk --source=ftp://path/to/dd.img
                driverdisk --source=http://path/to/dd.img
                driverdisk --source=nfs:host:/path/to/img
                        <partition>,包含驱动程序盘的分区.
                        --type=,文件系统类型(如:vfat,ext2,ext3).

        firewall(可选)
                这个选项对应安装程序里的「防火墙配置」屏幕:
                firewall --enabled|--disabled [--trust=] <device> [--port=]
                --enabled或者--enable,拒绝不是答复输出请求如DNS答复或DHCP请求的进入连接.如果需要使用在这个机器上运行的服务,可以选择允许指定的服务穿过防火墙.
                --disabled或--disable,不要配置任何iptables规则.
                --trust=,在此列出设备,如eth0,这允许所有经由这个设备的数据包通过防火墙.如果需要列出多个设备,使用--trust eth0 --trust eth1.不要使用以逗号分隔的格式,如--trust eth0, eth1.
                <incoming>,使用以下服务中的一个或多个来替换,从而允许指定的服务穿过防火墙.
                        --ssh
                        --telnet
                        --smtp
                        --http
                        --ftp
                --port=,可以用端口:协议(port:protocal)格式指定允许通过防火墙的端口.
                        例如,如果想允许IMAP通过的防火墙,可以指定imap:tcp.还可以具体指定端口号码,要允许UDP分组在端口1234通过防火墙,输入1234:udp.要指定多个端口,用逗号将它们隔开.

        firstboot(可选)
                决定是否在系统第一次引导时启动"设置代理".如果启用,firstboot软件包必须被安装.如果不指定,这个选项是缺省为禁用的.
                --enable或--enabled,系统第一次引导时,启动"设置代理".
                --disable或--disabled,系统第一次引导时,不启动"设置代理".
                --reconfig,在系统引导时在重配置(reconfiguration)模式下启用"设置代理".这个模式启用了语言,鼠标,键盘,根密码,安全级别,时区和缺省网络配置之外的选项.

        halt(可选)
                在成功地完成安装后关闭系统.这和手工安装相似,手工安装的anaconda会显示一条信息并等待用户按任意键来重启系统.在kickstart安装过程中,如果没有指定完成方法(completion method),将缺省使用reboot选项.
                halt选项基本和shutdown -h命令相同.
                关于其他的完成方法,请参考kickstart的poweroff,reboot和shutdown选项.

        graphical(可选)
                在图形模式下执行kickstart安装.kickstart安装默认在图形模式下安装.

        install(可选)
                告诉系统来安装全新的系统而不是在现有系统上升级.这是缺省的模式.必须指定安装的类型,如cdrom,harddrive,nfs或url(FTP 或HTTP安装).install命令和安装方法命令必须处于不同的行上.

        cdrom
                从系统上的第一个光盘驱动器中安装.

        harddrive
                从本地驱动器的vfat或ext2格式的红帽安装树来安装.
                --biospart=,从BIOS分区来安装(如82).
                --partition=,从分区安装(如sdb2).
                --dir=,包含安装树的variant目录的目录.
                        例如:harddrive --partition=hdb2 --dir=/tmp/install-tree

        nfs
                从指定的NFS服务器安装.
                        --server=,要从中安装的服务器(主机名或IP).
                        --dir=,包含安装树的variant目录的目录.
                        --opts=,用于挂载NFS输出的Mount选项(可选).
                                例如:nfs --server=nfsserver.example.com --dir=/tmp/install-tree

        url
                通过FTP或HTTP从远程服务器上的安装树中安装.
                        例如:url --url http://<server>/<dir>
                        或:url --url ftp://<username>:<password>@<server>/<dir>

        ignore disk(可选)
                用来指定在分区,格式化和清除时anaconda不应该访问的磁盘.这个命令有一个必需的参数,就是用逗号隔开的需要忽略的驱动器列表.
                例如:ignoredisk --drives=[disk1,disk2,...]

        interactive(可选)
                在安装过程中使用kickstart文件里提供的信息,但允许检查和修改给定的值.将遇到安装程序的每个屏幕以及kickstart文件里给出的值.通过点击"下一步"接受给定的值或是改变值后点击"下一步"继续.请参考autostep命令.

        iscsi(可选)
                issci --ipaddr= [options].
                --target
                --port=
                --user=
                --password=

        iscsiname(可选)

        key(可选)
                指定安装密钥,它在软件包选择和获取支持时设别系统的时候是必需的.这个命令是红帽企业Linux-specific,它对Fedora来说没有意义并且会被忽略.
                --skip,跳过输入密钥.通常,如果没有key命令,anaconda将暂停并提示输入密钥.如果没有密钥或不想提供它,这个选项允许继续自动化安装.

        keyboard(必需)
                设置系统键盘类型.这里是 i386,Itanium,和 Alpha 机器上可用键盘的列表:
                be-latin1, bg, br-abnt2, cf, cz-lat2, cz-us-qwertz, de, de-latin1,
                de-latin1-nodeadkeys, dk, dk-latin1, dvorak, es, et, fi, fi-latin1,
                fr, fr-latin0, fr-latin1, fr-pc, fr_CH, fr_CH-latin1, gr, hu, hu101,
                is-latin1, it, it-ibm, it2, jp106, la-latin1, mk-utf, no, no-latin1,
                pl, pt-latin1, ro_win, ru, ru-cp1251, ru-ms, ru1, ru2,  ru_win,
                se-latin1, sg, sg-latin1, sk-qwerty, slovene, speakup,  speakup-lt,
                sv-latin1, sg, sg-latin1, sk-querty, slovene, trq, ua,  uk, us, us-acentos
                文件/usr/lib/python2.2/site-packages/rhpl/keyboard_models.py 也包含这个列表而且是 rhpl 软件包的一部分.

        lang(必需)
                设置在安装过程中使用的语言以及系统的缺省语言.例如,要把语言设置为英语,kickstart文件应该包含下面的一行:
                lang en_US
                文件/usr/share/system-config-language/locale-list里每一行的第一个字段提供了一个有效语言代码的列表,它是system-config-language软件包的一部分.
                文本模式的安装过程不支持某些语言(主要是中文,日语,韩文和印度的语言).如果用lang命令指定这些语言中的一种,安装过程仍然会使用英语,但是系统会缺省使用指定的语言.

        langsupport(不赞成)
                langsupport关键字已经被取消而且使用它将导致屏幕出现错误信息及终止安装.作为代替,应该在kickstart文件里的%packages 部分列出所支持的语言的支持软件包组.例如,要支持法语,应该把下面的语句加入到
                %packages:
                @french-support

        logvol(可选)
                使用以下语法来为逻辑卷管理(LVM)创建逻辑卷:
                logvol <mntpoint> --vgname=<name> --size=<size> --name=<name><options>
                这些选项如下所示:
                --noformat,使用一个现存的逻辑卷,不进行格式化.
                --useexisting,使用一个现存的逻辑卷,重新格式化它.
                --fstype=,为逻辑卷设置文件系统类型.合法值有:ext2,ext3,swap和vfat.
                --fsoptions=,为逻辑卷设置文件系统类型.合法值有:ext2,ext3,swap和vfat.
                --bytes-per-inode=,指定在逻辑卷上创建的文件系统的节点的大小.因为并不是所有的文件系统都支持这个选项,所以在其他情况下它都被忽略.
                --grow=,告诉逻辑卷使用所有可用空间(若有),或使用设置的最大值.
                --maxsize=,当逻辑卷被设置为可扩充时,以MB为单位的分区最大值.在这里指定一个整数值,不要在数字后加MB.
                --recommended=,自动决定逻辑卷的大小.
                --percent=,用卷组里可用空间的百分比来指定逻辑卷的大小.
                首先创建分区,然后创建逻辑卷组,再创建逻辑卷.
                        例如:
                        part pv.01 --size 3000
                        volgroup myvg pv.01
                        logvol / --vgname=myvg --size=2000 --name=rootvol

        logging(可选)
                这个命令控制安装过程中anaconda的错误日志.它对安装好的系统没有影响.
                --host=,发送日志信息到给定的远程主机,这个主机必须运行配置为可接受远程日志的syslogd进程.
        --port=,如果远程的syslogd进程没有使用缺省端口,这个选项必须被指定.
                --level=,debug,info,warning,error或critical中的一个.
                指定tty3上显示的信息的最小级别.然而,无论这个级别怎么设置,所有的信息仍将发送到日志文件.

        mediacheck(可选)
                如果指定的话,anaconda将在安装介质上运行mediacheck.这个命令只适用于交互式的安装,所以缺省是禁用的.

        monitor(可选)
                如果monitor命令没有指定,anaconda将使用X来自动检测的显示器设置.请在手工配置显示器之前尝试这个命令.
                --hsync=,指定显示器的水平频率.
                --vsync=,指定显示器的垂直频率.
                --monitor=,使用指定的显示器;显示器的名字应该在hwdata软件包里的/usr/share/hwdata/MonitorsDB列表上.这个显示器的列表也可以在Kickstart Configurator的X配置屏幕上找到.如果提供了--hsync或--vsync,它将被忽略.如果没有提供显示器信息,安装程序将自动探测显示器.
                --noprobe=,不要试图探测显示器.

        mouse(已取消)
                mouse 关键字已经被取消,使用它将导致屏幕出现错误信息并终止安装.

        network(可选)
                为系统配置网络信息.如果 kickstart安装不要求联网(换句话说,不从NFS,HTTP或FTP安装),就不需要为系统配置网络.如果安装要求联网而kickstart文件里没有提供网络信息,安装程序会假定从eth0通过动态IP地址(BOOTP/DHCP)来安装,并配置安装完的系统动态决定IP地址.network选项为通过网络的kickstart安装以及所安装的系统配置联网信息.
                --bootproto=,dhcp,bootp或static中的一种,缺省值是dhcp.bootp和dhcp被认为是相同的.
                        static方法要求在kickstart文件里输入所有的网络信息.顾名思义,这些信息是静态的且在安装过程中和安装后所有.静态网络的设置行更为复杂,因为必须包括所有的网络配置信息.必须指定IP地址,网络,网关和命名服务器.
                        例如("\"表示连续的行):
                        network --bootproto=static --ip=10.0.2.15 --netmask=255.255.255.0 \
                        --gateway=10.0.2.254 --nameserver=10.0.2.1
                        如果使用静态方法,请注意以下两个限制:
                                所有静态联网配置信息都必须在一行上指定,不能使用反斜线来换行.
                                在这里只能够指定一个命名服务器.然而,如果需要的话,可以使用kickstart文件的%post段落来添加更多的命名服务器.
                --device=,用来选择用于安装的特定的以太设备.注意,除非kickstart文件是一个本地文件(如ks=floppy),否则--device=的使用是无效的.这是因为安装程序会配置网络来寻找kickstart文件.
                        例如: network --bootproto=dhcp --device=eth0
                --ip=,要安装的机器的IP地址.
                --gateway=,IP地址格式的默认网关.
                --nameserver=,主名称服务器,IP地址格式.
                --nodns,不要配置任何 DNS 服务器.
                --netmask=,安装的系统的子网掩码.
                --hostname=,安装的系统的主机名.
                --ethtool=,指定传给ethtool程序的网络设备的其他底层设置.
                --essid=,无线网络的网络ID.
                --wepkey=,无线网络的加密密钥.
                --onboot=,是否在引导时启用该设备.
                --class=,DHCP类型.
                --mtu=,该设备的MTU.
                --noipv4=,禁用此设备的IPv4.
                --noipv6=,禁用此设备的IPv6.

        multipath(可选)
                multipath --name= --device= --rule=

        part或partition(对于安装是必需的,升级可忽略).
                在系统上创建分区.
                如果不同分区里有多个红帽企业Linux系统,安装程序会提示用户升级哪个系统.
                警告:作为安装过程的一部分,所有被创建的分区都会被格式化,除非使用了--noformat和--onpart.
                <mntpoint>,<mntpoint>是分区的挂载点,它必须是下列形式中的一种:
                        /<path>,例如,/,/usr,/home
                        swap,该分区被用作交换空间,要自动决定交换分区的大小,使用--recommended选项.
                                swap --recommended
                                自动生成的交换分区的最小值大于系统内存的数量,但小于系统内存的两倍.
                        raid.<id>,该分区用于 software RAID(参考 raid).
                        pv.<id>,该分区用于 LVM(参考 logvol).
                --size=,以MB为单位的分区最小值.在此处指定一个整数值,如500.不要在数字后面加MB.
                --grow,告诉分区使用所有可用空间(若有),或使用设置的最大值.
                --maxsize=,当分区被设置为可扩充时,以MB为单位的分区最大值.在这里指定一个整数值,不要在数字后加MB.
                --noformat,用--onpart命令来告诉安装程序不要格式化分区.
                --onpart=或--usepart=,把分区放在已存在的设备上.
                        例如:partition /home --onpart=hda1,把/home置于必须已经存在的/dev/hda1上.
                --ondisk=或--ondrive=,强迫分区在指定磁盘上创建.
                        例如:--ondisk=sdb把分区置于系统的第二个SCSI磁盘上.
                --asprimary,强迫把分区分配为主分区,否则提示分区失败.
                --type=(用fstype代替),这个选项不再可用了.应该使用fstype.
                --fstype=,为分区设置文件系统类型.有效的类型为ext2,ext3,swap和vfat.
                --start=,指定分区的起始柱面,它要求用--ondisk=或ondrive=指定驱动器.它也要求用--end=指定结束柱面或用--size=指定分区大小.
                --end=,指定分区的结束柱面.它要求用--start=指定起始柱面.
                --bytes-per-inode=,指定此分区上创建的文件系统的节点大小.不是所有的文件系统都支持这个选项,所以在其他情况下它都被忽略.
                --recommended,自动决定分区的大小.
                --onbiosdisk,强迫在 BIOS 找到的特定磁盘上创建分区.
                注:如果因为某种原因分区失败了,虚拟终端3上会显示诊断信息.

        poweroff(可选)
                在安装成功后关闭系统并断电.通常,在手工安装过程中,anaconda会显示一条信息并等待用户按任意键来重新启动系统.在kickstart的安装过程中,如果没有指定完成方法,将使用缺省的reboot选项.

        raid(可选)
                组成软件RAID设备.该命令的格式是:
                raid <mntpoint> --level=<level> --device=<mddevice><partitions*>
                <mntpoint>,RAID文件系统被挂载的位置.如果是/,除非已经有引导分区存在(/boot),RAID级别必须是1.如果已经有引导分区,/boot分区必须是级别1且根分区(/)可以是任何可用的类型.<partitions*>(这表示可以有多个分区)列出了加入到RAID阵列的RAID标识符.
                --level=,要使用的RAID级别(0,1,或5).
                --device=,要使用的RAID设备的名称(如md0或md1).RAID设备的范围从md0直到md7,每个设备只能被使用一次.
                --bytes-per-inode=,指定RAID设备上创建的文件系统的节点大小.不是所有的文件系统都支持这个选项,所以对于那些文件系统它都会被忽略.
                --spares=,指定RAID阵列应该被指派N个备用驱动器.备用驱动器可以被用来在驱动器失败时重建阵列.
                --fstype=,为RAID阵列设置文件系统类型.合法值有:ext2,ext3,swap和vfat.
                --fsoptions=,指定当挂载文件系统时使用的free form字符串.这个字符串将被复制到系统的/etc/fstab文件里且应该用引号括起来.
                --noformat,使用现存的RAID设备,不要格式化RAID阵列.
                --useexisting,使用现存的RAID设备,重新格式化它.

        reboot(可选)
                在成功完成安装(没有参数)后重新启动.通常,kickstart会显示信息并等待用户按任意键来重新启动系统.

        repo(可选)
                配置用于软件包安装来源的额外的yum库.可以指定多个repo行.
                repo --name=<repoid> [--baseline=<url>| --mirrorlist=<url>]
                --name=,repo id.这个选项是必需的.
                --baseurl=,库的URL.这里不支持yum repo配置文件里使用的变量.可以使用它或者--mirrorlist,亦或两者都不使用.
                --mirrorlist=,指向库镜像的列表的URL.这里不支持yum repo配置文件里可能使用的变量.可以使用它或者--baseurl,亦或两者都不使用.

        rootpw(必需)
                把系统的根口令设置为<password>参数.
                rootpw [--iscrypted] <password>
                --iscrypted,如果该选项存在,口令就会假定已被加密.

        selinux(可选)
                在系统里设置SELinux状态.在anaconda里,SELinux缺省为enforcing.
                selinux [--disabled|--enforcing|--permissive]
                --enforcing,启用SELinux,实施缺省的targeted policy.
                        注:如果kickstart文件里没有selinux选项,SELinux将被启用并缺省设置为--enforcing.
                --permissive,输出基于SELinux策略的警告,但实际上不执行这个策略.
                --disabled,在系统里完全地禁用 SELinux.

        services(可选)
                修改运行在缺省运行级别下的缺省的服务集.在disabled列表里列出的服务将在enabled列表里的服务启用之前被禁用.
                --disabled,禁用用逗号隔开的列表里的服务.
                --enabled,启用用逗号隔开的列表里的服务.

        shutdown(可选)
                在成功完成安装后关闭系统.在kickstart安装过程中,如果没有指定完成方法,将使用缺省的reboot选项.

        skipx(可选)
                如果存在,安装的系统上就不会配置X.

        text(可选)
                在文本模式下执行kickstart安装. kickstart安装默认在图形模式下安装.

        timezone(可选)
                把系统时区设置为<timezone>,它可以是timeconfig列出的任何时区.
                timezone [--utc] <timezone>
                --utc,如果存在,系统就会假定硬件时钟被设置为UTC(格林威治标准)时间.

        upgrade(可选)
                告诉系统升级现有的系统而不是安装一个全新的系统.必须指定 cdrom,harddrive,nfs或url(对于FTP和HTTP而言)中的一个作为安装树的位置.详情请参考 install.

        user(可选)
                在系统上创建新用户.
                user --name=<username> [--groups=<list>] [--homedir=<homedir>] [--password=<password>] [--iscrypted] [--shell=<shell>] [--uid=<uid>]
                --name=,提供用户的名字.这个选项是必需的.
                --groups=,除了缺省的组以外,用户应该属于的用逗号隔开的组的列表.
                --homedir=,用户的主目录.如果没有指定,缺省为/home/<username>.
                --password=,新用户的密码.如果没有指定,这个帐号将缺省被锁住.
                --iscrypted=,所提供的密码是否已经加密?
                --shell=,用户的登录shell.如果不提供,缺省为系统的缺省设置.
                --uid=,用户的UID.如果未提供,缺省为下一个可用的非系统 UID.

        vnc(可选)
                允许通过VNC远程地查看图形化的安装.文本模式的安装通常更喜欢使用这个方法,因为在文本模式下有某些大小和语言的限制.如果为no,这个命令将启动不需要密码的VNC服务器并打印出需要用来连接远程机器的命令.
                vnc [--host=<hostname>] [--port=<port>] [--password=<password>]
                --host=,不启动VNC服务器,而是连接至给定主机上的VNC viewer进程.
                --port=,提供远程VNC viewer进程侦听的端口.如果不提供,anaconda将使用VNC的缺省端口.
                --password=,设置连接VNC会话必需的密码.这是可选的,但却是我们所推荐的选项.

        volgroup(可选)
                用来创建逻辑卷管理(LVM)组,其语法格式为:
                volgroup <name><partition><options>
                这些选项如下所示:
                --noformat,使用一个现存的卷组,不要格式化它.
                --useexisting,使用一个现存的卷组,重新格式化它.
                --pesize=,设置物理分区(physical extent)的大小.
                首先创建分区,然后创建逻辑卷组,再创建逻辑卷.例如:

        xconfig(可选)
                配置X Window 系统.如果没有指定这个选项且安装了X,用户必须在安装过程中手工配置X;如果最终系统里没有安装X,这个选项不应该被使用.
                --driver,指定用于视频硬件的 X 驱动.
                --videoram=,指定显卡的显存数量.
                --defaultdesktop=,指定GNOME或KDE作为缺省的桌面(假设已经通过%packages安装了GNOME或KDE桌面环境).
                --startxonboot,在安装的系统上使用图形化登录.
                --resolution=,指定安装的系统上X窗口系统的默认分辨率.有效值有:640x480,800x600,1024x768,1152x864, 1280x1024,1400x1050,1600x1200.请确定指定与视频卡和显示器兼容的分辨率.
                --depth=,指定安装的系统上的 X 窗口系统的默认色彩深度.有效值有:8,16,24,和 32.请确定指定与视频卡和显示器兼容的色彩深度.

        zerombr(可选)
                如果指定了zerombr且yes是它的唯一参数,任何磁盘上的无效分区表都将被初始化.这会毁坏有无效分区表的磁盘上的所有内容.这个命令的格式应该如下:
                zerombr yes
                其它格式均无效.

        zfcp(可选)
                zfcp [--devnum=<devnum>] [--fcplun=<fcplun>] [--scsiid=<scsiid>] [--scsilun=<scsilun>] [--wwpn=<wwpn>]

        %include
                使用 %include/path/to/file命令可以把其他文件的内容包含在kickstart文件里,就好像这些内容出现在kickstart文件的%include命令后一样.


kickstart的软件包选择
        在kickstart文件里使用%packages命令来列出想安装的软件包(仅用于全新安装,升级安装时不支持软件包指令).
        可以指定单独的软件包名或是组,以及使用星号通配符.安装程序可以定义包含相 关软件包的组.关于组的列表,请参考第一张红帽企业 Linux光盘里的 variant/repodata/comps-*.xml. 每个组都有一个编号,用户可见性的值,名字,描述和软件包列表.在软件包列表里,如果这个组被选择的话,组里的标记为"mandatory"的软件包就必须被安装;标记为"default"的软件包缺省被选择;而标记为"optional"的软件包必须被明确地选定才会被安装.
        多数情况下,只需要列出想安装的组而不是单个的软件包.注意Core和Base组总是缺省被选择,所以并不需要在%packages部分指定它们.
        这里是一个 %packages 选择的示例:
        %packages
        @ X Window System
        @ GNOME Desktop Environment
        @ Graphical Internet
        @ Sound and Video dhcp
        如所看到的,组被指定了,每个占用一行,用@符号开头,后面是comps.xml文件里给出的组全名.组也可以用组的id指定,如gnome-desktop.不需要额外字符就可以指定单独的软件包(上例里的dhcp行就是一个单独的软件包).
        %packages 指令也支持下面的选项:
                --nobase,不要安装@Base 组.如果想创建一个很小的系统,可以使用这个选项.
                --resolvedeps,选项已经被取消了.目前依赖关系可以自动地被解析.
                --ignoredeps,选项已经被取消了.目前依赖关系可以自动地被解析.
                --ignoremissing,忽略缺少的软件包或软件包组,而不是暂停安装来向用户询问是中止还是继续安装.
                        例如:%packages --ignoremissing

kickstart预安装脚本
        可以在 ks.cfg文件被解析后马上加入要运行的命令.这个部分必须处于kickstart文件的最后(在命令部分之后)而且必须用%pre命令开头.可以在%pre部分访问网络;然而,此时命名服务还未被配置,所以只能使用IP地址.
        注:预安装脚本不在改换了的根环境(chroot)中运行.
        --interpreter /usr/bin/python,允许指定不同的脚本语言,如Python.把/usr/bin/python替换成想使用的脚本语言.


kickstart安装后脚本
        也可以加入在系统安装完毕后运行的命令.这部分内容必须在kickstart的最后而且用%post命令开头.它被用于实现某些功能,如安装其他的软件和配置其他的命名服务器.
        注:如果用静态IP信息和命名服务器配置网络,可以在%post部分访问和解析IP地址.如果使用DHCP配置网络,当安装程序执行到%post部分时,/etc/resolv.conf文件还没有准备好.此时,可以访问网络,但是不能解析IP地址.因此,如果使用DHCP,必须在%post部分指定IP地址.
        注:post-install 脚本是在 chroot 环境里运行的.因此,某些任务如从安装介质复制脚本或RPM将无法执行.
        --nochroot,允许指定想在chroot环境之外运行的命令.
                下例把/etc/resolv.conf文件复制到刚安装的文件系统里.
                %post --nochroot cp /etc/resolv.conf /mnt/sysimage/etc/resolv.conf
        --interpreter /usr/bin/python
                允许指定不同的脚本语言,如Python.把/usr/bin/python替换成想使用的脚本语言.


开始kickstart安装
        要开始kickstart安装,必须从制作的引导介质或红帽企业Linux光盘引导系统,并输入在引导提示下输入特殊的引导命令.如果ks命令行参数被传递给内核,安装程序将寻找kickstart文件.
        第一张光盘和软盘
                如果ks.cfg文件位于软盘的vfat或ext2文件系统里,而且从红帽企业Linux光盘引导的话,也可以使用linux ks=floppy命令.
                另外一个引导方法是,从红帽企业Linux光盘引导并使用软盘上的vfat或ext2文件系统里的kickstart文件.要实现这样的方法,在boot:提示下输入下面的命令:linux ks=hd:fd0:/ks.cfg
        使用驱动程序盘
                如果要使用带有kickstart的驱动盘,需要指定dd选项.
                        例如,从软盘引导并使用驱动盘,可以在boot:提示下输入命令linux ks=floppy dd
        引导光盘
                如果kickstart文件位于引导光盘上,把光盘插入机器,引导系统并在boot:提示下输入命令linux ks=cdrom:/ks.cfg
        其它启动 kickstart 安装的方法如下列举:
                askmethod,如果我们没有在的光驱里检测到红帽企业Linux光盘的话,请不要自动地把光盘作为安装来源.
                autostep,使kickstart成为非交互式的.
                debug,马上启动pdb.
                dd,使用驱动盘.
                dhcpclass=<class>,发送自定义的DHCP vendor class identifier.ISC的dhcpcd可以用"option vendor-class-identifier"来查看这个值.
                dns=<dns>,用逗号隔开的用于网络安装的命名服务器列表.
                driverdisk,和'dd'相同.
                expert,启用特殊的功能,允许对可移除介质(removable media)进行分区和提示驱动盘
                gateway=<gw>,用于网络安装的网关.
                graphical,强制图形化安装.ftp/http 安装模式时必须使用图形化界面.
                isa,提示用户输入ISA设备配置.
                ip=<ip>,用于网络安装的IP地址,对于DHCP使用'dhcp'.
                keymap=<keymap>,使用的键盘格式.有效值是那些可以用于'keyboard' kickstart命令的值.
                ks=nfs:<server>:/<path>,安装程序在NFS服务器<server>上的<path>里寻找kickstart文件.安装程序使用DHCP来配置以太网卡.例如,如果的NFS服务器是server.example.com且kickstart文件是NFS共享目录的里/mydir/ks.cfg,正确的引导命令应该是ks=nfs:server.example.com:/mydir/ks.cfg.
                ks=http://<server>/<path>,安装程序在HTTP服务器<server>上的<path>里寻找kickstart文件.安装程序使用DHCP来配置以太网卡.例如,如果的HTTP服务器是server.example.com且kickstart文件是HTTP目录的里/mydir/ks.cfg,正确的引导命令应该是ks=http://server.example.com/mydir/ks.cfg.
                ks=floppy,安装程序在/dev/fd0里的软盘上的vfat或ext2文件系统里寻找ks.cfg文件.
                ks=floppy:/<path>,安装程序在/dev/fd0里的软盘上以<path>寻找kickstart文件.
                ks=hd:<device>:/<file>,安装程序把文件系统挂载在<device>(必须是vfat或ext2),而且在该文件系统里以<file>来寻找 kickstart 文件,如ks=hd:sda3:/mydir/ks.cfg.
                ks=file:/<file>,安装程序试图从文件系统里读取<file>;并没有挂载任何文件.如果kickstart文件已经在initrd映像里时我们通常使用这个方法.
                ks=cdrom:/<path>,安装程序以<path>在光盘上寻找kickstart文件.
                ks,如果单独使用ks,安装程序将配置以太网卡使用DHCP.kickstart文件从DHCP应答的"bootServer"里读取,就像是NFS服务器共享kickstart文件一样.在缺省情况下,bootServer与DHCP服务器是同一个.kickstart文件的名字是下列之一:
                        如果指定了DHCP且引导文件以/开头,DHCP提供的引导文件将在NFS服务器上寻找.
                        如果指定了DHCP且引导文件不以/开头,DHCP提供的引导文件将在NFS服务器的/kickstart目录里寻找.
                        如果DHCP没有指定引导文件,安装程序将试图读取/kickstart/1.2.3.4-kickstart,这里的1.2.3.4是被安装的机器的数字化IP地址.
                ksdevice=<device>,安装程序使用这个网络设备来连接网络.如要使用通过eth1设备连接至系统的NFS服务器上的kickstart文件来启动kickstart安装,可以在boot:提示下使用ks=nfs:<server>:/<path> ksdevice=eth1命令.
                kssendmac,把HTTP头加到对设置系统有帮助的ks=http://请求里.在CGI环境变量里包括所有网卡的MAC地址,如:"X-RHN-Provisioning-MAC-0: eth0 01:23:45:67:89:ab".
                lang=<lang>,安装时使用的语言.这应该是'lang' kickstart命令可以使用的有效语言之一.
                loglevel=<level>,设置记录日志信息的最低级别.<level>的值可以是debug,info,warning,error和critical.缺省值是info.
                lowres,强制图形用户界面安装程序运行在640x480分辨率下.
                mediacheck,激活加载者代码,可以允许用户选择测试安装介质(如果是基于ISO的方法)的完整性.
                method=cdrom,执行基于光盘的安装.
                method=ftp://<path>,使用<path>来进行FTP安装.
                method=hd://<dev>/<path>,用<dev>上的<path>进行基于硬盘驱动器的安装.
                method=http://<path>,用<path>来进行基于HTTP的安装.
                method=nfs:<path>,用<path>来进行NFS安装.
                netmask=<nm>,用于网络安装的掩码.
                nofallback,如果图形化用户界面退出时失败.
                nofb,不要载入某些语言进行文本安装时所需要的 VGA16 帧缓冲.
                nofirewire,不要装载对防火墙设备的支持.
                noipv6,在安装过程中禁用 IPv6 网络.
                nokill,当发生致命错误时,阻止anaconda终止所有运行程序的调试选项.
                nomount,不要在救援模式下自动挂载任何已安装的Linux分区.
                nonet,不要自动探测网络设备.
                noparport,不要试图装载对并行端口的支持.
                nopass,不要把键盘和鼠标信息传递给安装程序的第二阶段.当执行网络安装时,它可以用来在安装的第二阶段测试鼠标和键盘配置屏幕.
                nopcmcia,忽略系统上的任何PCMCIA控制器.
                noprobe,提示用户输入而不要试图检测硬件.
                noshell,安装过程中tty2上不要出现shell.
                nostorage,不要自动探测存储设备(SCSI,IDE,RAID).
                nousb,不要装载USB支持(如果安装过程在早些时候挂起,这会有帮助).
                nousbstorage,不要在安装程序的载入程序中禁止载入usbstorage模块.它对SCSI系统上的设备排序可能有帮助.
                rescue,运行救援环境.
                resolution=<mode>,在指定模式下运行安装程序,如'1024x768'模式.
                serial,启用串行控制台支持.
                skipddc,跳过对显示器的DDC探测,如果系统被挂起的这可能有帮助.
                syslog=<host>[:<port>],一旦安装过程被启动并运行,发送日志信息到<host>的可选端口<port>上的syslog进程.这要求远程syslog进程接受连接(-r 选项).
                text,强制文本模式的安装.
                updates,提示包含更新(bug修复)的软盘.
                updates=ftp://<path>,基于FTP的包含更新的映像文件.
                updates=http://<path>,基于HTTP的包含更新的映像文件.
                upgradeany,不需要符合升级所期望的语法的/etc/redhat-release.
                vnc,启用基于vnc的安装.将需要连接到使用vnc客户端程序的机器.
                vncconnect=<host>[:<port>],一旦安装过程开始启动并运行,连接到<host>上的vnc客户端,也可以使用可选端口<port>.也要求'vnc' 选项被指定.
                vncpassword=<password>,启用vnc连接的密码.这将阻止其他人无意地连接到基于vnc的安装上.也要求'vnc'选项被指定.


一个简单完整的实例
        install
        cdrom
        key 2515dd4e215225dd
        lang en_US.UTF-8
        keyboard us
        xconfig --startxonboot
        network --device eth0 --bootproto static --ip 192.168.100.8 --netmask 255.255.255.0 --gateway 192.168.100.2 --nameserver 122.70.138.10 --hostname test.huabo.org
        rootpw --iscrypted $1$BPHqwNav$CjjfBezv5OuecU3rNkdDb/
        firewall --enabled --port=22:tcp
        authconfig --enableshadow --enablemd5
        selinux --enforcing
        timezone Asia/Chongqing
        bootloader --location=mbr --driveorder=sda --append="rhgb quiet"

        clearpart --drives=sda,sdb,sdc,sdd --initlabel
        part    /boot    --fstype ext3    --size=100    --ondrive=sda
        part    /        --fstype ext3    --size=4000  --ondrive=sda
        part    swap    --size=512      --ondrive=sda
        part    raid.11  --size=1  --grow  --asprimary  --ondrive=sdb
        part    raid.21  --size=1  --grow  --asprimary  --ondrive=sdc
        part    raid.31  --size=1  --grow  --asprimary  --ondrive=sdd
        raid    pv.01  --device=md0 --level=RAID5 raid.11 raid.21 raid.31
        volgroup  vgname  pv.01
        logvol  /home  --fstype=ext3 --vgname=vgname  --size=4000  --name=home
        
        %packages
        @gnome-desktop
        @core
        @base-x
        @chinese-support
        xorg-x11-utils
        xorg-x11-server-Xnest

命令集

查看IP连接数

netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

top -n 1 -b |grep 'httpd' |awk 'length($9)>=100.0{print "kill", $1}'|sh

 

netstat + awk 查询连接数两种方法,意义相同
1:netstat -pnt | awk '/^tcp/{print $5}' | cut -d: -f 1 | sort -n |uniq -c
2:netstat -pnt | awk '/^tcp/{s=split($5,N,":");A[N[s-1]]++} END{ for (k in A) print k,A[k]}'

深度反省并思考互联网商业模式

只要身在北京最大的“村”里,你总能及时知道IT圈最in的创业时尚是什么?就跟到西直门“动批”淘宝的姑娘一样,每月拿的新货保准不同。比如前一阵,人人都在谈论Groupon(美国的一个团购网站)。自从我的朋友王兴第一个弄出了中 国版的美团网之后,又出了米团F团酷团团宝等等四五十个团购 站。而眼下,模仿Foursquare(一个基于地理位置信息 的社交网站)又成了最新的时髦。

事实上,这种精明的实用主义做法在中关村已经流行 多年。区别在于,以前柳传志等上一辈模仿的只是PC这样的产 品,而新一代山寨则的是整套运作赚钱的方法,换个更蛊惑人心的词——这叫“商业模式”。

对于他们来说,一个理想的商业模式应当是这样的: 第一,它有着正宗的硅谷血统,一看就是聪明人设 计出来的,足够精巧,可以把玩,最好还有新闻效应;

第二,它的技术门槛不太高,也无需占用创业者太多 的资源,如果能够迅速地自我膨胀复制更好;

第三,不管它能不能很快赚到钱,至少国外原版已经 让风投掏过钱,换句话说,哄他们再掏一次钱还是 可能的。

整个推理的链条也很清晰:一个在美国走红的模式× 中国3亿网民的需求×投资商的银子×NB的执行团队=成功。

尽管我并不怀疑商业模式的威力,这世界上的确有一 些家伙,靠一些与众不同的法子,就比别人多赚了 很多钱。但我总怀疑世界上是否存在那么多好事?让你只是按照成功者的样子照猫画虎,就能在另一个环境里赚得盆满钵满。

显然,真实商业从来就不这么简单。

巴菲特的搭档查理芒格先生一直建议我们凡事多采用 逆向思考的方式。这就意味着必须鼓起勇气审判那 些自己钟爱而且看上去顺理成章的东西。那么,当我们的眼里只有商业模式的神奇时,能不能看到它的悖谬呢?思考一下商业模式不能够帮我们做什么?以及从商业 模式到商业成功之间还有多远?可能就是非常必要的。

 

一,

谁是商业模式他妈?

    母亲节到了,模式他妈是谁?

我觉得应该是产品(服务)。所谓商业模式, 按照流行的学院派说法,是一个基于利益相关者的交易结构。那么,企业所提供的产品或服务,就是所有交易发生的基础

真正经历过创业全过程的人,一定知道创业最痛苦的 前三步:即如何绞尽脑汁想出一个个灵感创意;接 着不断地在实践中进行证伪,最终发现一个只属于你的机会,并将之变为产品或服务;此 后,就是反复打磨你的产品或服务,想尽办法兜售,直到有人愿意为之买单。

   而那些现成模 式的复制者们,我认为他们省略了创业早期的两个关键环节。既没有从点子到产品,更不用从产品到模式。

   显然,这是一 个投机取巧的过程。你选择照搬了人家的商业模式,也就自然地接受了人家对于产品的全部定义。更要命的是,你并不真正理解这种定义从何而来,又会去向何处。 就好像十年前一讲B2C, 大家就觉得是网上卖书,仅仅因为亚马逊就是这么做的。如今,大家才知道网上啥都能卖。团购 呢?国内消费者对什么团购感兴趣?商家呢?

   仅仅照搬人家 的模式,并不能保证你能做出和人家一样好的产品,甚至一样好也没有用。因为,需求是产品之母。好的产品或服务一定是从解决现实问题和打破需求瓶颈出发。但 彼之需求未必是我之问题。富裕的美国人民有在跳蚤市场淘卖旧货的习惯,而很多中国人都想开个能逃税的小店改善生活。所以eBayeBay,淘宝是淘宝。 易趣不管学得多像也打不过淘宝。

今天所有人都说QQ的商业模式很NB,它搭建了一个 巨大的平台,吸引了几亿的用户,以至于做什么新事情似乎都是信手拈来。可倒回到创业早期,马化腾非常纠结。没有人认为QQ这样的聊天工具能创造什么商业价值,他几度想要卖掉公司都未遂。事实 上,作为即时通讯的鼻祖ICQ从未获得过像样的商业成功,它仅 仅被AOL当成一个工具软件罢了。后来,随着QQ的不断完善,滚雪球般地变大,不断嫁接SP的无线增值、日韩的虚拟物品和网游,才变得独一无二。今天,马化腾还是 腾讯头号“产品经理“。

所以,沉下心来先做出一个真正好的产品(服务)来打动 你的客户吧,别管你现在的商业模式是否足够OK,真正的它迟早 会孵化出来,而且很可能在你无心插柳的时候。

 

 

二,

早起的鸟儿未必有虫吃

    因为虫儿自己还没出洞。

    创业者成功的必要条件之一是要有敏锐 的嗅觉和极强的位置感。足球场上最好的前锋总是能够比对手提前启动,提前预判球的方向来路,提前 在正确的点埋伏。而一流和二流的区别就在于度的把握,恰到好处的冲刺,可能就是进球功臣。鲁莽不当的提前,只会成为越位的倒霉蛋。我想,这里面肯定少不了 天赋的成分,但它还是跟后天的训练有关。

    今天,大的产业潮流很容易判断。只要 查查哪些产业的成长速度能够多年超过GDP的增速就可以知道。 反正,我是不会建议你再去开矿或者搞服装厂。但关键在于,你能否准确把握“钱塘潮”袭来的时间,以及该呆的位置。 这决定了最后你是弄潮儿还是牺牲品。  

那些英文好、密切接触国际产业前沿的海归朋友往往 有先发优势。毕竟美国还是代表了最先进的生产 力。但他们常常把握不好“时间差”和“环境差”,误会了中国的潜在需求与美国的当下需求。结果,一个很先进的模式搭配一个无人要用的产品。

前不久,我参加了一个中关村的成长企业模式研讨 会。有企业是做SaaS软件服务的,模仿的样板是美国的Salesforce,一家很成功的在线管理软件服务提供商。Salesforce1999年成立,是家市值百亿美金的公司了。可这家 中国公司发展已经6年了,离成功还相当遥远。其实原因很简单, 中国企业的信息化水平跟美国至少差20年,ERP还处于半信半疑 的阶段,你跟人家老板讲最先进的SaaS,多少人懂呀! 改变客户的消费行为,是件多么困难的事情。

DVD、山寨机、数字电视芯片等几个领域不断成功的台湾联发科,其创始人蔡明介在创业过程中,始终念念不忘一 个词:Outside-in。这个词可以翻译成定位,但它的本 意是“从外部向内看”。

 从内部向外看,你只看到方向。从外部向内 看,你能看到位置。也 就是说你只有在充分了解竞争对手和市场信息的前 提下,才能对自己进行判断;判断之后就是取舍。取舍就是“To donot to do”,你能做什么,不能做什 么,一定要做到心里有数,取舍之后是契合。契合就是一旦决定进入某个领域,采用什么模式配置什么资源。

这样,你就不会把长跑想象成短跑,你也会先把预期 成功的时间乘上一倍,再把风投许诺的资金除以一 倍。

 

三,

没有完美的商业模式,只有最适 应环境的模式

在我看来,商业模式的竞争,本质上是一种自然选择 的过程。

谁更适应环境的变化,谁就能生存下去。恐龙比乌龟 更强大,但恐龙灭绝了,乌龟还一直繁衍着。

记者出身的已故管理大师彼得德鲁克说过,管理本质 上是一种实践,而绝不能成为一门精确的科学。因为,科学意味着要尽可能回避那些不确定的变量。而管理(尤其是创新)最大的乐趣正在于应对这些不确定性的挑 战。今天的商学院最热衷的事情,是研究成功案例,总结商业模式。但很有可能,凡是给商学院总结出来的商业模式已是“死的模式”。

为什么这么说?因为成功案例是基于过去经验教训的 回溯,基于历史纪录的人为解读。但没有人敢保证 商业未来会如何变化。就像现在,所有嚷着气候变暖的人们突然经历了一个最漫长的寒冬。

所幸的是,我们有着无数多的商业物种,企业在各个 方向做着布朗运动。总会有少数幸运儿成功地赌对了环境变化,并从哪些输家的手中抢到市场。为什么小企业不必害怕变化,因为他们更灵活,没有累赘的包袱。

六七年前,DELL电脑的直销模式被视为PC产业的完美模式。其它的PC企业要么被迫效仿它,要么主动退出。而这个模式的起点,是一个大学辍学生在宿舍里替别人攒机装电脑发展出 来的。可如今,商学院教授们的新宠已经变成了Apple,至于DELL,早就已经OUT了。就连排行老四的联想,也把从戴尔挖过来的CEO开掉,声称只把苹果当成自己的唯一对手。

其实,DELL的供应链管理依然高效,其直销模式也扩展到了更多领域,但模式的威 力已经不复从前。因为客户的价值取向发生了变化,产业环境也发生了变化。环境巨变推动着变革滚滚而来。而这种变革,很可能是由一些不起眼的小家伙开始的, 却直接伤害了那些貌似强大的家伙。鸿海富士康斗不过比亚迪的囧境也是一样的道理。

商业世界里没有标准答案,别人的模式,那只是别人做的题目的答案,并不是我 们的答案,我们有一套自己的题目,也必须要靠自己去寻找答案。

 

四,

当兵的时候顶多想想连长的事,不要去想师长的事

一切模式的设计,必须围绕你当下所拥有的资源和现 实可能获得的资源来考虑。Apple和谷歌的模式再好,创业的 你也没有这个能力学。

这跟打游戏升级是一个道理。郭靖同学得先学江南七 怪,才能学全真七子,然后是降龙十八掌,再是九阴真经,这才有机会成为真正的高手。他知道自己资质愚钝,老老实实一步步来,结果总能碰上狗屎运。而与其竞 争的欧阳克、杨康等同学,总觉得自己出身高贵、 天资聪颖,就想抄近道,恨不得一下就成为绝顶高手。最后谁赢呢?

5年来最成功的网络公司可能是Facebook。 创始人马克扎克伯格的使命随时间不断调整。2004年,当他还 未从哈佛大学退学时,他在宿舍创建了Facebook,他当时 仅把这作为常春藤(Ivy League)大学学子间交流的工具。除了能以交友的方式联络他人之外,用户还可以互传文字和图片。在Facebook开放给其它学校以前,它先获得了哈佛广场的3000个用户。3000个用户对绝大多 数网站来说是个不值一提的数字,但是对于哈佛这个5000个本科生的学校来说,等于牢牢地占据了哈佛的市场。 

在一个市场占据了绝对优势以后,Facebook才向Boston周边的大学开 放,并缓慢地向其它常春藤大学扩展。直到后来才谨慎的加入了高中,之后是公司,直到很后来,才允许所有的用户注册。马克深知专注的道理,与其在各个市场都是第二名,不如一个一个拿下。而他远超出同龄人的耐心也不断被身边人所提起。

事实上,Facebook并非最早的Web2.0公司,在它前面曾经有Friendsterhi5LinkedinMyspaceSecondlifeYoutube等等,它们一度都被认为是明星种子选手。但显然,Facebook比它的对手们做对了更多的事情。现在,它成了自然选择的赢家,可以挑战谷歌、苹果了。

不想做元帅的士兵不是好士兵,但如果天天操心元帅 的事,肯定不是一个好士兵。当你连一个小小的产品还没做好的时候,先别操心周XX会 不会进来,腾讯会不会进来。

  

五,

商业模式是讲给投资人听的,别 把自己给忽悠了

    在很多创业的朋友看来,最爽的事情, 莫过于花投资人的钱,做自己的梦。

     VC不是傻瓜,仅仅告 诉他们一个光明的未来不足以打动他。他们还必须知道,你用什么方式能赚到钱,需要花多少钱,你有没有赚这个钱的本事和资源。整个事情看起来符不符合逻辑, 符不符合他的资金成本和风险考量。最坏的可能是什么?

    所以,不管你内心如何汹涌澎湃惊涛拍 岸,VC一定是无比清醒高度理性的。VC比你更需要商业模式。因为你只关心你自己的事业,而他要管好别人的钱。 成百上千家企业,更不可能一家家都深入了解,VC需要一个精准 的概括。

   当你在写商业计划书的时候,实际上 是在把你对于现实的理解和对未来的想象用完全商业化的思维工具整理表达出来。这本身就是一个考验。而商业模式,则是整个故事的硬核。 就这个角度而言,一个舶来的已被证明过的商业模式,的确比你凭空的狂想更实在一些。

    一旦签约,性质就变了。VC只关心你所做的回报承诺能不能兑现。毕竟,他只是一个要求短期利益的财 务投资者(5-8年)。而创业者你需要考虑企业的长期竞争力。

    商业计划书里构想的模式一定是你今后 的商业模式吗?这不重要。不管白猫黑猫,抓住老鼠就是好猫。真正考验创业者的,不再是你写商业计划书忽悠钱的能力,而是你根据环境变化,不断改造、升级甚 至推翻商业模式的能力。

  PayPal是靠研 发加密软件和提供借助PDA来转账的服务来打动投资人的,最 后,却是靠基于网络的支付服务大获成功。周XX二次创业的时候 是靠奇虎社区搜索拿到了投资,结果一塌糊涂,倒是无心插柳的360安 全卫士,成就了如今国内仅次于QQ的第二大客户端。

   结论,兜里有钱心里不慌,怎么调整 你的商业模式都是来得及的,投资人只怕你一条路走到黑,钱花完了,耸耸肩跑路了,就跟PPG一样。

 

 

六,

商业模式不是你的“护城河”

 模式会是你的加速器,却不可能成为巴菲特所谓的 “护城河”。

从会计学角度,如果把公司看成一个可清算的资产, 那么你的品牌、产品(服务)、专利技术、渠道、 市场规模等统统都可以变现折钱出售,唯独只有商业模式,没有人会为它多付一毛钱。

为什么?因为模式创新说白了只是一个idea,不管多好的idea说 出来就不值钱了,你就算申请专利也没用。而且它必须附着在一个相应的技术、产品或者服务上

可口可乐的“原浆+装瓶厂”模式是如此简单。它的成功完全依赖于对品牌和渠道的持续高额投 资。Google首先是掌握了全球最先进的搜索技术,然后再借 鉴Overture的按点击付费模式,从而走向成功。技术+模式取得了爆炸性的效果。而拥有这个模式专利的Overture的命运却是被雅虎以很低的价钱所收购。

我的观察,模式创新往往发生在哪些看起来已是山重 水尽,内在矛盾已经非常突出的行业。原有的长链 条、长流程、复杂关系的模式会被更加简单清晰有力的模式所取代。但这种创新并非在于模式本身,而在于一个商业机构对于商业规则及自身所处商业环境的重新想 象,解构与颠覆。

在此时刻,命运会突然偏爱一些胆大包天的赌徒,会 造就个别一夜成名的神话。但好运不会长久伴随一个人。因为,模式创新容易复制,却不可持续。

一旦你证明了模式的可行,市面上会出现众多的跟风 模仿者。这正是江南春和古永锵们的难题。行业里竞争者如此分散,意味着大家赚钱都不易。要做产业整合,主导市场,如果你没有办法用时间换空间,哪就只能用 钱来空间。于是,“烧钱”就成了模式创新的自然 延伸。为了最大程度的取得规模经济性,大量的资本支出不可避免。

但是,一边要扩张布局跑马圈地,一边要完善产品提 升用户体验,这是一个痛苦的dilemma(两难)。有几家企业能 同时做好这两件事呢?你的团队和管理能力能支撑这种快速整合吗?

 

七,

商业远比商业模式更复杂

这其实是一个常识。但还是有很多创业者喜欢提前预 支快乐。

事实上,关于商业模式的一切构想都是沙盘演练,不 管你在沙盘上推演多少次,最终还是要直面现实。 尤其是在那些需要跟活生生的人打交道的生意。

如果说美国是新者为王,那么中国就是剩者为王。美国的商业文化崇尚公平竞争,讲游戏规则。因为 环境已经很成熟,不创新就没有出路。而中国是一个山寨之国,又是一个管制之国,中国的商业是原始丛林商业。到处都是灰色地带,大家都在互相模仿,剩下的是比谁动作快、比谁忍耐能熬、比谁更流氓

为什么Twitter模式到中国变成了“围脖”。为什么新浪能做而创业者一做就 死。为什么SP动不动被叫停而傍着中移动生存的神州泰岳却赚得 盆满钵满。为什么有的公司明明非常赚钱却掩耳盗铃,而别的公司睁着眼亏损还理直气壮存 在……

所谓真实的商业,不在《赢在中国》的舞台上,不在CCAV三大报的正面宣传中,不在企业家的“首富传奇”书内,不在PE券商会计师共同炮制的招股书里……它在什么地方?

它在政府出台的法规政策之外,在黑白红等多道的隐秘勾兑里,在商学院俱乐部的圈子中,在被和谐被封杀的媒体报道内,在法院协会交易所的影 子关系上……

有些事情,不做你永远不知道,做了你永远不想说

中国的创业者需要导师,不是教他们商业模式和人生 感悟,而是如何看到那根细细的红线,和红线牵引着的“地雷”。

某种程度上,我认为中国的创业者更值得尊敬。因为 在中国创业,隐性成本更大,竞争的淘汰率更高,忍耐力要更强。中国的创业者,尤其是海归创业者,真是一个理想主义者扎堆的群体。

但柳传志说过一句经典:做企业要有理想,但不能理想化。这句话很中国。

用mysqlsla来帮助分析慢查询日志

hackmysql.com推出的一款MySQL的日志分析工具

整体来说, 功能非常强大. 数据报表,非常有利于分析慢查询的原因, 包括执行频率, 数据量, 查询消耗等.

格式说明如下:

总查询次数 (queries total), 去重后的sql数量 (unique)

输出报表的内容排序(sorted by)

最重大的慢sql统计信息, 包括 平均执行时间, 等待锁时间, 结果行的总数, 扫描的行总数.

Count, sql的执行次数及占总的slow log数量的百分比.

Time, 执行时间, 包括总时间, 平均时间, 最小, 最大时间, 时间占到总慢sql时间的百分比.

95% of Time, 去除最快和最慢的sql, 覆盖率占95%的sql的执行时间.

Lock Time, 等待锁的时间.

95% of Lock , 95%的慢sql等待锁时间.

Rows sent, 结果行统计数量, 包括平均, 最小, 最大数量.

Rows examined, 扫描的行数量.

Database, 属于哪个数据库

Users, 哪个用户,IP, 占到所有用户执行的sql百分比

Query abstract, 抽象后的sql语句

Query sample, sql语句

除了以上的输出, 官方还提供了很多定制化参数, 是一款不可多得的好工具.

安装和使用也非常简单
安装:

tar zxf http://hackmysql.com/scripts/mysqlsla-2.03.tar.gz
cd mysqlsla-2.03
perl Makefile.PL
make
make install

简单使用:

— Slow log: mysqlsla -lt slow slow.log

— General log: mysqlsla -lt general general.log

— Binary log: mysqlbinlog bin.log | mysqlsla -lt binary -

mysqlsla会自动判断日志类型,缺省会打印出前十条结果,可以通过类似“–top 100”的参数来修改,如果觉得每次输入麻烦,还可以建立一个配置文件“~/.mysqlsla”,在文件里写上:top=100,这样就不用每次都手动输入参数了。

又一限带宽的apache模块mod_cband

所说,这个可以限制单个虚拟主机或单站点的总带宽,连接数,单线程带宽等,似乎很不错,找时间再测试下

mod_cband

URL:http://codee.pl/download/cband/
 
CBandLimit 100M     //限制虚拟主机总访问带宽为100Mb。
CBandSpeed 1024 10 30       //CBandSpeed限定总的最大链接速度为1024kb,最多并发处理10个请求每秒和30个链接每秒
CBandRemoteSpeed 20kb/s 5 3     // CBandRemoteSpeed限定一个用户最多能有20kb的链接速度,最多并发5个请求每秒和3个链接每秒
CBandPeriod 4W   //设定多久对所记录的全局访问带宽进行重设(清零)。4W=4 weeks 4周(一个月)
<Location /cband-status>
SetHandler cband-status
</Location>

虚拟主机用户ftp和apache用户文件互操作及删除等解决方法

这个问题以前遇到过,也设置过,但时间久了也就忘了,再GG到这篇文章,作个记录了

 

近来用linux虚拟主机学习了一下linux下的权限比较高级一点的权限管理,当我们使用PHP程序的时候,在安装好以后,如果你想删除整个目录,你会发现apache用户生成了一些文件,ftp的用户不能删除.

其实这是有办法解决的。

方法1.用户组控制方法
先给所有的虚拟主机主机中的虚拟用户(ftp用户)加入到apache这个组.然后设置umask为002.这样用户和组都有读写执行权限。这个是比较容易的方法.但不安全。不同的用户可以删除对方的文件,因为是同一个组,组有读写执行的权限.

方法2.使用linux高级的权限管理acl。

对一个目录设置二重权限,除了用户本身的用户组,在加入apache对他要读写执行的权限.
这样用户就能删除apache生成的文件.但为别人的组,别的虚拟用户他没法删除.

下面我们就来看看第二种的控制方法

linux系统里面,并不是只能为所有者,同组用户和其他用户这三类人分配一个文件(目录)的权限,你还可以指定其他的用户或者组,不过有个前提,挂载分区的时候加上acl选项,比如:
mount /dev/hda1 /home -o acl。

然后你可以使用
setfacl -m u:ftp:rwx /home/ftp/www
命令来给ftp用户分配/home/ftp/www目录的所有权限

如果你要/home/ftp/www/下面新建的目录和文件也有同样的权限
setfacl -d -m u:ftp:rwx /home/ftp/www

设置默认的权限,这个命令还可以实现多个用户的不同权限的控制,比如
setfacl -m u:ftp:rwx /home/www;
setfacl -m u:tmp:r-x /home/www;
ftp用户拥有所有权限,tmp用户拥有只读权限。

你还可以设置mask的值:
setfacl -m m::rwx /home/www;

这样,新建的你就可以让虚拟主机的用户和apache用户都有权限操作文件和目录了,比如apache用户的用户名是apache,虚拟主机的用户名是vmuser,目录是/home/vmuser/www,可以使用以下的命令:
setfacl -m u:vmuser:rwx /home/vmuser/www;
setfacl -m u:apache:rwx /home/vmuser/www;
setfacl -d -m u:vmuser:rwx /home/vmuser/www;
setfacl -d -m u:apache:rwx /home/vmuser/www;
setfacl -m m::rwx /home/vmuser/www;
setfacl -d -m m::rwx /home/vmuser/www;

这样,在安装PHP程序的时候,就不会提示你apache的用户没有权限写文件,而你想删除一个目录的时候,也不会因为下面有apache用户生成的文件而不能删除了。当然这个办法有点局限就是基本上只有ext2和ext3分区格式能用,其他的,比如xfs,jfs等不能直接使用,修改后才能使用

Linux下关注硬盘的健康状态

smartmontools
CentOS 5.3默认安装,smartmontools-5.38-2.el5.i386,可以执行rpm -q smartmontools或yum info smartmontools或yum list smartmontools查看。
使用方法:
命令行执行smartctl -h查看帮助信息,更详细的帮助信息可以通过man smartctl命令获得。
smartctl -i /dev/sda //查看硬盘的基本信息
smartctl -H /dev/sda //查看硬盘的健康状态
smartctl -c /dev/sda //查看smart功能,如错误记录、离线盘面扫描、自检所需时间等信息。
smartctl -l selftest /dev/sda //查看上一次硬盘selftest结果
smartctl -l error /dev/sda //查看最近5条错误记录
smartctl -t TEST //执行磁盘测试,TEST为所要执行的测试名,如offline, short, long
smartctl -X //退出磁盘测试
smartctl -A /dev/sda //查看厂商数据

几种硬盘自检功能的说明:
1、offline
2、short
3、long
4、select,N-M
5、select,N+SIZE
6、conveyance

在执行硬盘自检的过程中如何监视进度:
如果smart -c /dev/sda命令返回的信息有说"Suspend Offline collection upon new command",那么可以通过执行smart -c /dev/sda在"Self-test execution status:"这一项来跟踪自检的进度;否则若"Abort Offline collection upon new command",则在自检的过程中不能执行其他命令,否则自检过程将被终止。

关于执行自检测试的模式:
-C选项:对于short/long以及ATA硬盘的conveyance/selective自检,-C选项表示执行captive mode自检,对应于SCSI硬盘的foregroud mode。

其他:
smartd一个守护进程,收集分析磁盘的SMART参数,并可以根据设定将其发给指定用户。通常可以用来监视硬盘状态,当存在危险情况时提醒用户备份数据。
配置文件:/etc/smartd.conf

Records:1312