Linux下必须要学的系统安全命令第2/4页

 更新时间:2007年11月27日 14:12:45   作者:  

  数字属性的格式应为3个0到7的八进制数,其顺序是(u)(g)(o)文件名,以空格分开的要改变权限的文件列表,支持通配符。 

  数字表示的权限的含义如下:0001为所有者的执行权限;0002为所有者的写权限;0004为所有者的读权限;0010为组的执行权限;0020为组的写权限;0040为组的读权限;0100为其他人的执行权限;0200为其他人的写权限;0400为其他人的读权限;1000为粘贴位置位;2000表示假如这个文件是可执行文件,则为组ID为位置位,否则其中文件锁定位置位;4000表示假如这个文件是可执行文件,则为用户ID为位置位。 

  3.实例  
  如果一个系统管理员写了一个表格(tem)让所有用户填写,那么必须授权用户对这个文件有读写权限,可以使用命令:  
  #chmod 666 tem  

  上面代码中,这个666数字是如何计算出来的呢?0002为所有者的写权限,0004为所有者的读权限,0020为组的写权限,0040为组的读权限,0200为其他人的写权限,0400为其他人的读权限,这6个数字相加就是666(注以上数字都是八进制数)。  

  tem文件的权限是-rw-rw-rw-,即用户对这个文件有读写权限。 

  如果用字符权限设定使用下面命令:  
  #chmod a =wx tem  

chown  

  1.作用  
  更改一个或多个文件或目录的属主和属组。使用权限是超级用户。  

  2.格式  
  chown [选项] 用户或组 文件  

  3.主要参数  
  --dereference:受影响的是符号链接所指示的对象,而非符号链接本身。  
  -h, --no-dereference:会影响符号链接本身,而非符号链接所指示的目的地(当系统支持更改符号链接的所有者,此选项才有效)。  
  --from=目前所有者:目前组只当每个文件的所有者和组符合选项所指定的,才会更改所有者和组。其中一个可以省略,这已省略的属性就不需要符合原有的属性。  
  -f, --silent, --quiet:去除大部分的错误信息。  
  -R, --recursive:递归处理所有的文件及子目录。  
  -v, --verbose:处理任何文件都会显示信息。  

  4.说明  
  chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或用户ID;组可以是组名或组ID;文件是以空格分开的要改变权限的文件列表,支持通配符。系统管理员经常使用chown命令,在将文件拷贝到另一个用户的目录下以后,让用户拥有使用该文件的权限。  

  5.应用实例  
  1.把文件shiyan.c的所有者改为wan  
  $ chown wan shiyan.c  

  2.把目录/hi及其下的所有文件和子目录的属主改成wan,属组改成users。  
  $ chown - R wan.users /hi  

  chattr

  1.作用  
  修改ext2和ext3文件系统属性(attribute),使用权限超级用户。

  2.格式  
  chattr [-RV] [-+=AacDdijsSu] [-v version] 文件或目录  

  3.主要参数  
  -R:递归处理所有的文件及子目录。  
  -V:详细显示修改内容,并打印输出。  
  -:失效属性。  
  +:激活属性。  
  = :指定属性。  
  A:Atime,告诉系统不要修改对这个文件的最后访问时间。  
  S:Sync,一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘。  
  a:Append Only,系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。  
  i:Immutable,系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。  
  D:检查压缩文件中的错误。  
  d:No dump,在进行文件系统备份时,dump程序将忽略这个文件。  
  C:Compress,系统以透明的方式压缩这个文件。从这个文件读取时,返回的是解压之后的数据;而向这个文件中写入数据时,数据首先被压缩之后才写入磁盘。  
  s:Secure Delete,让系统在删除这个文件时,使用0填充文件所在的区域。  
  u:Undelete,当一个应用程序请求删除这个文件,系统会保留其数据块以便以后能够恢复删除这个文件。  

  4.说明  
  chattr命令的作用很大,其中一些功能是由Linux内核版本来支持的,如果Linux内核版本低于2.2,那么许多功能不能实现。同样-D检查压缩文件中的错误的功能,需要2.5.19以上内核才能支持。另外,通过chattr命令修改属性能够提高系统的安全性,但是它并不适合所有的目录。chattr命令不能保护/、/dev、/tmp、/var目录。

  5.应用实例  
  1.恢复/root目录,即子目录的所有文件  
  # chattr -R +u/root  

  2.用chattr命令防止系统中某个关键文件被修改  
  在Linux下,有些配置文件(passwd ,fatab)是不允许任何人修改的,为了防止被误删除或修改,可以设定该文件的“不可修改位(immutable)”,命令如下:  
  # chattr +i /etc/fstab  

  sudo  

  1.作用  
  sudo是一种以限制配置文件中的命令为基础,在有限时间内给用户使用,并且记录到日志中的命令,权限是所有用户。

  2.格式  
  sudo [-bhHpV] [-s ] [-u <用户>] [指令]  
  sudo [-klv]  

  3.主要参数  
  -b:在后台执行命令。  
  -h:显示帮助。  
  -H:将HOME环境变量设为新身份的HOME环境变量。  
  -k:结束密码的有效期,即下次将需要输入密码。  
  -l:列出当前用户可以使用的命令。  
  -p:改变询问密码的提示符号。  
  -s :执行指定的Shell。  
  -u <用户>:以指定的用户为新身份,不使用时默认为root。  
  -v:延长密码有效期5分钟。  

  4.说明  
  sudo命令的配置在/etc/sudoers文件中。当用户使用sudo时,需要输入口令以验证使用者身份。随后的一段时间内可以使用定义好的命令,当使用配置文件中没有的命令时,将会有报警的记录。sudo是系统管理员用来允许某些用户以root身份运行部分/全部系统命令的程序。一个明显的用途是增强了站点的安全性,如果需要每天以超级用户的身份做一些日常工作,经常执行一些固定的几个只有超级用户身份才能执行的命令,那么用sudo是非常适合的。 

ps  

  1.作用  
  ps显示瞬间进程 (process) 的动态,使用权限是所有使用者。  

  2.格式  
  ps [options] [--help]  

  3.主要参数  
  ps的参数非常多, 此出仅列出几个常用的参数。  
  -A:列出所有的进程。  
  -l:显示长列表。  
  -m:显示内存信息。  
  -w:显示加宽可以显示较多的信息。  
  -e:显示所有进程。  
  -a:显示终端上的所有进程,包括其它用户的进程。  
  -au:显示较详细的信息。  
  -aux:显示所有包含其它使用者的进程。  

  4.说明  
  要对进程进行监测和控制,首先要了解当前进程的情况,也就是需要查看当前进程。ps命令就是最基本、也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行、运行的状态、进程是否结束、进程有没有僵尸、哪些进程占用了过多的资源等。图2给出了ps-aux命令详解。大部分信息都可以通过执行该命令得到。最常用的三个参数是u、a、x。下面就结合这三个参数详细说明ps命令的作用:ps aux  

  第2行代码中,USER表示进程拥有者;PID表示进程标示符;%CPU表示占用的CPU使用率;%MEM占用的物理内存使用率;VSZ表示占用的虚拟内存大小;RSS为进程占用的物理内存值;TTY为终端的次要装置号码。  

  STAT表示进程的状态,其中D为不可中断的静止(I/O动作);R正在执行中;S静止状态;T暂停执行;Z不存在,但暂时无法消除;W没有足够的内存分页可分配;高优先序的进程;N低优先序的进程;L有内存分页分配并锁在内存体内 (实时系统或 I/O)。START为进程开始时间。TIME为执行的时间。COMMAND是所执行的指令。  

  4.应用实例  
  在进行系统维护时,经常会出现内存使用量惊人,而又不知道是哪一个进程占用了大量进程的情况。除了可以使用top命令查看内存使用情况之外,还可以使用下面的命令:  
  ps aux   sort +5n  

  who  

  1.作用  
  who显示系统中有哪些用户登陆系统,显示的资料包含了使用者ID、使用的登陆终端、上线时间、呆滞时间、CPU占用,以及做了些什么。 使用权限为所有用户。 

  2.格式  
  who - [husfV] [user]  

  3.主要参数  
  -h:不要显示标题列。  
  -u:不要显示使用者的动作/工作。  
  -s:使用简短的格式来显示。  
  -f:不要显示使用者的上线位置。  
  -V:显示程序版本。  

  4.说明  

  该命令主要用于查看当前在线上的用户情况。如果用户想和其它用户建立即时通信,比如使用talk命令,那么首先要确定的就是该用户确实在线上,不然talk进程就无法建立起来。又如,系统管理员希望监视每个登录的用户此时此刻的所作所为,也要使用who命令。who命令应用起来非常简单,可以比较准确地掌握用户的情况,所以使用非常广泛。

  动手练习  

  1.使用Linux命令检测系统入侵者  
  安装过Mandrake Linux和Red Hat Linux的用户都会知道,Linux系统会内置三种不同级别(标准、高、更高)的防火墙,当进行了Linux服务器的安装和一些基本的设置后,服务器应该说是比较安全的,但是也会有黑客通过各种方法利用系统管理员的疏忽侵入系统。如何快速查找黑客非常重要。一般来说,可以使用命令查询黑客是否入侵,见表1。  

  举例说明,如果黑客嗅探网络,那么它必须使网卡接口处于混杂模式,使用下面命令进行查询:  

  #ifconfig -a  
  eth0 Link encap:Ethernet HWaddr 00:00:E8:A0:25:86  
  inet addr:192.168.1.7 Bcast:192.168.1.255 Mask:255.255.255.0  
  UP BROADCAST RUNNING PROMISCUOUS MTU:1500 Metric:1  
  ......  

  从这个命令的输出中,可以看到上面讲到的这些概念。第一行的00:00:E8:A0:25:86是mac地址,第二行的192.168.1.7是IP地址,第四行讲的是接收数据状态,这时正在被黑客嗅探。一般而言,网卡有几种接收数据帧的状态,如Broadcast、Multicast、Promiscuous等。Broadcast是指接收所有类型为广播报文的数据帧;Multicast是指接收特定的组播报文;Promiscuous则是通常说的混杂模式,是指对报文中的目的硬件地址不加任何检查、全部接收的工作模式。  

相关文章

最新评论