文件查找

locate

模糊匹配,非实时,查找是根据全文件系统的数据库进行的,该数据库会在某个时间自动更新,所以刚刚安装的新系统中查找某个文件可能查不到,可以使用updatedb手动生成文件数据库,locate的有点就是数据快。

[root@jiakang ~]# locate passwd
/etc/passwd
/etc/passwd-
/etc/pam.d/passwd
/etc/security/opasswd
/lib/security/pam_passwdqc.so
/lib/security/pam_unix_passwd.so
/usr/bin/gpasswd
/usr/bin/htpasswd
...
...

find

实时,精确,支持众多查找标准,遍历指定目录的所有文件完成查找,速度慢

使用方法:

find 查找路径 查找标准 查找到以后的处理动作

查找路径:默认为当前目录;查找标准:默认为指定路径下的所有文件; 处理动作:默认为显示

匹配标准:

  • -name 'FILENAME':对文件名做精确匹配【支持文件名通配*,?,[]】

  • -iname 'FILENAME':文件名不区分大小写

  • -regex PATTERN:基于正则进行文件名匹配

  • -user USERNAME:基于属主

  • -group GROUPNAME:基于属组

  • -uid UID:属主UID【当用户被删除后,原来的属主就显示被删除用户的UID】

  • -gid GID:数组GID

  • -nouser:查找没有属主的文件

  • -nogroup:查找没有属组的文件

  • -type f【 f 普通文件,文件类型有:f/d/c/b/l/p/s】

  • -size [+/-] #k/#M/#G

  • -atime [+/-]#

  • -ctime

  • -mtime【按时间查找的 -mtime 5代表刚好5天;-mtime -5代表5天以内;-mtime +5代表大于5天的】

  • -amin [+/-]#

  • -cmin

  • -mmin【用法同上,按分钟查找】

  • -perm MODE:精确匹配 /MODE:任意一位匹配就满足条件 -MODE:文件权限完全包含此MODE时才符号条件【看下面的例子】

查找出来的文件进行处理,默认是显示:

  • -print:显示

  • -ls:显示详细信息

  • -ok COMMAND {} ;【{}文件占位符,代表查找到的文件,;结束符】

  • -exec COMMAND {} ;【它和-ok的区别就是不再询问你要修改吗?N/Y】

  • xargs COMMAND 【xargs的用法自行百度】

例子部分:

当用户被删除后,原来的属主就显示被删除用户的UID:

[root@jiakang ~]# ls -l /tmp
总用量 92
-rw-r--r--. 1 root    root       0 4月   2 19:55 abc
drwxr-xr--. 2 root    root    4096 4月   2 19:55 def
-rw-r--r--. 1     501 root     907 3月  29 12:29 inittab

- -name 'FILENAME':对文件名做精确匹配【支持文件名通配*,?,[]】

[root@jiakang ~]# find /etc/ -name 'passwd'
/etc/pam.d/passwd
/etc/passwd
[root@jiakang ~]# find /etc/ -name 'passwd*'
/etc/pam.d/passwd
/etc/passwd-
/etc/passwd
[root@jiakang ~]# find /etc/ -name 'passwd?'
/etc/passwd-
[root@jiakang ~]# find /etc/ -name 'passwd[-]'
/etc/passwd-

-type f【 f 普通文件,文件类型有:f/d/c/b/l/p/s】

[root@jiakang ~]# find -type d
.
./.config
./.config/ibus
./.config/ibus/bus
./a
./a/b
./a/b/c

-size [+/-] #k /#M /#G

  • find /etc -size 1M【所有的1M一下的文件】

  • find /etc -size 9M【所有8M--9M之间的文件】 find /etc -size 10M【所有9M--10M之间的文件】

  • find /etc -size -10M【所有小于10M的】find /etc -size +10M【所有大于10M的】

[root@jiakang ~]# find /etc/yum -size 4k -ls
264766    4 drwxr-xr-x   5 root     root         4096 3月 25 07:11 /etc/yum
297654    4 drwxr-xr-x   2 root     root         4096 3月 25 07:12 /etc/yum/pluginconf.d
297662    4 drwxr-xr-x   2 root     root         4096 10月 16  2014 /etc/yum/protected.d
264767    4 drwxr-xr-x   2 root     root         4096 10月 16  2014 /etc/yum/vars

使用组合条件

  • -a【与】

  • -o【或】

  • -not【非】

[root@jiakang ~]# find /tmp -nouser -o -type d
/tmp
/tmp/keyring-ydeVD8
/tmp/pulse-1eixpc0AmCNC
/tmp/pulse-1eixpc0AmCNC/native
...

[root@jiakang ~]# find /tmp -nouser -a -not  -type f
/tmp/pulse-1eixpc0AmCNC
/tmp/pulse-1eixpc0AmCNC/native
/tmp/keyring-kV9p9w
/tmp/keyring-kV9p9w/socket.pkcs11
/tmp/keyring-kV9p9w/socket.ssh
/tmp/keyring-kV9p9w/socket
/tmp/virtual-tom.ihZcOF
/tmp/.esd-501
/tmp/.esd-501/socket

-perm MODE:精确匹配 /MODE 、 -MODE

/MODE表示任意一位匹配即满足条件

005:------r-x
【要找的文件的权限】
001:--------x【x满足上面的条件所以能匹配到】

002:-------w-【w不能满足,其他权限位也不能满足所以不能匹配到,005没有一位能包含002】

[root@jiakang a]# ls -l test.sh
-------r-x. 1 root root 45 4月   4 20:19 test.sh
[root@jiakang a]# find ./test.sh -perm /001  
./test.sh
[root@jiakang a]# find ./test.sh -perm /002
[root@jiakang a]# 

-perm MODE

-perm MODE:精确匹配 /MODE 、 -MODE

-MODE表示全部位匹配才满足条件【即包含关系】

005:------r-x
【要找的文件的权限】
005:------r-x【可以】

706:rwx---rw-【不可以,005不能包含了706】

[root@jiakang a]# find ./test.sh -perm -005
./test.sh
[root@jiakang a]# find ./test.sh -perm -706

查找出来的文件进行处理,默认是显示:

[root@jiakang a]# find ./test.sh -perm -001 -exec chmod 755 {} \;
[root@jiakang a]# ls -l test.sh            
-rwxr-xr-x. 1 root root 45 4月   4 20:19 test.sh

FACL:FileSystem Access Control List

FACL:利用文件扩展属性指定单独的访问控制权限,即给该文件单独指定某个用户或某个组可以访问

setfacl:

  • -m:设定

  • -x:取消

使用方法:-m u:UID:perm,-m g:GID:perm

-x u:UID,-x g:GID【取消的时候不需要指定权限】

getfacl FILE:可以获取该文件有什么权限

当前该文件的权限:

[root@jiakang tmp]# ls -l inittab
-rw-r--r--. 1 501 root 907 3月  29 12:29 inittab
[root@jiakang tmp]# getfacl inittab
# file: inittab
# owner: 501
# group: root
user::rw-
group::r--
other::r--

添加额外的权限:【注意看是哪个用户在操作】

[root@jiakang ~]# su - jiakang
[jiakang@jiakang ~]$ cd /tmp
[jiakang@jiakang tmp]$ echo "test facl" >> inittab
-bash: inittab: 权限不够

[root@jiakang tmp]# setfacl -m u:jiakang:w inittab

[jiakang@jiakang tmp]$ echo "test facl" >> inittab
[jiakang@jiakang tmp]$ tail -5 inittab
tail: 无法打开"inittab" 读取数据: 权限不够

[root@jiakang tmp]# getfacl inittab
# file: inittab
# owner: 501
# group: root
user::rw-
user:jiakang:-w-
group::r--
mask::rw-
other::r--

[root@jiakang tmp]# setfacl -m u:jiakang:rw inittab

[jiakang@jiakang tmp]$ tail -5 inittab
# 
id:5:initdefault:
 a new line
 next line
test facl

在这发现首先没有写入的权限,然后setfacl指定w权限后,虽然能写入了,但是没有查看权限了,这说明单独指定权限后原来的权限对该用户就不会生效,所有再次指定了【setfacl rw】写入权限。

访问顺序【安全上下文】

owner-->user facl-->group-->group facl-->other

还是上面的问题,我指定了user facl 后,该用户就会被判断为user facl 用户了,就会按照user facl去访问,所以此时即使other有r权限,但是user facl没有r权限也是没用的

有附加的属性时后面会有一个+号,复制的时候要注意:

[root@jiakang tmp]# ls -l inittab
-rw-rwxr--+ 1 501 root 917 4月  12 10:42 inittab

另外-m d:u:UID:perm,-m d:g:GID:perm【加个d:可以指定目录的控制列表,并且里面创建的文件会继承该控制列表】

有效权限(mask):单独设定的权限最大不能超过mask,和我们原来的umask的意义是不一样的

常用的命令

who

who:当前系统有哪些用户在登陆

[root@jiakang tmp]# who
root     pts/0        2017-04-12 10:06 (192.168.8.2)
root     pts/1        2017-04-12 10:24 (192.168.8.2)
[root@jiakang tmp]# who -r
         运行级别 5 2017-04-12 10:04

sleep

sleep SECOND 进程睡SECOND秒

w

w:也是显示哪些用户登录了,并且还显示用户在干什么
在运行w的命令时遇到 xxx column window is too narrow
意思是列专栏的窗口太窄了,数据显示不出来
解决方法把窗口放大点,或者用 w|cat 查看也可以

[root@jiakang tmp]# w
64 column window is too narrow
[root@jiakang tmp]# w
 13:17:43 up  3:13,  2 users,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.8.2      10:06    0.00s  0.12s  0.00s w【正在执行w命令】
root     pts/1    192.168.8.2      10:24    2:44   0.10s  0.06s -bash

last

last:显示/var/log/wtmp,显示用户登陆历史及用户的重启历史

  • -n #:显示最近n次登陆的历史

[root@jiakang ~]# last
root     pts/0        192.168.8.2      Wed Apr 12 13:39   still logged in   
root     pts/1        192.168.8.2      Wed Apr 12 10:24   still logged in   
root     pts/0        192.168.8.2      Wed Apr 12 10:06 - 13:39  (03:32)    
reboot   system boot  2.6.32-504.el6.i Wed Apr 12 10:04 - 13:39  (03:35)  

lastb

lastb:/var/log/wtmp,显示用户错误的登陆尝试

  • -n #:显示最近n次的尝试

lastlog

lastlog:显示每一个用户最近成功登陆的信息

  • -u USERNAME:显示特定用户最近成功登陆信息

[jiakang@jiakang tmp]$ lastlog
用户名           端口     来自             最后登陆时间
root             pts/0    192.168.8.2      三 4月 12 13:39:35 +0800 2017
bin                                        **从未登录过**
daemon                                     **从未登录过**
adm                                        **从未登录过**

basename

basename:获取路径的基名,如:./b.sh获取的事b.sh

mail

mail:发送、查收邮件、系统的一些通知也是邮件来查看

  • -s:指定邮件标题

    mail可以查看邮件内容,想看哪个邮件就输入它的编号然后按回车,看完后按q退出,d删除,r回复

[root@jiakang tmp]# cat /tmp/inittab|mail -s "我是inittab" root 【发送一个邮件给root】
[root@jiakang tmp]# mail
Heirloom Mail version 12.4 7/29/08.  Type ? for help.
"/var/spool/mail/root": 1 message 1 unread
>U  1【邮件编号】 root                  Wed Apr 12 14:39  47/1539  "我是inittab"
& 1【按1查看第一封邮件,回车】

Message  1:
From root@jiakang.localdomain  Wed Apr 12 14:39:05 2017
Return-Path: <root@jiakang.localdomain>
X-Original-To: root
Delivered-To: root@jiakang.localdomain
Date: Wed, 12 Apr 2017 14:39:02 +0800
To: root@jiakang.localdomain
Subject: 我是inittab
User-Agent: Heirloom mailx 12.4 7/29/08
Content-Type: text/plain; charset=us-ascii
From: root@jiakang.localdomain (root)
Status: RO
【正文】
# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# System initializatio

& d【删除】
& q【退出】
[root@jiakang tmp]# mail
No mail for root

另外除了管道还能用输入重定向的方式发送

mail -s "我是inittab" root < /tmp/inittab

hostname

hostname:查看、修改主机名
另外echo $HOSTNAME也能查看主机名,但是我用hostname修改后,echo $HOSTNAME 还是原来的主机名,所以还是hostname查看的比较准

[root@jiakang tmp]# hostname
jiakang
[root@jiakang tmp]# echo $HOSTNAME
jiakang
[root@jiakang tmp]# hostname www.jia123.com
[root@jiakang tmp]# hostname
www.jia123.com
[root@jiakang tmp]# echo $HOSTNAME
jiakang

Big_fat_cat
207 声望10 粉丝