文件查找
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:发送、查收邮件、系统的一些通知也是邮件来查看
-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
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。