Linux认证考试 - 论文联盟-南大CSSCI北大中文核心期刊职称毕业论文发表网站 zh-CNiwms.net <![CDATA[论文联盟-南大CSSCI北大中文核心期刊职称毕业论文发表网站]]> pic/logo.gif http://www.2868631.com/ <![CDATA[Linux常见的紧急情况的处理方法]]> Thu, 06 Oct 2005 13:25:00 GMT  

1、使用急救盘组进行维护

  急救盘组(也称为boot/root盘组),是系统管理?#21271;?#19981;可少的工具。?#30431;?#21487;以独立地启动和运行一个完整的Linux系统。 实际上,急救盘组中的第2张盘上就有一个完整的Linux系?#24120;?#21253;括root文件系?#24120;?#32780;第1张盘则存放了可启动的内核。

  使用急救盘组维护系统很简单。只需用这两张盘启动系统后,进入急救模式,这时使用的是root账户。为了能访问硬盘上的文件,需要手工安装硬盘文件系统。例如,用下面的命令可在/mnt目录中安装/dev/hda2盘上的ext2fs类型的Linux文件系?#24120;?

  # monut -t ext2/dev/hda2/mnt

  注:现在根目录是急救盘上的根目录。为了访问硬盘文件系统中的文件,必须先把它安装到某个目录下。这样,如果将硬盘上文件系统安装在/mmt目录下,则硬盘上原来的/etc/passwd文件的路径就是/mnt/etc/passwd

  2、文件系统被破坏时的处理方法

  当文件系统被破坏时,如果使用的是ext2fs类型的文件系?#24120;?#23601;可从软盘运e2fsck命令来修正文件系统中被损坏的数据。对于其他类型的文件系?#24120;?#21487;以使用相应的fsck命令。 当从软盘上检查文件系统时,最好不要mount安装

  注:文件系统被破坏的常见原因是超级块被损坏,超级块是文件系统的“头部”。它包含文件系统的状态、尺寸和空闲磁盘块等信息。如果损坏了一个文件系统的超级块(例如不小心直接将数据写到了文件系统的超级块分区中),那么系统可能会完全不识别该文件系?#24120;?#36825;样也就不能安装它了,即使采用e2fsck命令也不能处理这个问题。

  不过,ext2fs类型的文件系统将超级块的内容进行了备份,并存放于驱动程序的块组(block group)边界。可以用如下的命令通知e2fsck使用超级块的备份
 
  # e2fsck -b 8193

  是指文件系统所在的分区,-b 8193选项用于显示使用存放在文件系统中的8193块的超级块的备份数据。


 3、?#25351;?#20002;失的文件

  如果不小心删除了重要的文件,那么没有办法直接?#25351;礎?#20294;是还可以将相应的文件从急救盘复制到硬盘上。例如,如果删除了文件/bin/login,此?#27605;?#32479;无法正常进到登录界面,可以用急救盘组启动系?#24120;?#23558;硬盘文件系统安装到/mnt目录下,然后使用下述命令:
  
  #cp -a /bin/login /mnt/bin

  “-a”选项用于告诉cp在拷贝?#21271;?#25345;文件的访问权限。当然如果被删除的基本文件不在“急救盘组”中,也就不能用这种方法了。如果以前做过系统备份的话,那么也可以用以前的备份来?#25351;礎?

  4、函数库破坏时的处理方法

  如果不小心将系统函数库文件破坏了,或者破坏了/lib目录下符号链接,那么将导致依赖这些库的命令无法执行。最简单的解决办法是用急救盘组启动系统,在/mnt目录中安装硬盘文件系?#24120;?#28982;后修复/mnt/lib目录下的库。

  5、无法用root账号登录系统

  由于系统管理员的疏忽,或者由于系统受到黑客的入侵,系统管理员可能无法用root帐号登录系统。
  
  对于第1种情况,可能是系统管理员忘记了root密码,用急救盘组就可以解决问题。

  对于第2种情况,由于很可能是密码被黑客修改了,因此系统管理员无法进入系?#24120;?#20063;就是说,Linux系统完全失去了控制,因此应尽快重新获得系统的控制权。在取得 root权限后,还应检查系统被破坏的情况,以防被黑客再次入侵。

  需要做的最主要的工作就是重新设置root的密码,获得Linux操作系统的控制权。首先用急救盘组启动系?#24120;?#28982;后将硬盘的文件系统安装到/mnt目录下,编辑/mnt/etc/passwd文件,将其对应于root账户的一行?#29992;?#21475;令域置空,如下所示:

  root::0:0:root:/root:bin/bash

  注:如果系统使用 shadow工具,就需要对文件/etc/shadow进行上述的操作,使root登录系统不需要口令。

  这样,root账户就没有口令了。当重新从硬盘启动Linux系统时,就可以用root账户登录(系统不会要求输入密码)。进入系统后,再用命令passwd设置新的口令。


 6、Linux系统不能启动

  一般来说,如果系统管理员不能正常进入系?#24120;?#23601;需要考虑使用急救盘组进入急救模式排除系统的?#25910;稀?#20294;在没有制作急救盘组的情况下,Linux系统不能启动,该怎么办?

  在个人计算机使用 Linux系统时,通常都是Linux和MS Windows 9x或MS Windows NT并存的。由于重新安装其他的操作系?#24120;?#32463;常会导致原有的Linux不能启动。这主要是因为,这些操作系统默认为计算机中没有其他的操作系?#24120;?#22240;而改写了硬盘的主引导记录(MBR),冲掉了Linux的LILO系统引导程序。

  如果有急救盘组,那么很简单,用第一张启动盘启动硬盘的Linux系?#24120;?#37325;新运行LILO命令,就可以将LILO系统引导程序写回硬盘的主引导记录。再次开机即可。

  如果没有系?#31216;?#21160;盘,怎样?#25351;?#30828;盘上的Linux呢?在这种情况下,如果知道Linux在硬盘上的确切安装分区,且有loadlin程序,就可以重?#36335;?#22238;Linux。 loadlin程序是DOS下的程序,运行它可以从DOS下直接启动Linux,快速进入Linux环境。在 Red Hat Linux 6.0光盘的 dosutil/目录下就有这个程序。除此之外,还需要一个 Linux启动内核的映像文件。在 Red Hat linux 6.0光盘的 images/目录下有这个文件——vmlinuz。

  例如,在Windows 98系统下面,进入DOS的单用户模式,然后运行下述的loadlin命令,即可重新进入Linux系?#24120;?

  loadlin vmlinuz root=/dev/hda8

  /dev/hda8是Linux的root文件系统所在的硬盘分区?#24674;謾?#21629;令执行后,就引导Linux系统。用root登录后,运行LILO命令,则重新将LILO装入MBR,回到以前多操作系统并存使用的状态。

]]>
<![CDATA[Linux文件权限的设置?#35760;蒥]> Thu, 06 Oct 2005 13:25:00 GMT  

Windows系?#31216;?#23454;和Linux系统有相似的地方,Windows系统文件、目录的属性有只读、隐藏,而Linux也一样。

  Linux中,每一个文件都具有特定的属性。主要包括文件类型和文件权限两个方面。可以分为5种不同的类型:普通文件、目录文件、链接文件、设备文件和管道文件。

  所谓的文件权限,是指对文件的访问权限,包括对文件的读、写、删除、执行。Linux 是一个多用户操作系?#24120;?#23427;允许多个用户同时登录和工作。因此 Linux 将一个文件或目录与一个用户或组联系起来。访问控制列表(ACL:Access Control List)为计算机提供更好的访问控制,它的作用是限制包括root用户在内的所有用户对文件、?#35797;?#25110;者套接字的访问。下面就来教大家简单的设置方法。

  步骤1 检查系统核心

  首先检查你的Linux系统的核心是否有支持ACL的功能。因为Linux系统并不是每一个版本的核心都有支持ACL的功能,而最简单的方法就是检查系统目前的核心能否支持:

  [root@mail /]# cat /boot/config-kernel-version | grep -i ext3

  CONFIG_EXT3_FS=m

  CONFIG_EXT3_IDEX=y

  CONFIG_EXT3_FS_XATTR_SHARING=y

  CONFIG_EXT3_FS_XATTR_USER=y

  CONFIG_EXT3_FS_XATTR_TRUSTED=y

  CONFIG_EXT3_FS_ACL=y

  此时如果能看到上面的几项则表示已经编译到核心中,ext3文件系统已支持ACL功能,这些功能在编译核心选项中都可以?#19994;健?#22914;果编译时?#20063;?#21040;,可以到ACL的官方网站来安装Kernel(acl.bestbits.at/)。

  步骤2 ?#20197;?#20998;区

  你可以用下列的方式?#20197;?#20998;区并启用ACL:

  #mount -t ext3 -o acl /dev/sda1 /fs1

  你也可以直?#26377;?#22312;/etc/fstab文件中,这样就可以在开机后支持ACL功能:

  #vi /etc/fstab

  步骤3 设置ACL权限


  ACL常常针对个别用户来进行设置,下面是多个不同的例子:

  例如需要创建test1、test2、test3三个用户,可以先用root身份登录系?#24120;?#28982;后执行以下命令?#30452;?#21019;建三个用户名和密码:

  [root@mail root]#adduser test1
  [root@mail root]#adduser test2
  [root@mail root]#adduser test3
  [root@mail root]#passwd test1
  [root@mail root]#passwd test2
  [root@mail root]#passwd test3

  然后mount一个ext3文件到目录/fs1:
  [root@mail root]#mount -t ext3 -o acl /dev/sda1 /fs1

  再将test1 建立的文件设置读写的权限给test2 :
  [root@mail root]#chmod -R 777 /fs1

  ?#30431;?#26377;的用户都能增加文件到目录的权限:

  先用test1登录系?#24120;?#25191;行命令:
  [test1@mail test1]# cd /fs1
  [test1@mail fs1]# echo "Create by test1" > test1.txt
  [test1@mail fs1]# chmod go-r test1.txt
  [test1@mail fs1]# ll test1.txt
  -rw------- 1 test1 test1 17 Jul 14 22:11 test1.txt

  而如下操作则可以让除了test1有读写的权限外其他人没有读写test1.txt的权限(root除外),先用test2 登录系统后执行以下命令:
  [test2@mail test2]# cd /fs1
  [test2@mail fs1]# cat test1.txt
  cat : test1.txt Permission denied

  接着用test1登录系?#24120;?#25191;行如下命令:
  [test1@mail fs1]# setfacl -m u:test2:rw test1.txt

  这样就修改权限允许test2 有这个文件的读写权限。再看一下它的文件属性的变化:
  [test1@mail fs1]# ll
  -rw-rw-r--+ 1 test1 test1 10 Feb 16 13:52 test1.txt

  会看到后面多了一个“+?#20445;?#34920;示这个文件使用ACL的属性设置,再用命令getfacl来看ACL的文件属性设置:
  [test1@mail fs1]# getfacl test1.txt
  # file: test1.txt
  # owner: test1
  # group: test1
  user::rw-
  user:test2:rw-
  group::rw-
  mask::rw-
  other::r--

  可以看到 test2 有权限读写这个文件。

  我们再用test2登录系统执行以下命令,看看发生了什么?
  [test2@mail test2]# cd /fs1
  [test2@mail fs1]# cat test1.txt
  Create by test1

  原来test2可以读取test1.txt文件了。
  [test2@mail fs1]# echo "Modify by test2" >> test1.txt
  [test2@mail fs1]# cat test1.txt
  Create by test1
  Modify by test2

  现在test2也可以修改test1.txt文件了。

  接着用test3 登录系?#24120;?BR>  [test3@mail test3]# cd /fs1
  [test3@mail fs1]# cat test1.txt
  cat : test1.txt Permission denied

  嘿嘿,除了test1、test2外没有其他用户有读写test1.txt的权限(root 除外)。

  看着虽然有点晕,其实命令就是这么一两条,主要是把各种情况给大家讲清楚,这样,大?#20197;?#20351;用Linux中才会发现,比起脆弱的Windows的权限防护,Linux实在是做得相当不错!

]]>
<![CDATA[Linux文件系统的反删除方法简介]]> Thu, 06 Oct 2005 13:25:00 GMT  

作为一个多用户、多任务的操作系?#24120;琇inux下的文件一旦被删除,是难以?#25351;?#30340;。尽管删除命令只是在文?#21040;?#28857;中作删除标记,并不真正清除文件内容,但是其它用户和一些?#34892;?#30424;动作的进程会很快覆盖这些资料。不过,对于家庭单机使用的Linux,或者误删档后及时补救,还是可以?#25351;?#30340;。

1.Ext2文件系统结构的简单介绍

  在Linux所用的Ext2文件系统中,文件是以块为单位存储的,默认情况下每个块的大小是1K,不同的块以块号区分。每个档还有一个节点,节点中包含有档所有者,读写权限,文件类型等信息。对于一个小于12个块的档,在节点中直接存储档数据块的块号。如果档大于12个块,那么节点在12个块号之后存储一个间接块的块号,在这个间接块号所对应的块中,存储有256个档数据块的块号(Ext2fs中每个块号占用4字节,这样一个块中所能存储的块号就是1024/4=256)。如果有更大的档,那么还会在节点中出现二级间接块和三级间接块。

2。?#25351;?#34987;误删档的方法

  大多数Linux发行版都提供一个debugfs工具,可以用来对Ext2文件系统进行编辑操作。不过在使用这个工具之前,还有一些工作要做。

  首先以只读方式重新?#20197;?#34987;误删的档所在分区。使用如下命令:(假设文件在/usr分区)

mount –r –n –o remount /usr

-r表示只读方式?#20197;兀?n表示不写入/etc/mtab,如果是?#25351;?etc上的档,就加上这个?#38382;?#22914;果系统说xxx partion busy,可以用fuser命令查看一下是哪些进程使用这个分区上的檔:

fuser –v –m /usr

如果没有什么重要的进程,用以下命令停掉它们:

fuser -k –v –m /usr

然后就可以重新?#20197;?#36825;些文件系统了。

  如果是把所有的档统一安装在一个大的/分区当中,可以在boot提示符下用linux single进入单用户模式,尽?#32771;?#23569;系统进程向硬盘写入资料的机会,要不干脆把硬盘?#20197;?#21035;的机器上。另外,?#25351;?#20986;来的资料不要写到/上面,避免破?#30340;?#20123;有用的资料。如果机器上有dos/windows,可以写到这些分区上面:

mount –r –n /dev/hda1 /mnt/had

然后就可以执行debugfs:(假设Linux在 /dev/hda5)

#debugfs /dev/hda5

就会出现debugfs提示符debugfs:

使用lsdel命令可以列出很多被删除的文件的信息:

debugfs:lsdel
debugfs: 2692 deleted inodes found.
Inode Owner Mode Size Blocks Time deleted
164821 0 100600 8192 1/ 1 Sun May 13 19:22:46 2001
…………………………………………………………………………………
36137 0 100644 4 1/ 1 Tue Apr 24 10:11:15 2001
196829 0 100644 149500 38/ 38 Mon May 27 13:52:04 2001

debugfs:

  列出的档有很多(这里?#19994;?692个),第一字段是?#21040;?#28857;号,第二字段是档所有者,第三字段是读写权限,接下来是档大小,占用块数,删除时间。然后就可以根据档大小和删除日期判断那些是我们需要的。比如我们要?#25351;?#33410;点是

196829的文件:

可以先看看文件资料状态:

debugfs:stat <196829>
Inode: 196829 Type: regular Mode: 0644 Flags: 0x0 Version: 1
User: 0 Group: 0 Size: 149500
File ACL: 0 Directory ACL: 0
Links: 0 Blockcount: 38
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x31a9a574 -- Mon May 27 13:52:04 2001
atime: 0x31a21dd1 -- Tue May 21 20:47:29 2001
mtime: 0x313bf4d7 -- Tue Mar 5 08:01:27 2001
dtime: 0x31a9a574 -- Mon May 27 13:52:04 2001
BLOCKS:
594810 594811 594814 594815 594816 594817
………………………………….
TOTAL: 38

然后就可以用dump指令?#25351;?#25991;件:

debugfs:dump <196829> /mnt/hda/01.sav

这样就把档?#25351;?#20986;来了。退出debugfs:

debugfs:quit

另一种方法是手工编辑inode:

debugfs:mi <196829>
Mode [0100644]
User ID [0]
Group ID [0]
Size [149500]
Creation time [0x31a9a574]
Modification time [0x31a9a574]
Access time [0x31a21dd1]
Deletion time [0x31a9a574] 0
Link count [0] 1
Block count [38]
File flags [0x0]
Reserved1 [0]
File acl [0]
Directory acl [0]
Fragment address [0]
Fragment number [0]
Fragment size [0]
Direct Block #0 [594810]
…………………………….
Triple Indirect Block [0]

使用mi指令后每次显示一行信息以供编辑,其它行可以直接按回车表?#25937;?#35748;,把deletion time?#26576;?(未删除),Link count?#26576;?。改好后退出debugfs:

debugfs:quit

然后用fsck检查/dev/hda5

fsck /dev/hda5

程序会说?#19994;?#20002;失的数据块,放在lost+found里面。这个目录里的文件就是我们要的东东。

]]>
使命召唤ol停运公告
十一运夺金两期计划 十三水棋牌游戏现金 黑龙江时时号码走势 人牛牛押注几门稳赢 微信捕鱼游戏送分 8号彩票论坛看一看 32排九牌大小顺序图片 天天捕鱼现 彩6app彩票软件 11选5彩票中奖助手