跟馬哥學linux (lesson 2)

簡單文件權限管理命令總結:

一,linux權限介紹

1.用戶對文件的權限:

常規表示法8進製表示法說明
r4可使用文件查看工具查看其內容
w2可使用文件編輯工具編輯其內容
x1可向內核請求將此文件運行爲進程

2.用戶對目錄的權限

常規表示法8進製表示法說明
r4可使用ls命令列出目錄中的文件或子目錄列表
w2可在此目錄中創建或刪除文件
x1可列出目錄詳細內容,可切換進目錄

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章