8.1_Linux管道的使用和用戶管理

什么是管道?

wKioL1ef9n7xilg1AABhH_ly20w292.png

管道就是把命令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默認值

wKiom1egC9bSuxIAAAAkwAzZhvU369.png

CentOS 7 UID和GID默認值

wKioL1egC9bAeHcFAABGjOhu7ec016.png

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

(0)
~微風~~微風~
上一篇 2016-08-10 10:15
下一篇 2016-08-10

相關推薦

  • 使用monit搭建一個監控系統

     上周用monit搭建或者說定制了一個監控系統,來監控服務器發生事情。當然了主要是監控異常,因為我們的產品屬于服務器類型,很多進程都daemon,要不停的運行。我們搭建監控目的不過是出現問題能夠及時的知道,平時可從web UI上看到整個系統的狀況,同時它本身要輕量級,不要影響性能。當然了類似的產品很多了,比如Ganglia,我在老科長波哥曾經搭建過…

    Linux干貨 2015-02-15
  • Linux系統啟動過程及其修復過程簡析

    Linux組成 Linux: kernel+rootfs     kernel: 進程管理、內存管理、網絡管理、驅動程序、文件系統、安全功能     rootfs:程序和glibc     庫:函數集合, function, 調用接口(頭文…

    Linux干貨 2016-09-19
  • DNS簡單概念 一

    DNS簡單概念 一 DNS簡單概念 一 1 §·主機角色 1 §·DNS服務器的類型: 1 §·DNS中簡單術語 2 §·DNS中資源記錄及其類型 2 §·DNS域與區域 4 §·BIND安全設置 5 §·BIND高級設置BIND VIEW 6   §·主機角色 在網絡上不同的主機有不同的角色, 比如: DNS解析角色,郵件角色,網頁服務器 §·D…

    Linux干貨 2016-09-26
  • 系統基礎之權限管理

    權限管理: 概論:  上節,為大家介紹了用戶,和組的知識.今天為大家介紹與用戶,組息息相關的知識,權限.linux是多用戶,多任務的操作系統,面對多人的操作,安全問題就很重要,權限機制就很好的對安全進行防護,避免他人操作自己的文件.下面給大家詳細介紹權限.   首先讓我們先直觀地看下權限,對權限有個最基本的認識.以/etc/issue文件…

    Linux干貨 2016-08-04
  • 安裝包管理

       軟件包管理 軟件的運行和編譯 ABI 由于window和linux不兼容 linux是ELF window 是PE 對應的內核解析方式不同,可以用虛擬化 API 只程序與程序的公用的接口,相互調用方式 程序源代碼 –>預處理–>編譯–>匯編–>鏈接 預處理只會引…

    Linux干貨 2017-04-24
  • 計劃任務管理

        Linux系統計劃任務有兩種:A、一次性任務;B、定時循環任務。     一次性任務:at命令。at的安裝包名字就是at,可以使用命令"yum install at"進行安裝.安裝完成后,啟用atd服務就可以運行at命令了.運行格式為:at [opti…

    Linux干貨 2016-11-27
欧美性久久久久