RHCE课程-初级部分7、文件的搜索及高级文件权限和用户、组操作
今天的第一个命令:which
which
显示一个可执行文件的完整路径,按照alias -> $PATH的顺序查找
比如我们看 ls 的可执行文件放在哪的
上面一行的ls的别名,默认是加入了--color=tty的参数,下面一行 /bin/ls 就是 ls 的可执行文件。我们可以去看看。
青色的一般都是可执行文件。而且这个青色就是 ls 的第一个别名的原因,如果没有这个别名,默认是不会显示颜色,你们44找下cd rm 之类命令的可执行文件在哪.
which这个命令在系统管理中有重要,大家一定要记住.
下一个命令,whereis ,这个功能就更强大了
whereis 搜索一个可执行工具及其相关配置、帮助
前面ls: 是表示查找的这个命令
/bin/ls 是可执行文件位置
后面两个就是帮助文件了
下面还是命令:find  功能超级大的搜索工具。 
语法:
find [路径]  [参数] [表达式]
下面是find常用的参数:
-user:根据文件拥有者寻找文件
-group:根据文件所属组寻找文件
-name:根据文件名寻找文件
-perm:根据文件权限寻找文件
-size:根据文件大小寻找文件
-type:根据文件类型寻找文件,参数对应c、b、l、f、d
-o :表达式或
-not :表达式非
现在我们测试第一个user参数,查找/home 下所有者为root的文件:find /home -user root
然后查找/etc下面与root有关的文件:find /etc -user root
第二个参数-group:根据文件所属组寻找文件,找 /boot 目录下 root组的文件 
name:根据文件名寻找文件,查找网卡配置文件
find / -name ifcfg-eth0这个命令就可以找到网卡的配置文件,你们44,ifcfg-eth0就是网卡的配置文件,上周我们是讲过的
-perm:根据文件权限寻找文件,自己创建一个权限是725的文件在家目录
然后用命令在根下找,找到这个文件:find / -perm 725
-size:根据文件大小寻找文件,查找/下面大小40M以上的文件,你们44
这里就有技巧了:
大小前面用+ 表示大于这个值
- 表示小于这个值
不带符号就表示等于了
单位也有讲究:k是小写的,
M和G是大写的
这个一定要注意哈。不然你命令就运行不了
我们看下单位M小写出错的效果哈。
-type:根据文件类型寻找文件,参数对应c、b、l、f、d
-nouser                          #查无有效属主的文件,即文件的属主在/etc/passwd中不存在
-ctime   -n +n                #按文件创建时间来查找文件,-n指n天以内,+n指n天以前 
-nogroup                       #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser                         #查无有效属主的文件,即文件的属主在/etc/passwd中不存在
-newer  f1 !f2               #查更改时间比f1新但比f2旧的文件
-type    b/d/c/p/l/f        #查是块设备、目录、字符设备、管道、符号链接、普通文件
-size     n[c]                  #查长度为n块[或n字节]的文件
-depth                          #使查找在进入子目录前先行查找完本目录
-fstype                          #查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到
-mount                         #查文件时不跨越文件系统mount点
-follow                         #如果遇到符号链接文件,就跟踪链接所指的文件
-cpio                            #查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到
-mount                        #查文件时不跨越文件系统mount点
-follow                        #如果遇到符号链接文件,就跟踪链接所指的文件
-cpio                           #对匹配的文件使用cpio命令,将他们备份到磁带设备中
-prune                        #忽略某个目录
这些命令你们了解下吧,知道有这个功能就行了,如果确实要用,再来研究
刚才有朋友问到,通配符号的问题,那下面大家查找 conf结尾的文件44
正规的写法是这样的find / -name "*.conf" ,需要用引号把内容包起来,这样系统不容易误解,不用也行。
查找以两个小写字母和两个数字开头的txt文件,物们先建立两个文件:aa11.txt和bb22.txt
find / -name "[a-z][a-z][0-9][0-9].txt"
具体的你们需要灵活运行,我也就只是告诉你们方法
-o :表达式或
-not :表达式非
与是直接在后面加,不用其他参数
我要找conf 结尾,还要是20k以上的文件,大家44
find / -name "*.conf" -size +20k
还有个简单的查找命令locate,一般我用这个
语法:
locate [关键字段]
大家找找网卡配置文件,用这个命令:locate ifcfg-eth0
 
所有文件名及其所在路径包含关键字段的文件与目录都会显示,locate先将当前目录结构做成一个数据库,然后再在此数据库中搜索匹配记录.
第一次使用这个命令需要运行:updatedb 更新数据库
locate 是在数据库中查找,所以速度快,但是数据库是有个计划任务来管理更新
下面创建一个 123321 文件在家目录里,然后用locate 查找这个文件
我们看到建立123321文件后,locate 123321没找到哈,updatedb后就找到了哈。
/etc/passwd (默认权限644)

michael:x:500:500:michael:/home/michael:/bin/bash
用户名:密码:UID:GID:用户描述:用户主目录:用户登录Shell
复习下,/etc/shadow 这个文件大家要注意了(默认权限400)
michael:$1$/Ix5lJZO$2wXjm0hqGQvN7vtwB.K021:14204:0:99999:7:::
以冒号分割,上面是一行哈
第一位 是帐户名字就是michael
是通过md5加密的密码
就是自1970/1/1起,密码被修改的天数
就是两次修改口令的间隔最小天数,0就代表没有限制
就是 99999天了,这个是用户过期日期,从 1970/1/1开始算
就是用户过期7天后失效
最后这个是保留字段
大家了解就行了
在很久以前,密码是放在PASSWD文件里的,为了使LINUX更安全,后来就把密码单独存放在SHADOW中,而且文件权限是400
我们可以用 pwunconv,把密码放在/etc/passwd ,大家44 ,如果用root修改,需要加!强行写入。输入这个命令你再看你/etc/passwd文件。
usermod指令,我们可以用参数来指定修改内容
#usermod <参数>  [目标]  <用户名>
-c:改变用户的全名
-d:改变用户的主目录
-e:设置用户密码的过期时间
-g:改变用户的gid
-G:将用户添加入一个新组
-l:改变用户的登录用名
-s:改变用户的默认shell
-u:改变用户的uid
-p:改变用户的密码
-L:锁住密码,使帐号
-U:为用户密码解锁。
这个大家做了解吧
还有几个组管理的命令,我也给大家列出来
groupadd:添加一个组
groupdel:删除一个已存在组
groupmod –n 新组名 原组名,为一个组更改名字
gpasswd –a 用户名 用户组,将一个用户添加入一个组。
重点来咯
who:查询当前在线的用户
w:查询当前在线用户的详细信息
groups:查询用户所属的组
id:显示当前用户信息
finger:查询用户信息
uname:显示系统信息
-a系统所有信息
-r系统内核版本
hostname:显示主机名
关于修改主机名字需要修改3三个地方:
1、hostname 的命令
2、修改/etc/hosts


3、修改/etc/sysconfig/network

 
这三个文件的主机名字必须一样,不然你的服务器会出现问题,如果hosts里没有设置本地解析,就可以不管,3个都要改哈,修改主机名后需要重新启动系统后生效。
last:列出最近的用户登录
lastlog:列出每一个用户的最近登录情况
free:显示内存使用状况