天津建設(shè)工程信息網(wǎng)如何注冊網(wǎng)站優(yōu)化推廣招聘
1.Linux下的用戶
?Linux下有兩種用戶:超級用戶(root)、普通用戶。
- 超級用戶:可以再linux系統(tǒng)下做任何事情,不受限制
- 普通用戶:在linux下做有限的事情。
- 超級用戶的命令提示符是“#”,普通用戶的命令提示符是“$”。
命令:su [用戶名]
功能:切換用戶。
例如,要從root用戶切換到普通用戶user,則使用 su user。 要從普通用戶user切換到root用戶則使用 su root(root可以省略),此時(shí)系統(tǒng)會提示輸入root用戶的口令。
總結(jié):
- 普通用戶切換成root,需要輸入root密碼。
- root回退到普通用戶:exit或者ctrl+d(logout)。
- root賬號變成普通,不用認(rèn)證。
- 普通用戶變成另一個(gè)普通用戶,需要對方的密碼。
su - :以root身份重新登錄一次。
su :用戶身份切換為root。
如果我們所有人都有root密碼,每個(gè)人都可以刪除用戶添加信息,但是總不能排出有新手誤刪了,此時(shí)對數(shù)據(jù)就會造成不可挽回的影響,所以一般擁有root密碼的是Linux管理員。
sudo:對指定的指令進(jìn)行提權(quán)。
普通用戶不想切換為root,但是想以root權(quán)限執(zhí)行指令:sudo touch file1.txt,然后輸入普通用戶的密碼。
我們后面再以root權(quán)限執(zhí)行指令:sudo touch file3.txt,我們會發(fā)現(xiàn)此次不需要輸出普通用戶的密碼就創(chuàng)建出文件了,這是因?yàn)樵?jīng)sodu輸過密碼,并且Linux會短暫的記錄用戶在一段時(shí)間執(zhí)行過sudo命令,是已經(jīng)做過認(rèn)證的,所以后面就不需要再輸入密碼。
如果我們輸入sudo就可以以root的身份執(zhí)行指定的命令,root的密碼是否就毫無意義呢?我們?nèi)?zhí)行一下sudo ls
如果我們將用戶添加到該配置文件中,那用戶是否可以執(zhí)行sudo嗎?當(dāng)然可以,但是該配置文件(白名單)是root文件,我們普通用戶無法自己添加該配置文件,要添加該配置文件必須以root的身份添加。所以能夠執(zhí)行sudo的,一定是歷史上曾經(jīng)經(jīng)過管理員允許的用戶,才能執(zhí)行sudo,我們上面之所以能執(zhí)行sudo是因?yàn)閷udo touch命令添加到該配置文件
2.Linux權(quán)限管理
首先了解一個(gè)概念,權(quán)限一定是限制人的,比如優(yōu)酷會員,買了會員就可以看一些付費(fèi)的電視劇。 對應(yīng)的操作對象,一定要有對應(yīng)的滿足人的需求的屬性。比如:優(yōu)酷就專門看電視劇,csnd專門學(xué)習(xí)。
01.文件訪問者的分類(人)
- 文件和文件目錄的所有者:u---User
- 文件和文件目錄的所有者所在的組的用戶:g---Group
- 其它用戶:o---Others?
為什么會存在一個(gè)所屬組
????????假設(shè)當(dāng)張三這個(gè)擁有者寫了一份非常優(yōu)秀的代碼,他的領(lǐng)導(dǎo)是屬于其他普通用戶,領(lǐng)導(dǎo)覺得張三的代碼非常好,想看一下,于是張三想打開了權(quán)限,讓其他用戶可以看到,但是同為競爭者的李四也是其他普通用戶也就能看到,于是張三擁有者就和領(lǐng)導(dǎo)這個(gè)普通用戶搭建了一個(gè)所屬組,該組的所屬者為張三,將其組內(nèi)的內(nèi)容對領(lǐng)導(dǎo)這個(gè)普通用戶設(shè)置可見,只能讓領(lǐng)導(dǎo)這個(gè)普通用戶看到。
02.文件類型和訪問權(quán)限(事物屬性)
a) 文件類型
- d:文件夾 -:普通文件
- l:軟鏈接(類似Windows的快捷方式)
- b:塊設(shè)備文件(例如硬盤、光驅(qū)等)
- p:管道文件
- c:字符設(shè)備文件(例如屏幕等串口設(shè)備)
- s:套接口文件
b)基本權(quán)限
- i.讀(r/4):Read對文件而言,具有讀取文件內(nèi)容的權(quán)限;對目錄來說,具有瀏覽該目錄信息的權(quán)限
- ii.寫(w/2):Write對文件而言,具有修改文件內(nèi)容的權(quán)限;對目錄來說具有刪除移動目錄內(nèi)文件的權(quán)限
- iii.執(zhí)行(x/1):execute對文件而言,具有執(zhí)行文件的權(quán)限;對目錄來說,具有進(jìn)入目錄的權(quán)限
- iv.“—”表示不具有該項(xiàng)權(quán)限
03.文件權(quán)限值的表示方法
a)字符表示方法
Linux表示 | 說明 | Linux表示 | 說明 |
r-- | 只讀 | -w- | 僅可寫 |
--x | 僅可執(zhí)行 | rw- | 可讀可寫 |
-wx | 可寫可執(zhí)行 | r-w | 可讀可執(zhí)行 |
rwx | 可讀可寫可執(zhí)行 | --- | 無權(quán)限 |
b)8進(jìn)制數(shù)值表示方法?
權(quán)限符號(讀寫執(zhí)行) | 八進(jìn)制 | 二進(jìn)制 |
r | 4 | 100 |
w | 2 | 010 |
x | 1 | 001 |
rw | 6 | 110 |
rx | 5 | 101 |
wx | 3 | 011 |
rwx | 7 | 111 |
--- | 0 | 000 |
04.文件訪問權(quán)限的相關(guān)設(shè)置方法
a)chmod
功能:設(shè)置文件的訪問權(quán)限
格式:chmod [參數(shù)] 權(quán)限 文件名
常用選項(xiàng):
- R -> 遞歸修改目錄文件的權(quán)限
- 說明:只有文件的擁有者和root才可以改變文件的權(quán)限
修改權(quán)限:chmod ugoa+=rwx FILE
驗(yàn)證有無權(quán)限,對比是什么?
當(dāng)我們沒有權(quán)限的時(shí)候,就不能以該方式訪問該文件,直接被拒絕訪問。有對應(yīng)的權(quán)限才能做對應(yīng)的事。對于可執(zhí)行來說,不一定擁有可執(zhí)行的權(quán)限就可以執(zhí)行該文件。
當(dāng)我們?nèi)サ魮碛姓叩目蓤?zhí)行權(quán)限,whb用戶就不能執(zhí)行文件了,可是我們發(fā)現(xiàn)所屬組擁有可執(zhí)行權(quán)限,而且所屬組的用戶還是whb用戶,此時(shí)whb用戶以所屬組的身份去執(zhí)行為什么不能執(zhí)行此文件呢?
這是因?yàn)橐粋€(gè)用戶在去訪問這文件的時(shí)候,Linux系統(tǒng)默認(rèn)當(dāng)前的用戶的身份是擁有者,只會去看擁有者的權(quán)限,而且Linux系統(tǒng)的這種匹配只會匹配一次,匹配到了擁有者就不能再次匹配到所屬組了。
此時(shí)擁有者就切換為了gaobo這個(gè)用戶,但是此時(shí)登錄的還是whb,此時(shí)Linux系統(tǒng)根據(jù)當(dāng)前的用戶whb就去匹配到了所屬組,從而也就可以執(zhí)行這個(gè)文件了。
當(dāng)我們切換到gaobo這個(gè)普通用戶,此時(shí)Linux系統(tǒng)又會再次匹配,此時(shí)匹配的就是擁有者,此時(shí)就沒有可執(zhí)行的權(quán)限。? ? ? ??
我們再切換為whb用戶,此時(shí)我們對file.txt文件刪除所有權(quán)限
然后我們切換超級用戶root,此時(shí)root歸屬于other,root此時(shí)依然沒有任何權(quán)限
上面圖片觀察到,盡管root沒有權(quán)限,但是依然能夠訪問到該文件,說明權(quán)限對超級用戶root形同虛設(shè)。
同時(shí)根據(jù)8進(jìn)制數(shù)值表示法,我還可以用8進(jìn)制進(jìn)行權(quán)限修改。
b)chown
功能:修改文件的擁有者
格式:chown [參數(shù)] 用戶名 文件名
我們修改一個(gè)文件的權(quán)限,將文件的擁有者權(quán)限給別人,需要獲取這個(gè)人的同意嗎?很明顯,如果你給別人的是一份非常爛的代碼,別人肯定不會成為這個(gè)文件的擁有者。但是在Linux下我們不能商量,也沒辦法得到別人的允許,就算得到了別人的允許,我們也給不了擁有者身份,此時(shí)只能通過sudo進(jìn)行指令提權(quán)。
同時(shí)我們也可以切換成root身份,進(jìn)行擁有者身份的變化。
c)chgrp
功能:修改文件或目錄的所屬組
格式:chgrp [參數(shù)] 用戶組名 文件名
常用選項(xiàng):-R 遞歸修改文件或目錄的所屬組
該指令和上面的chown用法一樣,因?yàn)槲覀儺?dāng)前為root,所以可以直接修改。修改擁有者和所屬組的同時(shí)other也在改變,所以Linux也有修改other身份的指令。
我們可以同時(shí)修改擁有者和所屬組,用戶之間以:分隔-。
d)umask
解釋:定制一個(gè)文件被創(chuàng)建的時(shí)候的默認(rèn)權(quán)限,從起始權(quán)限中去掉(不是減法)在umask中出現(xiàn)的權(quán)限!
功能: 查看或修改文件掩碼 新建文件夾默認(rèn)權(quán)限=0666 新建目錄默認(rèn)權(quán)限=0777 但實(shí)際上你所創(chuàng)建的文件和目錄,看到的權(quán)限往往不是上面這個(gè)值。原因就是創(chuàng)建文件或目錄的時(shí)候還要受到 umask的影響。假設(shè)默認(rèn)權(quán)限是mask,則實(shí)際創(chuàng)建的出來的文件權(quán)限是: mask & ~umask
格式:umask 權(quán)限值
說明:將現(xiàn)有的存取權(quán)限減去權(quán)限掩碼后,即可產(chǎn)生建立文件時(shí)預(yù)設(shè)權(quán)限。超級用戶默認(rèn)掩碼值為0022,普通用戶默認(rèn)為0002。
驗(yàn)證一下普通用戶創(chuàng)建的普通文件權(quán)限是664
通過公式:mask & ~umask即可求出實(shí)際創(chuàng)建的出來的文件權(quán)限
3.file指令
我們可以同時(shí)修改擁有者和所屬組,用戶之間以:分隔-。
第一個(gè)字符,表示文件類型。在Windows下,我們同樣也具有文件類型,通常是通過后綴名標(biāo)識,文件類型用來判定文件屬于哪一個(gè)類別,可以用哪些軟件操作。但是Linux的文件類型不通過后綴區(qū)分(不代表Linux不用后綴)
我們首先看一下有哪些文件類型
塊設(shè)備文件 -> 磁盤:支持隨機(jī)訪問
字符設(shè)備文件 ->鍵盤顯示器:不支持隨機(jī)訪問
鏈接文件:類似于Windows下的快捷方式
我們上面刪除了鏈接文件但是可執(zhí)行程序還在,所以Windows下我們想刪除一個(gè)軟件刪除桌面的那個(gè)快捷方式不算刪除,必須要去刪除源文件。
管道文件 -> 傳遞信息
Linux的文件類型不通過后綴區(qū)分。
Linux的文件類型不通過后綴區(qū)分,但是不代表Linux指令gcc等其他指令不用后綴。對于Linux文件類型后綴,雖然Linux不通過它識別文件類型,但是我們依然推薦使用后綴去標(biāo)識文件!因?yàn)楣ぞ咝枰?#xff0c;同時(shí)后綴也方便用戶觀看。
功能說明:辨識文件類型。
語法:file [選項(xiàng)] 文件或目錄...?
常用選項(xiàng):
- -c 詳細(xì)顯示指令執(zhí)行過程,便于排錯(cuò)或分析程序執(zhí)行的情形。
- -z 嘗試去解讀壓縮文件的內(nèi)容。
使用 sudo分配權(quán)限
(1)修改/etc/sudoers 文件分配文件
# chmod 740 /etc/sudoers
# vi /etc/sudoer
格式:接受權(quán)限的用戶登陸的主機(jī) =(執(zhí)行命令的用戶) 命令
(2)使用 sudo 調(diào)用授權(quán)的命令
$ sudo –u 用戶名 命令
實(shí)例:
$ sudo -u root /usr/sbin/useradd u2
4.目錄的權(quán)限
- 可執(zhí)行權(quán)限: 如果目錄沒有可執(zhí)行權(quán)限, 則無法cd到目錄中.
- 可讀權(quán)限: 如果目錄沒有可讀權(quán)限, 則無法用ls等命令查看目錄中的文件屬性內(nèi)容.
- 可寫權(quán)限: 如果目錄沒有可寫權(quán)限, 則無法在目錄中創(chuàng)建文件, 也無法在目錄中刪除文件.
- 這些權(quán)限對于超級用戶root是沒有限制的.
于是, 問題來了~~
換句話來講, 就是只要用戶whb具有目錄的寫權(quán)限, 用戶就可以刪除目錄中的文件, 而不論這個(gè)root用戶是否有這個(gè)文件的寫權(quán)限. 這好像不太科學(xué)啊, 我張三創(chuàng)建的一個(gè)文件, 憑什么被你李四可以刪掉?
這就相當(dāng)于我李四的房子給你張三住,張三要出差一段時(shí)間,讓李四不要?jiǎng)铀麞|西,李四自己的房子不能動嗎?肯定能動,你張三創(chuàng)建的文件在我李四的目錄下,我對我自己的目錄有寫權(quán)限,我自己目錄下的文件我自己不能刪!!!總結(jié):一個(gè)文件能否被刪除,并不取決于文件本身,而取決于文件所處的目錄的擁有者是否具有寫權(quán)限。
那我們可以去掉other的w權(quán)限嗎?很明顯,不能,雖然w權(quán)限不能讓別人刪除文件,但是我們自己也寫不了文件,我們自己也是普通用戶,對于root來說,我們也是other。
為了解決這個(gè)不科學(xué)的問題, Linux引入了粘滯位的概念
5.粘滯位
粘滯位:給目錄中的other設(shè)置的一個(gè)權(quán)限位,具有x權(quán)限的意義,同時(shí)進(jìn)一步對目錄的權(quán)限進(jìn)行特殊限定。
[root@localhost ~]# chmod +t /home/ # 加上粘滯位
[root@localhost ~]# ls -ld /home/
drwxrwxrwt. 3 root root 4096 9月 19 16:00 /home/
[root@localhost ~]# su - litao
[litao@localhost ~]$ rm /home/abc.c #litao不能刪除別人的文件
rm:是否刪除有寫保護(hù)的普通空文件 "/home/abc.c"?y
rm: 無法刪除"/home/abc.c": 不允許的操作
當(dāng)一個(gè)目錄被設(shè)置為"粘滯位"(用chmod +t),則該目錄下的文件只能由
一、超級管理員刪除
二、該目錄的所有者刪除
三、該文件的所有者刪除
6.關(guān)于權(quán)限的總結(jié)
- 目錄的可執(zhí)行權(quán)限是表示你可否在目錄下執(zhí)行命令。
- 如果目錄沒有-x權(quán)限,則無法對目錄執(zhí)行任何命令,甚至無法cd 進(jìn)入目, 即使目錄仍然有-r 讀權(quán)限(這 個(gè)地方很容易犯錯(cuò),認(rèn)為有讀權(quán)限就可以進(jìn)入目錄讀取目錄下的文件)
- 而如果目錄具有-x權(quán)限,但沒有-r權(quán)限,則用戶可以執(zhí)行命令,可以cd進(jìn)入目錄。但由于沒有目錄的讀權(quán)限
- 所以在目錄下,即使可以執(zhí)行l(wèi)s命令,但仍然沒有權(quán)限讀出目錄下的文檔。
本章結(jié)束啦!下章見,拜拜。