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