返回列表 发帖

LinuxFAQ(NEW)

1.split分割合并文件 split -b1440k a_whopping_big_file chunk cat chunk* > a_whopping_big_file ##################################### 2.wget下载整个网站 wget -t0 -c -nH -np -b -m -P /localdir http://freesoft.online.sh.cn/mirrors/ftp.redhat.com -o wget.log ##################################### 3.cp时显示进度 cp -r -v dir1 dir2 cp -a -d -v dir1 dir2 ##################################### 4.ls重定向到多个文件 ls | tee 1.txt 2.txt 3.txt ..... ##################################### 5.mail#Linux中命令行下发送带附件的邮件 方法1. uuencode | mail -s "title" mail@address 本地需要作为附件的文件名。 邮件中的附件文件名,可以和不同,其实内容一样。 方法2. cat | mutt -s "title" -a mail@address 邮件正文内容。 本地需要作为附件的文件名。 #################################################### 6.移动光标 echo -e ';\033[20;10f'; 把光标移动到20行10列 ################################################### 7.杀掉一类进程 ps -efww|grep LOCAL=NO|grep -v grep|cut -c 9-15|xargs kill -9 ################################################### 8.查看部分文件 如果你只想看文件的前5行,可以使用head命令, 如:head-5/etc/passwd 如果你想查看文件的后10行,可以使用tail命令, 如:tail-10/etc/passwd 你知道怎么查看文件中间一段吗?你可以使用sed命令 如:sed-n';5,10p';/etc/passwd这样你就可以只查看文件的第5行到第10行。 ################################################### 9.xmms字体设置 xmms -adobe-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-1,-misc-simsun-medium-r-normal--12-*-*-*-*-*-gbk-0,*-r-* ################################################### 10.mount应用 mount -t ntfs /dev/hda1 /mnt/c -o codepage=936,iocharset=gb2312 mount -t iso9660 -o iocharset=cp936,ro /dev/cdrom /mnt/cdrom ####################################################### 11. nslookup 域名 查看域名所指IP 12.setterm控制台下的屏幕截图 setterm -dump 1 用setterm程序来获得控制台下的屏幕截图,1 tty1 ###################################################### 13.mencoder图片做成电影 mencoder *.jpg -mf on:fps=15 -o output.avi -ovc xvid 图片做成电影 ###################################################### 14.ldconfig加入指定的联接库 echo "/usr/local/lib" >> /etc/ld.so.conf /sbin/ldconfig ###################################################### 15.reset解决控制台乱码 终端乱码解决 reset setterm -reset cat /bin/bash ###################################################### 16.合并多个pdf文件 gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=out.pdf f1.pdf f2.pdf f3.pdf 合并多个pdf文件 ###################################################### gconftool-2 -s /desktop/gnome/url-handlers/http/command --type string ';opera "%s"'; 17.find应用 find . -ctime +1 -ctime -7 -print 找到当前目录下1~7天以前的文件, find ./ -type f -name "*.mp3" > playlist.lst ###################################################### 18.wc应用 ls |wc -l 统计当前目录下的非隐藏目录和非隐藏文件的个数 ls -a |wc -l 统计当前目录下的所有文件和目录的个数实际数目 find ./ |wc -l 统计当前目录下的所有文件包括隐藏文件和文件夹 ###################################################### 19.制作grub图 convert -geometry 640x480 -colors 14 XXX.png XXX.xpm && gzip XXX.xpm #grub ################################################### 20.应用tee tee tee:从标准输入中读取,向标准输出和其他文件中写入。 tee (2)部分参数说明 tee tee [-ai] [--append] [--ignore-interrupts] [--help] tee [--version] [文件名列表] tee -a, --append:将标准输入追加到输出文件的后面而不是缺省的覆盖它。 tee -i, --ignore-interrupt:忽略中断信号。 tee --help:在标准输出上输出帮助信息并退出。 tee --version:在标准输出上输出版本信息并退出。 21. hdparm应用 hdparm -Tt /dev/hda <==测试 hda 硬盘的 cache 与实际效能. hdparm -d0 /dev/hda <==关闭 DMA 模式. hdparm -d1 -c3 -X66 /dev/hda <==开启 DMA 模式在 DMA 66.,并开启 32 位元存取模式. route add -net 140.128.0.0 netmask 255.248.0.0 gw 140.128.166.254 //指定140.128.0.0的网段由140.128.166.254的gateway出去 xwd 参数 -out 文件名; //抓屏用convert转一下 参数为-root全屏-frame指定窗口-screen窗口没标题栏 chmod 4711 /usr/local/sbin/pure-ftpwho gcc -I/usr/X11R6/include -o hellowld hellowld.c -L/usr/X11R6/lib -lXm -lX11 PS1=';\t \w'; \! 显示该命令的历史记录编号。 \# 显示当前命令的命令编号。 \$ 显示$符作为提示符,如果用户是root的话,则显示#号。\\ 显示反斜杠。\d 显示当前日期。\h 显示主机名。 \n 打印新行。 \nnn 显示nnn的八进制值。\s 显示当前运行的shell的名字。\t 显示当前时间。 \u 显示当前用户的用户名。 \W 显示当前工作目录的名字。\w 显示当前工作目录的路径。 display -window root `xwininfo -root -stats | grep -e -geometry` pic/cat_11.jpg 更改桌面墙纸 22.aa=`grep _GQAdd $1` 把命令结果传给一个变量 23. echo应用 echo "abcdefg" | perl -lne ';{$a = reverse($_); print $a;}'; 把一个字符串翻转 echo bottle|rev 把一个字符串翻转 24. dd命令 dd 命令常常用来制作Linux启动盘。先找一个可引导内核,令它的根设备指向正确的根分区,然后使用dd命令将其写入软盘: dd $ rdev vmlinuz /dev/hda dd $dd if=vmlinuz of=/dev/fd0 dd 上面代码说明,使用rdev命令将可引导内核vmlinuz中的根设备指向/dev/hda,请把“hda”换成自己的根分区,接下来用dd命令将该内核写入软盘。 25. sudo shan ALL=/usr/local/pureftpd/sbin/pure-ftpwho,/usr/local/bin/mymount cdrom,/usr/local/bin/mymount -u cdrom ALL /etc/sudoer 26.iso cp /dev/cdrom xxxx.iso 将光盘做成iso文件 27.memory应用 memory grep MemTotal /proc/meminfo 看内存大小 mlterm /etc/mlterm/termcap文件中xterm那一行(因为我的$TERM是xterm): mlterm [root@/etc/mlterm]# cat termcap mlterm mlterm:\ mlterm kD=\E[3~:kb=^? mlterm xterm|rxvt:\ mlterm kD=\E[3~:kb=^H:ut mlterm *:\ mlterm kD=\e[3~ rm \.[^\.]* -r xmms -*-*-*-*-*-iso8859-1,-misc-simsun-medium-r-normal--12-*-*-*-*-*-gbk-0,*-r- 28.rpm -q 软件名 显示软件包的版本信息 rpm --prefix=路径 -ivh 包名 29.rpm -qlp *.rpm 看看包里面有什么文件 which softwarename 查找应用程序路径 30. tar命令 tar -xjvf *.tar.bz2 tar xvfz *.tar.gz 解压 tar xvfzC *.tar.gz path/ 解压到指定的目录(目录存在) tar czvf *.tar.gz dirname tar cvf *.tar dirname 压缩 31.rar 命令 rar a *.rar file-dir 压缩/加入压缩包 rar d *.rar file 从包中删除文件 rar x *.rar 解压到当前目录保持目录结构,e不保持目录结构 32.du命令 du -s 显示当前目录所用空间 du -sh 只显示目录大小 33.mount -t iso9660 xxxxx.iso /any/path/if/u/like -o loop 34.grep string file 列出string所在行的内容? 35.alias newname=';command';命令的别名 36.mount -t vfat /dev/sda1 /mnt/usb -o codepage=936,iocharset=gb2312 37.fstab /dev/hda1 /mnt/c vfat defaults,codepage=936,iocharset=gb2312 0 0 39.怎样编译mplayer ./configure --prefix=/usr/local/mplayer --enable-gui --libdir=/usr/local/mplayer/lib --language=zh --with-reallibdir=/usr/local/mplayer/lib/rp9codecs --with-win32libdir=/usr/local/mplayer/lib/win32codecs --enable-freetype 40.fcitx输入法 fcitx export XMODIFIERS=@im=fcitx fcitx export XIM=fcitx fcitx export XIM_PROGRAM=fcitx fcitx export GTK_IM_MODULE=xim opera cn u-JhyKr-e8c7j-pQt7k-BrwaN-kMTmh 41.unzip unzip unzip "*" 一次解压多个zip文件 42. ifconfig dhclient 动态IP ifconfig ifconfig eth0 down ifconfig ifconfig eth0 要抢的IP ifconfig ifconfig eth0 up ifconfig arping 网关 43. perl perl -p -i -e "s/\\\/\\\\\\\/g" aa 把aa中\换为\\ perl perl -p -i -e "s/abcde/edbca/g" * 比如把目录中所有文件中都出现的“abcde”替 换成“edbca” rpm kernel2.65rpm不能运行 rpm 运行rpm之前先export LD_ASSUME_KERNEL=2.2.5 44. chmod 改变文件或目录之读、写、执行之允许权 chmod ==================================== chmod 执行格式:chmod [-R] mode name ( name 可为文件名或目录名;mode可为 3 个 8 位元之数字,或利用ls -l 命令,列出文件或目录之读、写、执行允许权之文字缩写。) chmod mode : rwx rwx rwx r:read w:write x:execute(user group other 缩写为: u g o) chmod Example : chmod % chmod 755 dir1 将目录dir1,设定成任何使用者,皆有读取及执行之权利,但只有拥有者可做修改。 chmod % chmod 700 file1 将文件file1,设定只有拥有者可以读、写和执行。 chmod % chmod o+x file2 将文件file2,增加拥有者可以执行之权利。 chmod % chmod g+x file3 将文件file3,增加群组使用者可执行之权利。 chmod % chmod o-r file4 将文件file4,除去其它使用者可读取之权利。 45. chown 改变文件或目录之拥有权 chown ====================== chown 执行格式:chown [-R] username name ( name 可为文件名或目录名。) chown Example : chown % chown user file1 将文件 file1 之拥有权,改为使用者 user 所有。 chown % chown -R user dir1 将目录 dir1,及其下所有文件和子目录之拥有权,改为使用者 user 所有。 46. groups 检查自己所属之群组名称 groups ====================== groups 执行格式:groups groups Example : groups % groups 47. chgrp 改变文件或目录之群组拥有权 chgrp ========================== chgrp 执行格式:chgrp [-R] groupname name ( name 可为文件名或目录名 ) chgrp Example : chgrp % chgrp vlsi file1 将文件 file1 之群组拥有权,改为 vlsi 群组。 chgrp % chgrp -R image dir1 将目录dir1,及其下所有文件和子目录,改为 image 群组。 48. touch 改变文件或目录之最后修改时间(变为当前时间) touch ========================================= touch 执行格式:touch name ( name 可为文件或目录名称。) touch Example : touch % touch file1 touch % touch dir1 49. ln 文件之连结 ln ========== ln 同一文件,可拥有一个以上之名称,可将文件做数个连结。 ln 执行格式:ln oldname newname ( Hard link ) ln Example : ln % ln file1 file2   将名称 file2,连结至文件 file1。 ln 执行格式:ln -s oldname newname ( Symblick link ) ln Example : ln % ln -s file3 file4 将名称 file4,连结至文件file3。 50. grep 文件之字串找寻 grep ============== grep 执行格式:grep string file grep Example : grep % grep abc file1 寻找文件file1中,列出字串 abc 所在之整行文字内容。 51. find 找寻文件或命令之路径 find ==================== find 执行格式:whereis command ( 显示命令之路径。) find 执行格式:which command ( 显示命令之路径,及使用者所定义之别 ) find 执行格式:whatis command ( 显示命令功能之摘要。) find 执行格式:find search-path -name filename -print ( 搜寻指定路径下,某文件之路径 ) find Example : find % find / -name file1 -print ( 自根目录下,寻找文件名为 file1 之路径) 53. 比较文件或目录之内容 ==================== 执行格式:diff [-r] name1 name2 ( name1 name2 可同时为文件名,或目录名称 ) Example : % diff file1 file2 比较文件 file1 与 file2 内,各行之不同处。 % diff -r dir1 dir2 比较目录 dir1 与 dir2 内,各文件之不同处。 54. IP 如何实现为一个网卡绑定多个IP地址? IP ==================================== IP  Linux的网络设备配置文件存放在/etc/sysconfig/network-scripts里面,对于以太网的第一个网络设备,配置文件名一般为 ifcfg-eth0 如果需IP 要为第一个网络设备绑定多一个IP地址,只需要在/etc/sysconfig/network-scripts目录里面创建一个名为ifcfg-eth0:0的文件,内容样例为: IP DEVICE="eth0:0" IP IPADDR="211.100.10.119" IP NETMASK="255.255.255.0" IP ONBOOT="yes" IP  其中的DEVICE为设备的名称,IPADDR为此设备的IP地址,NETMASK为子网掩码,ONBOOT表示在系统启动时自动启动。 IP  如果需要再绑定多一个IP地址,只需要把文件名和文件内的DEVICE中的eth0加一即可。LINUX最多可以支持255个IP别名。 55. login 如何设置login后欢迎信息 login ==================================== login  修改/etc/motd,往里面写入文本,就能使用户通过telnet正确登录后执行shell之前得到相应的提示信息。 login  motd就是“messages of the day”,也就是当日信息的意思。管理员可以往里面写一些需要注意的事项或者通知等来提醒正式用户。 login 如何设置login前欢迎界面 login ==================================== login  修改/etc/issue或者issue.net,往里面写入文本,就能使得用户在login前得到相应的提示,这将有助于用户分辨自己正在连接哪里的主机。 login  issue的内容是出现在本机登录的用户界面上,而issue.net则是在用户通过网络telnet的时候出现。 bash 如何在bash下快速执行某个特定历史命令 bash ==================================== bash 在bash下面按ctrl+r可以查找历史命令中匹配的命令并执行 如何查看进程继承关系 ==================================== 直接在命令行中输入 pstree 即可,程序会以树状结构方式列出系统中正在运行的各进程之间的继承关系。 ps 如何找出内存占用最大的进程 ps ==================================== ps 除了可以使用top命令查看内存使用情况之外,还可以使用更快的命令行命令,相关的命令如下: ps ps aux | sort +4n ps 或者 ps ps aux | sort +5n 如何在Linux下面编辑二进制文件 ==================================== 到http://freshmeat.net/redir/hexed ... xedit-1.2.3.src.tgz下载hexedit安装到系统上,就能用hexedit filename来编辑二进制文件。 如何设置用户密码过期时间 ==================================== 设置某个用户的密码过期时间可以用usermod -e来设置,如果要统一设置用户的密码过期时间,那么就要修改/etc/login.defs里面的PASS_MAX_DAYS,比如修改所有用户的密码过期时间是30天: PASS_MAX_DAYS 30 如果这个值是99999,那么表示密码永不过期。 MAC 如何修改网卡MAC地址 MAC ==================================== MAC 首先必须关闭网卡设备,否则会报告系统忙,无法更改。 MAC 命令是: /sbin/ifconfig eth0 down MAC 修改 MAC 地址,这一步较 Windows 中的修改要简单。 MAC 命令是:/sbin/ifconfig eth0 hw ether 00:AA:BB:CCD:EE MAC 重新启用网卡 /sbin/ifconfig eth0 up MAC 网卡的 MAC 地址更改就完成了 bash 如何用Bash纠正错误命令 bash ==================================== bash 当你输入一个命令不知道是否正确的时候,可以使用ctrl+t来纠正到正确的命令。 bash 比如输入mkdri,然后按ctrl+t,bash会帮你纠正到最接近的命令mkdir。 login 如何使非root用户都不能远程登录 login ==================================== login 建立/etc/nologin文件,这样所有的非root用户都不能远程登录。 mesg 如何不显示其他用户的消息 mesg ==================================== mesg 用户可以使用mesg n来禁止别人给他发送信息,其实就是禁止别人往自己的终端上面的写权限。当别人试图再使用write给他发送信息时,发送者将会看见提示: mesg write: user has messages disabled on pts/n 如何知道某个命令使用了什么库文件 ==================================== 例如要知道ls使用了什么库文件,可以使用: $ ldd /bin/ls swap 如何临时增加交换空间 swap ==================================== swap 产生一个64M的空文件 swap #dd if=/dev/zero of=/swapfile bs=1024 count=65536 swap 初始化该文件为交换文件: swap mkswap /swapfile 65536 swap sync swap 激活这个交换文件: swap swapon /swapfile nohup 如何使一个用户进程在用户退出系统后仍然运行 nohup ==================================== nohup  使用nohup command &,比如: nohup  nohup wget -c ftp://test.com/test.iso nohup  这样即使用户退出系统,wget进程仍然继续运行直到test.iso下载完成为止 login 如何限制用户的最小密码长度 login ==================================== login 修改/etc/login.defs里面的PASS_MIN_LEN的值。比如限制用户最小密码长度是8: login PASS_MIN_LEN 8 login 这样用户设置密码的时候如果输入的密码长度小于8将不能设置 login 如何限制只有0组(gid=0)的用户可以su成root login ==================================== login 修改/etc/login.defs里面的SU_WHEEL_ONLY的值为: login SU_WHEEL_ONLY yes login 那么就只有gid为0的用户可以su成root。 ctrlaltdel 如何禁用Ctrl+Alt+Del键重启系统 ctrlaltdel ==================================== ctrlaltdel 有时候为了防止误操作导致系统重新启动(如机房里面新来了个习惯用Window$系统的管理员),或者出于安全的原因,需要禁用Ctrl+Alt+Del组合键。 ctrlaltdel 只需要注释掉/etc/inittab文件内的 ctrlaltdel ca::ctrlaltdel:/sbin/shutdown -t3 -r now ctrlaltdel 这一行即可。如何注释?在这一行的行首放一个“#”号即可。 format 怎么样格式化磁盘 format ==================================== format Linux下有一条mkfs命令,相当于format,可以对磁盘进行文件系统制作操作(或者说格式化)。命令的语法为: format mkfs -t 文件系统类型 /dev/设备名 format 如要把/dev/sda1格式为reiserfs格式,使用以下命令: format mkfs -t reiserfs /dev/sda1 format 当然,也可以使用mkfs.fstype命令来格式化磁盘,其中的fstype为文件系统名,如reiserfs文件系统的格式化命令为mkfs.reiserfs。上面那条命令的相应版本为: format mkfs.reiserfs /dev/sda1 如何取消root命令历史记录以增加安全性 ====================================   为了设置系统不记录每个人执行过的命令,就在/etc/profile里设置:   HISTFILESIZE=0   HISTSIZE=0   或者:   ln -s /dev/null ~/.bash_history   这样就可以了。 ftp 如何使用netrc文件进行自动ftp ftp ==================================== ftp 在自己的home目录下建立一个权限600,名为.netrc的文件,内容是: ftp machine 192.168.0.1 login test password test ftp 这样以后你每次ftp 192.168.0.1的时候,系统都会帮你以用户名test,密码test登录。 ftp 利用这个特征可以实现自动ftp。 ftp 例如你想要每天5:00到192.168.0.1机器上面获得/test目录下的文件test.txt,可以这么做: ftp 建立一个文件ftp_cmd,内容为: ftp cd test ftp get test.txt ftp bye ftp 然后使用crontab -e设置定时任务: ftp 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传输,以加快数据传输的速度。 tar 压缩和打包文件 tar ==================================== tar .bz2 文件如何解压缩 用tar -I 或者bunzip2 命令都可以。 tar .bz2 ????使用bzip2命令压缩的文件,可以使用bzip2 -d filename 解包 tar .gz ????使用gzip命令压缩的文件,可以使用gunzip -d filename 解包 tar .tar ????使用tar打包的文件,即tarball文件,可以使用tar xf filename 解包 ,tar cf path/name name 打包 tar .tbz ????使用tar打完包后再以bzip2命令压缩的文件,可以使用tar jxf filename 解包 tar .tgz ????使用tar打完包后再以gzip命令压缩的文件,可以使用tar zxf filename 解包 tar 个人总结: tar [.tar] 解开:tar xvf *.tar 把文件打包不压缩:tar cvf *.tar DirName tar [.tar.gz]解开:tar xzvf *.tar.gz 把文件打包并压缩:tar czvf *.tar.gz DirName tar [.bz2] 解开:bzip2 -d *.bz2 tar [.bz] 解开:bzip -d *.bz tar [.gz] 解开:gzip -d *.gz 请参见:【Linux下常用压缩格式的压缩与解压方法 】 mount 如何对光驱、软驱实现AutoMount mount ==================================== mount 安装完Redhat Linux之后,运行ntsysv,选中服务后台程序autofs.autofs的两个配置文件在/etc/auto.misc和 /etc/auto.master。 mount /etc/auto.master定义了mount目录和mount所需的配置文件名及其空闲时自动umount的时间。下面是默认配置: mount [jephe@sh3 /etc]$ more auto.master mount /misc /etc/auto.misc --timeout 60 mount 下面是我的/etc/auto.misc配置文件: mount [jephe@sh3 /etc]$ more auto.misc mount cdrom -fstype=iso9660,ro :/dev/cdrom mount floppy -fstype=vfat :/dev/fd0 mount e2floppy -fstype=ext2 :/dev/fd0 mount 注: mount a.确保/dev/cdrom作为符号链接指向你的光驱所在的分区,作为我的情况: mount [jephe@sh3 /dev]$ ls cdrom -l mount lrwxrwxrwx 1 root root 3 Aug 26 08:44 cdrom -> hdd mount b.当软盘为windows 95格化化的vfat分区类型时,设定了安装目录/misc/floppy mount c.当软盘为Linux格式化过的ext2分区类型时,设定了安装目录/misc/e2floppy mount 至此,若还未启动autofs,则运行/etc/rc.d/init.d/autofs start, 若对上述两个文件中做过任何更改,运行/etc/rc.d/init.d/autofs restart即可。 mount 放入一片光盘进入光驱后,不需任何动作,直接进入目录/misc/cdrom,autofs 将自动先为你mount光驱同样,若放入一张vfat格式的软盘,你可以cd /misc/floppy,若是ext2格式的软盘,则cd /misc/e2floppy。 mount 在超过一分钟未使用它们,且当前目录不是自动mount目录/misc/cdrom,/misc/floppy,/misc/e2floppy,系统将自动umount它们。 rename 批量重命名 rename ================================= rename for i in /root/mud/*.C; do mv $i ${i%.C}.c; done 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 如何将man page转成HTML格式 ====================================   使用 man2html 这个指令,就可以将 man page 转成 HTML 格式了。用法是:   man2html filename > htmlfile.html   例子:   man2html /usr/man/man1/man2html.1 > ~/man2html.html 查看文件内容的特殊方法 ==================================== 相信最基本的cat和less你已经很熟悉了,如果有特殊的要求呢: 如果你只想看文件的前5行,可以使用head命令,如: head -5 /etc/passwd 如果你想查看文件的后10行,可以使用tail命令,如: tail -10 /etc/passwd tail -f /var/log/messages 参数-f使tail不停地去读最新的内容,这样有实时监视的效果,当你在ppp拨号的过程中用它岂不是很方便! 查看文件中间一段,你可以使用sed命令,如: sed -n ';5,10p'; /etc/passwd 这样你就可以只查看文件的第5行到第10行。 linux下文件分割与合并 ====================================   $dd if=source of=target.1 bs=1M count=10   $dd if=source of=target.2 bs=1M skip=10   source被分为target.1和target.2两个文件,其中target.1为source的前10M部分;target.2为source的减去10M后的部分。   $cat target.1 target.2 > othersource   source与othersource是同一个文件。 color RedHat下如何显示彩色目录列表 color ==================================== color  打开/etc/bashrc, 加入如下一行: color  alias ls="ls --color" color  下次启动bash时就可以像在Slackware里那样显示彩色的目录列表了, 其中颜色的color含义如下: color 蓝色-->目录 color 绿色-->可执行文件 color 红色-->压缩文件 color 浅蓝色-->链接文件 color 灰色-->其他文件 什么是Linux 运行级? ====================================   什么是运行级呢?简单的说,运行级就是操作系统当前正在运行的功能级别。这个级别从1到6,具有不同的功能。这些级别在/etc/inittab文件里指定。这个文件是init程序寻找的主要文件,最先运行的服务是那些放在/etc/rc.d 目录下的文件。   不同的运行级定义如下:(可以参考Red Hat Linux 里面的/etc/inittab)   # 缺省的运行级,RHS 用到的级别如下:   # 0 - 停机(千万不要把initdefault 设置为0 )   # 1 - 单用户模式   # 2 - 多用户,但是没有 NFS   # 3 - 完全多用户模式   # 4 - 没有用到   # 5 - X11   # 6 - 重新启动 (千万不要把initdefault 设置为6 )   对各个运行级的详细解释:   0 为停机,机器关闭。   1 为单用户模式,就像Win9x 下的安全模式类似。   2 为多用户模式,但是没有NFS 支持。   3 为完整的多用户模式,是标准的运行级。   4 一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设置。   5 就是X11,进到Xwindow系统了。   6 为重启,运行init 6机器就会重启。   不同的运行级有不同的用处,也应该根据自己的不同情形来设置。例如,如果丢失了root 口令,那么可以让机器启动进入单用户状态来设置。在启动后的 lilo 提示符下输入:   init=/bin/sh rw   就可以使机器进入运行级1 ,并把root文件系统挂为读写。他会跳过所有系统认证,让你使用passwd 程序来改变root口令,然后启动到一个新的运行级。 系统平均负载(Load average)释疑 ====================================   在Linux系统中,uptime、w、top等命令都会有系统平均负载load average的输出,那么什么是系统平均负载呢? 系统平均负载被定义为在特定时间间隔内运行队列中的平均进程树。如果一个进程满足以下条件则其就会位于运行队列中:   - 它没有在等待I/O操作的结果   - 它没有主动进入等待状态(也就是没有调用';wait';)   - 没有被停止(例如:等待终止)   例如:   [root@www2 init.d]# uptime   7:51pm up 2 days, 5:43, 2 users, load average: 8.13, 5.90, 4.94   命令输出的最后内容表示在过去的1、5、15分钟内运行队列中的平均进程数量。   一般来说只要每个CPU的当前活动进程数不大于3那么系统的性能就是良好的,如果每个CPU的任务数大于5,那么就表示这台机器的性能有严重问题。对于上面的例子来说,假设系统有两个CPU,那么其每个CPU的当前任务数为:8.13/2=4.065。这表示该系统的性能是可以接受的。 ps 如何以树状结构显示系统当前的任务 ps ==================================== ps   运行ps时指定-forest选项,当前运行的进程将会以树状格式显示出来。比如:所有由xserver运行的程序,将会以xserver做为它们的“根”显示出ps 来。 ps 命令格式: ps   ps afx ps   其中’a’表示列出所有运行的进程;’x’列出所有的后台进程;’f’是’-forest’的缩写。输出的格式如下: ps   329 ? SW 0:00 [wdm] ps   342 ? R 9:57 \_ /usr/X11R6/bin/X :0 vt7 -fbbpp 16 -auth /usr/etc/ ps   343 ? SW 0:00 \_ [wdm] ps   364 ? S 0:45 \_ /usr/bin/enlightenment ps   399 ? S 0:00 \_ /usr/bin/ssh-agent sh /home/tuneup/.xse ps   404 ? S 2:28 \_ gkrellm -wm ps   787 ? S 0:05 \_ aterm -fg white -tr ps   788 ttyp0 SW 0:00 \_ [bash] ps   792 ttyp0 S 0:00 \_ vim todo ps  注:另外一种得到格式化输出结果的方法是:pstree -pu 列目录时如何显示中文文件名 ====================================   我们可以使用--show-control-chars命令选项来显示。   例如:   $ls --show-control-chars   以通过修改fstab来实现,在fstab中加入类似内容: fstab  /dev/hda1 /mnt/c vfat defaults,codepage=936,iocharset=cp936 0 0 查询你的CPU等级 ==================================== cat /proc/cpuinfo 如何使用户没有telnet和ftp权限 ==================================== 若只希望用户没telnet权限,则需要修改/etc/passwd中对应该用户的shell为/bin/true。 若只希望用户没有telnet和ftp权限,则需要修改/etc/passwd中对应该用户的shell为/bin/false。 如何连续执行一个命令 ====================================   使用watch命令,可以反复执行命令,如果和ls配合,可以达到观察某文件大小变化的效果。例如:   $watch ls -l file.name 如何防止某个关键文件被修改 ====================================   在linux下,有些配置文件是不允许任何人包括root修改的,为了防止被误删除或修改,可以设定该文件的"不可修改位(immutable)"。   例如:   chattr +i /etc/fstab   如果需要修改文件则:   chattr -i /etc/fstab   以后再修改文件。 linux环境下如何undelete ====================================   先在自己的主目录下创建一个名为.trash的子目录,然后在bashrc加入以下指令:   alias rm ';mv -f !* ~/.trash';   alias undel ';mv ~/.trash/!* ./!*';   alias cleantrash ';/bin/rm -rf ~/.trash; mkdir ~/.trash;sync';   alias lrm ';ls ~/.trash';   若文档是直接用rm命令删除的,理论上 ext2 内 rm 掉的档案还是可以用 debugfs , ext2ed 救回来的.当然... 被 overwrite 掉就没救了。 find 如何找出磁盘中某个大小范围内的文件 find ==================================== find  比如要查找磁盘中大于3M的文件: find  find . -size +3000k -exec ls -ld {} ; 如何快速重新执行已经执行过的命令 ====================================   使用!可以实现该功能,例如你前面执行了很多命令,现在突然想执行上一次执行的./configure命令,则只需要输入“!./con”即可而无需使用上下键来滚动查找。   而!!则能代替前面一个命令。比如刚执行过一次ifconfig,输入“!!”则等于再执行一次ifconfig。   而且这两个用法可以和其他命令组合,比如你刚执行过ifconfig,然后执行man !!,就等于执行man ifconfig。 当终端出现混乱时,如何让它恢复正常 ====================================   当使用stty命令而出现一些混乱或者更糟的是,使用一个程序而使终端设置完全混乱了时怎么办?要回到“现实”,试试下面的命令:   stty sane   如果击键变得混乱时,试着用来把命令括起来,输入的顺序是先按下CTRL再键入j键。   ctty sane   这个命令不会回到先前的设置,但却可以去除一些稀奇古怪的设置。而真正会出现什么设置要依赖于所使用的系统,但它至少会让你能输入字符,并见到结果。从这里开始,你可以把一些组合键设置为你所喜欢的方式。 tar 如何将.gz文件分割为数个1.44mb tar ==================================== tar 把一个文件分割到软盘: tar tar cfvm /dev/fd0 file.tar.gz tar 把软盘上的文件合并到硬盘: tar tar xvfm /dev/fd0 如何一次处理一整个目录 ====================================   Linux/UNIX 的很多常用命令如 rm , cp 等都有一个参数---- -r , 是递归的意思, 命令里加了参数 -r 就可以对目标目录及其下所有子目录进行操作,如:   rm -rf /test (f 是 force 意为强行)   该命令完全删除根目录下的子目录 test ,作用类似于 dos 下的 deltree ,当然使用这个命令时要特别小心。再如:   cp -r /test /test1   有类似 dos 下 xcopy /s 的作用。 redhat下如何允许root通过telnet登录? ==================================== 方法1:/etc/securetty ( 加入 pts/0 、pts/1、...) # echo "pts/0" >> /etc/securetty 方法2:为了在redhat linux系统中激活远程登陆,从文件/etc/pam.d/login中移去下面这一行: auth required /lib/security/pam_security.so 将/etc/securetty这个文件改名就行啦,该文件是定义root只能在tty1~tty6的终端上登录的,详细的信息可以"man login"。 reboot Linux正常重新启动的方法有很多种,下面介绍几种常用的重新启动方法: reboot ==================================== reboot Ctrl+Alt+Del reboot #init 6 reboot #shutdown -r now reboot #reboot 为什么我的linux不允许普通用户登录? ====================================   以root的身份登录系统,检查是不是有/etc/nologin这个文件,删除这个文件,然后再以普通用户的身份登录。相信问题已经解决。   出现这种问题一般是因为系统在关闭的过程中意外中断了操作,如断线或者是插头被拔了之类的意外。而系统在关闭的过程中会自动的产生这个文件,以便通知用户系统正在关闭这就造成普通用户无法登录了。   另外一种原因是系统管理员在对系统进行维护,为了维护的过程中不受其他用户的影响,需要生成这个文件来禁止其他用户登录。但很不幸系统管理维护完以后忘记删除这个文件了。 chown 如何改变当前路径下所有目录和文件的所有权 chown ==================================== chown 改变所有子目录及文件的所有权 chown #chown -R owner[.group] * chown 也可以用find命令来实现: chown #find . -exec chown owner[.group] {} ; 改变所有子目录及文件的属性 在你要改变属性的目录下,输入命令: #chmod -R 777 * 就可以改变下面所有子目录及文件的属性,不过使用这个命令的时候要特别小心,要是在根目录下打入这个命令,你所有文件的属性都将改变,这就会引起很大的安全性问题。 如何快速查找文件 ====================================   查找文件可以用find,但最好是用locate,速度快,参数少。   $locate filename   它是在一个数据库里面查找,所以,要记得经常用updatedb命令更新数据库。一般地,在crontab中的cron.daily脚本会执行/usr/sbin/logrotate /etc/logrotate.conf命令,让机子在每天深夜更新数据库。 如何将Linux或FreeBSD复制到另一颗硬盘 ? ====================================   Linux上的系统复制很简单,使用cp -ax将partition资料复制过去,重开机後设定lilo就可以了。   FreeBSD也可以用cp来复制文档,但是对于复制整个文档系统并不是好方法。   这里介绍使用dump和restore来做: 创建新的文档系统 假如你的新硬盘为ad1, 而将来的根分区将是ad1s1a, 你可以先创建文档系统: newfs /dev/ad1s1a mount /dev/ad1s1a /mnt cd /mnt 复制: dump -f- / | restore -f- -r 这是把老的根文档系统复制输出到管道,restore从管道里读数据,写入当前目录所在的文档系统。 按部就班复制其他文档系统 复制完後,也许 要修改新硬盘下的/etc/fstab,安装上新的分区,摘下老硬盘就可以了。 再补充一点,如果你要复制的是另外一台机器,可以用rsh,这样就可以通过网络把一个分区数据传送到另外一台机器,不需要NFS,不需SAMBA等就可以解决问题,而cp就很难作到了。 newfs /dev/ad1s1a mount /dev/ad1s1a /mnt cd /mnt rsh -l yourname thathost ';dump -f- /'; | restore -f- -r linux怎么给一个普通用户reboot权限? ==================================== 分四种情况讨论: 1.让任何人(包括根本不拥有系统帐号的人)都可以通过控制台reboot 在/etc/inittab文件中保留ca::ctrlaltdel:/sbin/shutdown -t3 -r now 这一行。这样全国人民都可以reboot你的机器,只要你把控制台交出来。 2.让所有系统用户都可以reboot 执行# > /etc/security/console.apps/reboot即可。这就在console.apps目录下生成了一个空文件,文件名就是授权的application。以上路径是针对Mandrake系统而言的,其他系统我不清楚。不过,真正高雅的Mandraker或许根本就不会去靠“>”来生成这个文件??????他们会使用msec来进行控制的。 3.让指定的用户才可以reboot 假设我们要让用户zhizunbao拥有reboot的权限,我们靠uid/gid来完成控制: # groupadd reboot # cd /usr/local # mkdir reboot # chown root:reboot reboot/ # chmod 750 reboot/ # cd reboot # cp /sbin/reboot . # chmod 4755 reboot # usermod -G reboot zhizunbao 现在,zhizunbao就可以运行/usr/local/reboot/reboot来重启动机器。 4.在一台不设普通用户的机器上启用口令验证reboot 这实际上是靠添加一个关机帐号来实现的,该帐号的shell就是加了s位的/sbin/halt,并且口令只有少数维护人员知道。我们这里采用的就是第4套方案。 怎样知道自己的机器上有哪些服务在运行 ==================================== 若一台机器运行有很多不需要的服务,那么被攻击者入侵的可能性就会大大加大,因此作为管理员就应该经常查看系统运行有哪些服务。 首先查看系统运行的进程 若需要查看系统当前运行的所有进程,就需要用如下命令: # ps auxw 其中参数a表示显示系统中所有用户的的进程;u表示输出进程用户所属信息;x表示也显示没有控制台的进程;若显示行太长而被截断则可以使用f参数; 查看系统监听的服务 # netstat -ln l表示显示当前系统监听的端口信息;n表示端口按照端口号来显示,而不转换为service文件中定义的端口名;若希望了解各个端口都是由哪些进程监听则可以使用p参数。   若发现不需要的服务,可以使用linuxconf或ntsysv命令来关闭这些服务在系统启动时自启动,然后重新启动系统则这些服务将在运行。 有些服务是由inetd超级服务器来监控的,则需要标记/etc/inetd.conf来关闭这些服务。 查询端口对应的服务 ==================================== # lsof -i :端口号 查询此端口对应的服务。 vi 中设置自动缩进 ==================================== :set autoindent :set ai 取消 :set noautoindent :set noai 如何使linux系统对ping不反应 ====================================   在linux里,如果要想使ping 没反应也就是用来忽略icmp包。可以用:   echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all   若想恢复就用:   echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all 如何实现多网卡bondin ====================================   使用多块网卡虚拟成为一块网卡,具有相同的IP地址。这项技术其实在sun和cisco中已经存在,分别称为Trunking和etherchannel技术,在Linux中,这种技术称为bonding。   因为bonding在内核2.4.x中已经包含了,只需要在编译的时候把网络设备选项中的Bonding driver support选中就可以了。   然后,重新编译核心,重新起动计算机,执行如下命令:   ismod bonding   ifconfig eth0 down   ifconfig eth1 down   ifconfig bond0 ipaddress   ifenslave bond0 eth0   ifenslave bond0 eth1   现在两块网卡已经象一块一样工作了.这样可以提高集群节点间的数据传输.   你最好把这几句写成一个脚本,再由/etc/rc.d/rc.local调用,以便一开机就生效.   bonding对于服务器来是个比较好的选择,在没有千兆网卡时,用两三块100兆网卡作bonding,可大大提高服务器到交换机之间的带宽.但是需要在交换机上设置连接bonding网卡的两个口子映射为同一个虚拟接口。 Removing ^M from file ====================================================== if you have transferred a file from MS Windows to UNIX, you might find that the file looks like this: bleh bleh ^M leh leh ^M tey tey tey^M This is because Windows uses carridge return and newline to indicate a new line. Here are a number of ways to get rid of the ^M characters: 1- cat filename1 | tr -d "^V^M" > newfile 2- sed -e "s/^V^M//" filename > outputfilename where ^V is actually control-V and ^M is actually control-M (you must type these yourself, don';t just copy and paste this command from this web page) 3-vi solution : open file with vi 1. hit the ESC key 2. :%s/^V^M// 3 - some distributions contain a command called dos2unix which removes these carridge return characters 4- use the texteditor vim (www.vim.org) and edit the file. If all the lines (not only some) contain consistently the carridge return characters then vim will show [textmode] and when you change the mode with the command :set notextmode it will remove them. Create /dev/null ==================================== I have moved a file to /dev/null and now my system doesn';t work If you move a file with the mv command to "/dev/null" then it will be overwritten with an ordinary file. How to fix it: Boot your system. If it doesn';t boot take a one disk distribution like Toms rtbt and mount your /dev/hdXX partition. Now type in a shell "mknod /dev/null c 1 3" to create a nod file. /dev/null is the path where the nod file will be saved. The c stands for a character device and the two numbers are the major and the minor numbers for the null device. After that you must change with "chmod 666 /dev/null" the read, write and execute permissions. With "ls -alF /dev/" you will see all nod files with it';s own three parameters like "crw-rw-rw- 1 root root 1, 3 Oct 4 11:34 null ". You will see a "c" in the near of the rwx flags an a " 1, 3" left of the date. Howto log in to your server passwordless via ssh ( rsa version ) ==================================== Create your private and public keys via ssh-keygen program $ ssh-keygen Computing keys Testing the keys.. Key generation complete.. Enter the file in which to save the key (/usr/home/murat/.ssh/identity) Press enter for the default value... Your identification has been saved in /usr/home/murat/.ssh/identity Your public ket is: blah....blah...blah.... Your public key has been saved in /usr/home/murat/.ssh/identity.pub Now that we have created our `public` key, take your public key which is ~/.ssh/identity.pub to your server, in the ~/.ssh/ directory, create a file named authorized_keys and append the content of identity.pub file to your authorized_keys file now, in your machine, type $ ssh -l username your_remote_machine.domain.com Boom, no password, no headache, you';re in the other side... Blocking anyone to su to root ==================================== The su (Substitute User) command allows you to become other existing users on the system. For example you can temporarily become "root" and execute commands as the super-user "root". If you don';t want anyone to su to root or restrict "su" command to certain users then add the following two lines to the top of your "su" configuration file in the "/etc/pam.d/" directory. 1- Edit the su file (vi /etc/pam.d/su) and add the following two lines to the top of the file: auth sufficient /lib/security/pam_rootok.so debug auth required /lib/security/pam_wheel.so group=wheel After adding the two lines above, the "/etc/pam.d/su" file should look like this: #%PAM-1.0 auth sufficient /lib/security/pam_rootok.so debug auth required /lib/security/pam_wheel.so group=wheel auth required /lib/security/pam_pwdb.so shadow nullok account required /lib/security/pam_pwdb.so password required /lib/security/pam_cracklib.so password required /lib/security/pam_pwdb.so shadow use_authtok nullok session required /lib/security/pam_pwdb.so session optional /lib/security/pam_xauth.so Which means only those who are a member of the "wheel" group can su to root; and to add a user to wheel group use: root# usermod -G10 username Ok, now everybody can not be root using su. When an user that is not in wheel group runs su command ,he/she can not be root even if he/she writes correct root password. Disable reboot,halt ,shutdown for users ==================================== On Redhat [root@apache /]# rm -f /etc/security/console.apps/halt [root@apache /]# rm -f /etc/security/console.apps/poweroff [root@apache /]# rm -f /etc/security/console.apps/reboot [root@apache /]# rm -f /etc/security/console.apps/shutdown [root@apache /]# rm -f /etc/security/console.apps/xserver (if removed, root will be the only user able to start x). mkdir -p rep1/rep2/rep3 一次建多个目录 rm -rf /tmp/.??* /tmp/* 删除所有文件,包括隐藏文件 You can put this into /etc/rc.d/init.d/syslog into the "stop)" section. This will clean up /tmp at every shutdown and keep your disk tidy. Do not run the above command while running X11 or before you run startx. X11 needs the /tmp/.font-unix which is created by xfont server and X11 it self creates the directory /tmp/.X11-unix which is needed to talk to the X11 windows. 1、BIOS的安全设置   这是最基本的了,也是最简单的了。一定要给你的BIOS设置密码,以防止通过在BIOS中改变启动顺序,而可以从软盘启动。这样可以阻止别有用心的试图用特殊的启动盘启动你的系统,还可以阻止别人进入BIOS改动其中的设置,使机器的硬件设置不能被别人随意改动。   2、LILO的安全设置   LILO是LInux   LOader的缩写,它是LINUX的启动模块。可以通过修改“/etc/lilo.conf”文件中的内容来进行配置。在/etc/lilo.conf文件中加如下面两个参数:restricted,password。这三个参数可以使你的系统在启动lilo时就要求密码验证。   第一步:编辑lilo.conf文件(vi /etc/lilo.comf),假如或改变这三个参数:   boot=/dev/hda   map=/boot/map   install=/boot/boot.b   prompt   timeout=00 #把这行该为00,这样系统启动时将不在等待,而直接启动LINUX   message=/boot/message   linear   default=linux   restricted #加入这行   password= #加入这行并设置自己的密码   image=/boot/vmlinuz-2.4.2-2   label=linux   root=/dev/hda6   read-only   第二步:因为"/etc/lilo.conf"文件中包含明文密码,所以要把它设置为root权限读取。   # chmod 0600 /etc/lilo.conf   第三步:更新系统,以便对“/etc/lilo.conf”文件做的修改起作用。   # /sbin/lilo -v   第四步:使用“chattr”命令使"/etc/lilo.conf"文件变为不可改变。   # chattr +i /etc/lilo.conf   这样可以在一定程度上防止对“/etc/lilo.conf”任何改变(意外或其他原因)   3、让口令更加安全   口令可以说是系统的第一道防线,目前网上的大部分对系统的攻击都是从截获口令或者猜测口令开始的,所以我们应该选择更加安全的口令。 首先要杜绝不设口令的帐号存在。这可以通过查看/etc/passwd文件发现。例如,存在的用户名为test的帐号,没有设置口令,则在/etc/passwd文件中就有如下一行:   test::100:9::/home/test:/bin/bash   其第二项为空,说明test这个帐号没有设置口令,这是非常危险的!应将该类帐号删除或者设置口令。 其次,在旧版本的linux中,在/etc/passwd文件中是包含有加密的密码的,这就给系统的安全性带来了很大的隐患,最简单的方法就是可以用暴力破解的方法来获得口令。可以使用命令/usr/sbin/pwconv或者/usr/sbin/grpconv来建立/etc/shadow或者/etc/gshadow文件,这样在/etc/passwd文件中不再包含加密的密码,而是放在/etc/shadow文件中,该文件只有超级用户root可读!   第三点是修改一些系统帐号的Shell变量,例如uucp,ftp和news等,还有一些仅仅需要FTP功能的帐号,一定不要给他们设置/bin/bash或者/bin/sh等Shell变量。可以在/etc/passwd中将它们的Shell变量置空,例如设为/bin/false或者/dev/null等,也可以使用usermod -s /dev/null username命令来更改username的Shell为/dev/null。这样使用这些帐号将无法Telnet远程登录到系统中来!   第四点是修改缺省的密码长度:在你安装linux时默认的密码长度是5个字节。但这并不够,要把它设为8。修改最短密码长度需要编辑login.defs文件(vi/etc/login.defs),把下面这行   PASS_MIN_LEN 5   改为   PASS_MIN_LEN 8   login.defs文件是login程序的配置文件。   4、自动注销帐号的登录   在unix系统中root账户是具有最高特权的。如果系统管理员在离开系统之前忘记注销root账户,那将会带来很大的安全隐患,应该让系统会自动注销。通过修改账户中“TMOUT”参数,可以实现此功能。TMOUT按秒计算。编辑你的profile文件(vi /etc/profile),在"HISTFILESIZE="后面加入下面这行:   TMOUT=300   300,表示300秒,也就是表示5分钟。这样,如果系统中登陆的用户在5分钟内都没有动作,那么系统会自动注销这个账户。你可以在个别用户的“.bashrc”文件中添加该值,以便系统对该用户实行特殊的自动注销时间。   改变这项设置后,必须先注销用户,再用该用户登陆才能激活这个功能。   5、取消普通用户的控制台访问权限   你应该取消普通用户的控制台访问权限,比如shutdown、reboot、halt等命令。   # rm -f /etc/security/console.apps/   是你要注销的程序名。   6、取消并反安装所有不用的服务   取消并反安装所有不用的服务,这样你的担心就会少很多。察看“/etc/inetd.conf”文件,通过注释取消所有你不需要的服务(在该服务项目之前加一个“#”)。然后用“sighup”命令升级“inetd.conf”文件。   第一步:   更改“/etc/inetd.conf”权限为600,只允许root来读写该文件。   # chmod 600 /etc/inetd.conf   第二步:   确定“/etc/inetd.conf”文件所有者为root。   第三步:   编辑 /etc/inetd.conf文件(vi /etc/inetd.conf),取消下列服务(你不需要的):ftp, telnet, shell, login, exec, talk, ntalk, imap, pop-2, pop-3, finger, auth等等。把不需要的服务关闭可以使系统的危险性降低很多。   第四步:   给inetd进程发送一个HUP信号:   # killall -HUP inetd   第五步:   用chattr命令把/ec/inetd.conf文件设为不可修改,这样就没人可以修改它:   # chattr +i /etc/inetd.conf    这样可以防止对inetd.conf的任何修改(以外或其他原因)。唯一可以取消这个属性的人只有root。如果要修改inetd.conf文件,首先要是取消不可修改性质:   # chattr -i /etc/inetd.conf   别忘了该后再把它的性质改为不可修改的。   7、TCP_WRAPPERS   使用TCP_WRAPPERS可以使你的系统安全面对外部入侵。最好的策略就是阻止所有的主机("/etc/hosts.deny"文件中加入"ALL: ALL@ALL, PARANOID" ),然后再在"/etc/hosts.allow" 文件中加入所有允许访问的主机列表。   第一步:   编辑hosts.deny文件(vi /etc/hosts.deny),加入下面这行   # Deny access to everyone.   ALL: ALL@ALL, PARANOID   这表明除非该地址包在允许访问的主机列表中,否则阻塞所有的服务和地址。   第二步:   编辑hosts.allow文件(vi /etc/hosts.allow),加入允许访问的主机列表,比如:   ftp: 202.54.15.99 foo.com   202.54.15.99和 foo.com是允许访问ftp服务的ip地址和主机名称。   第三步:   tcpdchk程序是tepd wrapper设置检查程序。它用来检查你的tcp wrapper设置,并报告发现的潜在的和真实的问题。设置完后,运行下面这个命令:   # tcpdchk   8、修改“/etc/host.conf”文件   “/etc/host.conf”说明了如何解析地址。编辑“/etc/host.conf”文件(vi /etc/host.conf),加入下面这行:   # Lookup names via DNS first then fall back to /etc/hosts.   order bind,hosts   # We have machines with multiple IP addresses.   multi on   # Check for IP address spoofing.   nospoof on   第一项设置首先通过DNS解析IP地址,然后通过hosts文件解析。第二项设置检测是否“/etc/hosts”文件中的主机是否拥有多个IP地址(比如有多个以太口网卡)。第三项设置说明要注意对本机未经许可的电子欺骗。   9、使“/etc/services”文件免疫   使“/etc/services”文件免疫,防止未经许可的删除或添加服务:   # chattr +i /etc/services   10、不允许从不同的控制台进行root登陆   "/etc/securetty"文件允许你定义root用户可以从那个TTY设备登陆。你可以编辑"/etc/securetty"文件,再不需要登陆的TTY设备前添加“#”标志,来禁止从该TTY设备进行root登陆。   在/etc/inittab文件中有如下一段话:   # Run gettys in standard runlevels   1:2345:respawn:/sbin/mingetty tty1   2:2345:respawn:/sbin/mingetty tty2   #3:2345:respawn:/sbin/mingetty tty3   #4:2345:respawn:/sbin/mingetty tty4   #5:2345:respawn:/sbin/mingetty tty5   #6:2345:respawn:/sbin/mingetty tty6   系统默认的可以使用6个控制台,即Alt+F1,Alt+F2...,这里在3,4,5,6前面加上“#”,注释该句话,这样现在只有两个控制台可供使用,最好保留两个。然后重新启动init进程,改动即可生效!   11、使用PAM(可插拔认证模块)禁止任何人通过su命令改变为root用户su(Substitute   User替代用户)命令允许你成为系统中其他已存在的用户。如果你不希望任何人通过su命令改变为root用户或对某些用户限制使用su命令,你可以在su配置文件(在"/etc/pam.d/"目录下)的开头添加下面两行: 编辑su文件(vi /etc/pam.d/su),在开头添加下面两行:   auth sufficient /lib/security/pam_rootok.so   auth required /lib/security/Pam_wheel.so group=wheel   这表明只有"wheel"组的成员可以使用su命令成为root用户。你可以把用户添加到“wheel”组,以使它可以使用su命令成为root用户。添加方法可以用这个命令:chmod -G10 username 。   12、Shell logging Bash   shell在“~/.bash_history”(“~/”表示用户目录)文件中保存了500条使用过的命令,这样可以使你输入使用过的长命令变得容易。每个在系统中拥有账号的用户在他的目录下都有一个“.bash_history”文件。bash shell应该保存少量的命令,并且在每次用户注销时都把这些历史命令删除。   第一步:   “/etc/profile”文件中的“HISTFILESIZE”和“HISTSIZE”行确定所有用户的“.bash_history”文件中可以保存的旧命令条数。强烈建议把把“/etc/profile”文件中的“HISTFILESIZE”和“HISTSIZE”行的值设为一个较小的数,比如30。编辑profile文件(vi/etc/profile),把下面这行改为:   HISTFILESIZE=30   HISTSIZE=30   这表示每个用户的“.bash_history”文件只可以保存30条旧命令。   第二步:   网管还应该在"/etc/skel/.bash_logout" 文件中添加下面这行"rm -f $HOME/.bash_history" 。这样,当用户每次注销时,“.bash_history”文件都会被删除。   编辑.bash_logout文件(vi /etc/skel/.bash_logout) ,添加下面这行:   rm -f $HOME/.bash_history   13、禁止Control-Alt-Delete键盘关闭命令   在"/etc/inittab" 文件中注释掉下面这行(使用#):   ca::ctrlaltdel:/sbin/shutdown -t3 -r now   改为:   #ca::ctrlaltdel:/sbin/shutdown -t3 -r now   为了使这项改动起作用,输入下面这个命令:   # /sbin/init q   14、给"/etc/rc.d/init.d" 下script文件设置权限   给执行或关闭启动时执行的程序的script文件设置权限。   # chmod -R 700 /etc/rc.d/init.d/*   这表示只有root才允许读、写、执行该目录下的script文件。   15、隐藏系统信息   在缺省情况下,当你登陆到linux系统,它会告诉你该linux发行版的名称、版本、内核版本、服务器的名称。对于黑客来说这些信息足够它入侵你的系统了。你应该只给它显示一个“login:”提示符。   首先编辑"/etc/rc.d/rc.local" 文件,在下面显示的这些行前加一个“#”,把输出信息的命令注释掉。   # This will overwrite /etc/issue at every boot. So, make any changes you   # want to make to /etc/issue here or you will lose them when you reboot.   #echo "" > /etc/issue   #echo "$R" >> /etc/issue #echo "Kernel $(uname -r) on $a $(uname -m)" >> /etc/issue   #   #cp -f /etc/issue /etc/issue.net   #echo >> /etc/issue   其次删除"/etc"目录下的“isue.net”和"issue"文件:   # rm -f /etc/issue   # rm -f /etc/issue.net   16、禁止不使用的SUID/SGID程序   如果一个程序被设置成了SUID   root,那么普通用户就可以以root身份来运行这个程序。网管应尽可能的少使用SUID/SGID 程序,禁止所有不必要的SUID/SGID程序。   查找root-owned程序中使用';s';位的程序:   # find / -type f ( -perm -04000 -o -perm -02000 ) -exec ls -lg {} \;   用下面命令禁止选中的带有';s';位的程序:   # chmod a-s [program]

返回列表 回复 发帖