Linux文件系统的权限

属主(owner, u), 属组(group, g), 其他用户(other, o): rwx, rwx, rwx

对应当前资源,每类账户都通过三位权限限定.(000-111: 0-7)

权限管理相关命令

  • 权限管理 chmod

  • 所属关系管理: chown, chgrp

  • 文件遮罩码: umask

chmod

chmod – 修改文件的权限

基本用法

  1. -R: recursive #递归修改权限

二种用法

  1. 操作指定类别用户的权限

    1. =model

    2.    =rx, =r, =

    3.    ug=rx, go=, a=

  1. 操作某类用户的某位或某些位权限+|-


    1. [\+|-]mode

    2.    u\+r,

    3.        \+x

    4.        \+w

操作实践

  1. #SYNOPSIS

  2. chmod [OPTION]... MODE[,MODE]... FILE...

  3. chmod [OPTION]... OCTAL-MODE FILE...

  4. chmod [OPTION]... --reference=RFILE FILE...

  5. $ chmod u=r file #会覆盖掉已有的权限

  6. --> -r--rwxrwx 1 root root 0 Nov 29 15:12 file

  7. $ chmod u+wx file

  8. --> -rwxrwxrwx 1 root root 0 Nov 29 15:12 file

  9. $ ll

  10. -rw-rw-rw- 1 root root 0 Nov 30 13:37 a

  11. -rw-r--r-- 1 root root 0 Nov 30 13:37 b

  12. ## 参考文件a的权限修改b的权限

  13. $ chmod --reference=a b

  14. $ ll

  15. --> -rw-rw-rw- 1 root root 0 Nov 30 13:37 a

  16.    -rw-rw-rw- 1 root root 0 Nov 30 13:37 b

  17. $ chmod u-r,g-w c

  18. --> --w-r--rw- 1 root root 0 Nov 30 13:37 c

  19. #eg:复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限.

  20. $ cp -R /etc/skel/ /home/tuser1/

  21. $ chmod go= -R /home/tuser1

  22. $ ll -a tuser1/

  23. --> drwx------  4 root root 4096 Nov 30 13:34 .

  24.    drwxr-xr-x. 7 root root 4096 Nov 30 13:34 ..

  25.    -rw-------  1 root root   18 Nov 30 13:34 .bash_logout

  26.    -rw-------  1 root root  176 Nov 30 13:34 .bash_profile

  27.    -rw-------  1 root root  124 Nov 30 13:34 .bashrc

  28.    drwx------  2 root root 4096 Nov 30 13:34 .gnome2

  29.    drwx------  4 root root 4096 Nov 30 13:34 .mozilla

chown

chown – 修改文件的属主或属组

基本用法

  1. #SYNOPSIS

  2. chown [OPTION]... [OWNER][:[GROUP]] FILE...

  3. chown [OPTION]... --reference=RFILE FILE...

  4. -R, --recursive # 递归操纵文件或目录

  5. USER # 只改属主

  6. USER:GROUP(USER.GROUP) # 同时修改属主,属主

操作实践

  1. # 修改b文件的属主为gentoo

  2. $ chown gentoo b

  3. $ ll b

  4. --> -rw-rw-rw- 1 gentoo root 0 Nov 30 13:37 b

  5. # 修改b文件的属主,属组为centos

  6. $ chown centos:centos b

  7. $ ll

  8. --> -rw-rw-rw- 1 centos centos 0 Nov 30 13:37 b

  9. # 参照文件b的属主,属主为a设置

  10. $ ll a

  11. --> -rw-rw-rw- 1 root root 0 Nov 30 13:37 a

  12. $ chown --reference=b a

  13. $ ll a b

  14. --> -rw-rw-rw- 1 centos centos 0 Nov 30 13:37 a

  15.    -rw-rw-rw- 1 centos centos 0 Nov 30 13:37 b

chgrp

chgrp – 修改组

基本用法

  1. #SYNOPSIS

  2. chgrp [OPTION]... GROUP FILE...

  3. chgrp [OPTION]... --reference=RFILE FILE...

  4. -R, --recursive # 递归操纵文件或目录

umask

umask – 设定和显示遮罩码

操作实践

  1. # 显示遮罩码

  2. $ umask

  3. --> 0022

  4. # 设置遮罩码, 仅对当前shell进程有效

  5. $ umask 0002

  6. $ umask

  7. --> 0002

grep

  • Linux文本处理三剑客

  1. grep: 文本过滤工具;

  2. sed:文本编辑器(行);stream editor

  3. awk:文本报告生成器;Linux上awk的实现为gawk

作用: 文本搜索工具,根据用户制定的’模式(pattern)’逐行去搜索目标文本,打印匹配到的行.模式: 有正则表达式的元字符及文本字符所编写的过滤条件.元字符: 字符不表示其字面的意义,而用于表示通配或控制功能.BRE: 基本正则表达式ERE: 扩展正则表达式

基本用法

  1. ## SYNOPSIS

  2. grep [OPTIONS] PATTERN [FILE...]

  3. grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]

  4. --color=auto # 对匹配到的行做高亮显示

  5. -v, --invert-match #显示模式匹配不到的行

  6. -i, --ignore-case # 忽略字符大小写

  7. -q, --quiet, --silent # 静默模式, 不输出到标准输出

  8. -E, --extended-regexp # 解释模式问扩展的正则表达式

  9. -P, --perl-regexp # 解释模式作为一个Perl的正则表达式。这是高度的实验和grep -P可以警告未实现的功能。

  10. -c, --count # 输出匹配到的行数

操作实践

  1. # 输出匹配到的行数

  2. $ grep 'bash\>' /etc/passwd -c

  3. --> 6

基本正则表达式

字符匹配

  1. .:             # 匹配任意单个字符;

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

  3. [^]:        # 匹配指定范围内的任意单个字符;

  4. [:lower:]   # 小写字符

  5. [:upper:]   # 大写字符

  6. [:alnum:]   # 文字数字字符

  7. [:digit:]   # 数字字符

  8. [:space:]   # 所有空白字符(新行,空格,制表符)

  9. [:blank:]   # 空格或制表符

  10. [:punct:]   # 标点符号

  11. [:alpha:]   # 文字字符

  12. [:blank:]   # 空格或制表符

  13. [:cntrl:]   # 控制字符

  14. [:graph:]   # 非空字符(非空格、控制字符)

  15. [:print:]   # 非空字符(包括空格)

  16. [:xdigit:]  # 十六进制数字(0-9,a-f,A-F)

次数匹配

  1. ?      # 0到1次

  2. *      # 0到多次

  3. +      # 1到多次

  4. {n}    # 匹配n次

  5. {n,}   # 至少匹配n次

  6. {,m}   # 最多m次

  7. {n,m}  # 最少n次,最多m次

  8. .*        # 匹配任意长度的任意字符

位置锚定:

  1. ^:             # 行首锚定;用于模式的最左侧;

  2. $:             # 行尾锚定;用于模式的最右侧;(用单引号)

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

  4. \>, \b:    # 词尾锚定;用于表示单词的模式的右侧;

  5. ^$:         # 空白行

分组:()

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

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

\2: …

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

扩展的正则表达式

grep家庭有三个命令

  1. grep #基本正则表达式

  2.    -E #扩展正则表达式

  3.    -F #不支持正则表达式

  4. egrep #扩展正则表达式

  5. fgrep #不支持正则表达式

字符匹配

  1. .     # 任意单个字符

  2. []

  3. [^]

次数匹配

  1. *

  2. ?:         # 0次或1次;

  3. +:         # 1次以上;

  4. {m}:     # 精确匹配m次;

  5. {m,n}:  # 至少m次,至多n次;

位置锚定

  1. ^:         # 行首锚定;用于模式的最左侧;

  2. $:         # 行尾锚定;用于模式的最右侧;(用单引号)

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

  4. \>, \b:# 词尾锚定;用于表示单词的模式的右侧;

  5. ^$:     # 空白行

或者

  1. (a|b)wk # awk或者bwk

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

egrep 'bash$' /etc/passwd

ZY-2015-08-27_egrep

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

egrep '\<[[:digit:]]{2,3}\>' /etc/passwd

ZY-2015-08-27_linux_02

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

netstat -nat | egrep '\<LISTEN[[:blank:]]*'

ZY-2015-08-27_egrep_03

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

egrep '^([[:alnum:]]*\>).*\1$' /etc/passwd

ZY-2015-08-27_linux_04

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

egrep '^(centos|user1|root)' /etc/passwd | cut -d: -f3,7

ZY-2015-08-27_linux_05

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

egrep '([[:alpha:]]|_)+\(\)' /etc/rc.d/init.d/functions

ZY-2015-08-27_egrep_06

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

  1. egrep ... //TODO


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

ifconfig | egrep '\<(1?[1-9]{1,2}|2[0-5]{2})\>'

ZY-2015-08-27_egrep_07