he's profile调和的记事本 msnBlogListsGuestbook Tools Help

Blog


    限制用户硬盘使用空间

    限制用户硬盘使用空间

    UNIX作为一种多用户系统,它允许多个用户共同使用系统的资源,包括系统的内存,CPU和硬盘。在默认情况下,系统并不会限制每个用户可以使用硬盘空间的大小,所以如果用户恶意使用硬盘,或用户由于疏忽,将硬盘空间全部占用,将导致其他用户无法使用硬盘,从而使系统性能下降,甚至有崩溃的危险。

    其实,UNIX提供的quota系列命令可以帮助我们解决这个问题,这些命令包括:
    quota : 显示用户的硬盘限额和使用情况。
    edquota : 为每个用户设定硬盘限额。
    quotaon: 启动文件系统硬盘限额服务
    quotaoff : 关闭文件系统硬盘限额服务
    repquota : 显示当前硬盘限额状态
    配置这项服务的方法很简单。但在使用硬盘限额服务之前,我们要明白硬限制和软限制这两个概念。所谓硬限制是指对资源节点和数据块的绝对限制,在任何情况下都不允许用户超过这个限制;而软限制是指用户可以在一定时间范围内(默认时为一周,在/usr/include/sys/fs/ufs_quota.h文件中设置)超过软限制的额度,在硬限制的范围内继续申请资源,同时系统会在用户登录时给出警告信息和仍可继续申请资源剩余时间。如果达到时间期限,用户的硬盘使用仍超过软限制的额度,则系统将不允许用户再申请硬盘资源。

    明白了这两个概念,我们就可以配置硬盘限额服务了,首先我们必须在要限制的文件系统的根目录下建立一名字为quotas的文件,该文件的所有者应是root,且其它用户不可以对它进行写操作。方法是:
    # cd /home (进入文件系统根目录,注意并不是系统根目录,本例为/home目录)
    # touch quotas(创建一名字为quotas的空文件)
    # chmod 644 quotas (更改文件属性,使只有root可以对它进行写操作)

    然后,我们编辑/etc/vfstab文件,找到要进行硬盘限额服务的文件系统,并将
    mount option字段的值设为rq,然后并存盘退出。

    完成这两步后,我们使用edquota命令为每个用户设置硬盘限额,在root权限下输入以下命令:
    #edquota username
    这时系统会自动生成一个临时文件,并且有如下内容:
    fs /users blocks (soft = 0, hard = 0) inodes (soft = 0, hard = 0)
    其中fs字段表明使用硬盘限额的文件系统,本例为/users,block和inodes表明用户可以使用的硬盘千字节数和I节点数,即用户可使用的硬盘空间和可建立的文件数,soft和hard分别对于前面提及的软限制和硬限制。

    编辑这个文件,把软,硬限制设置到合适的数值,然后存盘退出。这时我们可以看到quotas文件的大小已经被改变,说明用户的限额已经储存。重复这条命令,给每一个用户都配置硬盘限额。另外,如果我们分配给用户的硬盘限额都相同,我们可以使用 "-p" 参数而不用为每个用户都编辑一个文件,它的使用方法是:
    #edquota -p reference-usernameusername

    编辑完文件后,我们就可以用quotaon来启动服务了,在root权限下输入
    #quotaon /users
    就可以启动限额服务。如果我们要查看各个用户的当前使用情况,可以使用
    repquota 命令,在root权限下输入:
    #repquota /users
    系统会显示:
    。。。

    从中我们可以很容易看到用户的硬盘和文件的使用情况以及超过软限制后仍可申请资源的时间等等。

    当然我们可以用quotaoff取消硬盘限额服务。另外,系统还提供quotacheck 命令对限额的一致性进行检查。

    快速解压文件

    快速解压文件

    如果我们需要对若干个压缩文件进行解压的话,有的用户可能会使用unzip命令来一个一个地对压缩文件进行解压,但这种方法操作效率太低,也有的用户想到 了使用通配符的方法来同时对多个文件进行压缩,但是当他们在命令行中输入unzip *shi 时,发现会出现一个错误的提示,那么到底该怎样才能同时 unzip多个文件呢?其实后使用通配符的方法是正确的,只是那些用户在命令行中输入的命令不正确,正确的输入应该unzip "*"。

    linux下如何知道某个端口现在运行什么监听程序

    http://it.rising.com.cn/newSite/Channels/Safety/SysSafety/Safe_Unix/200211/06-094102488.htm

    linux下如何知道某个端口现在运行什么监听程序 www.rising.com.cn 2002-11-4 17:15:00 信息源:不详

    当我们用netstat -an的时候,我们有时候可以看到类似的输出:
    udp 0 0 0.0.0.0:32768 0.0.0.0:*
    但是查找/etc/services又没有这个端口的相关说明,怎么办呢?这个是不是黑客程序?有没有办法查看究竟什么程序监听在这个端口?

    使用lsof -i :32768就可以看到:
    COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
    rpc.statd 603 root 4u IPv4 953 UDP *:32768
    rpc.statd 603 root 6u IPv4 956 TCP *:32768 (LISTEN)
    原来是rpc的程序。
    使用lsof -i :port就能看见所指定端口运行的程序,同时还有当前连接。

    Linux排序命令sort详解

    http://blog.csdn.net/woso/archive/2007/04/03/1550856.aspx
    语法格式

    sort [ -A ] [ -b ] [ -c ] [ -d ] [ -f ] [ -i ] [ -m] [ -n ] [ -r ] [ -u ] [ -o OutFile ]
    [ -t Character ] [ -T Directory ] [ -y [ Kilobytes ] ] [ -z RecordSize ] [ [ + [ FSkip ]
    [ .CSkip ] [ b ] [ d ] [ f ] [ i ] [ n ] [ r ] ] [ - [ FSkip ] [ .CSkip ] [ b ] [ d ] [ f ]
    [ i ] [ n ] [ r ] ] ] [ -k KeyDefinition ] [文件 ]

    使用说明

    sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出。如果 File 参数指定多个文件,
    那么 sort 命令将这些文件连接起来,并当作一个文件进行排序。-(减号)代替文件名指定标准输入。
    如果您不指定任何文件名,那么该命令对标准输入排序。可以使用 -o 标志指定输出文件。

    如果不指定任何标志,sort 命令基于当前语言环境的整理顺序对输入文件的所有行排序。

    主要参数

    -A 使用 ASCII 整理顺序代替当前语言环境的整理顺序在逐字节的基础上排序。
    -b 忽略前导空格和制表符,找出字段的第一或最后列。
    -c 检查输入是否已按照标志中指定的排序规则进行排序。如果输入文件排序不正确,就返回一个非零值。
    -d 使用字典顺序排序。比较中仅考虑字母、数字和空格。
    -f 比较前将所有小写字母改成大写字母。
    -i 比较中忽略所有非显示字符。
    -k KeyDefinition 指定排序关键字。KeyDefinition 选项的格式为:
    [ FStart [ .CStart ] ] [ Modifier ] [ , [ FEnd [ .CEnd ] ][ Modifier ] ]
    排序关键字包括所有以 FStart 变量指定的字段和 CStart 变量指定的列开头的字符及以 FEnd 变量指定的字段和
    CEnd 变量指定的列结束的字符。Modifier 变量的值可以是 b、d、f、i、n 或 r。修饰符与同一字母的标志等价。

    -m 只合并多个输入文件;假设输入文件已经排序。
    -n 按算术值对数字字段排序。数字字段可包含前导空格、可选减号、十进制数字、千分位分隔符和可选基数符。
    对包含任何非数字字符的字段进行数字排序会出现无法预知的结果。
    -o OutFile 将输出指向 OutFile 参数指定的文件,而不是标准输出。OutFile 参数值可以与 File 参数值相同。
    -r 颠倒指定排序的顺序。
    -t Character 指定 Character 为单一的字段分隔符。
    -u 禁止按照排序关键字和选项的所有等同排序(每一组行中一行除外)。
    -T Directory 将创建的所有临时文件放入 Directory 参数指定的目录中。
    -y[Kilobytes] 用 Kilobytes 参数指定的主存储的千字节数启动 sort 命令,并根据需要增加存储量。
    (如果 Kilobytes 参数指定的值小于最小存储站点或大于最大存储站点,就以这个最小存储站点或最大存储站点取代)。
    如果省略 -y 标志,sort 命令以缺省的存储大小启动。
    -y0 标志用最小存储启动,而 -y 标志(不带 Kilobytes 值)用最大存储启动。sort 命令使用的存储量显著地影响性能。
    以大存储量对小文件排序将很浪费。
    -z RecordSize 如果正在排序的任一行大于缺省的缓冲区大小,要防止出现异常终止。
    指定 -c 或 -m 标志时,省略排序阶段,使用系统的缺省缓冲大小。如果已排序行超出这一大小,排序异常终止。
    -z 选项指定排序阶段最长行的记录,因而可在合并阶段分配足够的缓冲区。
    RecordSize 必须指明等于或大于要合并的最长行的字节值。

    应用实例

    * 要在 LC_ALL、LC_COLLATE 或 LANG 环境变量设置为 En_US 的情况下排序 fruits 文件,请输入:

    LANG=En_US sort fruits
    此命令序列显示以升序词典顺序排序的 fruits 文件的内容。每一列的字符,包括空格、数字和特殊字符都经一一比较。
    例如,如果 fruits 文件包含文本:
    banana
    orange
    Persimmon
    apple
    %%banana
    apple
    ORANGE
    sort 命令显示:
    %%banana
    ORANGE
    Persimmon
    apple
    apple
    banana
    orange
    在 ASCII 整理序列中,%(百分号)在大写字母前,大写字母在小写字母前。
    如果您当前的语言环境指定 ASCII 之外的字符集,结果可能不同。

    * 要以字典顺序排序,请输入:

    sort -d fruits
    此命令序列排序和显示 fruits 文件的内容,并且只比较字母、数字和空格。
    如果 fruits 文件与示例 1 相同,那么 sort 命令显示:
    ORANGE
    Persimmon
    apple
    apple
    %%banana
    banana
    orange
    -d 标志忽略 %(百分号)字符,因为它不是个字母、数字或空格。(即 %%banana 被 banana 取代)。

    * 要将包含大写字母和具有类似小写行的特殊字符行分组,请输入:

    sort -d -f fruits

    -d 标志忽略特殊字符,-f 标志忽略大小写差异。
    将 LC_ALL、LC_COLLATE 或 LANG 环境变量设置为 C 的情况下,fruits 文件的输出结果变为:
    apple
    apple
    %%banana
    banana
    ORANGE
    orange
    Persimmon

    * 要除去重复行排序,请输入:

    sort -d -f -u fruits

    -u 标志告诉 sort 命令除去重复的行,使文件中的每一行唯一。此命令序列显示:
    apple
    %%banana
    ORANGE
    Persimmon
    不仅除去重复的 apple,而且也除去了 banana 和 ORANGE。
    除去这些是因为 -d 标志忽略 %% 这个特殊字符,-f 标志忽略大小写差异。

    * 要如上面那样排序,除去重复的实例(除非是大写字母或标点不同),请输入:

    sort -u +0 -d -f +0 fruits
    输入 +0 -d -f 完成的排序与示例 3 中 -d -f 的排序类型相同,+0 进行另一项比较以区分不一样的行。
    这防止 -u 标志将它们除去。
    示例 1 所示的 fruits 文件中,添加的 +0 将 %%banana 与 banana 及 ORANGE 与 orange 区分开来。
    然而,apple 的两个实例是相同的,所以其中之一被删除。
    apple
    %%banana
    banana
    ORANGE
    orange
    Persimmon

    * 要指定分隔字段的字符,请输入:

    sort -t: +1 vegetables

    此命令序列排序 vegetables 文件,对每一行上第一个冒号后的文本进行比较。
    +1 告诉 sort 命令忽略第一字段,从第二字段的开始到该行的结束进行比较。-t: 标志告诉 sort 命令冒号分隔字段。

    如果 vegetables 包含:

    yams:104
    turnips:8
    potatoes:15
    carrots:104
    green beans:32
    radishes:5
    lettuce:15
    那么,将 LC_ALL、LC_COLLATE 或 LANG 环境变量设置为 C 的情况下,sort 命令将显示:
    carrots:104
    yams:104
    lettuce:15
    potatoes:15
    green beans:32
    radishes:5
    turnips:8
    注意数字没有按照数字排序。当用字典式分类从左至右比较每一个字符时出现这种情况。
    换句话说,3 在 5 之前,所以 32 在 5 之前。

    * 要排序数字,请输入:

    sort -t: +1 -n vegetables

    此命令序列按照第二个字段对 vegetables 文件进行数字排序。
    如果 vegetables 文件与示例 6 中的相同,那么 sort 命令将显示:
    radishes:5
    turnips:8
    lettuce:15
    potatoes:15
    green beans:32
    carrots:104
    yams:104

    * 要对多个字段排序,请输入:

    sort -t: +1 -2 -n +0 -1 -r vegetables

    sort -t: -k2,2 n -k1,1 r vegetables

    此命令序列对第二字段(+1 -2 -n)进行数字排序。在这个顺序中,它以逆字母顺序(+0 -1 -r)对第一字段排序。
    将 LC_ALL、LC_COLLATE 或 LANG 环境变量设置为 C 的情况下,输出将类似于:
    radishes:5
    turnips:8
    potatoes:15
    lettuce:15
    green beans:32
    yams:104
    carrots:104

    此命令按数字顺序对行排序。当两行数字相同时,它们以逆字母顺序出现。

    * 要使用排序的文本替换原始文件,请输入:

    sort -o vegetables vegetables
    此命令序列将排序输出存入 vegetables 文件( -o vegetables)。

    redhat/solaris下允许root通过telnet登录

    redhat/solaris下允许root通过telnet登录

    一般redhat是禁止直接用root远程登录到本机上的。 限制了远程root登陆,可以用一般用户登陆,在用su切换到root。不过如果一定要直接用root远程登录的话,如下:

    方法1.redhat中对于远程login的限制,体现在/etc/pam.d/login文件中,缺省有一行:
        
    auth required /lib/security/pam_security.so
        注释该行,任何限制都没有,root当然可以直接telnet登陆。

      方法2. 如果不注释该行,则必须验证,我们删除验证规则,即将/etc/securetty文件改名,

        该文件是定义root只能在tty1~tty6的终端上登录的,详细的信息可以"man login"

      方法3. 如果不注释该行,则必须验证,我们更改验证规则,即在/etc/securetty文件中添加下列行:

        
    pts/0
        
    pts/1
        
    pts/2
        
    .
        
    pts/11
      另外,对于Solaris系统,限制体现在/etc/default/login文件中,如果有
    "CONSOLE=/dev/console"
    一行,则root不能直接登陆,如果注释掉该行,则root可以直接登陆。

    然后确保在服务器上的/etc/hosts中有类似下面的行。
    192.168.x.x client.domain.com client

    如果没有,则在server上运行
    echo "192.168.x.x client.domain.com client" >>
    /etc/hosts

    至此你应该能从client远程telnet直接作为root了。


    如果服务器是redhat 6.x,则加单个数字如0,1,2,3…/etc/securetty后面,一个数

    字一行,必须以0开始。


    仅仅加数字而己,没有pts,tty


    如果服务器是redhat 5.x,则加ttyp0, ttyp1,ttyp2… 等到
    /etc/securetty.

    经常有人问,为什么telnet/ftp进服务器时需要等很久?那是因为当服务器检测出有客户

    远程连接进来时,它知道客户的IP,但根据telnet/ftp服务的内部机制,它需要反向检

    查该IP的域名,如果你有DNS服务器且设置了反向域名,则很快查到,若没有,则简单地在服务器的/etc/hosts中加入客户的记录就可以了。

    不使用expect来完成自动登录server并执行命令的脚本



    ftp远程登录并作一些操作的脚本:
    ftp -i -n server <<ftp
    user root password
    bin
    lcd /etc
    cd /a
    mput auto_*
    bye
    ftp

    用ssh(需要手动输入密码):
    ssh user@111.122.133.144 mkdir aaaa


    telnet(rlogin 或rsh都和telnet差不多):
    (
    sleep 1;\
    echo "user";\
    sleep 1;\
    echo "password";\
    sleep 1;\
    echo "cd /home/aaa";\
    sleep 1;\
    echo "mkdir teltest";\
    sleep 1;\
    echo "exit";\
    sleep 1)|telnet server


    rsh的:
    (
    sleep 1;\
    echo "password";\
    sleep 1;\
    echo "cd /home/aaa";\
    sleep 1;\
    echo "mkdir rshtest";\
    sleep 1;\
    echo "exit";\
    sleep 1)|rsh server


    注意上面两个的sleep很重要一定要加

    ftp远程登录并作一些操作的脚本

    ftp -i -n server <<ftp
    user root password
    bin
    lcd /etc
    cd /a
    mput auto_*
    bye
    ftp

    关于xhost与hostA登陆到hostB上运行hostB上的需要图形应用程序的情况

    http://www.linuxmine.com/309.html
    xhost 是用来控制X server访问权限的。
    通常当你从hostA登陆到hostB上运行hostB上的应用程序时,
    做为应用程序来说,hostA是client,但是作为图形来说,
    是在hostA上显示的,需要使用hostA的Xserver,所以hostA是
    server.因此在登陆到hostB前,需要在hostA上运行xhost +
    来使其它用户能够访问hostA的Xserver.
    xhost + 是使所有用户都能访问Xserver.
    xhost + ip使ip上的用户能够访问Xserver.
    xhost + nis:user@domain使domain上的nis用户user能够访问
    xhost + inet:user@domain使domain上的inet用户能够访问。
    还有一些option,还是仔细看一下manual吧


    Powered by ScribeFire.

    solaris手动同步时间

    1. 成为群集中任一节点上的超级用户。

      1. 关闭群集。

      # scshutdown -g0 -y
      
      1. 检验节点是否显示 ok 提示符或在"当前引导参数"屏幕中显示 Select (b)oot or (i)nterpreter 提示。

      1. 使用 boot(1M) 或者 b 命令以及 -x 选项在非群集模式下引导节点。
        1. SPARC:

        ok boot -x
        
      • x86:


                              <<< Current Boot Parameters >>>
        Boot path: /pci@0,0/pci8086,2545@3/pci8086,1460@1d/pci8086,341a@7,1/
        sd@0,0:a
        Boot args:
        
        Type    b [file-name] [boot-flags] <ENTER>  to boot with options
        or      i <ENTER>                           to enter boot interpreter
        or      <ENTER>                             to boot with defaults
        
                          <<< timeout in 5 seconds >>>
        Select (b)oot or (i)nterpreter: b -x
        
      1. 在单个节点上,通过运行 date 命令设置日时间。

      # date HHMM.SS
      
      1. 在其他计算机上,通过运行 rdate(1M) 命令使其与上述节点的时间同步。

      # rdate hostname
      
      1. 引导每个节点以重新启动该群集。

      # reboot
      
      1. 检验是否所有的群集节点均已相应更改。
      2. 在每个节点上,运行 date 命令。

      # date
      

    Red Hat enterprise Linux用sendmail配置局域网邮件服务

    Red Hat enterprise Linux用sendmail配置局域网邮件服务

    2007年06月20日 星期三

    我是用Red Hat enterprise Linux为局域网做的Mail服务器,客户端为windows outlook,所以此方法不合适在外网中;在做以前,先设置防火墙通过25110端口;我的设置电脑名为:mingchen;在/etc/hosts文件中127.0.0.1这一行后面添加: mingchen mingchen.com ;所有配置以root身份运行,编辑我用 系统自带的gedit编辑器。

    一.安装sendmail.

    若在安装LINUX时安装了sendmail,那进入第二步,如果没有安装,开始――系统设置――添加/删除应用程式,选中邮件服务器,如图,放入安装光盘安装,直至完成。Enterprise 要启动pop3还需要装dovecot

    二.配置sendmail.cf文件。

    Sendmail的配置文件为etc/mail/sendmail.cf,这个文件配置很复杂(好上这样多资料和书说的),所以系统提供了 sendmail.mc通过M4宏生成sendmail.cf,这个就简单多了.我用gedit打开,只改动了三个地方,其它用默认配置。

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

    这一行的意思是说只允许接爱本地主机创建的传入邮件,如果要允许接收从Internet或其他网络接口(比如本地局域网),就要把这一行注释掉,在前面加上 dnl 就行了;

    LOCAL_DOMAIN(`localhost.localdomain') dnl

    一行改为:

    LOCAL_DOMAIN(`mingchen.com') dnl

    意思是邮件域名后缀改为mingchen.com,还有一项是:

    define(`UUCP_MAILER_MAX', `2000000′)dnl

    设置默认邮件的大小,以字节计算,将其中的2000000改为你合适的大小;改完后,保存Sendmail.mc,sendmail.cf 的详细设置参阅/usr/share/doc/sendmail/readme.cf

    三.dovecot安装后,手工编辑配置文件/etc/dovecot.conf,修改下面行:

    # Protocols we want to be serving:

    # imap imaps pop3 pop3s

    protocols = imap imaps pop3 pop3s

    四.启动sendmaildovecot

    点击左下角红帽->system settings->services settings->services

    sendmaildovecot勾上点restart

    可以通过telnet 本机IP 25来验证sendmail服务是否已经正常启动,若登陆成功,则说明sendmail服务已经成功启动。

    # telnet mingchen.com 25
    Trying 127.0.0.1…
    Connected to mingchen.com.
    Escape character is '^]'
    220 mingchen.com ESMTP Sendmail 8.12.8/8.12.8; Wed, 12 May 2004 15:57:01 +0800
    ehlo localhost
    250-ENHANCEDSTATUSCODES
    250-PIPELINING
    250-8BITMIME
    250-SIZE
    250-DSN
    250-AUTH GSSAPI LOGIN PLAIN
    250-DELIVERBY
    250-HELP
    quit
    #

    最后测试该服务器监听IMAPPOP3端口:

    # telnet mingchen.com 110

    Trying 127.0.0.1…

    Connected to mingchen.com (127.0.0.1).

    Escape character is '^]'.

    +OK dovecot ready.

    到此sendmail的配置做完了,PINGmingchen.ocm
    如图,没出错就成功了,下来就可以在客户端收发邮件了。

    五.sendmail的用户设置,日志,和邮件保存位置。

    1.邮件的用户添加,sendmail的邮箱用户和Linux的用户共用.所以要添加用户,只要新建系统用户,就是邮件用户。

    2.邮件服务器接收和发送都有日志记录.位置在/var/log/maillog,每收发一次都会生成一个记录.如图.

    3.邮箱接收邮件后,保存在var/mail,每个用户对应一个文件,如图

    六.用windows中的outlook测试收发邮件

    我当时只有上图中两个用户,我用super做测试,打开outlook,
    工具――帐号――添加――邮件;
    输入你的名称――邮件地址:super@mingchen.com;
    POP3:
    邮件服务器IP地址,我建的邮件服务器IP地址为:192.168.1.200;
    SMTP:
    邮件服务器IP地址,我建的邮件服务器IP地址为:192.168.1.200;
    下来输入用户名:super,密码:******(和系统密码一样);
    完成。

    下来看看邮件的属性,如图:


    关于find和xargs命令应用范例-将一个目录下所有用户为aa的文件的拥有者改为bb

    关于find和xargs命令应用范例-将一个目录下所有用户为aa的文件的拥有者改为bb

    cd 该目录
    find . -user 'aa' |xargs chown -R bb