Hui's profileHui'S BlogPhotosBlogListsMore ![]() | Help |
最好的阻止SSH暴力破解的方法(DenyHosts)我的服务器每天都会有无数的SSH失败尝试记录,有些无聊的人一直不停的扫描,这些人真够无聊的,没事吃饱了撑着,老找些软件在那里穷举扫描,所以大家第一要记的设置一个好的够复杂的密码。 怎么样防,如果要一条一条将这些IP阻止显然治标不治本,还好有DenyHosts软件来代替我们手搞定他。 DenyHosts是Python语言写的一个程序,它会分析sshd的日志文件,当发现重复的攻击时就会记录IP到/etc/hosts.deny文件,从而达到自动屏IP的功能。 DenyHosts官方网站为:http://denyhosts.sourceforge.net 以下是安装记录(以CentOS 5.1, DenyHosts 2.6 为例) 安装 #wget http://nchc.dl.sourceforge.net/. ... ython2.4.noarch.rpm #rpm -ivh DenyHosts-2.6-python2.4.noarch.rpm 给denyhosts做成系统本身的服务 # cd /etc/init.d # ln -s /usr/share/denyhosts/daemon-control denyhosts # chkconfig --add denyhosts 配置 默认是安装到/usr/share/denyhosts目录的。 # cd /usr/share/denyhosts/ # cp denyhosts.cfg-dist denyhosts.cfg # vi denyhosts.cfg 根据自己需要进行相应的配置(解释见下文件的配置文件) DenyHosts配置文件: SECURE_LOG = /var/log/secure #ssh 日志文件,它是根据这个文件来判断的。 HOSTS_DENY = /etc/hosts.deny #控制用户登陆的文件 PURGE_DENY = 5m #过多久后清除已经禁止的 BLOCK_SERVICE = sshd #禁止的服务名 DENY_THRESHOLD_INVALID = 1 #允许无效用户失败的次数 DENY_THRESHOLD_VALID = 3 #允许普通用户登陆失败的次数 DENY_THRESHOLD_ROOT = 5 #允许root登陆失败的次数 HOSTNAME_LOOKUP=NO #是否做域名反解 ADMIN_EMAIL = iakuf@163.com #管理员邮件地址,它会给管理员发邮件 DAEMON_LOG = /var/log/denyhosts #自己的日志文件 启动服务 让他和系统启动时一起启动 #/etc/ini.d/denyhosts start #chkconfig denyhosts on 可以用一台电脑远程连接过来测试.如果可以看到/etc/hosts.deny内是否有禁止的IP,有的话说明已经安装成功了。 注.我发现时间deny以后,删除ip的时间不是很准.解决的方法是改变DAEMON_PURGE = 这个的时间.我发现系统删除时间是以他为准. DAEMON_PURGE:预设清除:当DenyHosts在预设模式下执行,执行清除机械作用过期最久的HOSTS_DENY,这个会影响PURGE_DENY的间隔。 Linux必学的60个命令Linux必学的60个命令:网络操作命令
Linux必学的网络操作命令 (1) 作者:曹元其 发文时间:2004.11.18 因 为Linux系统是在Internet上起源和发展的,它与生俱来拥有强大的网络功能和丰富的网络应用软件,尤其是TCP/IP网络协议的实现尤为成熟。 Linux的网络命令比较多,其中一些命令像ping、 ftp、telnet、route、netstat等在其它操作系统上也能看到,但也有一些Unix/Linux系统独有的命令,如ifconfig、 finger、mail等。Linux网络操作命令的一个特点是,命令参数选项和功能很多,一个命令往往还可以实现其它命令的功能。 ifconfig
1.作用
ifconfig用于查看和更改网络接口的地址和参数,包括IP地址、网络掩码、广播地址,使用权限是超级用户。 2.格式
ifconfig -interface [options] address 3.主要参数
-interface:指定的网络接口名,如eth0和eth1。
up:激活指定的网络接口卡。 down:关闭指定的网络接口。 broadcast address:设置接口的广播地址。 pointopoint:启用点对点方式。 address:设置指定接口设备的IP地址。 netmask address:设置接口的子网掩码。 4.应用说明
ifconfig是用来设置和配置网卡的命令行工具。为了手工配置网络,这是一个必须掌握的命令。使用该命令的好处是无须重新启动机器。要赋给eth0接口IP地址207.164.186.2,并且马上激活它,使用下面命令: #fconfig eth0 210.34.6.89 netmask 255.255.255.128 broadcast 210.34.6.127 该 命令的作用是设置网卡eth0的IP地址、网络掩码和网络的本地广播地址。若运行不带任何参数的ifconfig命令,这个命令将显示机器所 有激活接口的信息。带有“-a”参数的命令则显示所有接口的信息,包括没有激活的接口。注意,用ifconfig命令配置的网络设备参数,机器重新启动以 后将会丢失。
如果要暂停某个网络接口的工作,可以使用down参数: #ifconfig eth0 down ip
1.作用
ip是iproute2软件包里面的一个强大的网络配置工具,它能够替代一些传统的网络管理工具,例如ifconfig、route等,使用权限为超级用户。几乎所有的Linux发行版本都支持该命令。 2.格式
ip [OPTIONS] OBJECT [COMMAND [ARGUMENTS]] 3.主要参数
OPTIONS是修改ip行为或改变其输出的选项。所有的选项都是以-字符开头,分为长、短两种形式。目前,ip支持如表1所示选项。 OBJECT是要管理者获取信息的对象。目前ip认识的对象见表2所示。
表1 ip支持的选项
-V,-Version 打印ip的版本并退出。
-s,-stats,-statistics 输出更为详尽的信息。如果这个选项出现两次或多次,则输出的信息将更为详尽。 -f,-family 这个选项后面接协议种类,包括inet、inet6或link,强调使用的协议种类。如果没有足够的信息告诉ip使用的协议种类,ip就会使用默认值inet或any。link比较特殊,它表示不涉及任何网络协议。 -4 是-family inet的简写。 -6 是-family inet6的简写。 -0 是-family link的简写。 -o,-oneline 对每行记录都使用单行输出,回行用字符代替。如果需要使用wc、grep等工具处理ip的输出,则会用到这个选项。 -r,-resolve 查询域名解析系统,用获得的主机名代替主机IP地址 COMMAND 设置针对指定对象执行的操作,它和对象的类型有关。一般情况下,ip支持对象的增加(add)、删除(delete)和展示(show或list)。有些 对象不支持这些操作,或者有其它的一些命令。对于所有的对象,用户可以使用help命令获得帮助。这个命令会列出这个对象支持的命令和参数的语法。如果没 有指定对象的操作命令,ip会使用默认的命令。一般情况下,默认命令是list,如果对象不能列出,就会执行help命令。
ARGUMENTS 是命令的一些参数,它们倚赖于对象和命令。ip支持两种类型的参数:flag和parameter。flag由一个关键词组成;parameter由一个 关键词加一个数值组成。为了方便,每个命令都有一个可以忽略的默认参数。例如,参数dev是ip link命令的默认参数,因此ip link ls eth0等于ip link ls dev eth0。我们将在后面的详细介绍每个命令的使用,命令的默认参数将使用default标出。
4.应用实例
添加IP地址192.168.2.2/24到eth0网卡上: #ip addr add 192.168.1.1/24 dev eth0 丢弃源地址属于192.168.2.0/24网络的所有数据报:
#ip rule add from 192.168.2.0/24 prio 32777 reject ping
1.作用
ping检测主机网络接口状态,使用权限是所有用户。 2.格式
ping [-dfnqrRv][-c][-i][-I][-l][-p][-s][-t] IP地址 3.主要参数
-d:使用Socket的SO_DEBUG功能。
-c:设置完成要求回应的次数。 -f:极限检测。 -i:指定收发信息的间隔秒数。 -I:网络界面使用指定的网络界面送出数据包。 -l:前置载入,设置在送出要求信息之前,先行发出的数据包。 -n:只输出数值。 -p:设置填满数据包的范本样式。 -q:不显示指令执行过程,开头和结尾的相关信息除外。 -r:忽略普通的Routing Table,直接将数据包送到远端主机上。 -R:记录路由过程。 -s:设置数据包的大小。 -t:设置存活数值TTL的大小。 -v:详细显示指令的执行过程。 ping 命令是使用最多的网络指令,通常我们使用它检测网络是否连通,它使用ICMP协议。但是有时会有这样的情况,我们可以浏览器查看一个网页,但是却无法 ping通,这是因为一些网站处于安全考虑安装了防火墙。另外,也可以在自己计算机上试一试,通过下面的方法使系统对ping没有反应:
# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all netstat
1.作用
检查整个Linux网络状态。 2.格式
netstat [-acCeFghilMnNoprstuvVwx][-A][--ip] 3.主要参数
-a--all:显示所有连线中的Socket。
-A:列出该网络类型连线中的IP相关地址和网络类型。 -c--continuous:持续列出网络状态。 -C--cache:显示路由器配置的快取信息。 -e--extend:显示网络其它相关信息。 -F--fib:显示FIB。 -g--groups:显示多重广播功能群组组员名单。 -h--help:在线帮助。 -i--interfaces:显示网络界面信息表单。 -l--listening:显示监控中的服务器的Socket。 -M--masquerade:显示伪装的网络连线。 -n--numeric:直接使用IP地址,而不通过域名服务器。 -N--netlink--symbolic:显示网络硬件外围设备的符号连接名称。 -o--timers:显示计时器。 -p--programs:显示正在使用Socket的程序识别码和程序名称。 -r--route:显示Routing Table。 -s--statistice:显示网络工作信息统计表。 -t--tcp:显示TCP传输协议的连线状况。 -u--udp:显示UDP传输协议的连线状况。 -v--verbose:显示指令执行过程。 -V--version:显示版本信息。 -w--raw:显示RAW传输协议的连线状况。 -x--unix:和指定“-A unix”参数相同。 --ip--inet:和指定“-A inet”参数相同。 4.应用实例
netstat 主要用于Linux察看自身的网络状况,如开启的端口、在为哪些用户服务,以及服务的状态等。此外,它还显示系统路由表、网络接口状态等。可以说,它是一 个综合性的网络状态的察看工具。在默认情况下,netstat只显示已建立连接的端口。如果要显示处于监听状态的所有端口,使用-a参数即可: #netstat -a
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 *:32768 *:* LISTEN tcp 0 0 *:32769 *:* LISTEN tcp 0 0 *:nfs *:* LISTEN tcp 0 0 *:32770 *:* LISTEN tcp 0 0 *:868 *:* LISTEN tcp 0 0 *:617 *:* LISTEN tcp 0 0 *:mysql *:* LISTEN tcp 0 0 *:netbios-ssn *:* LISTEN tcp 0 0 *:sunrpc *:* LISTEN tcp 0 0 *:10000 *:* LISTEN tcp 0 0 *:http *:* LISTEN ...... 上面显示出,这台主机同时提供HTTP、FTP、NFS、MySQL等服务。
telnet
1.作用
telnet表示开启终端机阶段作业,并登入远端主机。telnet是一个Linux命令,同时也是一个协议(远程登陆协议)。 2.格式
telnet [-8acdEfFKLrx][-b][-e][-k][-l][-n][-S][-X][主机名称IP地址<通信端口>] 3.主要参数
-8:允许使用8位字符资料,包括输入与输出。
-a:尝试自动登入远端系统。 -b:使用别名指定远端主机名称。 -c:不读取用户专属目录里的.telnetrc文件。 -d:启动排错模式。 -e:设置脱离字符。 -E:滤除脱离字符。 -f:此参数的效果和指定“-F”参数相同。 -F:使用Kerberos V5认证时,加上此参数可把本地主机的认证数据上传到远端主机。 -k:使用Kerberos认证时,加上此参数让远端主机采用指定的领域名,而非该主机的域名。 -K:不自动登入远端主机。 -l:指定要登入远端主机的用户名称。 -L:允许输出8位字符资料。 -n:指定文件记录相关信息。 -r:使用类似rlogin指令的用户界面。 -S:服务类型,设置telnet连线所需的IP TOS信息。 -x:假设主机有支持数据加密的功能,就使用它。 -X:关闭指定的认证形态。 4.应用说明
用 户使用telnet命令可以进行远程登录,并在远程计算机之间进行通信。用户通过网络在远程计算机上登录,就像登录到本 地机上执行命令一样。为了通过 telnet登录到远程计算机上,必须知道远程机上的合法用户名和口令。虽然有些系统确实为远程用户提供登录功能,但出于对安全的考虑,要限制来宾的操作 权限,因此,这种情况下能使用的功能是很少的。 telnet只为普通终端提供终端仿真,而不支持X-Window等图形环境。当 允许远程用户登录时,系统通常把这些用户放在一个受限制的 Shell中,以防系统被怀有恶意的或不小心的用户破坏。用户还可以使用telnet从远程站点登录到自己的计算机上,检查电子邮件、编辑文件和运行程 序,就像在本地登录一样。
ftp
1.作用
ftp命令进行远程文件传输。FTP是ARPANet的标准文件传输协议,该网络就是现今Internet的前身,所以ftp既是协议又是一个命令。 2.格式
ftp [-dignv][主机名称IP地址] 3.主要参数
-d:详细显示指令执行过程,便于排错分析程序执行的情形。
-i:关闭互动模式,不询问任何问题。 -g:关闭本地主机文件名称支持特殊字符的扩充特性。 -n:不使用自动登陆。 -v:显示指令执行过程。 4.应用说明
ftp 命令是标准的文件传输协议的用户接口,是在TCP/IP网络计算机之间传输文件简单有效的方法,它允许用户传输ASCⅡ文件和二进制文件。为了使用ftp 来传输文件,用户必须知道远程计算机上的合法用户名和口令。这个用户名/口令的组合用来确认ftp会话,并用来确定用户对要传输的文件进行什么样的访问。 另外,用户需要知道对其进行ftp会话的计算机名字的IP地址。 用户可以通过使用ftp客户程序,连接到另一台计算机上;可以在目录中上下移动、列出目录内容;可以把文件从远程计算机机拷贝到本地机上;还可以把文件从本地机传输到远程系统中。ftp内部命令有72个,下面列出主要几个内部命令:
ls:列出远程机的当前目录。
cd:在远程机上改变工作目录。 lcd:在本地机上改变工作目录。 close:终止当前的ftp会话。 hash:每次传输完数据缓冲区中的数据后就显示一个#号。 get(mget):从远程机传送指定文件到本地机。 put(mput):从本地机传送指定文件到远程机。 quit:断开与远程机的连接,并退出ftp。 route
1.作用
route表示手工产生、修改和查看路由表。 2.格式
#route [-add][-net|-host] targetaddress [-netmask Nm][dev]If] #route [-delete][-net|-host] targetaddress [gw Gw] [-netmask Nm] [dev]If] 3.主要参数
-add:增加路由。
-delete:删除路由。 -net:路由到达的是一个网络,而不是一台主机。 -host:路由到达的是一台主机。 -netmask Nm:指定路由的子网掩码。 gw:指定路由的网关。 [dev]If:强迫路由链指定接口。 4.应用实例
route命令是用来查看和设置Linux系统的路由信息,以实现与其它网络的通信。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。
在Linux系统中,设置路由通常是为了解决以下问题:该Linux系统在一个局域网中,局域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的IP地址设置为Linux机器的默认路由。使用下面命令可以增加一个默认路由:
route add 0.0.0.0 192.168.1.1 rlogin
1.作用
rlogin用来进行远程注册。 2.格式
rlogin [ -8EKLdx ] [ -e char ] [-k realm ] [ - l username ] host 3.主要参数
-8:此选项始终允许8位输入数据通道。该选项允许发送格式化的ANSI字符和其它的特殊代码。如果不用这个选项,除非远端的不是终止和启动字符,否则就去掉奇偶校验位。 -E:停止把任何字符当作转义字符。当和-8选项一起使用时,它提供一个完全的透明连接。 -K:关闭所有的Kerberos确认。只有与使用Kerberos 确认协议的主机连接时才使用这个选项。 -L:允许rlogin会话在litout模式中运行。要了解更多信息,请查阅tty联机帮助。 -d:打开与远程主机进行通信的TCP sockets的socket调试。要了解更多信息,请查阅setsockopt的联机帮助。 -e:为rlogin会话设置转义字符,默认的转义字符是“~”。 -k:请求rlogin获得在指定区域内远程主机的Kerberos许可,而不是获得由krb_realmofhost(3)确定的远程主机区域内的远程主机的Kerberos许可。 -x:为所有通过rlogin会话传送的数据打开DES加密。这会影响响应时间和CPU利用率,但是可以提高安全性。 4.使用说明
如果在网络中的不同系统上都有账号,或者可以访问别人在另一个系统上的账号,那么要访问别的系统中的账号,首先就要注册到系统中,接着通过网络远程注册到账号所在的系统中。rlogin可以远程注册到别的系统中,它的参数应是一个系统名。 rcp 1.作用
rcp代表远程文件拷贝,用于计算机之间文件拷贝,使用权限是所有用户。 2.格式
rcp [-px] [-k realm] file1 file2 rcp [-px] [-r] [-k realm] file 3.主要参数
-r:递归地把源目录中的所有内容拷贝到目的目录中。要使用这个选项,目的必须是一个目录。 -p:试图保留源文件的修改时间和模式,忽略umask。 -k:请求rcp获得在指定区域内的远程主机的Kerberos许可,而不是获得由krb_relmofhost(3)确定的远程主机区域内的远程主机的Kerberos许可。 -x:为传送的所有数据打开DES加密。 finger
1.作用
finger用来查询一台主机上的登录账号的信息,通常会显示用户名、主目录、停滞时间、登录时间、登录Shell等信息,使用权限为所有用户。 2.格式
finger [选项] [使用者] [用户@主机] 3.主要参数
-s:显示用户注册名、实际姓名、终端名称、写状态、停滞时间、登录时间等信息。 -l:除了用-s选项显示的信息外,还显示用户主目录、登录Shell、邮件状态等信息,以及用户主目录下的.plan、.project和.forward文件的内容。 -p:除了不显示.plan文件和.project文件以外,与-l选项相同。 4.应用实例
在计算机上使用finger: [root@localhost root]# Finger
Login Name Tty Idle Login Time Office Office Phone root root tty1 2 Dec 15 11 root root pts/0 1 Dec 15 11 root root *pts/1 Dec 15 11 5.应用说明
如果要查询远程机上的用户信息,需要在用户名后面接“@主机名”,采用[用户名@主机名]的格式,不过要查询的网络主机需要运行finger守护进程的支持。 mail
1.作用
mail作用是发送电子邮件,使用权限是所有用户。此外,mail还是一个电子邮件程序。 2.格式
mail [-s subject] [-c address] [-b address]
mail -f [mailbox]mail [-u user] 3.主要参数
-b address:表示输出信息的匿名收信人地址清单。
-c address:表示输出信息的抄送()收信人地址清单。 -f [mailbox]:从收件箱者指定邮箱读取邮件。 -s subject:指定输出信息的主体行。 [-u user]:端口指定优化的收件箱读取邮件。 nslookup
1.作用
nslookup命令的功能是查询一台机器的IP地址和其对应的域名。使用权限所有用户。它通常需要一台域名服务器来提供域名服务。如果用户已经设置好域名服务器,就可以用这个命令查看不同主机的IP地址对应的域名。 2.格式
nslookup [IP地址/域名] 3.应用实例
(1)在本地计算机上使用nslookup命令 $ nslookup
Default Server: name.cao.com.cn Address: 192.168.1.9 > 在符号“>”后面输入要查询的IP地址域名,并回车即可。如果要退出该命令,输入“exit”,并回车即可。
(2)使用nslookup命令测试named
输入下面命令: nslookup 然后就进入交换式nslookup环境。如果named正常启动,则nslookup会显示当前DNS服务器的地址和域名,否则表示named没能正常启动。
下面简单介绍一些基本的DNS诊断。
◆ 检查正向DNS解析,在nslookup提示符下输入带域名的主机名,如hp712.my.com,nslookup应能显示该主机名对应的IP地址。如 果只输入hp712,nslookup会根据/etc/resolv.conf的定义,自动添加my.com域名,并回答对应的IP地址。 ◆检查反向DNS解析,在nslookup提示符下输入某个IP地址,如192.22.33.20,nslookup应能回答该IP地址所对应的主机名。 ◆检查MX邮件地址记录在nslookup提示符下输入: set q=mx 然后输入某个域名,输入my.com和mail.my.com,nslookup应能够回答对应的邮件服务器地址,即support.my.com和support2.my.com。
动手练习
1.危险的网络命令
互 联网的发展使安全成为一个不能忽视的问题,finger、ftp、rcp和telnet在本质上都是不安全的,因 为它们在网络上用明文传送口令和数据,嗅探器可以非常容易地截获这些口令和数据。而且,这些服务程序的安全验证方式也是有弱点的,很容易受到“中间服务器 ”方式的攻击。这里笔者把一些不安全的命令根据危险等级列出,见表3所示。 现在ftp、telnet可以被SSH命令代替绑定在 端口22上,其连接采用协商方式,使用RSA加密。身份鉴别完成之后,后面的所有流量都使 用IDEA 进行加密。SSH(Secure Shell)程序可以通过网络登录到远程主机,并执行命令。rcp、rlogin等远程调用命令也逐渐被VNC软件代 替。
2.在一张网卡上绑定多个IP地址
在Linux下,可以使用ifconfig方便地绑定多个IP地址到一张网卡。例如,eth0接口的原有IP地址为192.168.0 .254,可以执行下面命令: ifconfig eth0:0 192.168.0.253 netmask 255.255.255.0
ifconfig eth0:1 192.168.0.252 netmask 255.255.255.0 ...... 3.修改网卡MAC地址
首先必须关闭网卡设备,命令如下: /sbin/ifconfig eth0 down 修改MAC地址,命令如下:
/sbin/ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE 重新启用网卡:
/sbin/ifconfig eht0 up 这样网卡的MAC地址就更改完成了。每张网卡的MAC地址是惟一,但不是不能修改的,只要保证在网络中的MAC地址的惟一性就可以了。
4.初步部署IPv6
IPv4 技术在网络发展中起到了巨大的作用,不过随着时间的流逝它无论在网络地址的提供、服务质量、安全性等方面都越来越力不从心,IPv6呼之欲出。Linux 是所有操作系统中最先支持IPv6的,一般Linux基于2.4内核的Linux发行版本都可以直接使用IPv6,不过主要发行版本没有加载IPv6模 块,可以使用命令手工加载,需要超级用户的权限。 (1)加载IPv6模块
使用命令检测,其中inet6 addr: fe80::5054:abff:fe34:5b09/64,就是eth0网卡的IPv6地址。 # modprobe IPv6
#ifconfig eth0 Link encap:Ethernet HWaddr 52:54:AB:34:5B:09 inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::5054:abff:fe34:5b09/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:21 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:0 (0.0 b) TX bytes:1360 (1.3 Kb) Interrupt:5 Base address:0xec00 (2)使用ping命令检测网卡的IPv6地址是否有效
#ping6 -I eth0 -c 2 fe80::200:e8ff:fea0:2586 和IPv4不一样,使用ping6命令时必须指定一个网卡界面,否则系统不知道将数据包发送到哪个网络设备。I表示Interface、eth0是第一个网卡,-c表示回路,2表示ping6操作两次。结果见图1所示。
图1 IPv6网络下的ping6命令
(3)使用ip命令在IPv6下为eth0增加一个IP地址
#ip -6 addr add 3ffe:ffff:0:f101::1/64 dev eth0 使用ifconfig命令,查看网卡是否出现第二个IPv6地址。
Linux网络的主要优点是能够实现资源和信息的共享,并且用户可以远程访问信息。Linux提供了一组强有力的网络命令来为用户服务,这些工具能够帮助用户进行网络设定、检查网络状况、登录到远程计算机上、传输文件和执行远程命令等。
上面介绍了Linux中比较重要的网络命令,其实Linux还有许多命令需要学习。Linux网络操作命令的一个特点就是命令参数选项很多,并不要求全部记住,关键在于理解命令的主要用途和学会使用帮助信息。
linux基本命令手册NO 分类 PS1 命令名 用法及参数 功能注解 对应章节 用Linux命令查看硬件信息一 查看流量: iptraf 二 查看硬件信息的命令 dmesg 若网卡出现 lease broken 服务器网卡不稳定,请更换游戏服务器网卡插槽 三 测试内存: memtest 1024K(内存) 四 查看cpu pico /proc/cpuinfo 五 查看IRQ使用情况 /proc/interrupts 六 查看内存 free --------------------------------------------------------------- 内存: cat /proc/meminfo cpu: cat /proc/cpuinfo 硬盘: df -h -T(no device的设备看不到) fdisk -l 可以在redhat9.0中看; redhat企业版不行. solaris: 网卡速度: dmesg |grep link CPU频率: psrinfo -v 或者mpstat cpu\内存等:prtdiag -v (大部分信息全部列出) 需要先进入/usr/platform/sun4u/sbin 硬盘: iostat -E linux下还有几个命令可以看很多硬件设备的信息. lspci -v dmidecode dmesg 深入Linux PAM 体系结构一、什么是Linux-PAM 为安全起见,计算机系统只有经过授权的合法用户才能访问,在这里如何正确鉴别用户的真实身份是一个关键的问题。所谓用户鉴别,就是用户向系统以一种安全的 方式提交自己的身份证明,然后由系统确认用户的身份是否属实的过程。换句话说,用户鉴别是系统的门户,每个用户进入到系统中都必须经过鉴别这一道关。 最初,Linux系统的用户鉴别过程就像各种Unix系统的一样:系统管理员为用户建立一个帐号并为其指定一个口令,用户用此指定的口令登录后重新设置自 己的口令,这样用户就具有了一个只有他自己知道的秘密口令。一般情况下,用户的口令经过加密处理后存放于 /etc/passwd 文件中。用户登录时,登录服务程序提示用户输入其用户名和口令,然后将口令加密并与 /etc/passwd 文件中对应帐号的加密口令进行比较,如果口令相匹配,说明用户的身份属实并允许此用户访问系统。这种思想基于只有用户自己知道他的口令,所以输入的口令是 正确的话,那么系统就认定他是所声称的那个人。 后来,还采用了许多其他的鉴别用户的方法,如用于网络环境的 Kerberos 以及基于智能卡的鉴别系统等。但是这些鉴别方案有一个通病:实现鉴别功能的代码通常作为应用程序的一部分而一起编译,这样问题就来了------如果发现 所用算法存在某些缺陷或想采用另一种鉴别方法时,用户不得不重写(修改或替换)然后重新编译原程序。很明显,我们原先的鉴别方案缺乏灵活性,这里的牵一发 而动全身的情形很是让人恼火。 鉴于以上原因,人们开始寻找一种更佳的替代方案:一方面,将鉴别功能从应用中独立出来,单独进行模块化设计,实现和维护;另一方面,为这些鉴别模块建立标 准 API,以便各应用程序能方便的使用它们提供的各种功能;同时,鉴别机制对其上层用户(包括应用程序和最终用户)是透明的。直到 1995 年,SUN 的研究人员提出了一种满足以上需求的方案--插件式鉴别模块(PAM)机制并首次在其操作系统 Solaris 2.3 上部分实现。插件式鉴别模块(PAM)机制采用模块化设计和插件功能,使得我们可以轻易地在应用程序中插入新的鉴别模块或替换原先的组件,而不必对应用程 序做任何修改,从而使软件的定制、维持和升级更加轻松--因为鉴别机制与应用程序之间相对独立。应用程序可以通过 PAM API 方便的使用 PAM 提供的各种鉴别功能,而不必了解太多的底层细节。此外,PAM的易用性也较强,主要表现在它对上层屏蔽了鉴别的具体细节,所以用户不必被迫学习各种各样的 鉴别方式,也不必记住多个口令;又由于它实现了多鉴别机制的集成问题,所以单个程序可以轻易集成多种鉴别机制如 Kerberos 鉴别机制和 Diffie - Hellman 鉴别机制等,但用户仍可以用同一个口令登录而感觉不到采取了各种不同鉴别方法。 在广大开发人员的努力下,各版本的 UNIX 系统陆续提供对 PAM 的支持。其中,Linux-PAM 是专门为 Linux 机器实现的,包括 Caldera 1.3、2.2、Debian 2.2、Turbo Linux 3.6、Red Hat 5.0 以及 SuSE 6.2 及它们的后续版本都提供对 PAM 的支持。FreeBSD 从 3.1 版开始支持 PAM。需要注意的是,除了具体实现不同外,各种版本 Unix 系统上的 PAM 的框架是相同的,所以我们在这里介绍的 Linux-PAM 框架知识具有普遍性。因此在下文介绍其框架的过程中可以看到,我们并没有刻意区分 PAM 与 Linux-PAM 这两个术语。 二、PAM 的分层体系结构 PAM 为了实现其插件功能和易用性,它采取了分层设计思想:让各鉴别模块从应用程序中独立出来,然后通过PAM API作为两者联系的纽带,这样应用程序就可以根据需要灵活地在其中"插入"所需鉴别功能模块,从而真正实现了"鉴别功能,随需应变"。实际上,这一思路 非常符合软件设计中的"高内聚,低耦合"这一重要思想,PAM 的体系如下简图所示: 图1 PAM体系结构 从上图可以看出,PAM API 起着承上启下的作用,它是应用程序和鉴别模块之间联系的纽带:当应用程序调用 PAM API 时,应用接口层按照配置文 件 pam.conf 的规定,加载相应的鉴别模块。然后把请求(即从应用程序那里得到的参数)传递给底层的鉴别模块,这时鉴别模块就可以根据要求执行具体的鉴别操作了。当鉴别 模块执行完相应操作后,将结果返回给应用接口层,然后由接口层根据配置的具体情况将来自鉴别模块的应答返回给应用程序。 上面描述了 PAM 的各个组成部分,以及它们作为整体的运作机理。下面将对 PAM 的关键的低二层分别加以介绍。 三、第一层:模块层 模块层处于整个结构的最底层,它向上为接口层提供用户鉴别等服务,也就是说所有具体的鉴别工作都是由该层的模块来完成的。对于应用程序,有些不但需要验证 用户的口令,还可能要求验证用户的帐户是否已经过期。此外,有些应用程序也许还会要求记录当前会话的有关信息或改变口令等,所以 PAM 在模块层除了提供鉴别模块外,同时提供了支持帐户管理、会话管理以及口令管理功能的模块。当然,这四种模块并不是所有应用程序所必需的,而是根据需要灵活 取舍,比如虽然 login 可能要求访问所有四种模块,但是 su 可能仅仅需要使用鉴别组件即可。至于如何取舍则涉及到接口层的 PAM API和配置文件,这部分内容将在下文中加以介绍。 四、第二层:应用接口层 应用接口层位于 PAM 结构的中间部分,它向上为应用程序屏蔽了用户鉴别等过程的具体细节,向下调用模块层中的具体模块所提供的特定服务。由图1可以看出,它主要由 PAM API 和配置文件两部分组成,下面将逐一介绍。 PAM API 可以分为两类,一类是用于调用下层特定模块的接口,这类接口与底层的模块相对应:
五、配置文件 我们注意到,配置文件也放在了在应用接口层中,它与 PAM API 配合使用,从而达到了在应用中灵活插入所需鉴别模块的目的。它的作用主要是为应用选定具体的鉴别模块,模块间的组合以及规定模块的行为。下面是一个示例配置文件: 图2.示例配置文件 我们可以看到,配置文件有许多登记项(每行对应一个登记项)组成,每一行又分为五列(每列对应一栏),详细解释如下: 第一栏,service表示使用PAM的应用程序,比如login、passwd、rlogin等。这一栏中的OTHER表示所有没在该文件中显式列出的 应用。也就是说,如果所有程序具有相同的需求,整个配置文件只需要一行即可,并且该行的第一栏为OTHER。本例中,因为所有应用程序使用相同的会话模 块,所以实际上可以用单行,即
来代替文件中的这些行:
第二栏,module_type指明程序所用PAM底层模块的类型:auth表示鉴别类模块;account表示帐户类模块;session表示会话类模 块;password表示口令类模块。注意,每行只能指定一种类型模块,如果程序需要多种模块的话,可在多行中分别规定。 第三栏,control_flag规定如何处理模块的成功和失败情况。单个应用程序可以调用多种底层模块,这通常称为"堆叠",对应于某程序的按照配置文 件中出现顺序执行的所有模块成为"堆",堆中的各模块的地位与出错时的处理由control_flag栏的取值决定,它的五种可能的取值分别为 required、Requisite、sufficient或_optional,现介绍如下: required--它表示该模块的成功是用户通过鉴别的必要条件,换句话说,只有当对应于应用程序的所有带required标记的模块全部成功后,该程 序才能通过鉴别。同时,如果任何带required标记的模块出现了错误,PAM并不立刻将错误消息返回给应用程序,而是在所有模块都调用完毕后才将错误 消息返回调用它的程序。 Requisite--它与required相仿,只有带此标记的模块返回成功后,用户才能通过鉴别,不同之处在于其一旦失败就不再执行堆中后面的其它模块,并且鉴别过程到此结束。 optional--它表示即便该模块失败,用户仍能通过鉴别。在PAM体系中,带有该标记的模块失败后将继续处理下一模块。 sufficient--它表示该模块取得成功是用户通过鉴别的充分条件,也就是说只要标记为sufficient的模块一旦成功,那么PAM便立即向应 用程序返回成功而不必尝试任何其他模块。当标记为sufficient的模块失败时,sufficient模块当做optional对待。 第四栏,module_path指出PAM模块的位置。 第五栏,options用于向特定模块传递相关的选项,然后由模块分析解释这些任选项。比如使用此栏打开模块调试,或向某模块传递诸如超时值之类的参数等。另外,它还用于支持下文所述的口令映射技术。 如果任一栏出现错误,或某模块没有找到,那么所在行被忽略并将其作为严重错误进行记录。 本例中,login程序使用UNIX口令模块进行鉴别,而ftp程序却使用S/Key模块进行鉴别。如我们想改变ftp程序的鉴别方法,比如也用UNIX口令模块进行鉴别,那么我们不必改动源程序,只需将配置文件中的
改为
这样,当用户使用ftp时,将用传统的UNIX口令鉴别方式来验证其身份。由此可见,在PAM体制下为应用程序改变鉴别机制是一件轻松的事情。另 外,PAM体制的堆叠功能还使得应用程序能够支持多种鉴别机制,如下例中的login程序在配置文件中先后出现了三项与鉴别有关的登记项: 图3.示例配置文件 当login程序执行时先用pam_unix.so模块即传统的UNIX口令方式鉴别用户,然后再调用pam_kerb.so模块即Kerberos对用 户进行鉴别,最后用pam_rsa.so模块即RSA方式鉴别用户。在按上述顺序鉴别用户的过程中,如果pam_unix.so模块鉴别失败,它将继续调 用下面的模块进行鉴别而非立刻向login程序返回错误消息;pam_kerb.so模块也按同样方式处理,直到顺序处理完最后一个pam_rsa.so 模块后,PAM才将前面出现的错误信息返回给login程序。对于该配置,即使pam_rsa.so模块顺利通过,只要pam_unix.so模块和 pam_kerb.so模块中有一个出现错误,用户就不能通过鉴别;相反,即使pam_rsa.so模块失败,只要pam_unix.so模块和 pam_kerb.so模块都通过了,用户也能通过鉴别。 六、口令映射 在同一个机器上使用多个鉴别机制,尤其是一个应用程序集成多种鉴别机制可能导致用户需要记忆多个口令,这会让用户觉得很不舒服。虽然可以让所有机制使用相 同的口令来获取易用性,但是这将削弱系统的安全性--如果其中任何一个机制的口令泄露了,则所有机制都会受到牵累。此外,不同的鉴别机制在口令长度、容许 的字符、更新间隔、有效期等方面可能具有他们特有的要求,这些要求也是为多鉴别机制使用同一个口令必须考虑的一个问题。 PAM为我们提供了这样一种解决方案,它不排除为所有鉴别机制共用一个口令,同时允许通过口令映射技术让每个机制使用不同的口令。该方案用用户的"主口 令"加密其他的"副口令",并且将这些经过加密的副口令存放在一个用户能访问的地方。主口令一旦经过验证,鉴别模块就能用它解密那些加密的副口令从而获得 相应口令,然后将所需口令传递给鉴别模块。这称为"口令映射"。如果口令映射出现错误,或如果映射不存在,那么各鉴别模块应该提示用户输入口令。为支持口 令映射,主口令应保存在PAM第二层并且在需要时由其提供给堆叠的各个鉴别模块。同时,口令要在pam_authenticate函数返回之前清除。为了 保障口令映射的安全,主口令必须足够强壮,可以考虑使其的长度更长、组成口令字符的类型多样化并使用混合类型的字符组成口令等有效措施。 口令如何加密及其存储完全取决于具体的实现:它能够将加密的副口令(也称作"映射口令")存储在可靠或不可靠的地方,诸如智能卡、本地文件或目录服务。当然,如果加密的口令保存在一个不可靠的允许公共访问的地方,会留下受到字典攻击的隐患。 为实现口令映射,所有鉴别模块应支持以下四个映射选项∶
现以下面的配置文件为例讲解口令映射: 图4. 示例配置文件 在这里login程序集成了三种鉴别方式:传统UNIX口令鉴别、Kerberos和RSA鉴别,但通常情况下用户仅输入一次口令便能通过鉴别了。当程序 调用pam_unix.so模块时,PAM提示用户输入他们的UNIX口令,然后由pam_kerb.so模块对用户输入的UNIX口令进行鉴别。继而调 用pam_kerb.so模块,由于该模块的选项为use_mapped_pass,它将利用口令映射机制进行认证,也就是说,如果UNIX口令鉴别通过 的话,就将其作为pam_kerb.so模块的主口令来解密其对应的映射口令从而进行Kerberos鉴别。如果pam_unix.so模块所需口令没能 通过验证,则无法进行口令映射,那么PAM将直接调用下一鉴别模块而不提示用户输入其Kerberos口令。最后一个模块的选项为 use_first_pass,所以pam_rsa.so模块将使用前边输入的主口令来鉴别用户,如果口令错误也不提示用户输入RSA口令。所以,只要第 一次输入的口令是正确的,并且映射口令存在,则一个口令便足以通过鉴别。 七、结束语 Linux-PAM是一种使用灵活功能强大的用户鉴别机制,本文对它的组成结构以及各部分之间的关系进行了相应的分析,希望对读者理解PAM的机制有所帮助。 有关Linux 50个趣味名人名言转载本站点内容时请注明来自www.linuxeden.com-Linux伊甸园
50. I develop for Linux for a living, I used to develop for DOS.
47.By golly, I'm beginning to think Linux really *is* the best thing since 46. Linux poses a real challenge for those with a taste for late-night 45. Linux is obsolete. 44. Your job is being a professor and researcher: That's one hell of a good excuse for some of the brain-damages of minix. 43. I still maintain the point that designing a monolithic kernel in 1991 is a fundamental error. Be thankful you are not my student. You would not get a high grade for such a design :-)
42. We all know Linux is great... it does infinite loops in 5 seconds. 41. People disagree with me. I just ignore them. 40. Some people have told me they don't think a fat penguin really embodies the grace of Linux, which just tells me they have never seen an angry penguin charging at them in excess of 100mph. They'd be a lot more careful about what they say if they had. 39. Other than the fact Linux has a cool name, could someone explain why should use Linux over BSD? 38. “How should I know if it works? That's what beta testers are for. I only coded it." (Attributed to Linus Torvalds, somewhere in a posting) 37. "Problem solving under linux has never been the circus that it is under AIX." (By Pete Ehlke in comp.unix.aix) 36. "Besides, I think Slackware sounds better than 'Microsoft,' don't you?" (By Patrick Volkerding) 35. "And the next time you consider complaining that running Lucid Emacs 19.05 via NFS from a remote Linux machine in Paraguay doesn't seem to get the background colors right, you'll know who to thank." (By Matt Welsh) 34. "...Deep Hack Mode--that mysterious and frightening state of consciousness where Mortal Users fear to tread." (By Matt Welsh) 33. Sigh. I like to think it's just the Linux people who want to be on the "leading edge" so bad they walk right off the precipice. (Craig E. Groeschel) 32. Microsoft Corp., concerned by the growing popularity of the free 32-bit operating system for Intel systems, Linux, has employed a number of top programmers from the underground world of virus development. Bill Gates stated yesterday: "World domination, fast -- it's either us or Linus". Mr. Torvalds was unavailable for comment ... (rjm@swift.eng.ox.ac.uk (Robert Manners), in comp.os.linux.setup) 31. Who wants to remember that escape-x-alt-control-left shift-b puts you into super-edit-debug-compile mode? (Discussion in comp.os.linux.misc on the intuitiveness of commands, especially Emacs.) 30. It's a bird.. It's a plane.. No, it's KernelMan, faster than a speeding bullet, to your rescue. Doing new kernel versions in under 5 seconds flat.. (Linus, in the announcement for 1.3.27) 29. Those who don't understand Linux are doomed to reinvent it, poorly. (Unidentified source.) 28. "How do you power off this machine?" (Linus, when upgrading linux.cs.helsinki.fi, and after using the machine for several months.) 27. I've discovered that using VMS is a lot like driving a nail with your head: sure, you eventually get something practical done, but it usually results in a headache and some blood loss. 26. "... being a Linux user is sort of like living in a house inhabited by a large family of carpenters and architects. Every morning when you wake up, the house is a little different. Maybe there is a new turret, or some walls have moved. Or perhaps someone has temporarily removed the floor under your bed." - Unix for Dummies, 2nd Edition (Found in the .sig of Rob Riggs) 25. If Bill Gates is the Devil then Linus Torvalds must be the Messiah. (Unknown source) 24. LILO, you've got me on my knees! 23. Anyone can build a fast processor. The trick is to build a fast system. (Seymour Cray) 22. We can use symlinks of course... syslogd would be a symlink to syslogp and ftpd and ircd would be linked to ftpp and ircp... and of course the point-to-point protocal paenguin. (Kevin M. Bealer, commenting on the penguin Linux logo.) 21. A multithreaded file system is only a performance hack. (Andrew Tanenbaum to Linus Torvalds) 20. I did this 'cause Linux gives me a woody. It doesn't generate revenue. (Dave '-ddt->` Taylor, announcing DOOM for Linux) 19. This message was brought to you by Linux, the free unix. Windows without the X is like making love without a partner. Sex, Drugs & Linux Rules win-nt from the people who invented edlin apples have meant trouble since eden Linux, the way to get rid of boot viruses. (By mwikholm@at8.abo.fi, MaDsen Wikholm) 18. Be warned that typing killall name may not have the desired effect on non-Linux systems, especially when done by a privileged user. 17. Only wimps use tape backup: _real_ men just upload their important stuff on ftp, and let the rest of the world mirror it. " 16. Linux is not user-friendly. It _is_ user-friendly. It is not ignorant-friendly and idiot-friendly. 15. `When you say "I wrote a program that crashed Windows", people just stare at you blankly and say "Hey, I got those with the system, *for free*".' (By Linus Torvalds) 14. "If you want to travel around the world and be invited to speak at a lot of different places, just write a Unix operating system." (By Linus Torvalds) 13. "Are Linux users lemmings collectively jumping off of the cliff of reliable, well-engineered commercial software?" (By Matt Welsh) 12. "Linux: the operating system with a CLUE... Command Line User Environment". (seen in a posting in comp.software.testing) 11. “See, you not only have to be a good coder to create a system like Linux, you have to be a sneaky bastard too.” (By Linus Torvalds) 10. "What happens when you read some doc and either it doesn't answer your question or is demonstrably wrong? In Linux, you say "Linux sucks" and go read the code. In Windows/Oracle/etc you say "Windows sucks" and start banging your head against the wall." 9. "...you might as well skip the Xmas celebration completely, and instead sit in front of your linux computer playing with the all-new-and-improved linux kernel version." (By Linus Torvalds) 8. Linux hackers are funny people: They count the time in patchlevels. (Seen in the .sig of Gerd Knorr.) 7. Linux: the choice of a GNU generation 6. "Not me, guys. I read the Bash man page each day like a Jehovah's Witness reads the Bible. No wait, the Bash man page IS the bible. Excuse me..." 5. What's this script do? 4. I'm an idiot.. At least this [bug] took about 5 minutes to find.. Surely, Linus is talking about the kind of idiocy that others aspire to :-) 3. One OS to rule them all, 2. ...the Linux philosophy is "laugh in the face of danger". Oops. Wrong one. "Do it yourself". That's it. (by Linus) 1. We are using Linux daily to UP our productivity - so UP yours! Linux各项系统开机服务的功能是什么?alsasound Alsa声卡驱动程序支持。Alsa声卡驱动 程序本来是为了一种声卡Gravis UltraSound(GUS)而写的,该程序被证 明很优秀,于是作者就开始为一般的声卡写驱动程序。Alsa和OSS/Free 及OSS/Linux兼容,但是有自己的接口,甚至比OSS优秀。 amd 运行automount精灵程序,该精灵在必要时自动安装一些本地设备和NFS文件系统。 apmd apmd用来监视系统用电状态,并将相关信息通过syslogd 写入日志。也可以用来在电源不足时关机。 arpwatch 该程序主要用来维护以太网物理地址和IP地址的对应关系。 atalk AppleTalk精灵程序。注意不要在后台运行该程序,该程序的数据结构必须在运行其他进程前先花一定时间初始化。 atd 运行用户用At命令调度的任务。也在系统负荷比较低时运行批处理任务。 autofs 当您需要时自动转载文件系统,而当您不需要时自动卸载。 bootparamd 该服务允许老的Sun工作站从Linux网络启动,它和rarp现在很少使用,基本上被bootp和dhcp取代了。 crond cron是Unix下的一个传统程序,该程序周期地运行用户调度的任务。比起传统的Unix版本,Vixie版本添加了不少属性,而且更安全,配置更简单。 dhcpd 该精灵提供了对动态主机控制协议(Dynamic Host Control Protocol)的访问支持。 gated gated通过一个数据库提供了网络路由功能支持。它支持各种路由协议,包括RIP版本1和2、DCN HELLO协议、OSPF版本2以及EGP版本2到4。 gpm gpm为文本模式下的Linux程序如mc(Midnight Commander)提供了鼠标的支持。它也支持控制台下鼠标的拷贝,粘贴操作以及弹出式菜单。 httpd http是著名的www服务器,可用来提供HTML文件以及CGI动态内容服务。 inetd 因特网操作服务程序。监控网络对各种它管理的服务的需求,并在必要的时候启动相应的服务程序。通常,inetd管理的程序有telnet、ftp、rsh和rlogin。关闭inetd也就关闭了这些由它管理的服务。 innd inn是最流行的用户组新闻服务器。它允许您建立起本地新闻服务器。配置有一定的难度,可以先阅读/usr/doc/ inn*文档获得帮助。 keytable 该程序的功能是转载您在/etc/sysconfig/keyboards里说 明的键盘映射表,该表可以通过kbdconfig工具进行选 择。您应该使该程序处于激活状态。 ldap LDAP代表Lightweight Directory Access Protocol,实现了目录访问协议的行业标准。 linuxconf linuxconf是Linux下的一个有效的系统配置工具,该服务允许远程运行。 lpd lpd是系统打印守护程序,负责将lpr等程序提交给打印作业。 mcserv Midnight Commander服务进程允许远程机器上的用户通过Midnight Commander文件管理器操作本机文件。服务进程用PAM来验证用户,需要给出“用户名/口令”以通过验证。 mysql 一个快速高效可靠的轻型SQL数据库引擎。 named 域名服务器,将Internet主机名解析为点分的IP地址。 netfs 负责装载/卸载NFS、Samba、NCP(Netware)文件系统。 network 激活/关闭启动时的各个网络接口。 nfs NFS是一个流行的基于TCP/IP网络的文件共享协议。该服务提供了NFS文件共享服务,具体的配置在/etc/ exports文件里。 nscd 该服务负责密码和组的查询,并且缓冲查询结果。如果您的系统有比较慢的服务(如NIS和NIS+),则应该启动该服务。 pcmcia pcmcia主要用于支持笔记本电脑。 portmap portmap用来支持RPC连接,RPC被用于NFS以及NIS等服务。 postgresql PostgreSQL关系数据库引擎。 proftpd proftpd是Unix下的一个配置灵活的ftp守护程序。 radvd 路由广播程序。 random 保存和恢复系统的高质量随机数生成器,这些随机数是系统一些随机行为提供的。 routed 该守护程序支持RIP协议的自动IP路由表维护。RIP主要使用在小型网络上,大一点的网络就需要复杂一点的协议。 rstatd Rstat协议允许网络上的用户获得同一网络上各机器的性能参数。 rusersd 该服务使网络用户可以定位同一网络上的其他用户。 rwalld Rwall协议允许远程用户向在同一系统中活跃着的终端发送消息,类似wall的本地行为。 rwhod 允许远程用户获得运行rwho精灵的机器上所有已登录用户的列表,与finger类似。 sendmail 大名鼎鼎的邮件服务器。 smb 启动和关闭smbd和nmbd精灵程序以提供SMB网络服务。 snmpd 简单网络管理协议(SNMP)的守护精灵。 syslog syslog是操作系统提供的一种机制,守护程序通常使用这种机制将各种信息写到各个系统日志文件。通常应该启动该服务。 xfs X的字体服务器。 ypbind NIS/YP的客户端守护程序。如果您需要使用NIS/YP机器,请启动这项服务,否则,关闭这项服务。 yppasswd 让NIS用户能够修改密码。运行在NIS域的服务器上。客户端程序同样也叫yppasswd。 ypserv 标准NIS/YP网络协议的一个实现。允许主机名,用户名和其他信息分布于网络各端。运行在NIS服务器上,客户端不需要。 Linux系统笔记linux目录架构 / 根目录 /bin 常用的命令 binary file 的目錄 /boot 存放系统启动时必须读取的档案,包括核心 (kernel) 在内 /boot/grub/menu.lst GRUB设置 /boot/vmlinuz 内核 /boot/initrd 核心解壓縮所需 RAM Disk /dev 系统周边设备 /etc 系统相关设定文件 /etc/DIR_COLORS 设定颜色 /etc/HOSTNAME 设定用户的节点名 /etc/NETWORKING 只有YES标明网络存在 /etc/host.conf 文件说明用户的系统如何查询节点名 /etc/hosts 设定用户自已的IP与名字的对应表 /etc/hosts.allow 设置允许使用inetd的机器使用 /etc/hosts.deny 设置不允许使用inetd的机器使用 /etc/hosts.equiv 设置远端机不用密码 /etc/inetd.conf 设定系统网络守护进程inetd的配置 /etc/gateways 设定路由器 /etc/protocols 设定系统支持的协议 /etc/named.boot 设定本机为名字服务器的配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0 设置IP /etc/resolv.conf 设置DNS /etc/X11 X Window的配置文件,xorg.conf 或 XF86Config 這兩個 X Server 的設定檔 /etc/fstab 记录开机要mount的文件系统 /etc/inittab 设定系统启动时init进程将把系统设置成什么样的runlevel /etc/issue 记录用户登录前显示的信息 /etc/group 设定用户的组名与相关信息 /etc/passwd 帐号信息 /etc/shadow 密码信息 /etc/sudoers 可以sudo命令的配置文件 /etc/securetty 设定哪些终端可以让root登录 /etc/login.defs 所有用户登录时的缺省配置 /etc/exports 设定NFS系统用的 /etc/init.d/ 所有服務的預設啟動 script 都是放在這裡的,例如要啟動或者關閉 /etc/xinetd.d/ 這就是所謂的 super daemon 管理的各項服務的設定檔目錄 /etc/modprobe.conf 内核模块额外参数设定 /etc/syslog.conf 日志设置文件 /home 使用者家目录 /lib 系统会使用到的函数库 /lib/modules kernel 的相关模块 /var/lib/rpm rpm套件安装处 /lost+found 系統不正常產生錯誤時,會將一些遺失的片段放置於此目錄下 /mnt 外设的挂载点 /media 与/mnt类似 /opt 主机额外安装的软件 /proc 虚拟目录,是内存的映射 /proc/version 内核版本 /proc/sys/kernel 系统内核功能 /root 系统管理员的家目录 /sbin 系统管理员才能执行的指令 /srv 一些服務啟動之後,這些服務所需要取用的資料目錄 /tmp 一般使用者或者是正在執行的程序暫時放置檔案的地方 /usr 最大的目录,存许应用程序和文件 /usr/X11R6: X-Window目录 /usr/src: Linux源代码 /usr/include:系统头文件 /usr/openwin 存放SUN的OpenWin /usr/man 在线使用手册 /usr/bin 使用者可執行的 binary file 的目錄 /usr/local/bin 使用者可執行的 binary file 的目錄 /usr/lib 系统会使用到的函数库 /usr/local/lib 系统会使用到的函数库 /usr/sbin 系统管理员才能执行的指令 /usr/local/sbin 系统管理员才能执行的指令 /var 日志文件 /var/log/secure 記錄登入系統存取資料的檔案,例如 pop3, ssh, telnet, ftp 等都會記錄在此檔案中 /var/log/wtmp 記錄登入者的訊息資料, last /var/log/messages 幾乎系統發生的錯誤訊息 /var/log/boot.log 記錄開機或者是一些服務啟動的時候,所顯示的啟動或關閉訊息 /var/log/maillog 紀錄郵件存取或往來( sendmail 與 pop3 )的使用者記錄 /var/log/cron 記錄 crontab 這個例行性服務的內容 /var/log/httpd, /var/log/news, /var/log/mysqld.log, /var/log/samba, /var/log/procmail.log: 分別是幾個不同的網路服務的記錄檔 一些常用的基本命令: uname -a 查看内核版本 ls -al 显示所有文件的属性 pwd 显示当前路径 cd - 返回上一次目录 cd ~ 返回主目录 date s 设置时间、日期 cal 显示日历 cal 2006 bc 计算器具 man & info 帮助手册 locale 显示当前字体 locale -a 所有可用字体 /etc/sysconfig/i18n设置文件 LANG=en 使用英文字体 sync 将数据同步写入硬盘 shutdonw -h now & half & poweroff 关机 reboot 重启 startx & init 5 进入图形介面 /work & ?work 向上、下查找文档内容 chgrp 改变档案群组 chgrp testing install.log chown 改变所属人 chown root:root install.log chmod 改变属性 chmod 777 install.log read=4 write=2 execute=1 cp 复制 cp filename rm 删除文件 rm -rf filename 强制删除文件 rmdir 删除文件夹 mv 移动 mv 123.txt 222.txt 重命名 mkdir 创建文件夹 touch 创建文件 更新当前时间 cat 由第一行开始显示 cat |more 分页 nl 在内容前加行号 more & less 一面一面翻动 head -n filename 显示第N行内容 tail -n filename 显示后N行内容 od 显示非纯文档 df -h 显示分区空间 du 显示目录或文件的大小 fdisk 分区设置 fdisk -l /dev/hda 显示硬盘分区状态 mkfs 建立各种文件系统 mkfs -t ext3 /dev/ram15 fsck 检查和修复LINUX档案 ln 硬链接 ln -s 软件链接 whereis 查找命令 locate 查找 find 查找 find / -name "***.***" which 查看工具 whoami 显示当前用户 gcc -v 查看GCC版本 chattr +i filename 禁止删除 chattr -i filename 取消禁止 lsattr 显示隐藏档属性 updatedb 更新资料库 mke2fs 格式化 mkfs -t ext3 dd if=/etc/passwd of=/tmp/passwd.bak 备份 mount 列出系统所有的分区 mount -t iso9660 /dev/cdrom /mnt/cdrom 挂载光盘 mount -t vfat /dev/fd0 /mnt/floppy 挂载软盘 mount -t vfat -o iocharset=utf8,umask=000 /dev/hda2 /mnt/hda2 挂载fat32分区 mount -t ntfs -o nls=utf8,umask=000 /dev/hda3 /mnt/hda3 挂载ntfs分区 Linux-NTFS Project: http://linux-ntfs.sourceforge.net/ umount /mnt/hda3 缷载 ifconfig 显示或设置网络设备 service network restart 重启网卡 ifdown eth0 关闭网卡 ifup eth0 开启网卡 clear 清屏 history 历史记录 !55 执行第55个指令 stty 设置终端 stty -a fdisk /mbr 删除GRUB at 僅進行一次的工作排程 crontab 循環執行的例行性命令 [e]编辑,[l]显示,[r]删除任务 & 后台运行程序 tar -zxvf 123.tar.gz & --------->后台运行 jobs 观看后台暂停的程序 jobs -l fg 将后台程序调到前台 fg n ------>n是数字,可以指定进行那个程序 bg 让工作在后台运行 kill 结束进程 kill -9 PID [9]强制结束,[15]正常结束,[l]列出可用的kill信号 ps aux 查看后台程序 top 查看后台程序 top -d 2 每两秒更新一次 top -d 2 -p10604 观看某个PID top -b -n 2 > /tmp/top.txt ----->將 top 的資訊進行 2 次,然後將結果輸出到 /tmp/top.txt pstree 以树状图显示程序 [A]以 ASCII 來連接, 列出PID, [p]列出帐号 killall 要刪除某個服務 killall -9 httpd free 显示内存状态 free -m -------->以M为单位显示 uptime 显示目前系统开机时间 netstat 显示网络状态 netstat -tulnp------>找出目前系統上已在監聽的網路連線及其 PID dmesg 显示开机信息 demsg | more nice 设置优先权 nice -n -5 vi & ----->用 root 給一個 nice 植為 -5 ,用於執行 vi renice 调整已存在优先权 runlevel 显示目前的runlevel depmod 分析可载入模块的相依性 lsmod 显示已载入系统的模块 modinfo 显示kernel模块的信息 insmod 载入模块 modprobe 自动处理可载入模块 rmmod 删除模块 chkconfig 检查,设置系统的各种服务 chkconfig --list ----->列出各项服务状态 ntsysv 设置系统的各种服务 cpio 备份文件 压缩命令: *.Z compress 程式壓縮的檔案; *.bz2 bzip2 程式壓縮的檔案; *.gz gzip 程式壓縮的檔案; *.tar tar 程式打包的資料,並沒有壓縮過; *.tar.gz tar 程式打包的檔案,其中並且經過 gzip 的壓縮 compress filename 压缩文件 加[-d]解压 uncompress gzip filename 压缩 加[-d]解压 zcat 123.gz 查看压缩文件内容 bzip2 -z filename 压缩 加[-d]解压 bzcat filename.bz2 查看压缩文件内容 tar -cvf /home/123.tar /etc 打包,不压缩 tar -xvf 123.tar 解开包 tar -zxvf /home/123.tar.gz 以gzip解压 tar -jxvf /home/123.tar.bz2 以bzip2解压 tar -ztvf /tmp/etc.tar.gz 查看tar内容 cpio -covB > [file|device] 份份 cpio -icduv < [file|device] 还原 vi一般用法 一般模式 编辑模式 指令模式 h 左 a,i,r,o,A,I,R,O :w 保存 j 下 进入编辑模式 :w! 强制保存 k 上 dd 删除光标当前行 :q! 不保存离开 l 右 ndd 删除n行 :wq! 保存后离开 0 移动到行首 yy 复制当前行 :e! 还原原始档 $ 移动到行尾 nyy 复制n行 :w filename 另存为 H 屏幕最上 p,P 粘贴 :set nu 设置行号 M 屏幕中央 u 撤消 :set nonu 取消行号 L 屏幕最下 [Ctrl]+r 重做上一个动作 ZZ 保存离开 G 档案最后一行 [ctrl]+z 暂停退出 :set nohlsearch 永久地关闭高亮显示 /work 向下搜索 :sp 同时打开两个文档 ?work 向上搜索 [Ctrl]+w 两个文档设换 gg 移动到档案第一行 :nohlsearch 暂时关闭高亮显示 认识SHELL alias 显示当前所有的命令别名 alias lm="ls -al" 命令别名 unalias lm 取消命令别名 type 类似which exprot 设置或显示环境变量 exprot PATH="$PATH":/sbin 添加/sbin入PATH路径 echo $PATH 显示PATH路径 bash 进入子程序 name=yang 设定变量 unset name 取消变量 echo $name 显示变量的内容 myname="$name its me" & myname='$name its me' 单引号时$name失去变量内容 ciw=/etc/sysconfig/network-scripts/ 设置路径 env 列出所有环境变量 echo $RANDOM 显示随意产生的数 set 设置SHELL PS1='[\u@\h \w \A #\#]\$ ' 提示字元的設定 [root@linux ~]# read [-pt] variable -----------读取键盘输入的变量 參數: -p :後面可以接提示字元! -t :後面可以接等待的『秒數!』 declare 声明 shell 变量 ulimit -a 显示所有限制资料 ls /tmp/yang && echo "exist" || echo "not exist" 意思是說,當 ls /tmp/yang 執行後,若正確,就執行echo "exist" ,若有問題,就執行echo "not exist" echo $PATH | cut -d ':' -f 5 以:为分隔符,读取第5段内容 export | cut -c 10-20 读取第10到20个字节的内容 last | grep 'root' 搜索有root的一行,加[-v]反向搜索 cat /etc/passwd | sort 排序显示 cat /etc/passwd | wc 显示『行、字数、字节数』 正规表示法 [root@test root]# grep [-acinv] '搜尋字串' filename 參數說明: -a :將 binary 檔案以 text 檔案的方式搜尋資料 -c :計算找到 '搜尋字串' 的次數 -i :忽略大小寫的不同,所以大小寫視為相同 -n :順便輸出行號 -v :反向選擇,亦即顯示出沒有 '搜尋字串' 內容的那一行! grep -n 'the' 123.txt 搜索the字符 -----------搜尋特定字串 grep -n 't[ea]st' 123.txt 搜索test或taste两个字符---------利用 [] 來搜尋集合字元 grep -n '[^g]oo' 123.txt 搜索前面不为g的oo-----------向選擇 [^] grep -n '[0-9]' 123.txt 搜索有0-9的数字 grep -n '^the' 123.txt 搜索以the为行首-----------行首搜索^ grep -n '^[^a-zA-Z]' 123.txt 搜索不以英文字母开头 grep -n '[a-z]$' 123.txt 搜索以a-z结尾的行---------- 行尾搜索$ grep -n 'g..d' 123.txt 搜索开头g结尾d字符----------任意一個字元 . grep -n 'ooo*' 123.txt 搜索至少有两个oo的字符---------重複字元 * sed 文本流编辑器 利用脚本命令来处理文本文件 awd 模式扫描和处理语言 nl 123.txt | sed '2,5d' 删除第二到第五行的内容 diff 比较文件的差异 cmp 比较两个文件是否有差异 patch 修补文件 pr 要打印的文件格式化 帐号管理 /etc/passwd 系统帐号信息 /etc/shadow 帐号密码信息 经MD5 32位加密 在密码栏前面加『 * 』『 ! 』禁止使用某帐号 /etc/group 系统群组信息 /etc/gshadow newgrp 改变登陆组 useradd & adduser 建立新用户 ---------> useradd -m test 自动建立用户的登入目录 useradd -m -g pgroup test --------->指定所属级 /etc/default/useradd 相关设定 /etc/login.defs UID/GID 有關的設定 passwd 更改密码 -----------> passwd test usermod 修改用户帐号 userdel 删除帐号 ----------->userdel -r test chsh 更换登陆系统时使用的SHELL [-l]显示可用的SHELL;[-s]修改自己的SHELL chfn 改变finger指令显示的信息 finger 查找并显示用户信息 id 显示用户的ID -----------> id test groupadd 添加组 groupmod 与usermod类似 groupdel 删除组 su test 更改用户 su - 进入root,且使用root的环境变量 sudo 以其他身份来执行指令 visudo 编辑/etc/sudoers 加入一行『 test ALL=(ALL) ALL 』 %wheel ALL = (ALL) ALL 系统里所有wheel群组的用户都可用sudo %wheel ALL = (ALL) NOPASSWD: ALL wheel群组所有用户都不用密码NOPASSWD User_Alias ADMPW = vbird, dmtsai, vbird1, vbird3 加入ADMPW组 ADMPW ALL = NOPASSWD: !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, \ !/usr/bin/passwd root 可以更改使用者密码,但不能更改root密码 (在指令前面加入 ! 代表不可) PAM (Pluggable Authentication Modules, 嵌入式模組) who & w 看谁在线 last 最近登陆主机的信息 lastlog 最近登入的時間 读取 /var/log/lastlog talk 与其他用户交谈 write 发送信息 write test [ctrl]+d 发送 mesg 设置终端机的写入权限 mesg n 禁止接收 mesg y wall 向所有用户发送信息 wall this is q test mail 写mail /etc/default/useradd 家目录默认设置 quota 显示磁盘已使用的空间与限制 quota -guvs ----->秀出目前 root 自己的 quota 限制值 quota -vu 查询 quotacheck 检查磁盘的使用空间与限制 quotacheck -avug ----->將所有的在 /etc/mtab 內,含有 quota 支援的 partition 進行掃瞄 [-m] 强制扫描 quota一定要是独立的分区,要有quota.user和quota.group两件文件,在/etc/fstab添加一句: /dev/hda3 /home ext3 defaults,usrquota,grpquota 1 2 chmod 600 quota* 设置完成,重启生效 edquota 编辑用户或群组的quota 用户,[g]群组,[p]复制,[t]设置宽限期限 edquota -a yang edquota -p yang -u young ----->复制 quotaon 开启磁盘空间限制 quotaon -auvg -------->啟動所有的具有 quota 的 filesystem quotaoff 关闭磁盘空间限制 quotaoff -a -------->關閉了 quota 的限制 repquota -av 查閱系統內所有的具有 quota 的 filesystem 的限值狀態 Quota 從開始準備 filesystem 的支援到整個設定結束的主要的步驟大概是: 1、設定 partition 的 filesystem 支援 quota 參數: 由於 quota 必須要讓 partition 上面的 filesystem 支援才行,一般來說, 支援度最好的是 ext2/ext3 , 其他的 filesystem 類型鳥哥我是沒有試過啦! 啟動 filesystem 支援 quota 最簡單就是編輯 /etc/fstab , 使得準備要開放的 quota 磁碟可以支援 quota 囉; 2、建立 quota 記錄檔: 剛剛前面講過,整個 quota 進行磁碟限制值記錄的檔案是 aquota.user/aquota.group, 要建立這兩個檔案就必須要先利用 quotacheck 掃瞄才行喔! 3、編輯 quota 限制值資料: 再來就是使用 edquota 來編輯每個使用者或群組的可使用空間囉; 4、重新掃瞄與啟動 quota : 設定好 quota 之後,建議可以再進行一次 quotacheck ,然後再以 quotaon 來啟動吧! 开机流程简介 1、載入 BIOS 的硬體資訊,並取得第一個開機裝置的代號; 2、讀取第一個開機裝置的 MBR 的 boot Loader (亦即是 lilo, grub, spfdisk 等等) 的開機資訊; 3、載入 Kernel 作業系統核心資訊, Kernel 開始解壓縮,並且嘗試驅動所有硬體裝置; 4、Kernel 執行 init 程式並取得 run-level 資訊; 5、init 執行 /etc/rc.d/rc.sysinit 檔案; 6、啟動核心的外掛模組 (/etc/modprobe.conf); 7、init 執行 run-level 的各個批次檔( Scripts ); 8、init 執行 /etc/rc.d/rc.local 檔案; 9、執行 /bin/login 程式,並等待使用者登入; 10、登入之後開始以 Shell 控管主機。 在/etc/rc.d/rc3.d內,以S开头的为开机启动,以K开头的为关闭,接着的数字代表执行顺序 GRUB vga设定 彩度\解析度 640x480 800x600 1024x768 1280x1024 bit 256 769 771 773 775 8 bit 32768 784 787 790 793 15 bit 65536 785 788 791 794 16 bit 16.8M 786 789 792 795 32 bit ./configure 检查系统信息 ./configure --help | more 帮助信息 make clean 清除之前留下的文件 make 编译 make install 安装 rpm -q ----->查询是否安装 rpm -ql ------>查询该套件所有的目录 rpm -qi ----->查询套件的说明资料 rpm -qc[d] ----->设定档与说明档 rpm -ivh ---->安装 rpm -V -------->查看套件有否更动过 rpm -e ------>删除 rpm -Uvh ------->升级安装 --nodeps ----->强行安装 --test ----->测试安装 linux安全目前随着网络的逐渐普及,安全问题越来越引起了人们的注意。Linux作为免费的开放源代码操作系统,正在被越来越多地用作服务器平台,而且随着Linux下应用软件的多样化,很多人也喜欢使用Linux作为桌面。在这一系列文章中我们把主要精力放在用Linux搭建安全的服务器上面。我们通过系统设置和一些共享的安全软件固化我们的系统,使其能做到真正的安全。由于篇幅原因,不可能论述的很详细,我在这里只是把我们要注意和关心的地方举出来,至于一些其他的常识性的细节不再赘述。 第一部分主要从安装和设置方面阐述 Linux 作为服务器应注意的方面。 1 Linux服务器的安装 大家一定都安装过Linux系统,也许您可能已经很熟练了,但是在这里我们提出一些在安装过程中应该注意的问题: 首先在分区的时候不要只图简单把所有的空间都留给根分区,应该把不同的部分放在不同的分区。强烈的建议您把"/var"和"/tmp"放在不同的分区,如果您的服务器有较多的用户访问,这几乎是您所必须做的。另外最好把"/var"和"/usr"放在不同的分区,这样可以避免由于日志或用户的原因是您的硬盘被占满或直接导致您的服务器性能降低。对分区的最后一点警告就是如果您要提供一种或多种服务,一定要把这个服务有关的东西放在单独一个分区,例如:您如果要建一台WWW服务器,您在分区时候一定要留一个单独的分区(例如:"/www"),将来您可以用chroot提高这种服务的安全性。 另外一个重要的问题是安装时软件包的选择。我们用Redhat作为例子,出于安全和性能的考虑,您必须选择"Select individual package"单选框,这样您就可以进行软件包的选择。有些软件是您不必安装的,有些软件是安装后必须卸载的,有些是安装后必须安装的。我们下面给出清单: 不必安装的软件包: Applications/Archiving: dump Applications/File: git Applications/Internet: finger, ftp, fwhois, ncftp, rsh, rsync, talk, telnet Applications/Publishing: ghostscript, ghostscript-fonts, mpage, rhs-printfilters Applications/System: arpwatch, bind-utils, knfsd-clients, procinfo, rdate, rdist, screen, ucd-snmp-utils Documentation/indexhtml System Environment/Base: chkfontpath, yp-tools System Environment/Daemons: XFree86-xfs, lpr, pidentd, portmap, routed, rusers, rwho, tftp, ucd-snmp, ypbind System Environment/Libraries: XFree86-libs, libpng User Interface/X: XFree86-75dpi-fonts, urw-fonts 安装后必须卸载的软件包: pump apmd isapnptools redhat-logos mt-st kernel-pcmcia-cs setserial redhat-release eject linuxconf kudzu gd bc getty_ps raidtools pciutils mailcap setconsole gnupg 安装后必须安装的软件包(有了这些软件包我们才可以编译程序): autoconf-2.13-5.noarch.rpm m4-1.4-12.i386.rpm automake-1.4-5.noarch.rpm dev86-0.14.9-1.i386.rpm bison-1.28-1.i386.rpm byacc-1.9-11.i386.rpm cdecl-2.5-9.i386.rpm cpp-1.1.2-24.i386.rpm cproto-4.6-2.i386.rpm ctags-3.2-1.i386.rpm egcs-1.1.2-24.i386.rpm ElectricFence-2.1-1.i386.rpm flex-2.5.4a-7.i386.rpm gdb-4.18-4.i386.rpm kernel-headers-2.2.12-20.i386.rpm glibc-devel-2.1.2-11.i386.rpm make-3.77-6.i386.rpm patch-2.5-9.i386.rpm 在您对您的服务器的所有工作做完以后(以后不再有编译的需要了),把上面这些软件包从您的系统中删除。这样即使有人侵入了您的系统,他也不能在上面编译程序,而且这样还可以使您以后进行完整性检查的速度加快。您可以把上面这些软件包保存在活动介质上以便以后使用,可能上面这些不是最新的版本,您可以去下载目前最新最稳定的版本。 2 系统设置 2.1 口令和帐号 首先你必须设置BIOS的口令,现在的个人计算机系统大都支持这种设置。 其次你必须为你的lilo的单用户模式设置口令限制,在/etc/lilo.conf中第一个引导的image前面加入下面的信息: restricted passwd="your password" "your passwd"是您所所要设定的单用户模式引导的密码。设置完成用lilo -u使lilo重新读取/etc/lilo.conf中的信息。 另外就是用户的密码包括根用户的密码,系统默认的用户密码是5位。您可以编辑"/etc/login.defs"文件,把最小口令长度由5改成8。找到 PASS_MIN_LEN 5 这一行,改为:PASS_MIN_LEN 8 。"login.defs"是很重要的配置文件。可以在这个文件中设定一些其它的安全策略,比如:口令的有效期。 口令的选择不应包括字典中有的词汇,这样是十分危险的。正确的口令应该足够长,比且使用一些特殊字符。 系统中有许多预置帐号,如果你没有使用,一定要将这些帐号删掉。这些没有安全的口令对系统的安全性是一个巨大的挑战。 一个值得注意的命令是chage.您可以使用它设置帐号的时间限制。(具体见man chage). 对于根用户而言,您可以设置/etc/securetty.这个文件可以限制根用户登陆的控制台。您可以用"#"符号注释掉不许可根用户登陆的控制台号。 可以通过下面的脚本禁止对控制台的访问: # !/bin/sh cd /etc/pam.d for i in * ; do sed '/[^#].*pam_console.so/s/^/#/' < $i > foo && mv foo $I done 然后禁止使用所有的控制台程序,如:shutdown和halt。可以运行下面的命令来实现: [root@sound]# rm -f /etc/security/console.apps/servicename 截短您的"~/.bash_history"文件,这个文件中保存着以前使用的命令列表。截短这个文件可以使您以前执行过的命令暴露在别人眼光下的机会减小.(在您的命令中很可能包括象密码信息这样的保密信息)。通过编辑/etc/profile的下面两项可以做到这一点: HISTFILESIZE=20 HISTSIZE=20 __ 通过下面的措施可以防止任何人都可以su为root: 1编辑su文件(vi /etc/pam.d/su)在文件的头部加入下面两行: auth sufficient /lib/security/pam_rootok.so debug auth required /lib/security/pam_wheel.so group=wheel 2 然后把您想要执行su成为root的用户放入wheel组 [root@sound]# usermod -G10 admin 2.2 权限与文件系统 linux的ext2文件系统有属性功能这个特点。我们可以用lsattr命令列出文件的属性,用chattr命令改变文件的属性。文件系统的属性有很多种,我们在这里要注意的是两个属性: a 只可添加属性 i 不可改变属性 对于系统种的配置文件,最好设置不可改变属性,而对于一些日志文件最好设置只可添加属性。下面是两个具体例子: chattr +i /etc/inetd.conf chattr +a /var/log/secure 如果要去掉这些属性,将上面命令中的"+"号变为"-"号。 另外我们要对mount的文件系统做限制,这个配置在/etc/fstab中。通过设置mount选项我们可以使我们mount上来的文件系统更安全。常用的mount选项有default,nodev,noexec,nosuid,noatime,ro,user等。 我们还可以对系统资源做限制使我们的系统更加安全,看下面的方法: 编辑limits.conf文件(vi /etc/security/limits.conf),加入或改变下面这些行: * hard core 0 * hard rss 5000 * hard nproc 20 这些行的的意思是:"core 0"表示禁止创建core文件;"nproc 20"把最多进程数限制到20;"rss 5000"表示除了root之外,其他用户都最多只能用5M内存。上面这些都只对登录到系统中的用户有效。通过上面这些限制,就能更好地控制系统中的用户对进程、core文件和内存的使用情况。星号"*"表示的是所有登录到系统中的用户。 然后必须编辑"/etc/pam.d/login"文件,在文件末尾加入下面这一行: session required /lib/security/pam_limits.so 2.3 其他一些设置 1 在/etc/inetd.conf中注释掉不需要的服务 2 在/etc/host.allow和/etc/host.deny中设置可以访问您的系统的计算机。 3 通过下面的方法使系统对ping没有反应 echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all 4_用下面的命令在你的服务器上禁止IP原路径路由: for f in /proc/sys/net/ipv4/conf/*/accept_source_route; do echo 0 > $f done __把上面的命令加到"/etc/rc.local"文件中去. 5 用下面的方法提高系统防止SYN攻击的能力: [root@sound]# echo 1 > /proc/sys/net/ipv4/tcp_syncookies 把这个命令加入"/etc/rc.d/rc.local"文件中 6 使Control-Alt-Delete软关机无效 编辑inittab文件(vi /etc/inittab)把这一行: ca::ctrlaltdel:/sbin/shutdown -t3 -r now 改为: #ca::ctrlaltdel:/sbin/shutdown -t3 -r now 用下面的命令使改变生效: [root@sound]# /sbin/init q 7 去掉用户提示信息 编辑"/ect/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"目录下的"issue.net"和"issue"文件: "/etc/issue.net"文件是用户从网络登录计算机时(例如:telnet、SSH),看到的登录提示。同样在"/etc"目录下还有一个"issue"文件,是用户从本地登录时看到的提示。这两个文件都是文本文件,可以根据需要改变。但是,如果想删掉这两个文件,必须向上面介绍的那样把"/etc/rc.d/rc.local"脚本中的那些行注释掉,否则每次重新启动的时候,系统又会重新创建这两个文件。 当我们用上面的方法进行了 Linux 服务器的安装和一些基本的设置后,我们的服务器应该说来是比较安全的。但是总是还会有黑客可以通过各种方法利用系统管理员的疏忽侵入我们的系统。他们的一举一动都会记录到系统的日志之中,尽管他们可能可以改变这些日志信息,甚至用自己的程序替换掉我们系统本身的命令程序,但是通过日志我们总还是能找到一些蛛丝马迹。下面我们主要讲一下 Linux 环境中的系统记帐和系统日志管理以及怎么用一些工具更加方便有效的管理日志信息。 1 系统记帐 最初开发的系统记帐用于跟踪用户资源消费情况,从用户帐号中提取费用为目地的。现在我们可以把它用于安全目的,给我们提供有关在系统中发生的各种活动的有价值信息。 系统记帐主要非为两类: 1) 连接记帐 连接记帐是跟踪当前用户当前对话、用户登录和退出的活动。在 Linux 系统中使用 utmp (动态用户对话)和 wtmp (登录/退出日志记录)工具来完成这一记帐过程。Wtmp 工具同时维护重新引导和系统状态变化信息。各种程序对这些工具进行刷新和维护,因此无须进行特殊的后台进程或程序。然而,utmp 和 wtmp 输出结果文件必须存在,如果这些文件不存在会关闭连接记帐。与 utmp 和 wtmp 有关的所有数据将分别保存在 /var/run/utmp 和 /var/log/wtmp 中。这些文件归根用户所有。这些文件中的数据是用户不可读的,但也有工具可以转换成可读的形式。 dump-utmp 可以转换连接记帐数据为可读的 ASCII 格式数据。 ac 命令提供了有关用户连接的大概统计,我们可以使用带有标志 d 和 p 的 ac 命令。标志 d 显示了一天的总连接统计,标志 p 显示了每一个用户的连接时间。这种统计信息的方式对了解与探测入侵有关的用户情况及其他活动很有帮助。Last 和 who 是出于安全角度定期使用的最常用命令。 last 命令提供每一个用户的登录时间,退出登录时间,登录位置,重新引导系统及运行级别变化的信息。last -10 表示 last 的最多输出结果为最近的 10 条信息。缺省时 last 将列出在 /var/log/wtmp 中记录的每一连接和运行级别的变化。从安全角度考虑,last 命令提供了迅速查看特定系统连接活动的一种方式。观察每天的输出结果是个好习惯,从中可以捕获异常输入项。Last 命令的 -x 选项可以通知系统运行级别的变化。 who 命令主要作用是报告目前正在登录的用户、登录设备、远程登录主机名或使用的 Xwindows 的 X 显示值、会话闲置时间以及会话是否接受 write 或 talk 信息。 例如: who -iwH 的输出结果: USER MESG LINE LOGIN-TIME IDLE FROM Denny - tty1 Feb 18 08:42 old 这就表示用户 Denny 不能接受 write 或 talk 信息,2月18日8:42 从 tty1 登录。该命令的安全值提供了用户连接的大致情况,这也为监视可疑活动提供了条件。其他的有关命令有 lastlog 命令,该命令报告了有关 /var/log/lastlog 中记录的最后一次登录的数据信息。 2) 进程记帐 进程记帐是对进程活动的记录。原数据保存在 /var/log/pacct 文件中,其许可权限为 600。该文件的存在是进程记帐有效的保障。与连接记帐不同,进程记帐必须处于打开状态,使用下面的命令设置打开状态. # accton /var/log/pacct 可以使用自选文件代替 /var/log/pacct,但必须记住这一文件并且设置适当的许可权限。必须在每次引导的时候执行该命令,可以在 /etc/rc.d/rc.local 中输入以下脚本: # initiate process account if [ -x /sbin/accton ] then /sbin/accton /var/log/pacct echo "process accounting initiated" fi 一旦在系统中配置进程记帐后,将使用 3 个命令解释在 /var/log/pacct 中的非用户可读的原数据。这些命令分别为 dump-acct,该命令与 dump-utmp 完全相似,sa 命令用于统计系统进程记帐的大致情况,最后一个是 lastcomm 命令列出了系统执行的命令。 1 sa 命令 与 ac 命令一样,sa 是一个统计命令。该命令可以获得每个用户或每个命令的进程使用的大致情况,并且提供了系统资源的消费信息。在很大程度上,sa 又是一个记帐命令,对于识别特殊用户,特别是已知特殊用户使用的可疑命令十分有用。另外,由于信息量很大,需要处理脚本或程序筛选这些信息。 可以用这样的命令单独限制用户: # sa -u |grep joe joe 0.00 cpu bash joe 0.00 cpu ls joe 0.01 cpu ls joe 0.01 cpu lastcomm joe 0.01 cpu tcpdump joe 0.01 cpu reboot 输出结果从左到右依次为:用户名、CPU 使用时间秒数、命令(最多为 16 个字符)。 2 lastcomm 命令 与 sa 命令不同,lastcomm 命令提供每一个命令的输出结果,同时打印出与执行每个命令有关的时间印戳。就这一点而说,lastcomm 比 sa 更有安全性。 lastcomm 命令使用命令名,用户名或终端名作为变量。该命令可以查询进程记帐数据库。下面显示 lastcomm joe 的输出结果,每行表示命令的执行情况,从左到右为:用户、设备、使用的 cpu 时间秒数、执行命令的日期和时间。 # lastcomm joe reboot joe ttyp1 0.01 secs Fri Feb 26 18:40 tcpdump joe ttyp1 0.01 secs Fri Feb 26 18:39 lastcomm joe ttyp1 0.01 secs Fri Feb 26 18:32 ls joe ttyp1 0.01 secs Fri Feb 26 18:30 ls joe ttyp1 0.00 secs Fri Feb 26 18:28 bash joe ttyp1 0.00 secs Fri Feb 26 18:25 如果系统被入侵,请不要相信在 lastlog、utmp、wtmp、pacct 中记录的信息,但也不要忽略,因为这些信息可能被修改过了。另外有可能有人替换了who程序来掩人耳目。 通常,在已经识别某些可疑活动后,进程记帐可以有效的发挥作用。使用 lastcomm 可以隔绝用户活动或在特定时间执行命令。但是使用该命令必须设置为打开状态。 基本上,/var/log/pacct,/var/run/utmp, /var/log/pacct是动态数据库文件。其中/var/log/pacct和/var/log/wtmp文件随着输入项的增加和修改而增加。问题在于这些文件处于动态增加状态,因此到一定程度就会变的很大。 我们可以通过一个叫 logrotate 的程序来解决上面这个问题,该程序读 /etc/logrotate.conf 配置文件,该配置文件告诉 logrotate 所要读 /etc/logrotate.d 目录中的文件。可以通过它来设定日志文件的循环时间。 2 系统日志 在 Linux 下使用各种日志文件,有些用于某些特殊用途,例如:/var/log/xferlog 用于记录文件传输协议 FTP 的信息。其他日志文件,例如 /var/log/messages 文件通常包含许多系统和内核工具的输入项。这些日志文件为系统的安全状态提供了信息。 我们主要讲解两个日志守护程序---syslog和klogd------并且简要叙述了由Linux操作系统生成的其他其他日志文件。目的是提供基本的配置情况。 2.1 syslog系统日志工具 大部分的 Linux 系统中都要使用 syslog 工具,它是相当灵活的,能使系统根据不同的日志输入项采取不同的活动。下面将详细讨论syslog 的工作机制以及在配置文件 /etc/syslog.conf 中的配置,还将论述利用 syslog 灵活性和功能性进行工作的各种方法。 1) 概述 非常简单,syslog 工具由一个守护程序组成。它能接受访问系统的日志信息并且根据 /etc/syslog.conf 配置文件中的指令处理这些信息。程序,守护进程和内核提供了访问系统的日志信息。因此,任何希望生成日志信息的程序都可以向 syslog 接口呼叫生成该信息。 通常,syslog 接受来自系统的各种功能的信息,每个信息都包括重要级。/etc/syslog.conf 文件通知 syslogd 如何根据设备和信息重要级别来报告信息。 2) etc/syslog.conf /etc/syslog.conf 文件使用下面的形式 facility.level action 空白行和以#开头的行可以忽略。Facility.level 字段也被称做 seletor。应该使用一次或多次 tab 键分隔 facility 和 action。大部分 Linux 使用这些空格为分隔符。现在分析一下 /etc/syslog.conf 中的三个要素。 facility 指定 syslog 功能,主要包括以下这些: auth 由 pam_pwdb 报告的认证活动。 authpriv 包括特权信息如用户名在内的认证活动 cron 与 cron 和 at 有关的信息。 daemon 与 inetd 守护进程有关的信息。 kern 内核信息,首先通过 klogd 传递。 lpr 与打印服务有关的信息。 mail 与电子邮件有关的信息 mark syslog 内部功能用于生成时间戳 news 来自新闻服务器的信息 syslog 由 syslog 生成的信息 user 由用户程序生成的信息 uucp 由 uucp 生成的信息 local0----local7 与自定义程序使用,例如使用 local5 做为 ssh 功能 * 通配符代表除了 mark 以外的所有功能 与每个功能对应的优先级是按一定顺序排列的,emerg 是最高级,其次是 alert,依次类推。缺省时,在 /etc/syslog.conf 记录中指定的级别为该级别和更高级别。如果希望使用确定的级别可以使用两个运算符号!(不等)和=。 user.=info 表示告知 syslog 接受所有在 info 级别上的 user 功能信息。 syslog 级别如下: emerg 或 panic 该系统不可用 alert 需要立即被修改的条件 crit 阻止某些工具或子系统功能实现的错误条件 err 阻止工具或某些子系统部分功能实现的错误条件 warning 预警信息 notice 具有重要性的普通条件 info 提供信息的消息 debug 不包含函数条件或问题的其他信息 none 没有重要级,通常用于排错 * 所有级别,除了none action字段所表示的活动具有许多灵活性,特别是,可以使用名称管道的作用是可以使 syslogd 生成后处理信息。 syslog 主要支持以下活动 file 指定文件的绝对路径 terminal 或 print 完全的串行或并行设备标志符 @host 远程的日志服务器 username 发送信息到使用 write 的指定用户中 named pipe 指定使用 mkfifo 命令来创建的 FIFO 文件的绝对路径。 3) 调用 syslogd 守护程序 syslog 守护程序是由 /etc/rc.d/init.d/syslog 脚本在运行级2下被调用的,缺省不使用选项。但有两个选项 -r 和 -h 很有用。 如果将要使用一个日志服务器,必须调用 syslogd -r。缺省情况下 syslog 不接受来自远程系统的信息。当指定 -r 选项,syslogd 将会监听从 514 端口上进来的 UDP 包。 如果还希望日志服务器能传送日志信息,可以使用 -h 标志。缺省时,syslogd 将忽略使其从一个远程系统传送日志信息到另一个系统的/etc/syslog.conf 输入项。 4) klogd 守护进程 klogd 守护进程获得并记录 Linux 内核信息。通常,syslogd 会记录 klogd 传来的所有信息,然而,如果调用带有 -f filename 变量的 klogd 时,klogd 就在 filename 中记录所有信息,而不是传给 syslogd。当指定另外一个文件进行日志记录时,klogd 就向该文件中写入所有级别或优先权。Klogd 中没有和 /etc/syslog.conf 类似的配置文件。使用 klogd 而避免使用 syslogd 的好处在于可以查找大量错误。如果有人入侵了内核,使用 klogd 可以修改错误。 5) 其他日志 在 /var/log 和不同版本的系统中以及自己配置的应用程序中都可以找到其他日志文件。当然,/etc/syslog.conf 列出了由 syslogd 管理的所有日志文件名和位置。其他日志由其他应用程序管理。例如在 Redhat6.2 中,apache server 生成 /var/log/htmlaccess.log 文件记录客户访问,生成 /var/log/httpd/error.log 文件在 syslog 以外查找错误。 Mplayer通过yum使用Livna仓库(启用的)安装:
[mirandam@charon ~]$ sudo yum install mplayer mplayer-gui mplayer-skins mplayer-fonts mplayerplug-in mencoder 二进制解码器:请为MPlayer不直接支持的媒体格式安装二进制解码器播放更多种类的文件。
PulseAudio 问题:如果你收到了如下的错误提示:
[AO_ALSA] Unable to find simple control ‘PCM’,0. Run gmplayer, Right-Click, goto Preferences > Audio > Available drivers:, Select pulse 运行gmplayer,右键单击,进入Preferences > Audio > Available drivers:,选中pulse 浏览器插件问题:如果浏览器插件没有加载,请运行下列命令:
[mirandam@charon ]$ sudo /usr/bin/mozilla-plugin-config -i -f 关于播放rmvb格式的电影问题:错误提示:
Cannot find codec matching selected -vo and video format 0x30345652.只要在http://www.mplayerhq.hu/MPlayer/releases/codecs/下载在x86_64系统适合的解码 mplayer-codecs-extra-20061022-1.x86_64.rpm
mplayer-codecs-20061022-1.x86_64.rpm
Linux内核诞生已经17年 由Linus Benedict Torvalds编写的免费386-AT操作系统minix类似内核诞生于1991年10月5日,而现在,它已经度过了17年的时光。 “你还在为Minix-1.1而烦恼么?你还在自己写设备的驱动程序么?你是不是因为找不到一个可以自由修改的项目而沮丧?正如我一个月前(1991年)所说,我将发布一个免费版本的Minix类似的AT-386系统内核。现在它已经正式完成,并且我愿意把它开源,让它更广泛的传播。现在的版本是0.02,但我已经通过它成功的编译了bash/gcc/gnu-make/gnu-sed/compress” Linus当年并不清楚它所释放的“可以自由修改的操作系统”今天可以成为世界上最大的开源操作系统。然而,今天成功的Linux操作系统和网络,拥有50万个开源项目,不可估量的前景。被称之为“狂热者所拥有的东西”。 而现在google推出了基于Linux操作系统的Android平台,基于Linux的移动手机平台永远都是Symbian和Windows Mobile强有力的竞争对手。不过,诺基亚在今年1月和7月分别收购了Linux开发商Trolltech和Symbian,然后宣布这些系统均将开源。 linux文件系统基础知识这两天看了一本fedora 6的实践教程,下面是有关linux文件系统知识的学习笔记: 1、linux文件系统分配策略: 块分配( block allocation ) 和 扩展分配 ( extent allocation ) 块分配:磁盘上的文件块根据需要分配给文件,避免了存储空间的浪费。但当文件扩充时,会造成文件中文件块的不连续,从而导致过多的磁盘寻道时间。 每一次文件扩展时,块分配算法就需要写入文件块的结构信息,也就是 meta-dada 。meta-data总是与文件一起写入存储设备,改变文件的操作要等到所有meta-data的操作都完成后才能进行, 因此,meta-data的操作会明显降低整个文件系统的性能。 扩展分配: 文件创建时,一次性分配一连串连续的块,当文件扩展时,也一次分配很多块。meta-data在文件创建时写入,当文件大小没有超过所有已分配文件块大小时,就不用写入meta-data,直到需要再分配文件块的时候。 扩展分配采用成组分配块的方式,减少了SCSI设备写数据的时间,在读取顺序文件时具有良好的性能,但随机读取文件时,就和块分配类似了。 文件块的组或块簇 ( block cluster) 的大小是在编译时确定的。簇的大小对文件系统的性能有很大的影响。 注: meta-data 元信息:和文件有关的信息,比如权限、所有者以及创建、访问或更改时间等。 2、文件的记录形式 linux文家系统使用索引节点(inode)来记录文件信息。索引节点是一种数据结构,它包含了一个文件的长度、创建及修改时间、权限、所属关系、磁盘中的位置等信息。 一个文件系统维护了一个索引节点的数组,每个文件或目录都与索引节点数组中的唯一的元素对应。每个索引节点在数组中的索引号,称为索引节点号。 linux文件系统将文件索引节点号和文件名同时保存在目录中,所以,目录只是将文件的名称和它的索引节点号结合在一起的一张表,目录中每一对文件名称和索引节点号称为一个连接。 对于一个文件来说,有一个索引节点号与之对应;而对于一个索引节点号,却可以对应多个文件名。 连接分为软连接和硬连接,其中软连接又叫符号连接。 硬连接: 原文件名和连接文件名都指向相同的物理地址。目录不能有硬连接;硬连接不能跨文件系统(不能跨越不同的分区),文件在磁盘中只有一个拷贝。 由于删除文件要在同一个索引节点属于唯一的连接时才能成功,因此硬连接可以防止不必要的误删除。 软连接: 用 ln -s 命令建立文件的符号连接。符号连接是linux特殊文件的一种,作为一个文件,它的数据是它所连接的文件的路径名。没有防止误删除的功能。 3、文件系统类型: ext2 : 早期linux中常用的文件系统 ext3 : ext2的升级版,带日志功能 RAMFS : 内存文件系统,速度很快 NFS : 网络文件系统,由SUN发明,主要用于远程文件共享 MS-DOS : MS-DOS文件系统 VFAT : Windows 95/98 操作系统采用的文件系统 FAT : Windows XP 操作系统采用的文件系统 NTFS : Windows NT/XP 操作系统采用的文件系统 HPFS : OS/2 操作系统采用的文件系统 PROC : 虚拟的进程文件系统 ISO9660 : 大部分光盘所采用的文件系统 ufsSun : OS 所采用的文件系统 NCPFS : Novell 服务器所采用的文件系统 SMBFS : Samba 的共享文件系统 XFS : 由SGI开发的先进的日志文件系统,支持超大容量文件 JFS :IBM的AIX使用的日志文件系统 ReiserFS : 基于平衡树结构的文件系统 udf: 可擦写的数据光盘文件系统 4、虚拟文件系统VFS linux支持的所有文件系统称为逻辑文件系统,而linux在传统的逻辑文件系统的基础上增加料一个蓄念文件系统( Vitual File System ,VFS) 的接口层。 虚拟文件系统(VFS) 位于文件系统的最上层,管理各种逻辑文件系统,并可以屏蔽各种逻辑文件系统之间的差异,提供统一文件和设备的访问接口。 5、文件的逻辑结构 文件的逻辑结构可分为两大类: 字节流式的无结构文件 和 记录式的有结构文件。 由字节流(字节序列)组成的文件是一种无结构文件或流式文件 ,不考虑文件内部的逻辑结构,只是简单地看作是一系列字节的序列,便于在文件的任意位置添加内容。 由记录组成的文件称为记录式文件 ,记录是这种文件类型的基本信息单位,记录式文件通用于信息管理。 6、文件类型 普通文件 : 通常是流式文件 目录文件 : 用于表示和管理系统中的全部文件 连接文件 : 用于不同目录下文件的共享 设备文件 : 包括块设备文件和字符设备文件,块设备文件表示磁盘文件、光盘等,字符设备文件按照字符操作终端、键盘等设备。 管道(FIFO)文件 : 提供进程建通信的一种方式 套接字(socket) 文件: 该文件类型与网络通信有关 7、文件结构: 包括索引节点和数据 索引节点 : 又称 I 节点,在文件系统结构中,包含有关相应文件的信息的一个记录,这些信息包括文件权限、文件名、文件大小、存放位置、建立日期等。文件系统中所有文件的索引节点保存在索引节点表中。 数据 : 文件的实际内容。可以是空的,也可以非常大,并且拥有自己的结构。 8、ext2文件系统 ext2文件系统的数据块大小一般为 1024B、2048B 或 4096B ext2文件系统采用的索引节点(inode): 索引节点采用了多重索引结构,主要体现在直接指针和3个间接指针。直接指针包含12个直接指针块,它们直接指向包含文件数据的数据块,紧接在后面的3个间接指针是为了适应文件的大小变化而设计的。 e.g: 假设数据块大小为1024B ,利用12个直接指针,可以保存最大为12KB的文件,当文件超过12KB时,则要利用单级间接指针,该指针指向的数据块保存有一组数据块指针,这些指针依次指向包含有实际数据的数据块, 假如每个指针占用4B,则每个单级指针数据块可保存 1024/4=256 个数据指针,因此利用直接指针和单级间接指针可保存 1024*12+1024*256=268 KB的文件。当文件超过268KB时,再利用二级间接指针,直到使用三级间接指针。 利用直接指针、单级间接指针、二级间接指针、三级间接指针可保存的最大文件大小为: 1024*12+1024*256+1024*256*256+1024*256*256*256=16843020 KB,约 16GB 若数据块大小为2048B,指针占4B,则最大文件大小为: 2048*12+2048*512+2048*512*512+2048*512*512*512=268,960,792 KB 约 268GB 若数据块大小为4096B,指针占4B,则最大文件大小为: 4096*12+4096*1024+4096*1024*1024+4096*1024*1024*1024=4,299,165,744 KB ,约 4TB 注: 命令 tune2fs -l /dev/sda5 可查看文件系统 ext2文件系统最大文件名长度: 255个字符 ext2文件系统的缺点: ext2在写入文件内容的同时并没有同时写入文件meta-data, 其工作顺序是先写入文件的内容,然后等空闲时候才写入文件的meta-data。若发生意外,则文件系统就会处于不一致状态。 在重新启动系统的时候,linux会启动 fsk ( file system check) 的程序,扫描整个文件系统并试图修复,但不提供保证。 9、ext3文件系统: ext3基于ext2的代码,所以磁盘格式与ext2相同,使用相同的元数据。 ext2文件系统无损转化为ext3文件系统: tune2fs -j /dev/sda6 日志块设备( Journaling block device layer,JBD)完成ext3文件系统日志功能。JBD不是ext3文件系统所特有的,它的设计目标是为了向一个块设备添加日志功能。 当一个文件修改执行时,ext3文件系统代码将通知JBD,称为一个事务(transaction)。发生意外时,日志功能具有的重放功能,能重新执行中断的事务。 日志中的3种数据模式: 1)、data=writeback :不处理任何形式的日志数据,给用户整体上的最高性能 2)、data=odered :只记录元数据日志,但将元数据和数据组成一个单元称为事务(transaction) 。此模式保持所句句的可靠性与文件系统的一致性,性能远低于data=writeback模式,但比data=journal模式快 3)、data=journal :提供完整的数据及元数据日志,所有新数据首先被写入日志,然后才被定位。意外发生过后,日志可以被重放,将数据与元数据带回一致状态。这种模式整体性能最慢,但数据需要从磁盘读取和写入磁盘时却是3种模式中最快的。 ext3文件系统最大文件名长度: 255个字符 ext3文件系统的优点:可用性、数据完整性、速度、兼容性 10、ReiserFS文件系统 ReiserFS文件系统是由Hans Reiser和他领导的开发小组共同开发的,整个文件系统完全是从头设计的,是一个非常优秀的文件系统。也是最早用于Linux的日志文件系统之一。 ReiserFS的特点 先进的日志机制 ReiserFS有先进的日志(Journaling/logging)功能 机制。日志机制保证了在每个实际数据修改之前,相应的日志已经写入硬盘。文件与数据的安全性有了很大提高。 高效的磁盘空间利用 Reiserfs对一些小文件不分配inode。而是将这些文件打包,存放在同一个磁盘分块中。而其它文件系统则为每个小文件分别放置到一个磁盘分块中。 独特的搜寻方式 ReiserFS基于快速平衡树(balanced tree)搜索,平衡树在性能上非常卓越,这是一种非常高效的算法。ReiserFS搜索大量文件时,搜索速度要比ext2快得多。Reiserfs文件 系统使用B*Tree存储文件,而其它文件系统使用B+Tree树。B*Tree查询速度比B+Tree要快很多。Reiserfs在文件定位上速度非常 快。 在实际运用中,ReiserFS 在处理小于 4k 的文件时,比ext2 快 5 倍;带尾文件压缩功能(默认)的ReiserFS 比ext2文件系统多存储6%的数据。 支持海量磁盘 ReiserFS是一个非常优秀的文件系统,一直被用在高端UNIX系统上,可轻松管理上百G的文件系统,ReiserFS文件系统最大支持的文件系统尺寸为16TB。这非常适合企业级应用中。 优异的性能 由于它的高效存储和快速小文件I/O特点,使用ReiserFs文件系统的PC,在启动X窗口系统时,所花的时间要比在同一台机器上使用ext2文 件系统少1/3。另外,ReiserFS文件系统支持单个文件尺寸为4G的文件,这为大型数据库系统在linux上的应用提供了更好的选择。 |
|
|