Linux文件系统相关权限及正则表达式相关命令grep、egrep的使用说明

一、总结本次课程中所涉及命令的使用方法及相关实例展示

1、权限管理相关命令:

   (1)修改文件权限:chmod(用户类别:u,g,o,a)

           chmod 用户类别=MODE file...(修改某类用户或某些类用户权限) 

           chmod 用户类别+|-MODE file,...(修改某类用户的某位或某些位权限)

                -R : 递归

              --reference=/path/to/file ,...(复制某文件的权限)

   (实例):创建用户mysql01,设置其家目录及内部的文件,属组及其他用户没有任何访问权限    

 useradd mysql01
 chmod -R go=  /home/mysql01
 ls -al /home/mysql01
total 28
drwx------  4 mysql01 mysql01 4096 Sep  1 10:05 .
drwxr-xr-x. 5 root    root    4096 Sep  1 10:05 ..
-rw-------  1 mysql01 mysql01   18 Oct 16  2014 .bash_logout
-rw-------  1 mysql01 mysql01  176 Oct 16  2014 .bash_profile
-rw-------  1 mysql01 mysql01  124 Oct 16  2014 .bashrc
drwx------  2 mysql01 mysql01 4096 Nov 12  2010 .gnome2
drwx------  4 mysql01 mysql01 4096 Aug 25 21:08 .mozilla

   (2)文件所属关系管理:chown(修改文件属主,默认管理员才能使用)、chgrp(修改文件所属组)                       chown 用户名(:组名)file,...

            chown 用户名(.组名)file,...

               -R:递归    
               --reference=/path/to/file ,...

  (实例):改变/home/mysql01及其内部的文件的属主属组均为oracle

 chown -R oracle:oracle /home/mysql01
 ls -al /home/mysql01
total 28
drwx------  4 oracle oracle 4096 Sep  1 10:05 .
drwxr-xr-x. 5 root   root   4096 Sep  1 10:05 ..
-rw-------  1 oracle oracle   18 Oct 16  2014 .bash_logout
-rw-------  1 oracle oracle  176 Oct 16  2014 .bash_profile
-rw-------  1 oracle oracle  124 Oct 16  2014 .bashrc
drwx------  2 oracle oracle 4096 Nov 12  2010 .gnome2
drwx------  4 oracle oracle 4096 Aug 25 21:08 .mozilla

    (3)umask:遮罩码(默认仅在当前shell进程生效)

        创建文件:666-umask

        创建目录:777-umask

        文件默认不能具有执行权限,如果算得的结果中有执行权限,则将其权限加1

二、总结基本正则表达式及扩展正则表达式

grep、egrep

1、作用:根据用户指定的“模式(pattern)”逐行去搜索目标文本,打印匹配到的行;

2、模式:由正则表达式的元字符及文本字符所编写的过滤条件

3、元字符:字符不表示其字面意义,而用于通配或控制功能

grep [OPTIONS] PATTERN [FILE...]:

    选项:

          --color=auto :对匹配到的串做高亮显示;

          -o:仅显示能够被模式匹配到的串本行;

          -i:忽略字符大小写;

          -v:显示模式匹配不到的行

          -q:静默模式

          -E:使用扩展的正则表示式

基本正则表达式的元字符:

   字符匹配:

          .:匹配任意单个字符;

         []:匹配指定范围内的任意单个字符

         [^]:匹配指定范围外的任意单个字符

         字符集:

        [:space:]:空白字符

         [:punct:]:标点符号

         [:lower:]:小写字母

         [:upper:]: 大写字母

         [:alpha:]: 大小写字母

         [:digit:]: 数字

         [:alnum:]: 数字和大小写字母

  次数匹配:(贪婪模式)

          *:匹配其前面字符任意次

             .*匹配任意长度任意字符

          \?:匹配前面的字符0或1次

          \+:1或多次

          \{m\}:精确匹配m次

          \{m,n\}:至少m次,至多n次

                 \{0,n\}:至多n次

                 \{m,\}:至少m次

  位置锚定

          ^:锚定行首,用于模式最左侧

          $:锚定行尾,用于模式最右侧

          \<,\b:词首锚定,用于表示单词模式的左侧

          \>,/b:词尾锚定,用于表示单词模式的右侧

  分组

          \(ab\)*:

          分组的小括号中的模式匹配到的内容,会在执行过程中被正则表达式引擎记录下来,并保存内置的变量中;           这些变量分别是\1, \2, ...

          \1:从左侧起,第一个左括号,以及与之配对的右括号中间的模式所匹配到的内容;

          \2:.....

          后向引用:使用变量引用前面的分组括号中的模式所匹配到的字符;

扩展表达式的元字符与正则表达式基本相同,主要取消了正则表达式里面的转义符,不同之处如下:

次数匹配:

      ?:表示0或1次

      +:至少1次

     {m,n}:至少m次,至多n次

分组:

     ():\1 \2 

或者:

     |:或者符号,a|b则表示a或者b

三、显示/etc/passwd文件中以bash结尾的行

 grep '\<bash\>$' /etc/passwd
root:x:0:0:root:/root:/bin/bash
cwc:x:500:500:cwc:/home/cwc:/bin/bash
oracle:x:3000:3000::/home/database:/bin/bash
mysql01:x:3001:3001::/home/mysql01:/bin/bash

四、显示/etc/passwd文件中的两位数或三位数

 egrep --color=auto '\<[0-9]{2,3}\>' /etc/passwd
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin
rtkit:x:499:497:RealtimeKit:/proc:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
saslauth:x:498:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
pulse:x:497:496:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
cwc:x:500:500:cwc:/home/cwc:/bin/bash

五、显示`netstat -tan`命令结果中以‘LISTEN’后跟0个、1个或者多个空白字符结尾的行

 netstat -tan | grep --color=auto "LISTEN[[:space:]]\{0,\}$"
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:6010              0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:38864               0.0.0.0:*                   LISTEN      
tcp        0      0 :::22                       :::*                        LISTEN      
tcp        0      0 ::1:631                     :::*                        LISTEN      
tcp        0      0 ::1:25                      :::*                        LISTEN      
tcp        0      0 ::1:6010                    :::*                        LISTEN      
tcp        0      0 :::36286                    :::*                        LISTEN      
tcp        0      0 :::111                      :::*                        LISTEN

六、添加用户bash、testbash、basher以及nologin用户(nologin用户的shell为/sbin/nologin);而后找出/etc/passwd文件中用户名与其shell名相同的行

 egrep  '(\<^[[:alnum:]]+\>).*\1$' /etc/passwd
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
bash:x:3002:3002::/home/bash:/bin/bash
nologin:x:3005:3005::/home/nologin:/sbin/nologin

七、显示当前系统上root、centos或者user1用户的默认shell和UID (请事先创建这些用户,若不存在)

 egrep '^\<root\>|^\<centos\>|^\<user1\>' /etc/passwd | cut -d: -f1,3,7
root:0:/bin/bash
centos:3006:/bin/bash
user1:3007:/bin/bash

八、找出/etc/rc.d/init.d/functions文件中某单词(单词中间可以存在下划线)后面跟着一组小括号的行

 egrep '\<[[:alnum:]]+.*\>\(\)' /etc/rc.d/init.d/functions 
fstab_decode_str() {
checkpid() {
daemon() {
killproc() {
pidfileofproc() {
pidofproc() {
status() {
echo_success() {
echo_failure() {
echo_passed() {
echo_warning() {
update_boot_stage() {
success() {
failure() {
passed() {
warning() {
action() {
strstr() {
confirm() {
get_numeric_dev() {
is_ignored_file() {
is_true() {
is_false() {
apply_sysctl() {
key_is_random() {
find_crypto_mount_point() {
init_crypto() {

九、使用echo输出一个路径,而后egrep找出其路径基名;进一步的使用egrep取出其目录名

 echo "/etc/profile.d/vim.sh" | egrep -o '[^/]+/?$'
vim.sh
 echo "/etc/profile.d/vim.sh" | egrep -o '^/.*/'
/etc/profile.d/

十、找出ifconfig命令执行结果中1-255之间的数字

 ifconfig | egrep --color=auto '\<[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|2[0-4][0-9]|25[0-5]\>'
eth0      Link encap:Ethernet  HWaddr 00:0C:29:8F:11:4C  
          inet addr:192.168.88.18  Bcast:192.168.88.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe8f:114c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:13746 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10499 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1416554 (1.3 MiB)  TX bytes:1288843 (1.2 MiB)
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:4 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
          RX bytes:240 (240.0 b)  TX bytes:240 (240.0 b)

你可能感兴趣的:(egrep,系统权限,正则表达式grep)