Linux運維命令以及概念整理總結(2)

1、tr 命令
2、單行重定向,多行重定向
3、管道 | 、 |tee
4、新增用戶、用戶組管理,以及用戶權限管理

第四天

 

 

1、tr命令

tr 轉換和刪除字符

tr set1 set2

選項:

-c –C –complement:取字符集的補集

-d –delete:刪除所有屬于第一字符集的字符

-s –squeeze-repeats:把連續重復的字符以單獨一個字符表示

-t –truncate-set1:將第一個字符集對應字符轉化為第二字符集對應的字符

\n 換行 \r 回車? \t tab \v 垂直版tab

 

tr ‘a-z’ ‘A-Z’

等待你輸入: 如 abcde

則顯示 ABCDE

 

tr ‘abcd’ ‘1234’

asdfasdf

1s4f1s4f

 

tr ‘a-z’ ‘A-Z’ < anaconda-ks.cfg > f1.log

意思就是把文件anaconda-ks.cfg內容輸入到tr然后通過tr把內容中的小寫字母轉換成大寫字母在輸出到文件

f1.log

 

tr ‘abcd’ ‘1234’

abcdef

1234ef

 

tr ‘abc’ ‘1234’

abcdef

123def

 

tr -d ‘abc’

abdfabxxc

dfxx

 

tr -dc ‘abc’?? 對’abc‘取反然后刪除

23423aabc3sff

必須按CTRL+D才顯示

aabc

 

tr -s ‘abc’???? 連續重復的字母壓縮成一個

aaaaabbbbaaaaccccdddd

abacdddd

 

在windows中建立文件win.txt 內容為

a

b

c

 

在linux中顯示為abc怎么轉換成正確格式?

\r就是return回車的意思

通過hexdump -c打開文件發現比linux文件多了0d通過ASC表發現0d為10進制13代表回車

 

tr -d ‘\r’ < win.txt > win3.txt

cat win3.txt

a?? b?????? c

把多個空格壓縮成一個空格

tr -s ‘ ‘ < win3.txt

a b c

 

tr -s “ “ :df.log

把df.log中的空格壓縮成一個并把空格替換成:號

 

 

2、單行重定向<,多行重定向<<

 

單行重定向 <

tr ‘a-z’ ‘A-Z’ > /etc/issue

該命令會把/etc/issue中的小寫字符都轉換成大寫字符

tr -d abc < /etc/fstab刪除fstab文件中的所有abc中任意字符

 

 

多行重定向《自己喜歡的任意詞例如END 有時稱為就地文本(heretext)

 

mail -s “Please Call” admin@magedu.com <<END

> Hi Wang,

> >

Please give me a call when you get in. We may need

> to do some maintenance on server1.

> >

Details when you’re on-site

> Zhang

> END

 

cat >f2 <<E

>hh

> dj…

>E 才結束 而且E必須單行而且不能有空格

 

3、管道 | 、 |tee

 

 

管道? ?|

 

cmd1|cmd2

cmd1的標準輸出做為cmd2的標準輸入,相互利用

hostname|tr ‘a-z’ ‘A-Z’

CENTOS7.MAGEDU.COM

hostname | tr ‘a-z’ ‘A-Z’ | tr -d ‘.’

CENTOS7MAGEDUCOM

 

如果不能保證cmd1中的內容正確例如不存在/error但是也想把錯誤內容輸入則

ls /boot /error 2>&1 | tr ‘a-z’ ‘A-Z’

或者

ls /boot /error |& tr ‘a-z’ ‘A-Z’

 

df | tr -s ‘ ‘ ‘;’

替換df下空格為;

 

計算1+2+3…100

echo {1..100}|tr ‘ ‘ + |bc

seq -s + 100|bc

5050

 

 

重定向到多個目標 tee

 

ls | tee ls.log

即寫入文件還在屏幕顯示結果

ls | tee -a ls.log

在ls.log里追加ls顯示結果

如果同時想把ls.log里面內容換行刪除可以

ls | tee -a ls.log | tr -d ‘\n’

 

注意:左邊命令必須有標準輸入 右邊命令必須有標準輸出

echo abcdef | tr ‘abcd’ ‘xyz’

xyzzef

 

 

練習

1、將/etc/issue文件中的內容轉換為大寫后保存至/tmp/issue.out文件中

2、將當前系統登錄用戶的信息轉換為大寫后保存至/tmp/who.out文件中

3、一個linux用戶給root發郵件,要求郵件標題為”help” ,郵件正文如下:

Hello, I am 用戶名,The system version is here,please help me to check it ,thanks!

操作系統版本信息

4、將/root/下文件列表,顯示成一行,并文件名之間用空格隔開

5、計算1+2+3+..+99+100的總和

6、刪除Windows文本文件中的‘^M’ 字符

7、處理字符串“ xt.,l 1 jr#!$mn 2 c*/fe 3 uz 4”,只保留其中的數字和空格

8、將PATH變量每個目錄顯示在獨立的一行

9、 將指定文件中0-9分別替代成a-j

10、將文件/etc/centos-release中每個單詞(由字母組成)顯示在獨立的一行,并無空行

 

練習答案

1.tr ‘[:lower:]’ ‘[:upper:]’ < /etc/issue > /tmp/issue.out

2.who | tr ‘[:lower:]’ ‘[:upper:]’ > /tmp/who.out

3.mail -s “help” root <<END

Hello,I am $USER,The system version is here , please help me to check it ,thanks !

OS version: `lsb_release -a`

END

4.ls /root | tr ‘\n’ ‘ ‘

5.echo {1..100} | tr ‘ ‘ ‘+’ |bc

6.tr -d ‘\r’ < win.txt > win4.txt

7.echo ‘xt.,l 1 jr#!$mn 2 c*/fe 3 uz 4’ | tr -dc ‘[:digit:][:space:]’

8.echo $PATH | tr ‘:’ ‘\n’

9.tr ‘0-9’ ‘a-j’ < /data/1

10.tr -dc ‘[:alpha:][:space:]’ < /etc/centos-release | tr -s ‘ ‘ ‘\n’

 

 

4、新增用戶、用戶組管理,以及用戶權限管理

 

安全機制3A

Authentication 認證

Authorization 授權

Accouting|Audition 審計

令牌token,identity

登陸成功才會發token

如果想訪問file則系統根據你的token判斷你是否有權限訪問file

系統用戶就是服務進程之類的不是普通用戶都是軟件

linux創立一個用戶名同時會創立一個同名用戶組

用戶能不能訪問此文件不是由進程決定的,而是由此用戶的安全上下文決定的

安全上下文context(運行此程序的用戶身份,用戶組身份)

wang g1 read g2 write g3 read 累加權限 read write

主要組primary group

一個賬號必須屬于一個組且只有一個主組組名同用戶名,且僅包含一個用戶,私有組當然也可以是現有組

附加組supplementary group

一個用戶可以屬于0個或多個附加組

Linux安全上下文

運行中的程序:進程 (process)

以進程發起者的身份運行:

root: /bin/cat

mage: /bin/cat

進程所能夠訪問資源的權限取決于進程的運行者的身份

 

id命令查名和主組

 

主要配置文件

/etc/passwd:名稱UID 主組ID

/etc/group:組及其屬性信息

/etc/shadow:用戶密碼及其相關屬性

/etc/gshadow:組密碼及其相關屬

 

用命令打開后再用cat /etc/passwd就可以看到加密密碼一般不推薦

pwunconv 顯示加密密碼

pwconv 不顯示加密密碼

注意

如果系統沒有管理員則會變成無法啟動!!

 

/etc/passwd 格式為

login name:passwd:UID:GID:GECOS:home directory:shell

添加GECOS描述信息

chfn wan

Name []:wanchangqiang

Office []: IT

Office Phone []:10086

Home Phone []:10000

 

finger wang

finger

查用戶信息

6需要安裝

 

系統創建賬號一般是從/etc/skel下拷貝標準配置

cp -r /etc/skel/.[^.]*? /data/max

 

改max的shell為/bin/csh

chsh -s /bin/csh wang

 

想讓max賬號沒法登陸

chsh -s /sbin/nologin max 則max沒法登陸

 

/etc/shadow

讓用戶密碼立即過期,登陸時必須改密碼

passwd -e max

等價于

chage -d 0 max

 

查max賬戶的密碼修改相關信息

chage -l max

修改max賬號的密碼相關信息

chage max

如果希望所有新建的賬戶密碼有效期統一為42天則可以直接修改配置文件

cat /etc/login.defs

 

例如創建賬號Max

useradd Max

passwd Max

不然Max賬戶無法登陸

 

查看創建賬號時的各種配置文件生成的地方

cat /etc/default/useradd

 

UID范圍只是系統默認的范圍,可以人為超越這個范圍

 

系統創建用戶默認都是從/etc/skel/文件夾下復制初始配置文件到新用戶的文件夾下的

所以如果想新用戶帶有別的文件可以直接往/etc/skel目錄加文件

 

如果有新員工A進入公司想讓他直接用已離職的B員工的用戶權限,可以直接修改B員工用戶名為A,再要求

A修改密碼即可

就是進入/etc/passwd和/etc/shadow還有修改家目錄/home/B的文件夾直接修改用戶名A即可

新建用戶的相關文件

/etc/default/useradd

/etc/skel/*

/etc/login.defs

 

更改加密算法

authconfig –passalo=sha256 –update 默認sha512 改成sha256

實際上是修改了一個文件/etc/login.defs

 

單向加密:哈希算法

md5

sha1

sha224

sha256

sha384

sha512

 

 

修改默認創建用戶時會用的配置可以用命令

cat /etc/default/useradd 可以查各種用戶信息

useradd -D

useradd –D -s SHELL

useradd –D –b BASE_DIR

useradd –D –g GROUP

 

單個用戶增加

useradd name

 

group

/etc/group文件里最后的是用戶的附加組往里面加人可以把這些人也加到這些附加組里面

 

關于組group的信息

/etc/group /

/etc/gshadow/

注意必須保持兩個文件里面的組成員信息相同,否則會出現命令異常的狀況??!

 

給Max組加密碼

gpasswd Max

 

newgrp 臨時切換主組? 例如

newgrp Maxi

就是Max的主組切換為Maxi

如果用戶本不屬于此組則需要知道口令

 

vipw = vi /etc/passwd???? vi相對于nano有語法檢查功能

改完之后運行

pwck可以檢查報警

同理

vigr = vi /etc/group

grpck

 

如果id超了范圍則下一個建立賬戶就跟回原來的下一個id號

如果id沒有超上限則會按照上一個創建的id下一個

生產中一般管理多臺機子,都會指定id號這樣方便管理

 

如果原來id號已經存在,還要強行建立相同id號的賬號則用

useradd -ou 2000 name

一般不推薦這么做

 

useradd -G bin,root -s /bin/csh -c “Gentoo Distribution”

 

如果要指定賬戶uid,則uid范圍可以人為超過指定范圍

useradd -u 66666 xixi

 

getent passwd xixi

只看/etc/passwd下與xixi相關的那行

 

新建賬號boy讓他的主組屬于已存在組Maxi則

useradd -g Maxi boy

 

創建一個賬戶Max ,并添加附加信息hi

useradd -c hi Max

 

創建一個新賬號Max,讓他的默認家目錄在/data/Max則

useradd -d /data/Max Max

 

創建一個新賬號nginx 讓它成為一個系統賬號同時設置shell類型為/sbin/nologin

useradd -s /sbin/nologin -r nginx

 

創建一個新賬號openstack 讓它成為一個系統賬號同時設置shell類型為/sbin/nologin同時為他設置家目錄

useradd -s /sbin/nologin -r -m openstack

 

創建一個用戶Max,同時不創建他的家目錄則

useradd -M Max

 

創建一個用戶Max,同時讓他加入附加組app1,app3則

useradd -G “app1,app3” Max

 

創建Maxi用戶,并使用戶所屬組為users則

useradd -N Maxi

 

刪除Max用戶同時刪除其家目錄

userdel -r Max

 

創建時郵箱信息放在/var/spool/mail下用userdel -r 會一起刪除其存放的用戶信息

 

練習

 

1、創建用戶gentoo,附加組為bin和root,默認shell為/bin/csh,注釋信息為

“Gentoo Distribution”?

2、創建下面的用戶、組和組成員關系

名字為webs 的組

用戶nginx 使用webs 作為附屬組

用戶varnish,也使用webs 作為附屬組

用戶mysql,不可交互登錄系統,且不是webs 的成員,nginx,varnish,mysql密碼都是magedu

 

答案

1、useradd -G bin,root -s /bin/csh -c “Gentoo Distribution” gettoo

2、

1)groupadd webs

2)useradd -G webs nginx

3)useradd -G webs varnish

4)useradd -r -s /sbin/nologin mysql

5)echo magedu > passwd –stdin nginx

echo magedu > passwd –stdin varnish

echo magedu > passwd –stdin mysql

 

給mage組加密碼則

gpasswd mage

Max賬號加入到mage組做為其主組則

newgrp mage

如果需要批量創建用戶或者批量遷移用戶例如把文件從centos7遷移到centos6

可以先創建/datd/userlist.txt然后把/etc/passwd里面需要遷移的用戶內容拷貝進文件里面注意重復的用戶

必須刪除,然后執行。

 

先執行遠程拷貝命令scp

scp userlist.txt 192.168.30.100:/data(此為centos6 ip)

如果沒有寫目錄默認就是在/root下

然后按yes,之后輸入對方密碼就能傳文件

newusers /data/userlist.txt 按照/data/userlist.txt批量創建用戶

chpasswd 批量修改用戶口令

批量修改口令可以直接創建一個文本pass.txt內容為

app1:redhat

app2:oopp

app3:abc

app4:abc

app5:redhat

然后執行

cat pass.txt | chpasswd

 

usermod

對于已有用戶需要修改用戶信息則可以用usermod命令

 

用戶Max加入到附加組root并不覆蓋原有附加組bin則用

usermod -aG root Max

 

如果想要Max不屬于任何附加組則

usermod -G “” Max

 

如果想修改用戶名Max為Maxi則

usermod -l Maxi Max

但是家目錄還是沒改的需要手動更改

默認用戶郵箱目錄 /var/spool/mail/

 

 

 

刪除用戶userdel

userdel -r 刪除用戶名和用戶目錄

不過一般工作中不用-r以防萬一需要用舊用戶里面的數據

 

刪除組用groupdel

但是當一個組是某個用戶的主組的時候此組不能刪除例如,存在用戶Max則

groupdel Max

無法執行,因為他是用戶Max的主組,如果附加組則可以直接刪除

如果想刪除組Max那么需要先指定用戶Max的主組為其他組,讓他不成為任何一個用戶的主組,然后執行

刪除

 

useradd? usermod userdel

-u

-r????????????????? -r

-s

-d

-c

-g

-G

 

id命令

-u

-g

-G

-Gn

 

一般創建用戶之前都用id命令先判斷是否存在此用戶才執行創建

 

id Max

 

su切換用戶

 

su Max

為不完整切換身份切換環境信息不切換

 

su – Max

為完全切換身份切換環境信息也切換

 

在生產環境中,推薦先用普通賬戶登陸等需要執行一些高級操作才切換到root比較安全

 

從當前賬號Max切換到root以執行cat /etc/shadow完成后再退回Max賬號

su – root -c ‘cat /etc/shadow’

注意:每次執行完切換系統會有切換記錄,盡量少切換,每次切換完用exit不然會有很多奇怪錯誤

在生產環境中,需要創建特定的gid和uid相同的賬號的時候可以通過以下方法創建,例如創建id為1234的

nginx賬號:

groupadd -p 1234 nginx

useradd -g nginx -u 1234 nginx

 

更改組的口令用gpasswd

gpasswd -a user group1 將用戶添加到指定組

gpasswd -d user group1從指定組中移除用戶user

gpasswd -A user1,user2… 設置有管理權限的用戶列表例如

gpasswd -A Max g1

 

查詢某個組里的成員有誰用groupmems

groupmems -l -g groupname

在某個組里加人

groupmems -a username -g groupname

在某個組里刪人

groupmems -d username -g groupname

查看賬號屬于哪個組

groups username

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/95930

(0)
MaxMax
上一篇 2018-04-14
下一篇 2018-04-14

相關推薦

  • shell筆記

    在學習的時候整理的零散筆記

    Linux筆記 2018-04-14
  • 運維第一周小結

    運維有運行和維護兩層含義。對于一個系統,有時出錯我們無法預知,系統越復雜,其維護難度越大,為了減少損失,我們盡可能地去預防各種錯誤,對于突發情況,盡可能地去修復。 平時我們所接觸的大都是window的圖形界面,而Linux卻是另外一種風格,他完全是由命令來進行操作的一種系統,那么要想學好我覺得命令是最重要的,不僅要會使用常用的命令還要學會使用不常用的命令會通…

    2018-03-31
  • mysql數據庫的安裝

    實戰:rpm包安裝 1、yum安裝 centos6上yum install mysql-server rpm -ql mysql-server /etc/rc.d/init.d/mysqld? 服務名(服務腳本的名稱) /usr/libexec/mysqld? 數據庫的主程序(二進制的程序路徑與平時看到的二進制程序路徑不一樣) /var/lib/mysql?…

    Linux筆記 2018-06-11
  • liunx 基礎

    命令別名: 命令格式 :

    Linux筆記 2018-04-01
  • shell 腳本編程基礎

    六、shell腳本編程 6.1bash腳本編程之變量 ? 作業提交地址:scp N wang@172.20.102.77:home/wang/bin ? 執行腳本的方法: 以bash程序來執行: bash hello.sh或cat hello.sh |bash 直接指令下達: 加權限:chmod +x hello.sh 絕對路徑:/home/hello.sh…

    2018-05-01
  • Linux第一周命令總結

    hostname? 完整主機名? cat +文件路徑 可查看文件信息 cat /etc/centos-release 查看文件? 版本的名稱、發行時間所有shell cat/etc/shells? 顯示當前系統使用的 lsd_release -a? 命令? 查看版本 /etc/centos-release 是文本文件? cat是查看文本的命令 uname-r…

    2018-07-22
欧美性久久久久