简单文件权限管理命令总结:

一,linux权限介绍

1.用户对文件的权限:

常规表示法 8进制表示法 说明
r 4 可使用文件查看工具查看其内容
w 2 可使用文件编辑工具编辑其内容
x 1 可向内核请求将此文件运行为进程

2.用户对目录的权限

常规表示法 8进制表示法 说明
r 4 可使用ls命令列出目录中的文件或子目录列表
w 2 可在此目录中创建或删除文件
x 1 可列出目录详细内容,可切换进目录

3.文件属性对应的3类系统对象

u:所属用户

g:所属组

o:既不属于所属用户也不属于所属组

a:所有用户,组,和其他


二,文件权限管理命令

1.chmod

man文档说明:change file mode bits

中文说明:修改文件的读写执行权限

语法:

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

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

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

重要参数:

-R, --recursive 递归的修改文件夹中文件的权限

--reference=RFILE 使用参考文件修改目标文件的权限

示例1:修改./test文件的权限为所有用户可读可写可执行

chmod a+rwx ./test

示例2:修改./directory 文件夹的权限为仅所属用户可读,可写,可执行

chmod u+rwx ./directory

2.chown

man文档说明:change file owner and group

中文说名:修改文件所有者或者所有组

语法:

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

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

重要参数:

-R, --recursive 递归的修改文件夹中文件的权限

--reference=RFILE 使用参考文件修改目标文件的权限

示例1:修改./test 所有者为tom所属组不变

chown tom ./test

示例2:修改./directory 目录所属组为tom,并递归的修改文件夹内部文件为同样所属组

chown -R :tom ./directory

3.chgrp

man文档说明:change group ownership

中文说明:修改文件所属组,使用方法和chown相同。


三,正则表达式

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

.: 匹配任意单个字符;

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

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

[:lower:]:匹配小写字母

[:upper:]:匹配大写字母


次数匹配:用于要指定其次数的字符的后面;

*: 任意次;

\?:0或1次;

\+:1或多次;

\{m\}:精确限制为m次;

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

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

\{m,\}:至少m次;

.*: 匹配任意长度的任意字符;

位置锚定:

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

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

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

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

^$: 空白行;

分组:\(\)

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

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

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


四,作业

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

[root@bogon ~]# grep 'bash$' /etc/passwd
root:x:0:0:root:/root:/bin/bash
oracle:x:400:502::/home/database:/bin/bash


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

[root@bogon ~]# grep '[[:digit:]]\{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
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
saslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
oprofile:x:16:16:Special user account to be used by OProfile:/home/oprofile:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
oracle:x:400:502::/home/database:/bin/bash

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

[root@bogon ~]# netstat -tan | grep -E 'LISTEN[[:space:]]*$'
tcp        0      0 0.0.0.0:42213               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: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 127.0.0.1:6011              0.0.0.0:*                   LISTEN      
tcp        0      0 :::51207                    :::*                        LISTEN      
tcp        0      0 :::111                      :::*                        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 ::1:6011                    :::*                        LISTEN


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

[root@bogon ~]# grep '\(bash\).*\1' /etc/passwd
bash:x:500:506::/home/bash:/bin/bash
testbash:x:501:507::/home/testbash:/bin/bash
basher:x:502:508::/home/basher:/bin/bash

[root@bogon ~]# grep '^\(nologin\).*\1' /etc/passwd
nologin:x:503:509::/home/nologin:/sbin/nologin

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

[root@bogon ~]# grep -E '^root|^centos|^user1' /etc/passwd | cut -d: -f1,3,7
root:0:/bin/bash
centos:504:/bin/bash
user1:505:/bin/bash

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

[root@bogon ~]# grep -E '\<[[: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() {
action_silent() {
strstr() {
confirm() {
get_numeric_dev() {
is_ignored_file() {
is_true() {
is_false() {
apply_sysctl() {
key_is_random() {
find_crypto_mount_point() {
init_crypto() {

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

[root@bogon ~]# echo /etc/init.d/network | grep -oE '[^/]+/?*$'
network/

[root@bogon ~]# echo /etc/init.d/network | grep '^[/].*[/]'
/etc/init.d/network

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

[root@bogon ~]# ifconfig | grep -E '\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>'
eth0      Link encap:Ethernet  HWaddr 00:0C:29:65:DD:CB  
          inet addr:192.168.86.10  Bcast:192.168.86.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe65:ddcb/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX bytes:1689987 (1.6 MiB)  TX bytes:3042194 (2.9 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