项目二:管理与维护Linux系统(任务三、四、五、六)

任务三:使用vim编辑器配置网络

【子任务一】使用【setup】命令配置IP地址

第1步:运行【setup】命令

项目二:管理与维护Linux系统(任务三、四、五、六)_第1张图片

第2步:选择网络配置

项目二:管理与维护Linux系统(任务三、四、五、六)_第2张图片

项目二:管理与维护Linux系统(任务三、四、五、六)_第3张图片


第3步:选择网卡

项目二:管理与维护Linux系统(任务三、四、五、六)_第4张图片

第4步:填写IP地址

项目二:管理与维护Linux系统(任务三、四、五、六)_第5张图片

第5步:保存IP地址配置选项

项目二:管理与维护Linux系统(任务三、四、五、六)_第6张图片

第6步:重启网络服务并查看IP地址信息

项目二:管理与维护Linux系统(任务三、四、五、六)_第7张图片

【子任务二】使用vim打开网络开关

第1步:打开网卡配置文件

【vim /etc/sysconfig/network-scripts/ifcfg-eth0】使用Vim编辑器打开网卡配置文件。

第2步:编辑“ifcfg-eth0”文件

项目二:管理与维护Linux系统(任务三、四、五、六)_第8张图片

第3步:退出并保存编辑的文件

项目二:管理与维护Linux系统(任务三、四、五、六)_第9张图片

第4步:打开网络的总开关

项目二:管理与维护Linux系统(任务三、四、五、六)_第10张图片

第5步:重启网络服务

项目二:管理与维护Linux系统(任务三、四、五、六)_第11张图片

对网络相关的任何配置文件进行修改后都需要重启网络服务或者注销系统,让配置生效。

【service network restart】或【/etc/init.d/network restart】重启network服务使之生效

【ifconfig】查询IP地址信息


第6步:总结vim编辑器的简单操作

vim 撤销和恢复操作

     在不可编辑模式下,使用 u 即可撤销上一次操作,使用 Ctrl+r 恢复上一次操作。

vim 区块选择和复制粘贴

     vim 进入某个文件,按 v,进入 VISUAL 模式,使用 h,j,k,l 或者方向键移动光标即可选中内容,按 y 完成复制,在需要粘贴的地方按 p 完成粘贴。

     按 v 进入 VISUAL 模式,再次按 v 即可退出 VISUAL 模式。如果复制了内容,也可以按 i 进入编辑模式进行编辑操作,再 esc 退出来使用 p 完成粘贴。

vim 移动到开头和末尾

文档开头和末尾

     gg:命令将光标移动到文档开头

     G:命令将光标移动到文档末尾

一行的开头和末尾

     0 移到一行开头

     $ 移到一行末尾

vim 翻页

相当于 page up 和 page down 的效果。

     Ctrl+f 往前滚动一整屏

     Ctrl+b 往后滚动一整屏

     Ctrl+d 往前滚动半屏

     Ctrl+u 往后滚动半屏

vim 删除一行或多行

     dd   删除一行

     ndd 删除以当前行开始的n行

vim 复制多行

    :9,15 copy 16  或 :9,15 co 16

由此可有:

    :9,15 move 16  或 :9,15 m 16 将第9行到第15行的文本内容到第16行的后面

:q

退出文件,没有修改

:q!

放弃修改并退出文件

:wq

保存并退出文件

【子任务三】使用vim配置DNS地址

第1步:打开DNS的配置文件

输入【vim /etc/resole.conf】命令打开DNS的配置文件。

第2步:配置DNS地址

项目二:管理与维护Linux系统(任务三、四、五、六)_第12张图片


第3步:总结vim的使用

1、命令模式,它可以让用户在程序(文本)中四处移动光标,而不改变文本本身--------用户仅能输入命令。当用户刚启动bi后,bi就处在名利姑娘模式下。不管在什么时候,只要按一下Esc键,bi就回到命令模式下。

2、插入模式,它可以让用户输入或编辑文本。在命令模式下,按字母i或a(一定要小写)就可以切换插入模式。如果按的是字母i,则在光标前插入文本;如果按的是字母a ,则在光标后加入文本。

3、最后行模式,用户可以用它来保存文件、装入另外的文件或退出vi。现按Esc键回到命令模式(除非vi已经在命令模式下)再按冒号(:)键,就会转换到最后行模式。此时光标停留在状态行上,并等待用户输入所需的最后行模式的命令。

Vi编辑器是一个命令行编辑器,类似于Windows下的记事本。
它有三种基本的操作模式:
1.指令模式:是vi的默认模式,该状态等待用户输入命令 
2.文本输入模式(编辑模式):该状态可以编辑文本
3.末行模式:该状态光标处于文本最末行,以“:”打头
各个模式之间的切换规则:
1.输入vi 文件名.后缀名,首先进入指令模式。
2.在指令模式下输入a/i/o进入文本输入模式。
3.文本编辑模式下按Esc键进入末行模式。
各个模式下可以进行的操作:
1.指令模式下可以输入:移动光标功能键0/h/j/k/l$+A/PageDown/PageUp;进入文本编辑模式功能键a/i/o
2.文本编辑模式下可以输入:任何内容
 
  

3.末行模式下可以输入:q/:q!/:wq

【子任务四】配置网卡多IP地址信息

第1步:使用命令配置临时IP地址

有时为了临时方便及工作需要,需要配置一个临时IP地址,重启网络服务或重启系统后就会失效,不会永久保存在系统中,可以通过如下命令实现:

ifconfig eth0 192.168.1.2 broadcast 192.168.1.1 netmask 255.255.255.0

  1. eth0是代表第一块网卡,因此,如果你不确认的时候,必须要使用ifconfig查看一下有几块网卡,想配置的是不是eth0
  2. 192.168.1.2是想要配置的IP
  3. broadcast 192.168.1.1 代表了网关
  4. netmask 就是子网掩码了

第2步:临时将一个网卡绑定多个IP

在【ifconfig eth】

1.执行“cp ifcfg-eth0 ifcfg-eth0:1”复制eth0的配置文件,文件名在原文件名后加":1". //注:这个ifcfg-eth0:1 也可以换成ifcfg-eth1或ifcfg-eth2之类的都行。
2.编辑修改ifcfg-eth0:1中相应的字段,具体如下: 
# VIA Technologies, Inc. VT6102 [Rhine-II]
       DEVICE=eth0     //这里是设备,需要修改成为eht0:1
       BOOTPROTO=none
       BROADCAST=1Array2.168.1.255   //IP地址的广播地址,对应即可
       HWADDR=00:14:2A:2D:5Array:6B  //网卡的Mac地址,不需要修改
       IPADDR=1Array2.168.1.17         //IP地址,改成你想要的
       IPV6INIT=yes
       IPV6_AUTOCONF=yes
       NETMASK=255.255.255.0     //子网掩码,对应即可
       NETWORK=1Array2.168.1.0       //网络地址,对应即可
       ONBOOT=yes
       GATEWAY=1Array2.168.1.1       //网关地址,对应即可
       TYPE=Ethernet
       PEERDNS=yes

       USERCTL=no

配置完成后,到/etc/init.d/目录下,执行./network restart使网络配置生效。

或者直接#/etc/init.d/network restart 即可。

第3步:一个网卡永久绑定多个IP

可能某些情况下需要给服务器或者笔记本电脑的网卡配置多个IP地址,Linux系统的IP地址配置存放在

/etc/sysconfig/netwok-scripts/目录下,默认的配置文件为:ifcfg-eth0(只有1个以太接口时)

如果需要增加第二个IP地址只需要复制一个配置文件命名为ifcfg-eth0:x(x可以使0~254中的任意一个),修改其中的IP地址即可,配置文件中红色部分是必须的,其他的可选,可以直接删除掉,留着也没事。

IP地址配置的命令:ifconfig

service network restart //重启网络服务,使IP地址配置生效。

注意各个配置文件中的IP地址不要相同,否则会报错:SIOCSIFBROADCAST: Cannot assign requested address

有多个网卡的注意mac地址和配置文件对应关系,否则可能出现网络不通参考配置:

1)/etc/sysconfig/netwok-scripts/ifcfg-eth0:0      

DEVICE=eth0:0   ONBOOT=yes 

IPADDR=124.161.87.1 NETMASK=255.255.255.0 TYPE=Ethernet

HWADDR=00:17:08:2d:93:66 BOOTPROTO=none USERCTL=no IPV6INIT=no PEERDNS=yes BROADCAST=124.161.87.255

NETWORK=124.161.87.0

GATEWAY=124.161.87.254

//下面是第二个IP地址的配置文件 2)1)/etc/sysconfig/netwok-scripts/ifcfg-eth0:1          

DEVICE=eth0:1 ONBOOT=yes IPADDR=192.168.0.1

NETMASK=255.255.255.0 TYPE=Ethernet

HWADDR=00:17:08:2d:93:66

BOOTPROTO=none USERCTL=no IPV6INIT=no PEERDNS=yes BROADCAST=192.168.0.255 NETWORK=192.168.0.0

【子任务五】操作网卡与测试网络

第1步:通过命令操作网卡

ifconfig是查看网卡的信息。

将网卡禁用 ifconfig eth0 down 将网卡启用 ifconfig eth0 up

用ifconfig修改MAC地址:

ifconfig eth0 hw ether 00:AA:BB:CC:dd:EE

第2步:测试网络状态

ping:

它是用来检查网络是否通畅或者网络连接速度的命令。作为一个生活在网络上的管理员或者黑客来说,ping命令是第一个必须掌握的DOS命令,它所利用的原理是这样的:网络上的机器都有唯一确定的IP地址,我们给目标IP地址发送一个数据包,对方就要返回一个同样大小的数据包,根据返回的数据包我们可以确定目标主机的存在,可以初步判断目标主机的操作系统等。下面就来看看它的一些常用的操作。先看看帮助吧,在DOS窗口中键入:ping /? 回车,在此,我们只掌握一些基本的很有用的参数就可以了(下同)。

-t 表示将不间断向目标IP发送数据包,直到我们强迫其停止。试想,如果你使用100M的
宽带接入,而目标IP是56K的小猫,那么要不了多久,目标IP就因为承受不了这么多的数据而掉线,呵呵,一次攻击就这么简单的实现了。

-l 定义发送数据包的大小,默认为32字节,我们利用它可以最大定义到65500字节。结合上面介绍的-t参数一起使用,会有更好的效果哦。

-n 定义向目标IP发送数据包的次数,默认为3次。如果
网络速度比较慢,3次对我们来说也浪费了不少时间,因为现在我们的目的仅仅是判断目标IP是否存在,那么就定义为一次吧。

说明一下,如果-t 参数和 -n参数一起使用,ping命令就以放在后面的参数为标准,比如“ping IP -t -n 3”,虽然使用了-t参数,但并不是一直ping下去,而是只ping 3次。另外,ping命令不一定非得ping IP,也可以直接ping
主机域名,这样就可以得到主机的IP。

netstat
这是一个用来查看网络状态的命令,操作简便功能强大。

-a 查看本地机器的所有开放端口,可以有效发现和预防木马,可以知道机器所开的服务等信息。

这里可以看出本地机器开放有FTP服务、Telnet服务、邮件服务、WEB服务等。用法:netstat -a IP。
-r 列出当前的路由信息,告诉我们本地机器的网关子网掩码等信息。用法:netstat -r IP。 

net start
使用它来启动远程主机上的服务。当你和远程主机建立连接后,如果发现它的什么服务没有启动,而你又想利用此服务怎么办?就使用这个命令来启动吧。用法:net start servername,如图9,成功启动了telnet服务。

net use
把远程主机的某个共享资源影射为本地盘符,图形界面方便使用,呵呵。命令格式为net use x: \\IP\sharename。上面一个表示把192.168.0.5IP的共享名为magic的目录影射为本地的Z盘。下面表示和192.168.0.7建立IPC$连接(net use \\IP\IPC$ "password" /user:"name")。

建立了IPC$连接后,呵呵,就可以上传文件了:copy nc.exe \\192.168.0.7\admin$,表示把本地目录下的nc.exe传到远程主机,结合后面要介绍到的其他DOS命令就可以实现入侵了。

net start
使用它来启动远程主机上的服务。当你和远程主机建立连接后,如果发现它的什么服务没有启动,而你又想利用此服务怎么办?就使用这个命令来启动吧。用法:net start servername,成功启动了telnet服务。

net stop
入侵后发现远程主机的某个服务碍手碍脚,怎么办?利用这个命令停掉就ok了,用法和net start同。

net user
查看和帐户有关的情况,包括新建帐户、删除帐户、查看特定帐户、激活帐户、帐户禁用等。这对我们入侵是很有利的,最重要的,它为我们克隆帐户提供了前提。键入不带参数的net user,可以查看所有用户,包括已经禁用的。下面分别讲解。
1,net user abcd 1234 /add,新建一个用户名为abcd,密码为1234的帐户,默认为user组成员。
2,net user abcd /del,将用户名为abcd的用户删除。
3,net user abcd /active:no,将用户名为abcd的用户禁用。
4,net user abcd /active:yes,激活用户名为abcd的用户。
5,net user abcd,查看用户名为abcd的用户的情况。

通过Traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的
在Windows系统下是执行Tracert的命令:
  Tracert hostname

【arp】:

-a<主机>:显示arp缓冲区的所有条目;
-H<地址类型>:指定arp指令使用的地址类型;
-d<主机>:从arp缓冲区中删除指定主机的arp条目;
-D:使用指定接口的硬件地址;
-e:以Linux的显示风格显示arp缓冲区中的条目;
-i<接口>:指定要操作arp缓冲区的网络接口;
-s<主机>:设置指定的主机的IP地址与MAC地址的静态映射;
-n:以数字方式显示arp缓冲区中的条目;
-v:显示详细的arp缓冲区条目,包括缓冲区条目的统计信息;
-f<文件>:设置主机的IP地址与MAC地址的静态映射。

【子任务六】启动图形界面还是字符界面

第1步:打开inittab配置文件

项目二:管理与维护Linux系统(任务三、四、五、六)_第13张图片

第2步:修改LINUX启动模式

项目二:管理与维护Linux系统(任务三、四、五、六)_第14张图片

项目二:管理与维护Linux系统(任务三、四、五、六)_第15张图片


第3步:保存配置文件

项目二:管理与维护Linux系统(任务三、四、五、六)_第16张图片

第4步:图形与字符界面的切换

【init 5】或【startx】在字符界面下切换到图形界面(前提是装好图形界面)

【init 3】从图形界面或单用户模式进入字符界面(图形界面有时需要注销)

任务四   root账户密码的破解与保护

子任务一】进入单用户模式并修改root账户密码

进入单用户模式有两种方法,下面开始介绍:

方式一:使用a操作按键进入单用户模式

第1步:进入kernel编辑界面

开机进入GRUB,在读秒的时候,按两次a键,编辑kernel参数。

项目二:管理与维护Linux系统(任务三、四、五、六)_第17张图片

第2步:编辑kernel启动参数

项目二:管理与维护Linux系统(任务三、四、五、六)_第18张图片

第3步:用【passwd】命令修改root密码

项目二:管理与维护Linux系统(任务三、四、五、六)_第19张图片

第4步:进入多用户系统

输入【init 3】进入能够提供网络服务的多用户模式文本模式,输入【init 5】进入能够提供网络服务的多用户模式图形界面模式,测试刚才改过的命令。

输入用户名【root】,然后按enter键输入修改后的新密码,确认即可进入系统。

方法二:使用e操作按键进入单用户模式

第1步:进入kernel选择界面

项目二:管理与维护Linux系统(任务三、四、五、六)_第20张图片

项目二:管理与维护Linux系统(任务三、四、五、六)_第21张图片

第2步:进入kernel编辑界面

项目二:管理与维护Linux系统(任务三、四、五、六)_第22张图片

第3步:编辑kernel启动参数

项目二:管理与维护Linux系统(任务三、四、五、六)_第23张图片

第4步:进入单用户模式

按b键,这时系统开机无须密码,进入单用户模式。

第5步:使用【passwd】命令修改root密码

项目二:管理与维护Linux系统(任务三、四、五、六)_第24张图片

【子任务二】给单用户模式加密

方式一:明文方式

第一步:打开/boot/grub/grub.conf文件

项目二:管理与维护Linux系统(任务三、四、五、六)_第25张图片

第2步:编辑/boot/grub/grub.conf文件

项目二:管理与维护Linux系统(任务三、四、五、六)_第26张图片


方式二:MD5加密方式

第1步:给密码进行md5加密

项目二:管理与维护Linux系统(任务三、四、五、六)_第27张图片

第2步:添加md5密文到/etc/grub.conf文件中



任务五   管理Linux系统的用户与用户组

第一步:查看Linux系统中的用户

项目二:管理与维护Linux系统(任务三、四、五、六)_第28张图片

passwd 格式

/etc/passwd 中
一行记录对应着一个用户。
每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下:

用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

用户名

代表用户账号的字符串。通常长度不超过8个字符,并且由大小写字母和/或数字组成。登录名中不能有冒号(:),因为冒号在这里是分隔符。为了兼容起见,登录名中最好不要包含点字符(.),并且不使用连字符(-)和加号(+)打头。

口令

一些系统中,存放着加密后的用户口令字。虽然这个字段存放的只是用户口令的加密串,不是明文,但是由于 /etc/passwd 文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多Linux系统(如SVR4)都使用了 shadow 技术,把真正的加密后的用户口令字存放到 /etc/shadow 文件中,而在 /etc/passwd 文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”

用户标识号

是一个整数,系统内部用它来标识用户。一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等。
通常用户标识号的取值范围是0~65535。0是超级用户root的标识号,1~99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。

组标识号

记录的是用户所属的用户组。它对应着/etc/group文件中的一条记录。

注释性描述

记录着用户的一些信息

主目录

也就是用户的起始工作目录,它是用户在登录到系统之后所处的目录。在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用户主目录的名称就是该用户的登录名。各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。

登录 shell

用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。

第二步:查看用户密码以及有效期的文件

Linux /etc/shadow文件中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生。它的文件格式与/etc/passwd类似,由若干个字段组成,字段之间用“:”隔开。这些字段是:
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
1)“登录名”是与/etc/passwd文件中的登录名相一致的用户账号
2)“口令”字段存放的是加密后的用户口令字,长度为13个字符。如果为空,则对应用户没有口令,登录时不需要口令;如果含有不属于集合{./0-9A-Za-z}中的字符,则对应的用户不能登录。
3)“最后一次修改时间”表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如在SCOLinux中,这个时间起点是1970年1月1日。
4)“最小时间间隔”指的是两次修改口令之间所需的最小天数。
5)“最大时间间隔”指的是口令保持有效的最大天数。
6)“警告时间”字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。
7)“不活动时间”表示的是用户没有登录活动但账号仍能保持有效的最大天数。
8)“失效时间”字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。

第三步:查看账号所属组文件

项目二:管理与维护Linux系统(任务三、四、五、六)_第29张图片

第一列:用户组名称

第二列:用户组密码

第三列:GID,即组ID

第四列:用户列表,每个用户之间用逗号(,)分割;本字段可以为空,如果为空表示用户组为GID的用户名。

第四步:查看用户组密码文件

/etc/gshadow 是/etc/group 的加密资讯文件,例如用户组(Group)管理密码就存放在这个中。/etc gshadow 和/etc/group 是互补的两个文件; 对于大型服务器,针对很多用户和组,定制一些关系结构比较复杂的权限模型,设置用户组密码是极有必要的。例如,我们不想让些非用户组成员永久拥有用户组的权限和特性,这时可以通过密码验证的方式来让某些用户临时拥有一些用户组特性,这时就要用到用户组密码。通过[vim/e tc,/gshadow]命令可以查看用户组密码存放文件,每个用户组独占一行,如2-59 所示。在图2 -59 所示的文件中,有4 列,每一列对应应的释义如下。
第一列: 用户组名称;
第二列: 用户组密码,这个段可以是空的或有叹号(!),如果是空的或有叹号(!),表示没有密码;
第三列: 用户组管理者,这个字段也可为空,如果有多个用户组管理者,用“,”号分割;
第四列: 组成员,如果有多个成员,用逗号(,)分割。

第五步:建立与删除用户

CentOS中,建立与删除用户的主要命令以及释义如下。
【useradd yhy】新建yhy 用户。
【passwd yhy】为yhy 用户设置密码,密码输人时无任何显示。
【useradd ybs-d /home y】新建ybs用户,并指定家目录为home /y。
【userndd userl-d / h me/user1】此处可以不加d 参数,因为用户的默认家目录就在home 下与用户名相同的目录下。
【useradduser2】增加新用user2.用户默认家目录为/ home/user2.
【userdedyhy】删除用户,但不副除家目录,
【userdel-rybo】删除ybs 用户,并删除用户家目录。

【usermod-l user2 user1】修改用户user1 名称为user2.
【usermod-L user2】锁定用户名user2,锁定后user2不能登录。
【usermod-U user2】解锁用户名user2.
【su - user1】 用户切换到普通用户,不需要密码。
【su-root】普通用户切换到root用户,需要root密码。
备注: [su]命令后加“.”横杆,切换用户时切换到用户的家目录,否则,不改变当前路径。

第六步:建立与管理用户组

1)groupadd

groupadd 用于添加组账号。格式如下:groupadd [-g GID] GROUP

其中:

 GROUP:是要添加的组名 

 -g:用于指定 GID,默认为使用当前最大的 GID 加1

举例: 添加一个新组 leader

# groupadd leader

# grep leader /etc/group

leader:x:504:

# grep leader /etc/gshadow

leader:!::

2)groupmod

groupmod 用于修改系统已存在的组账号。格式如下:groupmod [options] GROUP

其中:

 GROUP:为要修改的组账户名

 常用选项:

 -g GID:重新指派 GID

 -n NEW_GROUP:更改组名为 NEW_GROUP

举例: 将 leader 组更名为 leaders

# groupmod -n leaders leader

# grep leader /etc/group

leaders:x:504:

将 leaders 组的 GID 改为 3000

# groupmod -g 3000 leaders

# grep leader /etc/group

leaders:x:3000:

3)groupdel

groupdel 用于删除系统已存在的组账号。格式如下:groupdel GROUP

其中:GROUP 为要删除的组账户名

例如:删除 leaders 组

# groupdel leaders

# grep leaders /etc/group

# grep leaders /etc/gshadow

第七步:几个重要的命令补充

【who am i】显示当前一哪个用户登录

【w】显示目前登录系统的用户详细信息,包括登录IP地址

【who】显示目前登录系统的用户简要信息

【last】记录每个用户登录次数和持续时间等信息

【finger】查找并显示用户信息如【finger zhangs】表示查看zhangs用户信息

【su user】切换用户但不切换当前目录

【su -userl】切换用户并切换到user的家目录

【ntsysv】启动/关闭系统中的服务

【setup】设置系统运行参数

任务六  管理Linux系统的文件权限

第一步:认识文件权限说明

项目二:管理与维护Linux系统(任务三、四、五、六)_第30张图片

可以看到,用ls -l命令查看某一个目录会得到一个9个字段的列表.

第1行:总用量(total)

这个数值是该目录下所有文件及目录列表第5个字段的和(以k为单位),也就是该目录的大小.请注意和该目录下的文件和子目录下文件的总合做区分.这个数字和du /root 得到的数字的大小是不一样的.可以用awk命令来验证.

用awk累加第5字段得到的数值:

[root@gucuiwen root]# ls -l |awk 'BEGIN{sum=0}{sum+=$5}END{print sum}'

4104092

转化成以K为单位:

[root@gucuiwen root]# ls -l |awk 'BEGIN{sum=0}{sum+=$5}END{print sum/1024}'

4007.9

用ls -l得到的数值:

总用量 4055

用du -sh /root得到的数值:

[root@gucuiwen root]# du -sh /root

127M /root

可以看到累加第5个字段得到的值和total显示的是一样的(因为具体算法的不同,略微有差别).得到的数值实际上是root目录的大小(把root目录看成是一个特殊的文件,就可以理解什么是目录的大小).而用du得到的数值是root目录下所由文件和子目录下全部文件的大小的总合.

第1字段:

文件属性字段

文件属性字段总共有10个字母组成,第一个字母表示文件类型,如果这个字母是一个减号"-",则说明该文件是一个普通文件.字母"d"表示该文件是一个目录,字母"d",是dirtectory(目录)的缩写.请注意,一个目录或者说一个文件夹是一个特殊文件,这个特殊文件存放的是其他文件和文件夹的相关信息.

如果该字母是"l",表示该文件是一个符号链接.符号链接的概念类似于windows里的快捷方式.字母"l"是link(链接)的缩写.在UNIX类系统中,一个文件可以有多个文件名,一个文件的多个文件名之间互称为硬链接(hard link).这些文件头可以指向同一个文件,删除其中一个文件名并不能删除该文件,只有把指向该文件的所有硬链接都删除,这个文件所占用的空间才真正被释放,该文件才真正被删除.这和windows是有很大区别的,windows中不允许一个文件有两个以上文件名,如果存在这中情况,则被认为是文件系统错误.如果你以前在windows下玩过DEBUG就知道,可以用DEBUG修改一张软盘上的根目录,使一个文件同时具有两个文件名.但是修改好后用 scandisk监测的时候会被认为是交叉链接错误.

开头为b的表示块设备文件(block),,设备文件是普通文件和程序访问硬件设备的入口,是很特殊的文件.它的没有文件大小,只有一个主设备号和一个辅设备号.上面的hda1就是一个设备文件,具有主设备号3和辅设备号1.表示第一个硬盘第一个分区.

另外,如果第一个字母为c表示该文件是一个字符设备文件(character),一次传输一个字节的设备被称为字符设备,比如键盘,字符终端等,传输数据的最小单位为一个字节.一次传输数据为一整块的被称为块设备,比如硬盘,光盘等.最小数据传输单位为一个数据块(通常一个数据块的大小是512字节).

第一字段的后面9个字母表示文件的权限.

r表是读 (Read) w表示写 (Write) x表示执行 (eXecute)

其中前三个表示文件属主的权限,中间三个表示组用户权限,最后三个表示其他用户权限.

比如:

-rw-r--r-- 1 root root 1581 11月 24 18:14 anaconda-ks.cfg

表示文件的拥有者root对文件有读写权限,其他人(同组用户和其他用户只有读的权限)

另外,权限组还有一些特殊的表示法.比如/usr/X11R6/bin/XFree86具有如下权限:

[root@gucuiwen root]# ll /usr/X11R6/bin/XFree86

-rws--x--x 1 root root 1960262 2003-02-28 /usr/X11R6/bin/XFree86

其中的s表示这个是网络接口程序"s"是socket的缩写.该程序在运行过程中会打开一个网络接口.

其他UNIX类系统如FreeBSD中还有t权限,表示一个临时(temporary)文件

在freeBSD中用ls -l /tmp 可以看到这样的权限:

drwxrwxrwt

它的最后一位是字母"t"

第2字段

文件硬链接数或目录子目录数

如果一个文件不是目录那么这一字段表示,这个文件所具有的硬链接数,即这个文件总共有多少个文件名.查看第一个文件:

-rw-r--r-- 1 root root 1581 11月 24 18:14 anaconda-ks.cfg

第2字段的值为1,说明这个文件只有anaconda-ks.cfg这一个文件名.即只有一个指向该链接的硬链接.

如果我用ln,做一个指向该文件的硬链接再查看该文件,该文件的第2字段就会变成2:

[root@gucuiwen root]# ln anaconda-ks.cfg anaconda-ks.cfg.hardlink

[root@gucuiwen root]# ls -l

总用量 4071

-rw-r--r-- 2 root root 1581 11月 24 18:14 anaconda-ks.cfg

-rw-r--r-- 2 root root 1581 11月 24 18:14 anaconda-ks.cfg.hardlink

此时,anaconda-ks.cfg 和anaconda-ks.cfg.hardlink 称为互为硬链接.他们指向同一个文件,无论是修改哪一个文件,另一个里也做相应的变化,因为实际上他们指向同一个文件.

用ls -i anaconda-ks.cfg可以查看它的文件节点(inode)

互为硬链接的文件具有相同的文件节点. 以下是验证实验:

[root@gucuiwen root]# ls -i anaconda-ks.cfg

18102 anaconda-ks.cfg

[root@gucuiwen root]# ls -i anaconda-ks.cfg.hardlink

18102 anaconda-ks.cfg.hardlink

可以看到,这两个文件具有相同的文件节点号:18102

如果你知道一个文件有多个文件名,如何查找他的其他文件名分布在什么地方呢?

可以先用ls -i 获得它的节点号,然后用find查找,如/etc/sysconfig/networking/devices/ifcfg-eth0就具有多个文件名,我要查找与它互为硬链接的文件:

[root@gucuiwen devices]# ls -i /etc/sysconfig/networking/devices/ifcfg-eth0

147181 /etc/sysconfig/networking/devices/ifcfg-eth0

得到它的节点号为 147181

再用find查找:

[root@gucuiwen devices]# find /etc -inum 147181

/etc/sysconfig/networking/devices/ifcfg-eth0

/etc/sysconfig/networking/profiles/default/ifcfg-eth0

这样就得到了同一个文件的不同文件名的位置.

如果是一个目录,第2字段的含义:

如果是一个目录,则第2字段表示该目录所含子目录的个数.

新建一个空目录,这个目录的第二字段就是2,表示该目录下有两个子目录.为什么新建的目录下面会有两个子目录呢?

因为每一个目录都有一个指向它本身的子目录"." 和指向它上级目录的子目录"..",这两个默认子目录是隐藏的.用ls -a可以看到.

每次在目录下新建一个子目录,该目录第2字段的值就增1,但是新建一个普通文件该字段值不增加.

第3字段:

文件拥有者

该字段表示这个文件是属于哪个用户的.UNIX类系统都是多用户系统,每个文件都有它的拥有者.只有文件的拥有者才具有改动文件属性的权利.当然, root用户具有改动任何文件属性的权利.对于一个目录来说,只有拥有该目录的用户,或者具有写权限的用户才有在目录下创建文件的权利.

如果某一个用户因为某种原因,被删除,而该用户的文件还存在,那么用ls -l 查看该文件将显示一个代表用户存在前ID号的数字.

以下是演示:

先创建一个用户并用su过去:

[root@gucuiwen root]# useradd gucuiwen -g users

[root@gucuiwen root]# su - gucuiwen

用新建的用户创建一个测试文件:

[gucuiwen@gucuiwen gucuiwen]$ touch testfile

[gucuiwen@gucuiwen gucuiwen]$ ls -l testfile

-rw-r--r-- 1 gucuiwen users 0 1月 4 16:31 testfile

最后用ls -l 看到第三字段的文件拥有者为gucuiwen

然后我将gucuiwen用户删除:

[root@gucuiwen root]# userdel gucuiwen

[root@gucuiwen root]# cd /home/gucuiwen/

[root@gucuiwen gucuiwen]# ls -l

总用量 0

-rw-r--r-- 1 501 users 0 1月 4 16:31 testfile

可以看到,第三字段成了一个数字,这个数字是原gucuiwen用户的ID号.因为文件系统对每个文件记录文件所有者的ID,而非用户名.

第4字段:

文件拥有者所在的组

组的概念可以想像成是一个共同完成一个项目的团队.通过组的概念,可以控制文件让特定的用户查看,修改或运行.而不是一棍子打死,要么全不让看,要么全让看.

一个用户可以加入很多个组,但是其中有一个是主组,就是显示在第4字段的明称.

可以在adduser的时候用-g指定该用户所在的主组,用-G指定其他组.

第5字段:

文件文件大小(以字节为单位)

第5字段表示文件大小,如果是一个文件夹,则表示该文件夹的大小.请注意是文件夹本身的大小,而不是文件夹以及它下面的文件的总大小!

很多人不能理解文件夹是一个特殊的文件的含义,这样的话理解文件夹大小的含义就比较困难了.

第6字段:

文件创建月份

这个不必多说了.

第7字段:

文件创建日期

第8字段:

文件创建时间

文件创建的时间可以通过touch命令来修改.如:

#touch testfile

可以把testfile的创建时间修改为当前时间.

touch的详细用法请看链接文档.

#man touch

另外,一个文件还有最后访问时间,最后修改时间等属性.

这些属性可以用ls 的其它参数显示出来.

第9字段:

文件名

如果是一个符号链接,那么会有一个 "->" 箭头符号,后面根一个它指向的文件名.

压缩命令(http://wenku.baidu.com/view/23d9caf9aef8941ea76e05da.html ):

tar –cf 名字.tar 文件 

再重新压缩:tar –rf 名字.tar 文件 

解压缩命令:tar –xvf 名字.tar

第二步:使用【chmod】命令改变文件或目录的访问权限

chmod 更改文件权限有三种办法:
1 chmod u=rwx filename
2 chmod u+r filename 或者 chmod u-r filename
备注:u可以换作g,o,也可以用逗号隔开,同时赋值,后面的权限自定义
chmod a+x filename 同时给u,g,o 可执行权限
3 chmod 770 filename 直接给u,g,o 修改权限
4 -R 参数可以给目录级联修改权限

第三步:更改文件的所有者以及所属组

第四步:认识umask

项目二:管理与维护Linux系统(任务三、四、五、六)_第31张图片

umask 可以说是一个文件权限的开放标准, 我们新建一个文件或者目录都会有一个默认权限,比如在普通用户下,新建一个文件权限为664,目录为775, 此时我们查看umask 发现为0002, 默认四位,第一位0为补位,后三位分别表示u,g,o的参考权限, 简单求和 我们发现,
对于普通文件满权限为 664+002=666
对于目录文件满权限为 775+002=777
那么意味着我们对普通文件默认不给x权限,尽量限制普通用户权限,目录则无法从源头控制,默认最大权限。
我们可以修改umask值,来修改预设权限
命令格式为 umask xxx, xxx为三个数字表示的基准权限

第五步:识别特殊权限

特殊权限:SUID、SGID、SBTI

1.SUID/SGID

复制代码
#看一下这三个文件的权限
# ls -l  /usr/bin/passwd  /etc/shadow  /etc/passwd
-rw-r--r--  1 root root  1470 Jun 22 19:33 /etc/passwd
----------  1 root root   902 Jun 22 19:33 /etc/shadow
-rwsr-xr-x. 1 root root 30768 Feb 22  2012 /usr/bin/passwd
复制代码

我们知道,/etc/passwd和/etc/shadow存放着用户的账户和密码信息。从它们俩的权限上看,普通用户(others)并不具有对它们修改的权限。

但实际上,普通用户登录的状态下,它是可以通过/usr/bin/passwd这个命令来修改自己的密码的。这是为什么呢?

我们可以看到/usr/bin/passwd文件的root权限设置为rws,即具有SUID权限。普通用户就可以通过执行passwd命令,临时的拥有root权限,去修改/etc/passwd文件了

所以总结来说:

       若普通用户对于该文件有执行权限(x)的前提下;

       SUID就是:让普通用户拥有可以执行“只有root权限才能执行”的特殊权限,SGID同理指”组“;

       SUID仅能用在二进制程序(binary program)上,对目录无效。

查询整个系统的SUID/SGID文件?

# find /  -perm  +6000

2.SBTI(Sticky Bit)粘滞位权限

复制代码
# mkdir /test

# chmod 1777 /test/   ------>#使该目录对所有用户可读写,并增加SBTI权限

# ll -d /test/
drwxrwxrwt 2 root root 4096 Jul 11 23:49 /test/
复制代码

假设该/test目录是对所有用户开放共有的目录,且所有用户都拥有读写权限,

若A用户在/test中创建了一个文件,B用户哪天不爽它还有权限去删掉这个文件,这肯定是不好的。

但是设置了sticky bit权限以后是不会出现这样的问题的

复制代码
# su lyj             ------>#切换普通用户lyj

$ touch lyj1.txt     ------>#创建一个文件

$ ll lyj1.txt
-rw-rw-r-- 1 lyj lyj 0 Jul 11 23:52 lyj1.txt

# su lyj2           ------>#切换普通用户lyj2

$ ls
lyj1.txt

$ rm lyj1.txt -f     ------>#lyj2有权删掉这个lyj创建的文件吗?
rm: cannot remove `lyj1.txt': Operation not permitted #显然不能

$ touch lyj2.txt

$ rm lyj2.txt -f   ------>#它只能删除自己创建的
复制代码

所以总结来说:

       若普通用户对于该目录有w、x权限的前提下;

       SBTI意味着,当该普通用户在该目录下创建了文件/目录,那么只有它自己和root用户可以删除/重命名/移动它,其他用户没有权力这么做

       SBTI只针对目录有效


首先,列一下SUID、SGID、Sticky Bit所代表的权限数值。就好像rwx分别对应4,2,1一样,SUID、SGID、Sticky Bit分别对应的数值也是4、2、1。

权限对应的数值
SUID 4
SGID 2
Sticky Bit 1
r 4
w 2
x 1
   

为了下面的例子做准备,现在假设有一个文件a,权限为 -rw-rw-r--,对应的数值为664

一、SUID

全称:Set UID

对象:仅用于设置二进制文件的特殊权限

用途:用于开放二进制文件的执行权限。当用户执行文件a的时候,执行过程中暂时获得了文件a所属用户的权限。简单说,假如文件a的所有者是root,但是文件设置了SUID,那么其它用户也可以执行这个文件。

例子:/usr/bin/passwd 

设置方法:chmod 4664 a

设置完成后文件a权限为:-rwSrw-r-- 

(现在我也知道为什么每个用户的umask值为四位数了,如果你不知道umask是什么赶紧google一下吧^_^)

二、SGID

全称:Set GID

对象:用于设置文件和目录的特殊权限

用途:

          文件:如果该文件是二进制文件的话,其他用户执行该文件的时候会以文件所属用户组的神

          目录:在该目录下建立的文件或目录都会自动继承该目录的用户组

设置方式:chmod 2664 a

设置完成后文件a权限为:-rw-rwSr-- 

三、Sticky Bit

全称:Set UID

对象:只用于设置目录的特殊权限

用途:在设置了Sticky Bit权限的目录下建立的文件只有文件的拥有者和root能删除。

设置方式:chmod 1664 a

设置完成后文件a权限为:-rw-rw-r-t 

第六步:识别文件颜色

绿色文件: 可执行文件,可执行的程序 
红色文件:压缩文件或者包文件
蓝色文件:目录
白色文件:一般性文件,如文本文件,配置文件,源码文件等 
浅蓝色文件:链接文件,主要是使用ln命令建立的文件
红色闪烁:表示链接的文件有问题
黄色:表示设备文件
灰色:表示其他文件

第七步:总结常用的几个命令

文件/目录权限设置命令:chmod 

这是Linux系统管理员最常用到的命令之一,它用于改变文件或目录的访问权限。该命令有两种用法: 

用包含字母和操作符表达式的文字设定法 

其语法格式为:chmod [who] [opt] [mode] 文件/目录名 

其中who表示对象,是以下字母中的一个或组合: 

u:表示文件所有者 

g:表示同组用户 

o:表示其它用户

a:表示所有用户 

opt则是代表操作,可以为:

+:添加某个权限 

-:取消某个权限 

=:赋予给定的权限,并取消原有的权限 

而mode则代表权限: 

r:可读 

w:可写 

x:可执行 

例如:为同组用户增加对文件a.txt的读写权限: 

chmod g+rw a.txt 


用数字设定法 

而数字设定法则更为简单:chmod [mode] 文件名 

关键是mode的取值,一开始许多初学者会被搞糊涂,其实很简单,我们将rwx看成二进制数,如果有则有1表示,没有则有0表示,那么rwx r-x r- -则可以表示成为: 

111 101 100 

再将其每三位转换成为一个十进制数,就是754。 

例如,我们想让a.txt这个文件的权限为: 

           自己   同组用户    其他用户 

可读       是        是            是 

可写       是        是

可执行 

那么,我们先根据上表得到权限串为:rw-rw-r--,那么转换成二进制数就是110 110 100,再每三位转换成为一个十进制数,就得到664,因此我 们执行命令: 

chmod 664 a.txt


       chown更改所有者

        chgrp更改所属组

    文件权限rwx

        chmod修改权限

        默认权限umask

阅读全文




你可能感兴趣的:(项目二:管理与维护Linux系统(任务三、四、五、六))