什么是管道?
管道就是把命令1的標準輸出發送給命令2的標準輸入,把命令2發的標準輸出發送給命令3的標準輸入。。。
最后一個命令會在當前shell進程的子shell進程中執行用來
管道實現了使用目的單一的小程序,組合小程序完成復雜的任務
管道需要配合其他命令的使用
tr命令的使用,常常用于配合管道
-c或--complerment:取字符集的補集 -d或--delete:刪除所有屬于第一字符集的字符; -s或-squeeze-repeats:把連續重復的字符以單獨一個字符表示 -t或--truncate-set1:先刪除第一字符集較第二字符集多出的字符 \NNN 八進制值為NNN 的字符(1至3個數位) \\ 反斜杠 \a 終端鳴響 \b 退格 \f 換頁 \n 換行 \r 回車 \t 水平制表符 \v 垂直制表符 [:alnum:] 所有的字母和數字 [:alpha:] 所有的字母 [:blank:] 所有呈水平排列的空白字符 [:cntrl:] 所有的控制字符 [:digit:] 所有的數字 [:graph:] 所有的可打印字符,不包括空格 [:lower:] 所有的小寫字母 [:print:] 所有的可打印字符,包括空格 [:punct:] 所有的標點字符 [:space:] 所有呈水平或垂直排列的空白字符 [:upper:] 所有的大寫字母 [:xdigit:] 所有的十六進制數 [=字符=] 所有和指定字符相等的字符
例如 ls | tr 'a-z' 'A-Z' 配合ls 命令把所有標準輸出的小寫字母都轉換成大寫字母
[root@centos6 ~]# ls -l | tr 'a-z' 'A-Z' TOTAL 124 -RW-R--R--. 1 ROOT ROOT 860 JUL 28 17:33 1TEST -RW-R--R--. 1 ROOT ROOT 909 JUL 28 17:34 2TEST -RW-------. 1 ROOT ROOT 1482 JUL 20 17:25 ANACONDA-KS.CFG -RW-R--R--. 1 ROOT ROOT 43 AUG 1 10:47 A.TXT DRWXR-XR-X. 2 ROOT ROOT 4096 JUL 22 12:51 DESKTOP DRWXR-XR-X. 2 ROOT ROOT 4096 JUL 20 21:24 DOCUMENTS DRWXR-XR-X. 2 ROOT ROOT 4096 JUL 20 21:24 DOWNLOADS -RW-R--R--. 1 ROOT ROOT 0 JUL 28 10:18 F[A-Z] -RW-R--R--. 1 ROOT ROOT 0 JUL 28 10:18 F{A-Z} -RW-R--R--. 1 ROOT ROOT 0 JUL 28 10:18 F[A-Z] -RW-R--R--. 1 ROOT ROOT 55348 JUL 20 17:24 INSTALL.LOG -RW-R--R--. 1 ROOT ROOT 10608 JUL 20 17:20 INSTALL.LOG.SYSLOG DRWXR-XR-X. 2 ROOT ROOT 4096 JUL 20 21:24 MUSIC DRWXR-XR-X. 2 ROOT ROOT 4096 JUL 20 21:24 PICTURES DRWXR-XR-X. 2 ROOT ROOT 4096 JUL 20 21:24 PUBLIC DRWXR-XR-X. 2 ROOT ROOT 4096 JUL 20 21:24 TEMPLATES DRWXR-XR-X. 2 ROOT ROOT 4096 JUL 20 21:24 VIDEOS DRWXR-XR-X. 9 ROOT ROOT 4096 OCT 19 2015 VMWARE-TOOLS-DISTRIB
tee命令,常常用于配合管道
NAME tee - read from standard input and write to standard output and files # 用來將標準輸入的內容輸出到標準輸出并可以保存為文件 SYNOPSIS tee [OPTION]... [FILE]... DESCRIPTION Copy standard input to each FILE, and also to standard output. -a, --append append to the given FILEs, do not overwrite # 附加到指定文件,并且不覆蓋 -i, --ignore-interrupts ignore interrupt signals # 忽略中斷的信號 --help display this help and exit # 顯示幫助和退出 --version output version information and exit # 顯示版本信息和退出· If a FILE is -, copy again to standard output. # 如果文件類型是文件,復制文件文件到標準輸出。
$命令1 | tee文件名| 命令2
把命令1的標準輸出保存在文件名中,然后管道輸入給命令2
使用:
保存不同階段的輸出
復雜管道的故障排除
同時查看和記錄輸出
用戶管理
什么是用戶?用戶資源獲取標識符,資源分配,安全權限模型的核心要素之一
沒用用戶,可否? 答案是YES
Linux用戶類別:
管理員UID:root,0
系統用戶UID:1-499(CentOS 6),1-1000(CentOS 7)
登陸用戶UID:500+(CentOS 6),1000+(CentOS 7)
用戶組類別:
管理員組GID:root,0
系統組GID:1-499(CentOS 6),1-1000(CentOS 7)
普通組GID:500+(CentOS 6),1000+(CentOS 7)
Linux組的類別:
用戶的主要組(主組、屬主):
用戶必須屬于一個且只有一個主組
組名同用戶名,且僅包含一個用戶:私有組
用戶的附加組(輔助組、屬組):
一個用戶可以屬于零個或多個輔助組
CentOS6和7的默認UID和GID不同,這個是由于/etc/login.defs文件里面的默認值所決定的
CentOS 6 UID和GID默認值
CentOS 7 UID和GID默認值
Linux用戶和組的主要配置文件
/etc/passwd:用戶及其屬性信息(名稱、UID、主組ID等)
該文件里面一共有7項,包括
# [root@centos ~]# cat /etc/passwd # root(用戶名):x(密碼):0(UID):0(GID):root(注釋):/root(家目錄):/bin/bash(默認SHELL)
假如把普通用戶的UID更改成0,該普通用戶會變成管理員賬號,因為在Linux系統里面,識別管理員是否為管理員,就是查看用戶的UID號碼,為0則為管理員,在生產環境中,可能會把管理員root的賬號改成其他名字,這樣做是以防止黑客攻擊root賬號來進行破解。
/etc/group:組及其屬性信息
# [root@centos ~]# cat /etc/group # root(主組):x(組密碼):0(GID):gentoo(附加組的用戶列表)
/etc/shadow:用戶密碼及其相關屬性
# [root@centos ~]# cat /etc/shadow # root(用戶名):$6$(加密方式)jyarrud3(隨機數,俗稱鹽)$6AbktjO7BD7hQAMNK.Xx6YO7Tj3ooj9tEcclql5kCZ18Tvt7erKxPv212ssT32SFMEms0WegjsNhS0miktlkd0(用戶密碼):17008(最近更改密碼的日期,從1970年1月1號開始算):0(密碼再過幾天可以被更改):99999(密碼過期時間):7(密碼過期前提醒時間):(密碼過期后幾天賬號會被鎖定):(從1970年1月1日算起,多少天后帳號失效):(保留)
上面這個設置了密碼的用戶顯示的
現在我們再新建一個用戶看看
[root@centos6 ~]# useradd wan [root@centos6 ~]# tail -1 /etc/shadow wan:!!:17015:0:99999:7:::
我們會看見賬號密碼那里有兩個!!,這表示賬號被鎖定,沒有密碼的話不允許該用戶去登陸,假如有密碼,但是那里還是有一個嘆號的話,也表示賬號被鎖定,不對用戶進行解鎖的話該用戶將無法登陸。假如沒有嘆號的話,該用戶可以沒有密碼的情況下面直接登陸。不過該功能只能在CentOS 5版本和更老的版本可以實現,為了安全起見,從CentOS 6以后已經修正此問題。
/etc/gshadow:組密碼及其相關屬性
# cat /etc/gshadow # root/(主組):(組密碼):(組管理員列表):gentoo(附加組的用戶列表)
注意:為安全起見,現在一般都沒有組密碼,直接管理員指派,因為當其他用戶知道了組密碼,可以隨意加入該組,這樣的話就顯得不安全。
用戶和組管理命令
用戶管理命令
useradd [options] LOGIN 增加用戶
-u UID:指定UID
-o 配合-u選項使用,不檢查UID的唯一性,
-g GID:指定GID,即用戶的主組,但GID要事先存在
-G GID:指定用戶的額外組,但GID要事先存在
-N 不創建私用組做主組,使用users組做主組
-d 目錄: 指定家目錄
-m 創建用戶時,強制給用戶創建家目錄
-M 創建用戶時,但不創建家目錄
-c 備注:注釋
-s shell:指定默認shell,應該指定使用/etc/shells文件中出現的shell
-r 創建系統用戶 特點:CentOS 6: ID<500,CentOS 7: ID<1000 默認shell為/sbin/nologin
-D 顯示或更改默認設置 (默認值設定:/etc/default/useradd文件中)(此命令相當于cat /e tc/default/useradd)
[root@centos6 ~]# useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes
該命令,可以查看到創建用戶時候的各項默認值
例如更改其他用戶默認的家目錄和默認SHELL之類等等的參數就在這里面
/etc/skel 家目錄文件的來源,在此文件夾里面新建文件的話,創建新用戶的時候會連指定的新文件一并創建
/etc/login.defs 一些用戶和組等創建的默認設置的文件
usermod [options] LOGIN 修改指定用戶(跟useradd命令使用方法類似)
-u UID 更改用戶的UID
-g GID 更改用戶的GID
-G 附加組,配置-a 追加新的組,否則為覆蓋
-s SHELL 更改用戶的默認SHELL
-c 注釋
-d home,跟-m同時用移動家目錄數據
-m 移動家目錄數據,跟-d同時用
-l 新的名字,把用戶改名
-e 指定過期日期 YYYY-MM-DD
-f 設定非活動期限
-L 鎖定指定用戶,在/etc/shadow 里面加! (同以上/etc/shadow的解釋)
-U 解鎖用戶,將/etc/shadow 里面的!號拿掉 (同以上/etc/shadow的解釋)
userdel [options] LOGIN 刪除指定用戶
-r 連同家目錄和郵箱一起刪除
用戶組管理命令
groupadd [options] group 添加指定組
-g:指定用戶的GID
groupmod [options] GROUP 修改指定組
-g: 修改組的GID
-n: 修改組的組名
groupdel [options] GROUP 刪除指定組
groupmems -a user_name | -d user_name | [-g group_name] | -l | -p (CentOS 7才有此命令)
-l -g 用戶名: 查看指定用戶名組下面還有哪些用戶屬于此組
-a 要增加的組 -g 用戶: 增加附加組
切換用戶或以其他用戶身份執行命令
切換用戶的方式:
su UserName:非登錄式切換,即不會讀取目標用戶的配置文件,不改變當前工作目錄
su – UserName:登錄式切換,會讀取目標用戶的配置文件,切換至家目錄,完全切換
root su至其他用戶無須密碼;非root用戶切換時需要密碼
換個身份執行命令:
su [-] UserName-c 'COMMAND'
選項:-l –login:
su -l UserName相當于su-UserName
查看用戶相關的ID信息
id [OPTION]… [USER]
-u: 查看用戶的UID
-g: 查看用戶的GID
-G: 查看用戶的Groups
-n: 查看用戶的Name
getent passwd,shadow,gourp,gshadow USERNAME/GROUPNAME
直接查看指定用戶/組里面的passwd,shadow,gourp,gshadow文件里面的內容
其他命令總結:
chsh:修改默認的shell
chfn:修改用戶注釋
vipw:使用vim來編輯passwd文件
vigr:使用vim來編輯group文件
pwconv:pwconv命令用來開啟用戶的投影密碼
pwunconv:pwconv命令用來關閉用戶的投影密碼
Linux系統里的用戶和群組密碼,分別存放在名稱為passwd和group的文件中, 這兩個文件位于/etc目錄下。因系統運作所需,任何人都得以讀取它們,造成安全上的破綻。投影密碼將文件內的密碼改存在/etc目錄下的shadow和gshadow文件內,只允許系統管理者讀取,同時把原密碼置換為"x"字符,有效的強化了系統的安全性。
openssl rand base64 10 隨機生成10位數
批量增加用戶和改密碼
newusers FILE(有格式的文件) 批量加用戶 文件格式 /etc/passwd 文件的格式 root:x:0:0::/root:/bin/bash
ex. newusers user.txt
chpasswd FILE (有格式的文件) 批量改密碼 USERNAME:PASSWORD
ex. cat p.txt |chpasswd
注意,按照以上步驟的方法批量添加完用戶和密碼以后,這些用戶的家目錄里面并沒有配置,此時需要我們手動把這里面的配置復制到它們的家目錄里面
/etc/skel 這個文件甲下面的文件是關于用戶初始配置里面的變量文件之類
cp -r /etc/skel/.[^.]* /home/USERNAME
原創文章,作者:~微風~,如若轉載,請注明出處:http://www.www58058.com/32142