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 -userpostfix
等同:-not \( -user root -o -userpostfix\)
[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