亞寵展、全球?qū)櫸锂a(chǎn)業(yè)風(fēng)向標(biāo)——亞洲寵物展覽會深度解析
1095
2025-04-03
零.前言
linux系統(tǒng)中處處需要權(quán)限,我們對文件執(zhí)行的每一個操作都代表著我們具有這個權(quán)限,如果我們的權(quán)限被剝奪操作起來就會變得舉步維艱,本篇將介紹linux中的權(quán)限設(shè)定與修改,便于我們更加深入了解Linux系統(tǒng)。
1.shell及Linux系統(tǒng)的組成
(1)Linux系統(tǒng)的構(gòu)成
廣義上:Linux=Linux內(nèi)核+外殼程序 狹義上:Linux=Linux內(nèi)核
(2)shell
什么是shell
作為一個操作系統(tǒng)來說,內(nèi)核程序是其關(guān)鍵,但是直接對內(nèi)核進行控制所需成本過高,因此我們需要借助外殼程序(shell)來對linux系統(tǒng)進行操控。注意:shell表示外殼程序,而上圖中的bash表示的是外殼程序的版本。
shell的作用
1.傳遞請求指令,讓內(nèi)核執(zhí)行命令。
2.保護內(nèi)核,對于非法請求,shell可以直接進行拒絕。
3.創(chuàng)建子進程來執(zhí)行具有風(fēng)險的事情。
(3)顯示進程
在Linux中也會有進程管理器,而顯示進程管理器的命令是:
ps axj
可以顯示所有正在運行的程序。 我們也可以使用
ps axj | grep bash
來顯示所有bash的進程。 注意,我們當(dāng)下只有一個bash進程 -bash,當(dāng)我們對會話進行復(fù)制之后,會新建立一個bash進程。 我們還可以顯示bash的編號:
ps axj | head -n1
這里的編號表示的是第二列的數(shù)據(jù)。 如果我們想觀看這兩個bash的創(chuàng)建時間以及創(chuàng)建者的時候,我們可以使用who命令進行查看: 我們也可以通過kill命令刪去我們剛剛建立的進程:
kill -9 936
注意后面的936是新建立bash的編號。
2.Linux操作用戶
(1)兩種操作用戶
linux系統(tǒng)下默認的操作用戶有兩種,分別是root用戶和普通用戶。 root:超級管理員,具有非常高的權(quán)限。 普通用戶:具有一般權(quán)限,需要受到權(quán)限約束,并且只能通過root來創(chuàng)建。
(2)操作用戶的切換
su與su-
su和su-都可以進行用戶的切換,并且為直接切換,每一次切換賬戶時,在root下可以進行隨意切換普通用戶,但是在普通用戶下則需要輸入對應(yīng)的root或者其他普通用戶的密碼,才能進行切換: su與su-的區(qū)別在于:su在完成用戶切換后不改變所處路徑,而su-切換后進入該用戶的家目錄。 直接進行切換的缺點在于每一次切換都會新建立一個bash。 所以建立之后我們需要進行退出操作:control D,從而結(jié)束新建立的bash。
sudo
sudo屬于臨時權(quán)限的提升,使用時只需要對指令前面加上sudo即可,使用時需要輸入當(dāng)前賬號的密碼。并且在使用后的十幾分鐘內(nèi)再使用sudo可以不再輸入密碼。 sudo也不是直接就可以使用的,我們需要進行一定的配置后才能使用,本文均使用su與su-。
3.文件使用者權(quán)限
所謂權(quán)限即一個事情是否允許特定的人去做,權(quán)限=人的屬性+事物的屬性,比如文件,文件本身的讀寫就屬于事物的屬性,只有特定的人可以讀寫文件就屬于人的屬性,所以我們要學(xué)習(xí)權(quán)限就要從兩個方面來入手,即人和事物。即一個文件的權(quán)限包括人和事物。
(1)使用者權(quán)限
三種使用者用戶
對于一個文本文件或者一個目錄文件來說,用戶的類別分為三種: 1.擁有者:owner 2.所屬組:group 3.其他:other 所屬組指的是擁有者所在組的其他用戶。 其他指的是除去擁有者和所屬組的其他用戶。(大部分用戶處于其他這個位置)
與linux用戶區(qū)別
(2)使用者權(quán)限的體現(xiàn)
顯示使用者
當(dāng)我們使用ll命令來查看文件時,我們會看到這兩行內(nèi)容,它們從左到右依次代表的是擁有者和所屬組,其他并沒有表示出來,因為除了擁有者和所屬組之外的其他用戶都是其他用戶。
顯示使用者權(quán)限
前十列的后九列,每三列代表一個用戶的權(quán)限,比如對于第一行a.out這個文件,它的權(quán)限為: rwx rwx r-x,表示的就是它的擁有者具有rwx的權(quán)限,它的所屬組具有rwx的權(quán)限,其他用戶具有r-x的權(quán)限。
r:讀權(quán)限,-表示沒有讀權(quán)限。 w:寫權(quán)限,-表示沒有寫權(quán)限。 x:執(zhí)行權(quán)限,-表示沒有執(zhí)行權(quán)限。
4.文件屬性
(1)文件的分類
后九列代表的是各個用戶的權(quán)限,而第一列表示的就是文件的屬性。 注意,linux不以后綴名作為區(qū)分文件類型的方式,但是linux下的軟件會以后綴名作為區(qū)分文件的方式,比如gcc? d:文件夾 -:普通文件 l:軟鏈接(類似windows的快捷方式) b:塊設(shè)備文件(例如硬盤光驅(qū)) p:管道文件 c:字符設(shè)備文件(例如屏幕等串口設(shè)備) s:套接口文件 有人可能會問,為什么硬盤光驅(qū)也算文件,這是因為:Linux下一切皆問文件。
(2)各類型文件的顯示與創(chuàng)建
1.顯示字符設(shè)備:
ls /dev/tty -al
2.顯示塊設(shè)備文件
ls /dev/vda1 -l
3.創(chuàng)建一個管道文件
mkfifo file
4.創(chuàng)建一個鏈接文件
ln -s file1 soft
(3)文件屬性的修改
我們使用chomd命令來修改用戶具有的權(quán)限:
chomd 用戶+(增加)/-(減少)權(quán)限 文件名
普通方式修改屬性
其中u表示擁有者,g表示所屬組,o表示其他用戶。 我們拿上圖中a.out來舉例,我們要將擁有者的讀權(quán)限去掉。 我們發(fā)現(xiàn)擁有者的r權(quán)限已經(jīng)被去掉了。 我們?yōu)槠渌颂砑訉憴?quán)限: 我們發(fā)現(xiàn)已經(jīng)為其他添加了寫權(quán)限。 我們還可以直接使用a(all)來刪除所有人的權(quán)限: 這也說明我們可以使用a來進行批量化處理。 注意權(quán)限的改變是永久的,下一次連接機器后權(quán)限不變
二進制方式修改文件屬性
除了使用u/g/o +- 的方式,我們還可以使用二進制的方式。 我們將r/w/x看成1,將-看成0。 對于test1.c這個文件來說,它的屬性二進制序列為110 110 100 現(xiàn)在我希望給予它所有的權(quán)限,就可以通過:
chmod 777 test1.c
其中每一個數(shù)字代表一個八進制(三個二進制),7代表的就是111,即給予所有權(quán)限: 我們發(fā)現(xiàn)所有用戶對于test1.c具有了所有權(quán)限。 如果使用熟練建議使用二進制的方式,可以更加快速地修改文件屬性。
(4)使用者的修改權(quán)限
只有文件的擁有者才具有修改文件屬性的權(quán)限。 但是root用戶可以不經(jīng)過擁有者允許,直接修改文件的屬性,當(dāng)root所處的用戶(比如other)沒有讀寫權(quán)限時,以root用戶操作依然可以進行讀寫,但是執(zhí)行會受到限制。(不過也沒關(guān)系,root用戶可以自己給所處的用戶加上執(zhí)行權(quán)限) 舉一個例子,對于上圖中的test文件,它的擁有者是root,我們就不能在lhb的操作下對test進行屬性的修改: 但對于root來說就可以隨意更改lhb所創(chuàng)建的文件屬性。
(5)更改文件用戶
一個文件的創(chuàng)建者不一定是一個文件的擁有者,因為我們可以通過指令來修改文件的擁有者以及所屬組。 只有root可以進行更改文件用戶的操作
改變擁有者
我們使用chown來更改擁有者:
chown 用戶 文件
這里我們將test2的擁有者改成了lhb。
改變所屬組
我們使用chgrp來改變所屬組。格式與改變擁有者是相同的。 我們也可以使用二進制方式來進行文件屬性的修改
5.目錄文件
(1)目錄文件的屬性
對于目錄文件來說: r:查看目錄中內(nèi)容。 w:在目錄中創(chuàng)建文件。 x:進入目錄。 一般來說,只有擁有進入目錄的權(quán)限才能查看目錄內(nèi)容,以及在目錄中創(chuàng)建文件 當(dāng)既有讀權(quán)限又有進入目錄的權(quán)限的時候,可以像上圖一樣顯示文件的詳細信息。 但是如果只有讀權(quán)限沒有進入目錄的權(quán)限的話只會顯示目錄中的文件名。 舉個例子:
(2)目錄下文件的刪除
粘滯位
當(dāng)我們在一個不屬于我們的目錄中創(chuàng)建了自己的文件時,我們希望可以對其進行刪除操作,這把為該目錄的other用戶提供w與x的權(quán)限,但一旦提供了這一權(quán)限,其他人也就具有了刪除我們自己的文件的權(quán)限。 為了解決這一問題,我們引入了粘滯位這一概念。 粘滯位的設(shè)置只能對目錄,通常是限制other的權(quán)限的。 對于設(shè)置了粘滯位的目錄,該目錄下的文件只能由文件的擁有者以及root用戶可以進行刪除,其他人不行 我們使用t來表示目錄設(shè)置了粘滯位:
chmod o+t dir1
這里給dir1這個目錄加上了粘滯位。 此時我們發(fā)現(xiàn),雖然lhb對目錄具有w權(quán)限,但是仍然無法刪除該目錄下的文件。
(3)文件的默認屬性
普通文件的默認屬性為:666(110 110 110) 目錄文件的默認屬性為:777(111 111 111)
這里是我新建立的兩個文件,分別是目錄文件dir1與普通文件file1.txt 我們可以看到: file1.txt的默認屬性是:rw- r-- r--(110 100 100) dir1的默認屬性是:rwx r-x r-x(111 101 101) 這和上面的原則為什么不一樣呢? 這是因為權(quán)限掩碼的存在: 我們可以通過umask指令來打印權(quán)限掩碼: 我們發(fā)現(xiàn),目前這臺機器的權(quán)限掩碼是0x0022,我們通常只看后三位: 用二進制表示為:000 010 010 并根據(jù)計算公式:default=default&~(mask)來計算權(quán)限 這里用file1.txt來舉例: ~mask=111 101 101 110 110 110 &111 101 101 = 110 100 100 因此file1.txt的默認屬性為110 100 100 我們還可以通過自定義權(quán)限掩碼來修改默認文件屬性: 修改僅在本次登錄有效。
6.總結(jié)
無論是權(quán)限如何設(shè)定,root用戶都具有基本上所有的權(quán)限,它是秩序的建立者也是最高管理者,就像是刀劍神域第一季的大反派一樣,可以隨意地進行更改各種普通玩家的權(quán)限,在提升權(quán)限中sudo命令也是非常重要的,在我之后的文章會有介紹如何安裝sudo以及如何建立信任關(guān)系,如果感覺對你有幫助的話記得要三連啊,因為一個三連的人,一定是一個純粹的人,一個高尚的人,一個脫離了低級趣味的人,一個有益于人民的人。(salute)
Linux 統(tǒng)一身份認證服務(wù) IAM
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。