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文件中某单词(单词中间可以存在下划线)后面跟着一组小括号的行

[[email protected] ~]# grep ‘[[:alpha:]]_*()‘ /etc/rc.d/init.d/functions 
fstab_decode_str() {
checkpid() {
__readlink() {
__fgrep() {
__umount_loop() {
__umount_loopback_loop() {
__pids_var_run() {
__pids_pidof() {
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取出其目录名

				
时间: 2024-10-02 07:02:07

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

Linux 命令grep, egrep,正则表达式大全

Linux grep 命令     Linux系统中grep,egrep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户. 1.grep : 最早的文本匹配程序,使用POSIX定义的基本正则表达式(BRE)来匹配文本. 2.egrep : 扩展式grep,其使用扩展式正规表达式(ERE)来匹配文本. 3.fgrep : 快速grep,这个版

总结五:Linux文件系统之层次结构及目录管理命令

总结五:Linux文件系统之层次结构及目录管理命令 1.FHS:(Filesystem Hierarchy Standard)--文件系统层次结构标准 /bin,/sbin:系统自身启动和运行时可能会用到的核心二进制命令 /lib:共享库文件和内核模块 /lib64:共享库文件和内核模块 /etc:配置文件 /usr:universal shared read-only /usr/bin,/usr/sbin:系统运行中,用户为完成某些操作可能用到的命令 /usr/lib,/usr/lib64:库

linux文件系统特殊权限及suid sgid sticky

linux文件系统特殊权限及suid sgid sticky 1.Linux文件系统上的特殊权限 权限模型: u, g, o r, w, x 2.进程的安全上下文: 前提:进程有属主(进程以哪个用户的身份运行):文件有属主和属组: (1) 用户是否能够把某个可执行程序文件启动为进程,取决于用户对程序文件是否拥有执行权限: (2) 程序启动为进程后,此进程的属主为当前用户,也即进程的发起者:进程所属的组,为发起者的基本组: (3) 进程拥的访问权限,取决其属主的访问权限: (a) 进程的属主,同文

Linux中 文本处理命令 grep egrep fgrep的使

个人见解:我认为Linux中的文本处理命令 grep egrep fgrep命令 其实只要牢牢掌握grep就可以了 因为其他两个几乎是一样的 不一样的地方也很好区分 grep 基本使用方法: 使用方法 grep [选项] '表达式' #学习的时候没好好听 不知道自己写错没 为了这篇博文的通常 我还是先不看之前学习的视频了这里的常用选项有 -o -v -i -n -A -B -C -数字 -E [email protected]:~# grep -o '^root:' /etc/passwd #-

shell命令--grep/egrep

shell命令--grep/egrep 0.grep/egrep命令的专属图床 点此快速打开文章[图床_shell命令grep/egrep] 1.grep/egrep命令的功能说明 ? grep命令是Linux系统中最重要的命令之一,其功能是从文本文件或管道数据流中筛选匹配的行及数据,如果配合正则表达式技术一起使用,则功能更加强大.egrep 是 grep 的扩展正则. 2.grep/egrep命令的语法格式 SYNOPSIS grep [OPTIONS] PATTERN [FILE...] g

Autojump:一个可以在 Linux 文件系统快速导航的高级 cd 命令

相关博客:https://linux.cn/article-3401-1.html 对于那些主要通过控制台或终端使用 Linux 命令行来工作的 Linux 用户来说,他们真切地感受到了 Linux 的强大. 然而在 Linux 的分层文件系统中进行导航有时或许是一件头疼的事,尤其是对于那些新手来说. 现在,有一个用 Python 写的名为 autojump 的 Linux 命令行实用程序,它是 Linux 'cd'命令的高级版本. Autojump – Linux 文件系统导航的最快方式 这个

Linux 文件系统于权限(学习记录)

Linux文件与权限 ??在Linux中有着一切皆文件的说法,而文件的权限大小和用户所拥有的权限决定了用户对文件的控制程度,因此文件的权限和用户的权限对Linux中文件和系统的安全有很大的影响. 一. 文件系统 1.在linux中文件和目录被组织成一个单根倒置的结构,所有文件从根(/)下开始. 2.Linux文件名称区分大小写. 3.文件有两类数据:元数据(metadata)和数据(data).其中元数据存放的是文件的iNode等信息,数据存放的是文件的具体内容. 4.文件名最长255个字节.各

第十六天-linux文件系统特殊权限suid-sgid

在Linux系统中,有时候执行某个命令时,需要对另一个文件进行操作,而要做的文件又不是普通用户有权限进行操作的.例如,修改用户密码passwd,该命令文件的所有者和组都是root,同组用户和其他用户都具有执行权限,即普通用户也可以使用命令修改自己的密码,而被修改的文件/etc/passwd又没有普通用户的权限,这时就可以通过suid来解决.提示:用八进制数4000表示setuid权限位. suid知识小结:1.用户对应的前三位的x位上如果有s就表示设置了suid.当x位上没有x的时候,suid就

linux常用命令-grep,egrep,regexp

grep: 根据模式搜索文本,并将符合模式的文本行显示出来.Pattern: 文本字符和正则表达式的元字符组合而成匹配条件 grep [options] PATTERN [FILE...] -i(忽略大小写) [[email protected] ~]# grep root /etc/passwdroot:x:0:0:root:/root:/bin/bashoperator:x:11:0:operator:/root:/sbin/nologin[[email protected] ~]# --c