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

1.用戶權限設置以及更改
2、特殊權限suid、sgid、sticky
3、ACL權限設置
4、cat命令、head命令、tail命令、cut命令、paste命令
5、sort命令、uniq命令、diff命令

 

1.用戶權限設置以及更改

 

linux 判斷你的權限的是UID而不是GID

就算加入root的組也沒有root的權限,只有UID為0的才為管理員

useradd -s /sbin/nologin -r -d /data/mysql -m mysql -u 1234

運維的終極目標就是自動化管理,自動化管理的前提就是環境的統一化。

chown 設置文件的所有者把f1文件所有者變為Max

chown Max f1

chgrp 設置文件的所屬組把f1文件所屬組設為Maxi

chgrp Maxi f1

 

token里包含有你的(uid,gid,groups)

read r???? 讀

write w??? 寫

excute x?? 執行

二進制程序讀權限沒有什么實際意義,一般讀權限是給文本文件的

寫權限也是,除非你是黑客能看到二進制內容,隨便改有可能導致程序崩潰

注意:

1.普通用戶不能改文件所有者

2.普通用戶要改文件所屬組,首先文件必須是本人的,同時必須在想改變的組內

 

修改權限的方法

方法一:

chmod 改變權限

方法1:mode 法

chmod who opt per file

who:u g o a(a=all)

opt:+ – =

per:r w x X

例子:

chmod u+x file

chmod u+x,g-w,o=? file

對于普通用戶而言,文件所有者可以修改文件的權限

對于file,賦予擁有者x權限,組用戶去除w權限,other空權限

對于只有w權限而沒有r權限的可以往里面追加信息卻不能讀

例如:

echo mage2 >> f1

> f1 清空內容??!

但是

rm -f f1 沒法執行??!

因為刪除文件必須擁有目錄寫權限

刪除文件等于刪除目錄內容inode等

所以必須對文件夾有權限

刪除文件必須刪除目錄

讀權限對二進制程序不是必須例如

chmod -r /bin/cat

后照樣能夠執行

但是如果沒有執行權限就不能執行了

chmod -x /bin/cat

沒有讀權限有執行權限

file /bin/cat 失敗

因為file原理是打開文件后分析信息實現

讀權限對于目錄

對于目錄而言只有x權限,沒有r不能看文件列表但是可以打開里面文件,前提你知道文件名

有r而沒有x權限,不能cd進去,不能查看詳細屬性,也不能查看文件內容

rx權限對于目錄來說是基礎權限,一般全給要不就全不給。

如果對目錄只有wx權限就可以刪除目錄下的文件!前提你知道里面有什么文件!因為你沒有r權限!

另外,如果對于文件設置

chmod u=r,g=rw,o=rwx f1

結果用戶只有r權限

vfat系統是window系統文件系統不支持權限修改!

用參考文件f1的權限設置f2和f3

chmod –reference=f1 f2 f3

引用f1權限設置f2 f3

總結:

1.讀寫權限對root無效

2.執行權限例外,沒有執行權限包括root也不能運行,但是root可以修改權限

3.普通用戶無法修改文件的所有者

4.普通用戶要改文件所屬組必須自己在這個組以內

5.刪除文件不是對文件有寫權限而是對文件夾有寫權限

6.系統權限判斷的順序是所有者 所屬組 other,一旦匹配就不再判斷!不管后者的權限是不是比前者大!

7.權限修改是由文件系統決定的而不是操作系統決定的。

 

方法二:

數字法

u?? g?? o

rwx rw- r–

111 110 100

7?? 6?? 4

chmod 764 f1

r:4

w:2

x:1

— 000 0

–x 001 1

-w- 010 2

-wx 011 3

r– 100 4

r-x 101 5

rw- 110 6

rwx 111 7

 

常見

file:6rw,4r,0,1x

dir:7rwx,5r-x,0

為dir1目錄下的文件和文件夾都加執行權限

chmod -R a+x dir1

 

為dir2目錄下所有文件夾加執行權限

chmod -R +X dir2

當然有一種例外,如果擁有者已經有其中一個文件的執行權限那么用+X文件也會給其他文件加執行權

限??!

chown -R wang /*

chmod -R 777 /*

都是危險操作?。。。。。。。。。?!

 

一次性更改文件或者目錄所有者和所屬組(.或者:都可以做為分隔符)

chown wang.g1 dir1

chown root:admins testfile

同時修改所有者和所屬組

chown root. dir1

所有者不變,只修改所屬組

chown :bin dir1

以上2種方法一般少用,因為結果不明晰,容易出錯

 

默認權限

默認目錄權限755 文件644

默認創建文件和目錄的權限

umask

0022

umask022+default644|755=file666/dir777 初步后面必須修正??!奇數加1偶數不變對于文件而言!!文件

夾不用!??!

 

umask mask : 掩碼

功能:取消對應的權限

666

125

541

奇數加1偶數不動

110110110

001010101

11010010

642

總結:

對于目錄

unmask+default=777

對于文件

666-umask:對結果觀察,如果有奇數+1,偶數不變

如果想永久修改umask,可以把修改數據寫入.bashrc中格式為

umask xxx

在顯示umask值前面增加umask這個詞以方便寫入文件

umask -p

umask 0022

umask -p >> .bashrc

umask -S

則顯示u=rwx,g=rx,o=x

 

直接設置法:

umask u=rwx,g=r,o=

umask 026

 

練習

5、復制/etc/fstab文件到/var/tmp下,設置文件所有者為tomcat讀寫權限,所

屬組為apps組有讀寫權限,其他人無權限

6、誤刪除了用戶git的家目錄,請重建并恢復該用戶家目錄及相應的權限屬性

答案

5

useradd tomcat

groupadd apps

groupmems -a tomcat -g apps

cp /etc/fstab /var/tmp/

chown tomcat:apps fstab

chmod 660 fstab

6

1.mkdir /home/git

2.cp -a /etc/skel/.[^.]*? /home/git

或者

cp -r /etc/skel /home/git

3.chown -R git.git /home/git/

4.chmod 700 /home/git

 

2、特殊權限suid、sgid、sticky

 

linux 文件系統上的特殊權限

suid作用在于當一個用戶去運行一個程序的時候,會繼承二進制程序所有者的權限

用戶運行具有suid權限的程序時,會臨時繼承程序所有者的權限

s權限相當于S+x權限

 

數字法

chmod 4755 /usr/bin/passwd

chmod 755 /usr/bin/passwd 就是去s權限

chmod g+s FILE…

chmod g-s FILE…

 

suid只適合在二進制的可執行程序

sgid就是用戶運行具有suid權限的程序時,會臨時繼承程序所屬組的權限

1)繼承二進制程序所有者的權限

2)作用于目錄,此目錄新建的文件繼承目錄的所屬組

chmod 2755 /bin/nano

chmod g+s /bin/nano

chmod g+s DIR…

chmod g-s DIR…

 

sticky是針對文件夾設置的,設置在文件上沒有價值

作用于目錄,此目錄的文件只能被所有者或root刪除,又叫做粘滯位

chmod o+t dir1

chmod o-t dir1

chmod 1777 /data/dir1

普通用戶就算對dir1有寫權限,可是無法實現刪除其他客戶的文件!

 

總結:

1.suid:繼承二進制程序所有者的權限

2.sgid:

1>繼承二進制程序所有組的權限

2>作用于目錄,此目錄新建的文件繼承目錄的所屬組

3.sticky:作用于目錄,此目錄的文件只能被所有者刪除

當有wang和mage都參與一個項目需要在同一目錄dir1中創建文件,為了方便相互訪問文件,可以把目錄

dir1添加sgid權限,然后設置一個附屬組例如opts,讓wang和mage都加入該組,這樣由于dir1有s權限,那

么在該目錄下無論誰創建的文件,默認組都是opts,那么就組成員就可以訪問彼此的文件了,還可以為

other添加t權限,防止非文件所有者刪除文件。

 

chmod 3777 dir1??? (3 s+t )

 

chattr對文件加鎖,管理員也可以避免誤操作

chattr +i s?? 鎖定文件s不能刪除也不能改只能讀,包括root

chattr -i 解鎖

chattr +a 只允許追加內容

chattr +A 鎖定atime

 

lsattr ss? 顯示ss的特殊屬性

—–a———-

 

3、ACL權限設置

 

ACL

setfacl -m u:wang:0 f1???? set file acl

setfacl -m u:mage:rw f1

getfacl f1 查看f1設定的特殊權限列表

一旦啟用acl ,傳統組權限group會變成mask權限

setfacl -m g:g2:x f1? 加

setfacl -x g:g2 f1??? 刪

getfacl f1

mask定義了除user和other的最高權限

setfacl -m mask ::r f1

就是設置了除user和other之外最高只能有讀權限

如果之后對某一個文件執行

chmod g=rw f1

則mask 直接變為rw-

setfacl -b f1

清空權限列表

啟用ACL后的判斷順序依然是匹配順序,一旦匹配直接生效

所有者–》所屬組—》其他人

centos6 裝好系統后才手動添加的分區是不支持acl必須自己添加

centos7 全部支持acl

setfacl -M acl.txt f1

批量修改權限

練習

1、在/testdir/dir里創建的新文件自動屬于webs組,組apps的成員如:tomcat能對這些新文件有讀寫權

限,組dbs的成員如:mysql只能對新文件有讀權限,其它用戶(不屬于webs,apps,dbs)不能訪問這個文件

夾。

2、備份/testdir/dir里所有文件的ACL權限到/root/acl.txt中,清除/testdir/dir中所有ACL權限,最后還原

ACL權限

 

答案

1.

mkdir -p /testdir/dir

groupadd webs

groupadd apps

groupadd dbs

useradd -G apps tomcat

useradd -G dbs mysql

setfacl -m g:apps:rwx /data/testdir/dir

setfacl -m g:dbs:r-x /data/testdir/dir

chmod o=”” /data/testdir/dir

 

2.

getfacl -R /test/dir > /root/acl.txt

setfacl -R -b /test/dir

setfacl -R –set-file=acl.txt /root

setfacl –restore acl.txt

getfacl -R /tmp/dir1

 

4、cat命令、head命令、tail命令、cut命令、paste命令

 

文本編輯工具

cat

顯示行結束符$

cat -E

對每一行進行編號

cat -n

顯示所有控制符

cat -A

顯示非空編號

cat -b

壓縮連續的空行成一行

cat -S

反向顯示

tac 豎著反

rev 橫著反

 

這樣設置方便以后的網絡教學:

centos 6

service iptables stop

chkconfig iptables off

centos 7

systemctl stop firewalld

systemctl disable firewalld

 

文件截取

head

指定獲取前#字節

head -c#

指定獲取前#行

head -n#

指定獲取第#行

head -#

 

tail

指定獲取后#字節

tail -c#

指定獲取到后#行

tail -n#

指定獲取后第#行

tail -#

跟蹤顯示文件fd新追加的內容,常用日志監控相當于–follow=descriptor

tail -f

跟蹤文件名,相當于–follow=name –retry例如當原文件被執行刪除時會有提示,原理是跟蹤文件名

tail -F

當文件不增長時并不訪問文件,類似tail -f

 

cut

指明分隔符,默認tab

cut -d

cut -f#

#:第#個字段

#,#:離散的多個字段,例如1,3,6

#-#:連續的多個字段,例如1-6

混合使用:1-3,7

例如取/etc/passwd文件里的第一和第三列,還有第五列到第七列用:做為列分隔符

cut -d: -f 1,3,5-7? /etc/passwd

按字符切割

cut -c

例如取who命令里面的前9個字符

who | cut -c1-9

例如用cut利用率取分區利用率

df | tr -s ” ” | cut -d” ” -f5 | tr -d “%” |

df | tr -s ” ” % |cut -d% -f5

又例如取出ifconfig ens33中的ip地址

ifconfig ens33 |head -n2 | tail -n1 |tr -s ” “|cut -d” ” -f3

取出ifconfig eth0 ip

ifconfig eth0|head -n2|tail -n1|tr -s ” ” :|cut -d: -f4

指定輸出分隔符

cut -d: -f1,3 –output-delimiter=”===” /etc/passwd

 

paste

合并兩個文件同行號的列到一行

paste -d? 指定分隔符

paste -s? 所有行合成一行顯示

 

wc (word count)

例如

wc f1

10 10 21 f1

行數 單詞數 字節數

統計行數

wc -l

統計單詞數

wc -w

統計字符數

wc -m

 

5、sort命令、uniq命令、diff命令

 

sort

從列中抽出數據按照指定的規則排序

sort -t? 指定分隔符

sort -k? 指定列數

sort -n? 按照數字大小排序

例如按照數字大小排序/etc/passwd下的uid

正向

sort -t:-k3 -n /etc/passwd

反向

sort -t:-k3 -nr /etc/passwd

取出df中占有率最大的數值

df | tr -s ” ” % |cut -d% -f5 |sort -nr |head -n1

 

把重復的內容取消

sort -u

例如把/etc/passwd下的用戶按uid進行排序

cut -d: -f1,3 /etc/passwd |sort -t: -k2 -nr

 

uniq

從標準輸入中刪除前后相接的重復的行

顯示重復的行出現的次數

uniq -c

僅顯示重復過的行

uniq -d

僅顯示不曾重復的行

uniq -u

 

統計當前連接本機的每個遠程主機IP的連接數,并按從大到小排序

last | tr -s ” ” |cut -d” ” -f1,3|sort -t” ” -k2 -nr|uniq -c|sort -nr|head -n3|tr -s ” “|cut -d” ” -f4

 

比較文件

diff

diff f1 f2

顯示額外的信息

diff -u f1 f2

通過diff.log文件和f2恢復已經刪除的文件f1

diff -u f1 f2 > diff.log

patch -b f2 diff.log

由于通過命令找回的文件會命名為f2所以會覆蓋原f2內容,為了避免于此,就加-b選項對f2做備份

生成f2.orig,運行此命令后會生成f2就是原來的f1,f2.orig就是原來的f2

 

練習

1、找出ifconfig “網卡名” 命令結果中本機的IPv4地址

2、查出分區空間使用率的最大百分比值

3、查出用戶UID最大值的用戶名、 UID及shell類型

4、查出/tmp的權限,以數字方式顯示

5、統計當前連接本機的每個遠程主機IP的連接數,并按從大到小排序

 

答案

1.

centos7

ifconfig ens33 | head -n2 | tr -s ” ” : | cut -d: -f3

centos6

ifconfig ens33 | head -n2 | tr -s ” ” : | cut -d: -f3

2.

df | tr -s ” ” % | cut -d% -f5 | sort -n | tail -n1

3.

cat /etc/passwd |sort -t: -k3 -nr | head -n1 | cut -d: -f1,3,7

4.

5.

last | tr -s ” ” |cut -d” ” -f1,3|sort -t” ” -k2 -nr|uniq -c|sort -nr|head -n3|tr -s ” “|cut -d” ” -f4

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

(0)
MaxMax
上一篇 2018-04-14 16:59
下一篇 2018-04-14 17:04

相關推薦

  • shell編程基礎二

    profile bashrc 混合命令行展開

    2018-04-11
  • 對馮.諾伊曼體系的一點理解

    本文通過對馮.諾伊曼體系中CPU,RAM硬盤的處理能力差別來解釋Linux和ORACLE中的一些處理機制的原因

    2018-04-01
  • 馬哥學堂的第二周

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 cp? ? 將一份文件復制到其他目錄之中 使用-r 可實現遞歸復制。遞歸復制,可將一個目錄下的文件,復制到另一個目錄下。 rm? 用于刪除文件,使用-f可強制刪除。 mv 將一個文件移動到另一個目錄下。若在同一個目錄下使用mv,可實現更名。 cat 顯示文件內容。 wc 顯示文件的…

    2018-05-20
  • SAMBA服務介紹及相關實驗

    Samba是在Linux和UNIX系統上實現SMB協議的一個免費軟件,由服務器及客戶端程序構成。SMB(Server Messages Block,信息服務塊)是一種在局域網上共享文件和打印機的一種通信協議,它為局域網內的不同計算機之間提供文件及打印機等資源的共享服務。

    2018-06-29
  • linux系統修復報錯的方法 .

    如果/etc/fstab文件和boot目錄下的文件丟失怎么辦
    centos6啟動流程

    2018-05-13
欧美性久久久久