红联Linux门户
Linux帮助

Linux技巧

发布时间:2006-02-11 09:21:36来源:红联作者:恒善喜
问:如何在Linux下手动添加默认网关?
答:以root用户为例,执行下面的命令:
# route add default gw xxx.xxx.xxx.xxx(网关的IP)
如果用户想更改网关,编辑/etc/sysconfig/network-scripts/ifcfg-eth0文件,将对应的网关设置修改之后,执行下面的命令即可:
#/etc/init.d/network restart

问:在Linux中有时开机不自动检查新硬件,新安装的网卡找不到。请问怎么解决?
答:自动检查新硬件的服务是Kudzu,用户可以用“ntsysv”命令启动该服务。下次重启就会找到用户的新网卡。

问:我有家里有一台电脑装了Linux,我想从公司远程登陆到家里进行操作,每次Telnet都不能用root登陆,请问有办法解决吗?
答:为了安全性的考虑,现在有些Linux的版本默认不安装Telnet,推荐使用SSH。当然如果用户对安全性没有很高的要求,可以直接用root登录。方法是修改/etc/pam.d/login注释掉下面一行:
# auth required /lib/security/pam_security.so
最后保存退出,即可用root登录。

问:Linux下如何监视所有通过本机网卡的数据?
答:使用下面的命令即可:
#tcpdump iptraf

问:如何关闭用户的POP3权限?
答:把POP3的端口关掉就可以了。在文件/etc/services中找到下面这一行;
pop-3 110/tcp
在它前加个“#”,把它注释掉就可以了。

问:如何从Linux上给Windows发送PopUp消息?
答:把下面脚本保存为/usr/local/bin/net: #!/bin/bash
#/usr/local/bin/net

引用:
case “$1” in
send)
echo “$3”|smbclient -I “$2” -M `nmblookup -A “$2”|sed -e ‘1d’
-e ‘3,/*/d’|cut -f2|cut -d‘ ’ -f1`
;;
*)
echo “Usage:net send
exit 1
esac





再给该文件加上执行权限,命令如下:
#chmod +x /usr/local/bin/net
使用net脚本的例子如下:
#net send 192.168.12.1 "hello, Linux!"

问:如何确定wu-ftpd是否存在site exec安全漏洞?
答:在某些Linux发行版本上的wu-ftpd有site exec安全漏洞,用户可以非匿名用户ftp登录,然后执行下面的命令:
ftp>SITE EXEC bash -c id
如果返回的信息中有“200-uid=0(root) gid=0(root)”,那么就有这个漏洞,需要马上更换。

问:wu-ftpd如何允许匿名用户上传文件?
答:建立一个文件夹,对于FTP用户可写。然后在ftpaccess里面做如下设置:
upload /home/ftp /home/ftp/incoming/* yes ftp ftp 0400 nodirs

问:wu-ftpd如何禁止用户上传不规则文件名的文件?
答:比如要限制匿名用户不能上传文件名包含特殊字符的文件,那么可以在ftpaccess里面设置如下:
path-filter anonymous /etc/paths.msg ^[-A-Za-z0-9._]*$ ^. ^-

问:如何取消Linux的DHCP服务?
答:这要看用户是用系统自带的DHCP,还是自已后来装的,下面分两种情况来说明:
1.如果系统自带的,可以选择开始→系统服务→DHCP选项,停掉DHCP服务,然后执行下面的命令:
#/etc/rc.d/init.d/xinetd restart
2.如果是用户后来装的,一般是在/etc/rc.local中,让系统关闭DHCP服务。

问:怎么样使tcp syn cookie保护生效?
答:使用下面的命令即可:
#echo 1 > /proc/sys/net/ipv4/tcp_syncookies

问:怎样控制用户邮件的大小?
答:运行下面的命令来限定:
# max message size to 1MB
O MaxMessageSize=1000000
然后重启Sendmail即可。
文章评论

共有 3 条评论

  1. 恒善喜 于 2006-02-11 09:27:24发表:

    改变文件或目录之读、写、执行之允许权
    ====================================
    执行格式:chmod [-R] mode name ( name 可为文件名或目录名;mode可为 3 个 8 位元之数字,或利用ls -l 命令,列出文件或目录之读、写、执行允许权之文字缩写。)
    mode : rwx rwx rwx r:read w:write x:execute(user group other 缩写为: u g o)
    Example :
    % chmod 755 dir1 将目录dir1,设定成任何使用者,皆有读取及执行之权利,但只有拥有者可做修改。
    % chmod 700 file1 将文件file1,设定只有拥有者可以读、写和执行。
    % chmod o+x file2 将文件file2,增加拥有者可以执行之权利。
    % chmod g+x file3 将文件file3,增加群组使用者可执行之权利。
    % chmod o-r file4 将文件file4,除去其它使用者可读取之权利。

    改变文件或目录之拥有权
    ======================
    执行格式:chown [-R] username name ( name 可为文件名或目录名。)
    Example :
    % chown user file1 将文件 file1 之拥有权,改为使用者 user 所有。
    % chown -R user dir1 将目录 dir1,及其下所有文件和子目录之拥有权,改为使用者 user 所有。

    检查自己所属之群组名称
    ======================
    执行格式:groups
    Example :
    % groups

    改变文件或目录之群组拥有权
    ==========================
    执行格式:chgrp [-R] groupname name ( name 可为文件名或目录名 )
    Example :
    % chgrp vlsi file1 将文件 file1 之群组拥有权,改为 vlsi 群组。
    % chgrp -R image dir1 将目录dir1,及其下所有文件和子目录,改为 image 群组。

    改变文件或目录之最后修改时间(变为当前时间)
    =========================================
    执行格式:touch name ( name 可为文件或目录名称。)
    Example :
    % touch file1
    % touch dir1

    文件之连结
    ==========
    同一文件,可拥有一个以上之名称,可将文件做数个连结。
    执行格式:ln oldname newname ( Hard link )
    Example :
    % ln file1 file2   将名称 file2,连结至文件 file1。
    执行格式:ln -s oldname newname ( Symblick link )
    Example :
    % ln -s file3 file4 将名称 file4,连结至文件file3。

    文件之字串找寻
    ==============
    执行格式:grep string file
    Example :
    % grep abc file1 寻找文件file1中,列出字串 abc 所在之整行文字内容。

    找寻文件或命令之路径
    ====================
    执行格式:whereis command ( 显示命令之路径。)
    执行格式:which command ( 显示命令之路径,及使用者所定义之别 )
    执行格式:whatis command ( 显示命令功能之摘要。)
    执行格式:find search-path -name filename -print ( 搜寻指定路径下,某文件之路径 )
    Example :
    % find / -name file1 -print ( 自根目录下,寻找文件名为 file1 之路径)

    比较文件或目录之内容
    ====================
    执行格式:diff [-r] name1 name2 ( name1 name2 可同时为文件名,或目录名称 )
    Example :
    % diff file1 file2 比较文件 file1 与 file2 内,各行之不同处。
    % diff -r dir1 dir2 比较目录 dir1 与 dir2 内,各文件之不同处。

    如何实现为一个网卡绑定多个IP地址?
    ====================================
      Linux的网络设备配置文件存放在/etc/sysconfig/network-scripts里面,对于以太网的第一个网络设备,配置文件名一般为 ifcfg-eth0 如果需要为第一个网络设备绑定多一个IP地址,只需要在/etc/sysconfig/network-scripts目录里面创建一个名为ifcfg-eth0:0的文件,内容样例为:
    DEVICE="eth0:0"
    IPADDR="211.100.10.119"
    NETMASK="255.255.255.0"
    ONBOOT="yes"
      其中的DEVICE为设备的名称,IPADDR为此设备的IP地址,NETMASK为子网掩码,ONBOOT表示在系统启动时自动启动。
      如果需要再绑定多一个IP地址,只需要把文件名和文件内的DEVICE中的eth0:x加一即可。LINUX最多可以支持255个IP别名。

    如何设置login后欢迎信息
    ====================================
    ??修改/etc/motd,往里面写入文本,就能使用户通过telnet正确登录后执行shell之前得到相应的提示信息。
    ??motd就是“messages of the day”,也就是当日信息的意思。管理员可以往里面写一些需要注意的事项或者通知等来提醒正式用户。

    如何设置login前欢迎界面
    ====================================
    ??修改/etc/issue或者issue.net,往里面写入文本,就能使得用户在login前得到相应的提示,这将有助于用户分辨自己正在连接哪里的主机。
    ??issue的内容是出现在本机登录的用户界面上,而issue.net则是在用户通过网络telnet的时候出现。

    如何在bash下快速执行某个特定历史命令
    ====================================
    在bash下面按ctrl+r可以查找历史命令中匹配的命令并执行

    如何查看进程继承关系
    ====================================
    直接在命令行中输入
    pstree
    即可,程序会以树状结构方式列出系统中正在运行的各进程之间的继承关系。

    如何找出内存占用最大的进程
    ====================================
    除了可以使用top命令查看内存使用情况之外,还可以使用更快的命令行命令,相关的命令如下:
    ps aux | sort +4n
    或者
    ps aux | sort +5n

    如何在Linux下面编辑二进制文件
    ====================================
    http://freshmeat.net/redir/hexedit/4088/url_tgz/hexedit-1.2.3.src.tgz下载hexedit安装到系统上,就能用hexedit filename来编辑二进制文件。

    如何设置用户密码过期时间
    ====================================
    设置某个用户的密码过期时间可以用usermod -e来设置,如果要统一设置用户的密码过期时间,那么就要修改/etc/login.defs里面的PASS_MAX_DAYS,比如修改所有用户的密码过期时间是30天:
    PASS_MAX_DAYS 30
    如果这个值是99999,那么表示密码永不过期。

    如何修改网卡MAC地址
    ====================================
    首先必须关闭网卡设备,否则会报告系统忙,无法更改。
    命令是: /sbin/ifconfig eth0 down
    修改 MAC 地址,这一步较 Windows 中的修改要简单。
    命令是:/sbin/ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE
    重新启用网卡 /sbin/ifconfig eht0 up
    网卡的 MAC 地址更改就完成了

    如何用Bash纠正错误命令
    ====================================
    当你输入一个命令不知道是否正确的时候,可以使用ctrl+t来纠正到正确的命令。
    比如输入mkdri,然后按ctrl+t,bash会帮你纠正到最接近的命令mkdir。

    如何使非root用户都不能远程登录
    ====================================
    建立/etc/nologin文件,这样所有的非root用户都不能远程登录。

    如何不显示其他用户的消息
    ====================================
    用户可以使用mesg n来禁止别人给他发送信息,其实就是禁止别人往自己的终端上面的写权限。当别人试图再使用write给他发送信息时,发送者将会看见提示:
    write: user has messages disabled on pts/n

    如何知道某个命令使用了什么库文件
    ====================================
    例如要知道ls使用了什么库文件,可以使用:
    $ ldd /bin/ls

    如何临时增加交换空间
    ====================================
    产生一个64M的空文件
    #dd if=/dev/zero of=/swapfile bs=1024 count=65536

    初始化该文件为交换文件:
    mkswap /swapfile 65536
    sync

    激活这个交换文件:
    swapon /swapfile

    如何使一个用户进程在用户退出系统后仍然运行
    ====================================
    ??使用nohup command &,比如:
    ??nohup wget -c ftp://test.com/test.iso
    ??这样即使用户退出系统,wget进程仍然继续运行直到test.iso下载完成为止

    如何限制用户的最小密码长度
    ====================================
    修改/etc/login.defs里面的PASS_MIN_LEN的值。比如限制用户最小密码长度是8:
    PASS_MIN_LEN 8
    这样用户设置密码的时候如果输入的密码长度小于8将不能设置

    如何限制只有0组(gid=0)的用户可以su成root
    ====================================
    修改/etc/login.defs里面的SU_WHEEL_ONLY的值为:
    SU_WHEEL_ONLY yes
    那么就只有gid为0的用户可以su成root。

    如何禁用Ctrl+Alt+Del键重启系统
    ====================================
    有时候为了防止误操作导致系统重新启动(如机房里面新来了个习惯用Window$系统的管理员:-D),或者出于安全的原因,需要禁用Ctrl+Alt+Del组合键。
    只需要注释掉/etc/inittab文件内的
    ca::ctrlaltdel:/sbin/shutdown -t3 -r now
    这一行即可。如何注释?在这一行的行首放一个“#”号即可。

    怎么样格式化磁盘
    ====================================
    Linux下有一条mkfs命令,相当于format,可以对磁盘进行文件系统制作操作(或者说格式化)。命令的语法为:
    mkfs -t 文件系统类型 /dev/设备名
    如要把/dev/sda1格式为reiserfs格式,使用以下命令:
    mkfs -t reiserfs /dev/sda1
    当然,也可以使用mkfs.fstype命令来格式化磁盘,其中的fstype为文件系统名,如reiserfs文件系统的格式化命令为mkfs.reiserfs。上面那条命令的相应版本为:
    mkfs.reiserfs /dev/sda1

    如何取消root命令历史记录以增加安全性
    ====================================
    ??为了设置系统不记录每个人执行过的命令,就在/etc/profile里设置:
    ??HISTFILESIZE=0
    ??HISTSIZE=0
    ??或者:
    ??ln -s /dev/null ~/.bash_history
    ??这样就可以了。

    如何使用netrc文件进行自动ftp
    ====================================
    在自己的home目录下建立一个权限600,名为.netrc的文件,内容是:
    machine 192.168.0.1 login test password test
    这样以后你每次ftp 192.168.0.1的时候,系统都会帮你以用户名test,密码test登录。
    利用这个特征可以实现自动ftp。
    例如你想要每天5:00到192.168.0.1机器上面获得/test目录下的文件test.txt,可以这么做:
    建立一个文件ftp_cmd,内容为:
    cd test
    get test.txt
    bye
    然后使用crontab -e设置定时任务:
    0 5 * * * ftp 192.168.0.1 < ftp_cmd

    如何测试硬盘性能
    ====================================
    使用hdparm -t -T /dev/hdX就可以测试硬盘的buffer-cache reads和buffered disk reads两个数据,可以用来当作硬盘性能的参考。
    同时使用hdparm -c3 /dev/hdaX还能设置硬盘以32bit传输,以加快数据传输的速度。

    压缩和打包文件
    ====================================
    .bz2 文件如何解压缩 用tar -I 或者bunzip2 命令都可以。
    .bz2 -- 使用bzip2命令压缩的文件,可以使用bzip2 -d filename 解包
    .gz -- 使用gzip命令压缩的文件,可以使用gunzip -d filename 解包
    .tar -- 使用tar打包的文件,即tarball文件,可以使用tar xf filename 解包
    .tbz -- 使用tar打完包后再以bzip2命令压缩的文件,可以使用tar jxf filename 解包
    .tgz -- 使用tar打完包后再以gzip命令压缩的文件,可以使用tar zxf filename 解包
    个人总结:
    [.tar] 解开:tar xvf *.tar 把文件打包不压缩:tar cvf *.tar DirName
    [.tar.gz]解开:tar xzvf *.tar.gz 把文件打包并压缩:tar czvf *.tar.gz DirName
    [.bz2] 解开:bzip2 -d *.bz2
    [.bz] 解开:bzip -d *.bz
    [.gz] 解开:gzip -d *.gz
    请参见:【Linux下常用压缩格式的压缩与解压方法 】


    如何对光驱、软驱实现AutoMount
    ====================================
    安装完Redhat Linux之后,运行ntsysv,选中服务后台程序autofs.autofs的两个配置文件在/etc/auto.misc和 /etc/auto.master。

    /etc/auto.master定义了mount目录和mount所需的配置文件名及其空闲时自动umount的时间。下面是默认配置:
    [jephe@sh3 /etc]$ more auto.master
    /misc /etc/auto.misc --timeout 60

    下面是我的/etc/auto.misc配置文件:
    [jephe@sh3 /etc]$ more auto.misc
    cdrom -fstype=iso9660,ro :/dev/cdrom
    floppy -fstype=vfat :/dev/fd0
    e2floppy -fstype=ext2 :/dev/fd0
    注:
    a.确保/dev/cdrom作为符号链接指向你的光驱所在的分区,作为我的情况:
    [jephe@sh3 /dev]$ ls cdrom -l
    lrwxrwxrwx 1 root root 3 Aug 26 08:44 cdrom -> hdd
    b.当软盘为windows 95格化化的vfat分区类型时,设定了安装目录/misc/floppy
    c.当软盘为Linux格式化过的ext2分区类型时,设定了安装目录/misc/e2floppy

    至此,若还未启动autofs,则运行/etc/rc.d/init.d/autofs start, 若对上述两个文件中做过任何更改,运行/etc/rc.d/init.d/autofs restart即可。

    放入一片光盘进入光驱后,不需任何动作,直接进入目录/misc/cdrom,autofs 将自动先为你mount光驱同样,若放入一张vfat格式的软盘,你可以cd /misc/floppy,若是ext2格式的软盘,则cd /misc/e2floppy。在超过一分钟未使用它们,且当前目录不是自动mount目录/misc/cdrom,/misc/floppy,/misc/e2floppy,系统将自动umount它们。

    cron 计划任务
    ====================================
    简介
    crontab-操作每个用户的守护程序和该执行的时间表。

    部分参数说明
    crontab file [-u user]-用指定的文件替代目前的crontab。
    crontab-[-u user]-用标准输入替代目前的crontab.
    crontab-1[user]-列出用户目前的crontab.
    crontab-e[user]-编辑用户目前的crontab.
    crontab-d[user]-删除用户目前的crontab.
    crontab-c dir- 指定crontab的目录。
    crontab文件的格式:M H D m d cmd.
    M: 分钟(0-59)。
    H:小时(0-23)。
    D:天(1-31)。
    m: 月(1-12)。
    d: 一星期内的天(0~6,0为星期天)。
    cmd要运行的程序,程序被送入sh执行,这个shell只有USER,HOME,SHELL这三个环境变量。

    下面是一个例子文件:
    #MIN HOUR DAY MONTH DAYOFWEEK COMMAND
    #每天早上6点10分
    10 6 * * * date
    #每两个小时
    0 */2 * * * date
    #晚上11点到早上8点之间每两个小时,早上8点
    0 23-7/2,8 * * * date
    #每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
    0 11 4 * mon-wed date
    #1月份日早上4点
    0 4 1 jan * date
    范例
    $crontab -l 列出用户目前的crontab.
    #MIN HOUR DAY MONTH DAYOFWEEK COMMAND
    10 6 * * * date
    0 */2 * * * date
    0 23-7/2,8 * * * date

    如何在Linux里面恢复mbr?
    ====================================
    ??可以使用下面的命令来恢复:
    ??dd if=/boot/boot.NNNN of=/dev/hda bs=446 count=1
    ??其中bs(buffer size)是指重写的字节数。为什么不是512呢?主引导扇区是一个扇区(512字节)呀?答案是因为我们用上面的命令是为了修复可能被病毒修改了的主引导记录MBR,或者想把LILO卸载掉,而不是恢复整个主引导扇区。所以我们只把主引导扇区的备份文件boot.NNNN的前446个字节重写入主引导扇区。boot.NNNN是我们在安装Linux之前整个主引导分区的备份。如果我们把512个字节全部写入主引导扇区就可能会把安装了Linux后改变了的硬盘DPT表也破坏掉。那就坏事了。 :-)

    如何列出一个目录占用的空间
    ====================================
    du或du -s或du -k
    du -S | sort -n 可以迅速发现那个目录是最大的。

    用df可以看到已安装的文件系统的空间大小及剩余空间大小。

    quota -v查看用户的磁盘空间信息,如果你用quota限制了用户空间大小的话。

    在使用less 或 more时,如何直接启动编辑器
    ====================================
    在less或者more中打入v键,会立即启动vi编辑器,可以对文件进行编辑

    如何察看你当前使用的Linux内核的版本
    ====================================
    ??可以使用uname -r来查看当前内核版本。如果使用uname -a可以查看包括内核版本,机器硬件信息、网络节点名、操作系统名字等信息

    如何显示文件的类型
    ====================================
    ??用命令 file 可以使你知道某个文件究竟是ELF格式的可执行文件, 还是shell script文件或是其他的什么格式 例如:
    #file startx

  2. 恒善喜 于 2006-02-11 09:23:52发表:

    1.取消^M字符
    当你FTP一些DOS文件到unix下时,你经常会看见每行文件后面有个讨 厌的^M 字符,有两个简单的方法可以取消它。 用"vi"打开此文件,在Command mode下敲入: :%s/^V^M//g 或者,在UNIX SHELL下敲入: sed ’s/^V^M//g’ foo > foo.new


    2.使用nohup命令
    如果你想进程在你退出系统后还能执行,可以使用NOHUP命令 如: % nohup tar -cf /dev/tape /home & 你退出后再重新登录的话,使用’ps’命令可以看到进程还在执行

    3.查看文件的方法
    如果你只想看文件的前5行,可以使用head命令,如: head -5 /etc/passwd 如果你想查看文件的后10行,可以使用tail命令,如: tail -10 /etc/passwd 你知道怎么查看文件中间一段吗?你可以使用sed命令 如: sed -n ’5,10p’ /etc/passwd 这样你就可以只查看文件的第5行到第10行。

    4.计算文件数和目录数 下面的语句可以帮你计算有多少个文件和多少个目录..
    # ls -l * |grep "^-"|wc -l ---- to count files
    # ls -l * |grep "^d"|wc -l ----- to count dir
    还可以将以上的语句变成script或做个alias

    5.只列子目录的方法:
    ls -F | grep /$ 或者
    alias sub = "ls -F | grep /$"(linux)
    ls -l | grep "^d" 或者
    ls -lL | grep "^d" (Solaris)

    6.利用Find命令改变所有权
    想要改变当前目录下所有文件的所有权,可以这样:
    find . -exec chown OWNER.[GROUP] {} \; (Solaris)
    find . -exec chown -R OWNER.[GROUP] {} \; (Linux)

    7.列出除了某些类型文件的当前目录所有文件
    使用Ksh,用ls !(*.Z)可以显示所有文件,除了*.Z文件。 这个命令在一个目录里有许多种类型的文件的时候很有用。

  3. 恒善喜 于 2006-02-11 09:22:54发表:

    1.在 Linux 下安装 JDK
    进入安装目录
    #cd /home
    #cp jdk-1_5_0_02-linux-i586.rpm /usr/local
    #cd /usr/local
    给所有用户添加可执行的权限
    #chmod +x jdk-1_5_0_02-linux-i586.rpm.bin
    #./jdk-1_5_0_02-linux-i586.rpm.bin
    此时会生成文件jdk-1_5_0_02-linux-i586.rpm,同样给所有用户添加可执行的权限
    #chmod +x jdk-1_5_0_02-linux-i586.rpm
    安装程序
    #rpm -ivh jdk-1_5_0_02-linux-i586.rpm
    出现安装协议等,按接受即可。


    2.设置环境变量。
    #vi /etc/profile
    在最后面加入

    引用:
    #set java environment
    JAVA_HOME=/usr/java/jdk-1_5_0_02
    CLASSPATH=.:$JAVA_HOME/lib.tools.jar
    PATH=$JAVA_HOME/bin:$PATH
    export JAVA_HOME CLASSPATH PATH

    保存退出。

    要使JDK在所有的用户中使用,可以这样:
    vi /etc/profile.d/java.sh
    在新的java.sh中输入以下内容:
    #set java environment
    JAVA_HOME=/usr/java/jdk-1_5_0_02
    CLASSPATH=.:$JAVA_HOME/lib.tools.jar
    PATH=$JAVA_HOME/bin:$PATH

    然后先按esc键,
    然后保存退出(命令 :wq)


    export JAVA_HOME CLASSPATH PATH
    保存退出,然后给java.sh分配权限:chmod 755 /etc/profile.d/java.sh

    3.在终端使用echo命令检查环境变量设置情况。
    #echo $JAVA_HOME
    #echo $CLASSPATH
    #echo $PATH


    4.检查JDK是否安装成功。
    #java -version
    如果看到JVM版本及相关信息,即安装成功!


    5.安装apache2.0
    tar zxpf apache_2.0.tar.gz
    生成apache_2.0目录