您的位置:首页 > 运维架构 > Linux

ZY-2015-08-27

2015-08-30 10:10 507 查看

Linux文件系统的权限

属主(owner, u), 属组(group, g), 其他用户(other, o): rwx, rwx, rwx对应当前资源,每类账户都通过三位权限限定.(000-111: 0-7)

权限管理相关命令

权限管理 chmod

所属关系管理: chown, chgrp

文件遮罩码: umask

chmod

chmod – 修改文件的权限

基本用法

-R: recursive #递归修改权限

二种用法

操作指定类别用户的权限
=model

=rx, =r, =

ug=rx, go=, a=

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


[\+|-]mode

u\+r,

\+x

\+w

操作实践

#SYNOPSIS

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

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

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

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

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

$ chmod u+wx file

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

$ ll

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

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

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

$ chmod --reference=a b

$ ll

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

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

$ chmod u-r,g-w c

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

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

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

$ chmod go= -R /home/tuser1

$ ll -a tuser1/

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

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

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

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

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

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

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

chown

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

基本用法

#SYNOPSIS

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

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

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

USER # 只改属主

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

操作实践

# 修改b文件的属主为gentoo

$ chown gentoo b

$ ll b

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

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

$ chown centos:centos b

$ ll

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

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

$ ll a

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

$ chown --reference=b a

$ ll a b

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

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

chgrp

chgrp – 修改组

基本用法

#SYNOPSIS

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

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

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

umask

umask – 设定和显示遮罩码

操作实践

# 显示遮罩码

$ umask

--> 0022

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

$ umask 0002

$ umask

--> 0002

grep

Linux文本处理三剑客

grep: 文本过滤工具;

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

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

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

基本用法

## SYNOPSIS

grep [OPTIONS] PATTERN [FILE...]

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

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

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

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

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

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

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

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

操作实践

# 输出匹配到的行数

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

--> 6

基本正则表达式

字符匹配

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

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

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

[:lower:] # 小写字符

[:upper:] # 大写字符

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

[:digit:] # 数字字符

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

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

[:punct:] # 标点符号

[:alpha:] # 文字字符

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

[:cntrl:] # 控制字符

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

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

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

次数匹配

? # 0到1次

* # 0到多次

+ # 1到多次

{n} # 匹配n次

{n,} # 至少匹配n次

{,m} # 最多m次

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

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

位置锚定:

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

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

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

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

^$: # 空白行

分组:()

分组的小括号中的模式匹配到的内容,会在执行过程中被正则表达式引擎记录下来,并保存在内置变量中,这些变量分别是\1,\2…\1: 从左侧起,第一个左括号,以及与之配对的右括号中间的模式所匹配到的内容.\2: …向后引用: 使用变量引用前面的分组括号中的模式所匹配到的字符.

扩展的正则表达式

grep家庭有三个命令

grep #基本正则表达式

-E #扩展正则表达式

-F #不支持正则表达式

egrep #扩展正则表达式

fgrep #不支持正则表达式

字符匹配

. # 任意单个字符

[]

[^]

次数匹配

*

?: # 0次或1次;

+: # 1次以上;

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

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

位置锚定

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

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

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

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

^$: # 空白行

或者

(a|b)wk # awk或者bwk

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

egrep 'bash$' /etc/passwd


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

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


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

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



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

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


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

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


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

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


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

egrep ... //TODO

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

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


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux egrep