Linux中的 德·摩根定律
§·德·摩根定律介绍
※概念
在命题逻辑和逻辑代数中,德·摩根定律(或称德·摩根定理)是关于命题逻辑规律的一对法则。
奥古斯塔斯·德·摩根首先发现了在命题逻辑中存在着下面这些关系:
非(P 且 Q) = (非 P) 或 (非 Q)
非(P 或 Q) = (非 P) 且 (非 Q)
德·摩根定律在数理逻辑的定理推演中,在计算机的逻辑设计中以及数学的集合运算中都起着重要的作用。
※模型图解
如上图:D表示蓝色区域,A代表白色区域,B代表黄色区域,E代表(AB相交的区域)
我们大概来了解下摩根定律是怎样的思路:
◎测试一:非(P 且 Q) = (非 P) 或 (非 Q)
·非(P 且 Q):
P 且 Q的区域为:E的区域 ; 非E即为,ABD的区域。
·(非 P) 或 (非 Q) :
非P : D B 的区域
非P : A D 的区域
非P或非P :ABD的区域。
·结果:非(P 且 Q) = (非 P) 或 (非 Q)
◎测试二:非(P 或 Q) = (非 P) 且 (非 Q)
·非(P 或 Q) :
P或Q:即为 ABE的区域; 非ABE的区域:即为 D的区域。
·(非 P) 且 (非 Q)
非P:即为BD的区域; 非Q:即为AD的区域; BD的区域与AD的区域合集:D的区域。
·结果:非(P 或 Q) = (非 P) 且 (非 Q)
§·Linux中德·摩根定律思想练习题
1、查找/var目录下属主为root,且属组为mail的所有文件?
解:find /var -user root -a -group mail -ls
[root@Centos7 zipdir]# find /var -user root -a -group mail -ls 201327962 0 drwxrwxr-x 2 root mail 69 Aug 12 11:19 /var/spool/mail 206430755 1180 -rw------- 1 root mail 1208282 Aug 10 19:24 /var/spool/mail/root
2、查找/var目录下属主不属于root、lp、gdm的所有文件?
解:
[root@Centos7 zipdir]# find /var -not -user root -a -not -user lp -a -not -user gdm -ls #不是root,不是lp,不是gdm的属主文件及为:非(root 或 lp 或 gdm的文件) 表达式可改为: find /var -not \(-user root -o -user lp -o -user gdm\) 203409068 0 drwxr-xr-x 2 unbound unbound 21 Jul 21 11:27 /var/lib/unbound 203409069 4 -rw-r--r-- 1 unbound unbound 409 Nov 20 2015 /var/lib/unbound/root.key 68465684 0 drwx------ 2 tss tss 6 Nov 21 2015 /var/lib/tpm 949938 0 drwxr-xr-x 3 colord colord 50 Jul 21 11:35 /var/lib/colord 68485813 0 drwxr-xr-x 2 colord colord 6 Nov 20 2015 /var/lib/colord/icc 2229271 4 -rw-r--r-- 1 colord colord 4096 Jul 21 11:35 /var/lib/colord/mapping.db 899622 8 -rw-r--r-- 1 colord colord 7168 Jul 21 11:35 /var/lib/colord/storage.db 961784 0 drwxr-xr-x 2 geoclue geoclue 6 Nov 20 2015 /var/lib/geoclue 965063 0 drwx------ 2 rpc rpc 6 Nov 20 2015 /var/lib/rpcbind 68510463 0 drwxr-xr-x 2 chrony chrony 6 Nov 24 2015 /var/lib/chrony
#与上面的结果一样
[root@Centos7 zipdir]# find /var -not \( -user root -o -user lp -o -user gdm \) -ls 203409068 0 drwxr-xr-x 2 unbound unbound 21 Jul 21 11:27 /var/lib/unbound 203409069 4 -rw-r--r-- 1 unbound unbound 409 Nov 20 2015 /var/lib/unbound/root.key 68465684 0 drwx------ 2 tss tss 6 Nov 21 2015 /var/lib/tpm 949938 0 drwxr-xr-x 3 colord colord 50 Jul 21 11:35 /var/lib/colord 68485813 0 drwxr-xr-x 2 colord colord 6 Nov 20 2015 /var/lib/colord/icc 2229271 4 -rw-r--r-- 1 colord colord 4096 Jul 21 11:35 /var/lib/colord/mapping.db 899622 8 -rw-r--r-- 1 colord colord 7168 Jul 21 11:35 /var/lib/colord/storage.db 961784 0 drwxr-xr-x 2 geoclue geoclue 6 Nov 20 2015 /var/lib/geoclue 965063 0 drwx------ 2 rpc rpc 6 Nov 20 2015 /var/lib/rpcbind 68510463 0 drwxr-xr-x 2 chrony chrony 6 Nov 24 2015 /var/lib/chrony
3、查找/var目录下最近一周内其内容修改过,同时属主不为root,也不是postfix的文件?
解:属主不为 root,也不是postfix即为: –not -user root -a -not -user postfix
等同:-not \( -user root -o -user postfix \)
[root@Centos7 zipdir]# find /var -mtime -7 -not \( -user root -o -user postfix \) -ls 136800283 0 drwxr-xr-x 2 gdm gdm 17 Aug 10 17:17 /var/lib/gdm/.config/dconf 2229275 0 drwx------ 2 gdm gdm 52 Aug 10 17:17 /var/lib/gdm/.config/ibus/bus 206776371 0 -rw-rw---- 1 user1 mail 0 Aug 10 16:58 /var/spool/mail/user1 206824171 0 -rw-rw---- 1 user2 mail 0 Aug 12 11:19 /var/spool/mail/user2
…………………………………..
4、查找当前系统上没有属主或属组,且最近一个周内曾被访问过的文件?
解: 没有属主: -nouser ,没有属组:-o -nogroup , 并且一周内访问过:-a –atime -7
[root@Centos7 /]# find / -nouser -o -nogroup -a -atime -7 /var/spool/mail/user2 /home/user2 /home/user2/.mozilla /home/user2/.mozilla/extensions /home/user2/.mozilla/plugins /home/user2/.bash_logout /home/user2/.bash_profile /home/user2/.bashrc
5、查找/etc目录下大于1M且类型为普通文件的所有文件?
解:大于1M : –size +1M 并且为普通文件: –a -type f
[root@Centos7 user1]# find /etc -size +1M -type f -exec ls -lh {} \; -rw-r--r--. 1 root root 3.7M Nov 21 2015 /etc/selinux/targeted/policy/policy.29 -r--r--r--. 1 root root 6.7M Jul 21 11:35 /etc/udev/hwdb.bin -rw-r--r--. 1 root root 1.4M Mar 6 2015 /etc/brltty/zh-tw.ctb
6、查找/etc目录下所有用户都没有写权限的文件?
解:所有用户都没有写权限的反义就是:有一类用户有写权限 -prem /222
[root@Centos7 user1]# find /etc -not -perm /222 -ls 67413670 196 -r--r--r-- 1 root root 198453 Jul 21 11:24 201996308 208 -r--r--r-- 1 root root 211626 Jul 21 11:24 137245057 4 ---------- 1 root root 815 Aug 12 20:32 /etc/gshadow 135047292 4 ---------- 1 root root 825 Aug 12 11:19 /etc/gshadow- 137245052 4 ---------- 1 root root 1389 Aug 12 20:32 /etc/shadow 135052857 4 ---------- 1 root root 1417 Aug 12 11:19 /etc/shadow- 206307131 6852 -r--r--r-- 1 root root 7014922 Jul 21 11:35 /etc/udev/hwdb.bin 135090020 4 -r--r--r-- 1 root root 33 Jul 21 11:27 /etc/machine-id 68801984 4 -r--r--r-- 1 root root 146 Nov 20 2015 /etc/pam.d/cups 136632557 8 -r--r----- 1 root root 4188 Jul 7 2015 /etc/sudoers
7、查找/etc目录下至少有一类用户没有执行权限的文件?
解:至少一类用户没有执行权限反义即为:所有用户都有执行权限: –prem -111,取反即为我们需要的结果。
[root@Centos7 user1]# find /etc -not -perm -111 -ls 136456397 0 -rw-r--r-- 1 root root 0 Jun 10 2014 /etc/wvdial.conf 136456374 4 -rw-r--r-- 1 root root 508 Jan 27 2014 /etc/updatedb.conf 206058477 24 -rw-r--r-- 1 root root 20876 Jun 10 2014 /etc/postfix/access 206058478 12 -rw-r--r-- 1 root root 11681 Jun 10 2014 /etc/postfix/canonical 206062758 4 -rw------- 1 root root 86 Nov 20 2015 /etc/ntp/keys 206062759 4 -rw-r--r-- 1 root root 74 Nov 20 2015 /etc/ntp/step-tickers 136606754 8 -rw-r--r-- 1 root root 5171 Jun 10 2014 /etc/man_db.conf 136632555 4 -rw-r----- 1 root root 3181 Jul 25 2013 /etc/sudo-ldap.conf 136632556 4 -rw-r----- 1 root root 1786 Sep 25 2012 /etc/sudo.conf 136632557 8 -r--r----- 1 root root 4188 Jul 7 2015 /etc/sudoers 136632558 0 drwxr-x--- 2 root root 6 Nov 21 2015 /etc/sudoers.d 136632590 8 -rw-r--r-- 1 root root 4760 Jun 10 2014 /etc/enscript.cfg 136584837 4 -rw-r--r-- 1 root root 375 Nov 20 2015 /etc/trusted-key.key 136584974 4 -rw-r--r-- 1 root root 2872 Jun 10 2014 /etc/pinforc 136629111 8 -rw-r--r-- 1 root root 4479 Oct 31 2014 /etc/wgetrc 136602363 12 -rw-r--r-- 1 root root 8892 Jun 10 2014 /etc/nanorc 136745232 4 -rw-r--r-- 1 root root 1362 Jun 10 2014 /etc/pbm2ppa.conf 136745233 8 -rw-r--r-- 1 root root 6300 Jun 10 2014 /etc/pnm2ppa.conf 136832965 4 -rw-r--r-- 1 root root 37 Jul 21 11:34 /etc/vconsole.conf 136832967 4 -rw-r--r-- 1 root root 19 Jul 21 11:34 /etc/locale.conf 136832968 4 -rw-r--r-- 1 root root 14 Jul 21 11:34 /etc/hostname 136606740 4 -rw-r--r-- 1 root root 163 Jul 21 11:23 /etc/.updated 136632726 12 -rw-r--r-- 1 root root 12288 Jul 21 11:35 /etc/aliases.db 136800164 8 -rw-r--r-- 1 root root 6722 Aug 13 2015 /etc/screenrc 137072884 0 -rw-r--r-- 1 root root 0 Aug 9 21:17 /etc/111aa .................................................................
8、查找/etc/init.d目录下,所有用户都有执行权限,且其它用户有写权限的文件?
解:所有用户有执行权限: –prem -111 ,其它用户有写权限: -prem –001
[root@Centos7 init.d]# find /etc/init.d/ -perm -111 -perm -002 -ls 2642165 0 -rwxr-xrwx 1 root root 0 Aug 12 17:18 /etc/init.d/f1 [root@Centos7 init.d]#
原创文章,作者:linux_root,如若转载,请注明出处:http://www.178linux.com/34313
评论列表(1条)
find命令基本是笔试题中必考的内容,也是我们查找文件的最重要的工具,而这其中最难的估计是-perm选项的理解了,只有深刻理解的摩根定律才能让我们熟练的运用find工具。