【Linux】權限相關指令
前言:
本文我們來講Linux中關于權限中的一些指令
shell命令
Linux嚴格來說是一個操作系統,我們稱之為“核心”(kernel)。而作為用戶的我們并不能直接與核心交流,這時候就有一個中間人的角色出現:將我們的指令翻譯為核心可以看懂的符號,交由核心執行,并將執行結果翻譯并返回給我們。
這個中間人就是“包裹”在核心外的“外殼程序”,介于我們和核心之前。我們稱之為:shell命令
從技術層面來講,shell的最簡單定義就是:命令解釋器。其主要功能就是:
1.將命令翻譯后交給核心執行
2.將核心執行的結果翻譯并返回給我們
形象理解shell:
假如小y過年回家打算相親了,打算小y并不擅長與異性交流,這時候就拜托了媒人王姨作為中間人,幫忙小y和異性之前傳話。這時候王姨就是“外殼程序”shell。
為什么要有shell?
1.方便用戶使用
2.作為外殼程序,保護核心
補充:
權限概念
Linux中權限分為兩種:root賬號、普通賬號
root賬號:為超級權限賬號,不受任何權限限制
普通賬號:受到權限限制,在Linux中只能做有限的事
su
命令:su 用戶名
功能:切換賬號
hyc@hcss-ecs-4ce7:/$ whoami hyc #切換root賬號執行su即可 hyc@hcss-ecs-4ce7:/$ su #輸入root賬號密碼 Password: root@hcss-ecs-4ce7:/# whoami root #切換普通賬號:su 用戶名(不需要密碼) root@hcss-ecs-4ce7:/# su hyc hyc@hcss-ecs-4ce7:/$ whoami hyc
補充:普通用戶 -> root賬號,除了su可以實現,su -也可以實現。但是區別是?
hyc@hcss-ecs-4ce7:/$ pwd / hyc@hcss-ecs-4ce7:/$ su Password: root@hcss-ecs-4ce7:/# whoami root root@hcss-ecs-4ce7:/# pwd / hyc@hcss-ecs-4ce7:/$ pwd / hyc@hcss-ecs-4ce7:/$ su - Password: root@hcss-ecs-4ce7:~# whoami root root@hcss-ecs-4ce7:~# pwd /root #我們可以看到su、su-,都成功的切換到了root。 #不同的是su切換賬號并不會改變之前所處路徑,既su不會改變位置 #而su-會改變位置,之前是/下,切換之后在/root下 
sudo:短暫的指令提權
如果我們需要使用root權限來執行一些指令,但是卻沒有root密碼怎么辦?
在指令最前面加上sudo,就可以使用root權限執行命令
hyc@hcss-ecs-4ce7:~$sudo ls [sudo] passwordforhyc:
這樣確實方便,但是有一個問題:那豈不是人人都可以使用root權限了?這不亂套了?
Linux設計者當然考慮到了這個問題,普通用戶如果想要使用sudo進行指令提權。必須要root賬號給予普通賬號提權權限才行。所以并不是什么普通賬號都可以進行提權
沒有提權權限的賬戶,就會顯示以下報錯
hyc@hcss-ecs-4ce7:~$ sudo ls [sudo] password for hyc: hyc is not in the sudoers file. This incident will be reported.
總結:
普通 -> root:su(不會改變位置)
su-(會改變位置:默認切換至家目錄)
root -> 普通:su 用戶名
sodu : 指令提權
權限管理
權限的本質是:能做或者不能做什么事情(控制用戶行為,防止錯誤操作)
理解:
1.權限限制的是人
2.權限要求目標必須具備對應屬性:權限:角色+目標屬性(權限)
屬性
對于Linux中的屬性來說主要為三個:讀、寫、執行
讀:r
寫:w
執行:x
之前我們說過第一個字母代表文件屬性,而后面的一串字符則代表該文件的權限。
r:對文件來說,代表可以讀取文件內容;對目錄來說,代表可以瀏覽目錄內容
w:對文件來說,代表可以修改文件內容;對目錄來說,代表可以刪除目錄中的內容
x:對文件來說,代表可以執行該文件;對目錄來說,代表可以進入該目錄
但是為什么這里有多個wrx呢?這就涉及到角色的問題。
角色
上面我們說了權限=角色+對應屬性。
屬性代表相應的角色擁有什么權限,那么我們是如何分辨角色呢?如何知道角色對應所擁有的權限呢?
首先我們可以通過命令行得知我們當前的角色、或者使用whoami指令
然后根據當前用戶,來判斷其說擁有的權限
解釋:
我們當前用戶是root,對于第一個目錄來說,我們就是其擁有者。所對應擁有的權限則是rwx
而什么是所屬組?什么是other呢?
所屬組就是當前角色不是擁有者,但是與擁有者在同一個隊伍中。這時候就會匹配所屬組權限,這時候這個角色就是所屬者。
所屬組的存在是為了更精細化的權限管理。舉例:a組和b組都在同一臺Linux機器上開發項目,a組項目代碼需要公開出來讓a組全體成員都能看見,但是不希望b組看見。這時候就只需要將a組全體成員納入所屬組中,然后將other權限關閉,就可以實現。(現在很少用到了,了解即可)
other就是既不屬于擁有者,也不屬于所屬者的角色。這時候就會匹配other權限。
如何描述文件權限信息?
`-rw-r--r-- 1 root root 22902 May 18 11:51 new.txt`
對于new.txt這個文件來說權限的描述應該為:擁有者權限為rw,所屬組權限為r,other權限為r。
文件權限表示方法
1.字符表示法
3個字母為一組,分別為:r、w、x,如沒有對應權限則用 " - "表示。其順序是固定的不可交換
2.8進制表示法
chmod指令
語法:chmod 參數 權限 文件名
功能:改變文件權限(只有root或者文件擁有者才有資格修改權限)
選項:
-R:遞歸的將目錄下的文件權限全部修改
參數:
u:擁有者
g:所屬組
o:other
a:有所用戶
實際操作展示 :
root@hcss-ecs-4ce7:~# ls -l total 28 drwxr-xr-x 5 root root 4096 May 20 13:58 new -rw-r--r-- 1 root root 22902 May 18 11:51 new.txt #關閉u的w權限 root@hcss-ecs-4ce7:~# chmod u-w new.txt root@hcss-ecs-4ce7:~# ls -l total 28 drwxr-xr-x 5 root root 4096 May 20 13:58 new -r--r--r-- 1 root root 22902 May 18 11:51 new.txt #開放u的w權限 root@hcss-ecs-4ce7:~# chmod u+w new.txt root@hcss-ecs-4ce7:~# ls -l total 28 drwxr-xr-x 5 root root 4096 May 20 13:58 new -rw-r--r-- 1 root root 22902 May 18 11:51 new.txt #關閉u的多條權限 root@hcss-ecs-4ce7:~# chmod u-rw new.txt root@hcss-ecs-4ce7:~# ls -l total 28 drwxr-xr-x 5 root root 4096 May 20 13:58 new ----r--r-- 1 root root 22902 May 18 11:51 new.txt #開放u的多條權限 root@hcss-ecs-4ce7:~# chmod u+rw new.txt root@hcss-ecs-4ce7:~# ls -l total 28 drwxr-xr-x 5 root root 4096 May 20 13:58 new -rw-r--r-- 1 root root 22902 May 18 11:51 new.txt #開放g的w權限 root@hcss-ecs-4ce7:~# chmod g+w new.txt root@hcss-ecs-4ce7:~# ls -l total 28 drwxr-xr-x 5 root root 4096 May 20 13:58 new -rw-rw-r-- 1 root root 22902 May 18 11:51 new.txt #關閉g的w權限 root@hcss-ecs-4ce7:~# chmod g-w new.txt root@hcss-ecs-4ce7:~# ls -l total 28 drwxr-xr-x 5 root root 4096 May 20 13:58 new -rw-r--r-- 1 root root 22902 May 18 11:51 new.txt #以此類推,其他的權限操作類似
另外也可以通過八進制來實現多個用戶權限的修改:
root@hcss-ecs-4ce7:~# ls -l total 28 drwxr-xr-x 5 root root 4096 May 20 13:58 new -rw-r--r-- 1 root root 22902 May 18 11:51 new.txt #通過3個8進制數字實現,對多個用戶權限修改 root@hcss-ecs-4ce7:~# chmod 000 new.txt root@hcss-ecs-4ce7:~# ls -l total 28 drwxr-xr-x 5 root root 4096 May 20 13:58 new ---------- 1 root root 22902 May 18 11:51 new.txt root@hcss-ecs-4ce7:~# chmod 663 new.txt root@hcss-ecs-4ce7:~# ls -l total 28 drwxr-xr-x 5 root root 4096 May 20 13:58 new -rw-rw--wx 1 root root 22902 May 18 11:51 new.txt
修改權限注意事項
1.任何人都可以修改文件權限嗎?
只有root和文件擁有者才能修改權限!
2.如果在進行相應操作時沒有權限會怎么樣?
系統會拒絕我們的指令請求
hyc@hcss-ecs-4ce7:~$ ls -l total 0 -rw-rw-r-- 1 hyc hyc 0 May 24 23:07 new.txt hyc@hcss-ecs-4ce7:~$ chmod u-r new.txt hyc@hcss-ecs-4ce7:~$ ls -l total 0 --w-rw-r-- 1 hyc hyc 0 May 24 23:07 new.txt hyc@hcss-ecs-4ce7:~$ cat new.txt cat: new.txt: Permission denied
3.確定權限信息時,系統會先確認誰?
先確認擁有者權限,再確認所屬組,最后是other。權限只會確定一次,不會多次確定,第一次匹配上的權限既為我們當前角色所擁有的權限。
4.root賬號權限?
擁有最高權限,不受一切權限的限制。所有設定的限制只針對普通賬號有用。
5.可執行權限?
我們之前所講的例子中都沒有可執行樣例,其實可執行程序是.exe文件。普通文件一般沒有x權限,當然即使擁有x權限也無法執行,因為其本身就不是可執行文件。
chown與chgrp指令
語法:chown 用戶名 文件名
功能:改變文件或目錄的擁有者
選項:-R 遞歸的修改目錄中所有文件的擁有者
語法:chgrp 所屬組名 文件名
功能:修改文件或目錄的所屬組
選項:-R遞歸修改目錄中所有文件的所屬組
使用chown修改擁有者、chgrp修改所屬組出現問題?
hyc@hcss-ecs-4ce7:~$ ls -l total 0 -rw-rw-rw- 1 hyc hyc 0 May 24 23:07 new.txt hyc@hcss-ecs-4ce7:~$ chown root new.txt chown: changing ownership of 'new.txt': Operation not permitted hyc@hcss-ecs-4ce7:~$ chgrp root new.txt chgrp: changing group of 'new.txt': Operation not permitted
原因:
系統并不支持隨意的將文件的擁有者或所屬組修改,這一操作只有root權限才能被允許。所以在要在這句指令前加上sodu,或者切換為root賬號。
下面我切換為root賬號作為演示:
root@hcss-ecs-4ce7:~# ls -l total 24 -rw-rw--wx 1 root root 22902 May 18 11:51 new.txt root@hcss-ecs-4ce7:~# chown hyc new.txt root@hcss-ecs-4ce7:~# ls -l total 24 -rw-rw--wx 1 hyc root 22902 May 18 11:51 new.txt root@hcss-ecs-4ce7:~# chgrp hyc new.txt root@hcss-ecs-4ce7:~# ls -l total 24 -rw-rw--wx 1 hyc hyc 22902 May 18 11:51 new.txt
目錄權限問題
1.rwx對于目錄來說意味這什么?
沒有r權限,無法查看其內容
hyc@hcss-ecs-4ce7:~$ ls -l total 4 drwxrwxr-x 2 hyc hyc 4096 May 26 15:41 new hyc@hcss-ecs-4ce7:~$ chmod u-r new hyc@hcss-ecs-4ce7:~$ ls -l total 4 d-wxrwxr-x 2 hyc hyc 4096 May 26 15:41 new hyc@hcss-ecs-4ce7:~$ ls new ls: cannot open directory 'new': Permission denied
沒有w權限,無法在其內部創建文件
hyc@hcss-ecs-4ce7:~$ ls -l total 4 drwxrwxr-x 2 hyc hyc 4096 May 26 15:41 new hyc@hcss-ecs-4ce7:~$ chmod u-w new hyc@hcss-ecs-4ce7:~$ ls -l total 4 dr-xrwxr-x 2 hyc hyc 4096 May 26 15:41 new hyc@hcss-ecs-4ce7:~$ ls new hyc@hcss-ecs-4ce7:~$ touch ./new/my.txt touch: cannot touch './new/my.txt': Permission denied
沒有x權限,無法進入目錄
hyc@hcss-ecs-4ce7:~$ ls -l total 4 drw-rwxr-x 2 hyc hyc 4096 May 26 15:41 new hyc@hcss-ecs-4ce7:~$ cd new bash: cd: new: Permission denied
rwx這三個權限都與目錄的正常使用相關,所以我們創建的目錄默認權限這三個都有。
2.理解Linux中多用戶是如何相互“隔離”的?
root@hcss-ecs-4ce7:~# ls -l /home total 8 drwxr-x--- 3 hyc hyc 4096 May 26 15:41 hyc drwxr-x--- 2 ye ye 4096 May 26 16:03 ye
所有用戶的other權限都是全部關閉的,任意用戶都無法進入。這就帶來了“隔離”
3.缺省權限
對于普通文件:默認起始權限是666
對于目錄:默認起始權限是777,帶x
但我們看到的默認權限一般都不是我們說所的起始權限 ,這是為什么?
root@hcss-ecs-4ce7:~# ls -l total 4 drwxr-xr-x 2 root root 4096 May 26 16:59 new -rw-r--r-- 1 root root 0 May 26 16:40 new.txt
因為Linux中存在一個東西叫做權限掩碼(umask)
root用戶的權限掩碼為:022
普通用戶的權限掩碼為:002
root@hcss-ecs-4ce7:~# umask 0022 (最前面的0表示八進制)
最終的權限=起始權限&(~umask)
umask的目的是什么?
凡是出現在umask上的權限,都不會出現在最終的權限上面。
umask為什么會出現?
可以讓我們自定義默認權限,是一種靈活滿足需求的表現
4.文件的刪除由誰決定?
一個文件是否可以被刪除與文件本身無關,而在于目錄的w權限。
粘滯鍵
如果有兩個或者多個用戶需要在文件層面上的相互合作,那么所創建的文件就不能在私人目錄下。將目錄創建根目錄下,這樣所有用戶就都可以訪問并寫入自己的內容。
但是這里存在一個問題,就是如果在眾多用戶中存在隔壁公式派來的內鬼(bushi),內鬼可以刪除自己的文件也可以刪除被人的文件(文件是否可以被刪除與自己無關,與文件的w權限有關)!
這該怎么辦??關閉w權限嗎?不行,這會影響其他用戶的正常使用,那怎么辦?
Linux給粘滯鍵有效的解決這一問題
`chmod +t`
給權限加上粘滯位,加上粘滯位的目錄有以下效果:
1.文件只能被root刪除
2.文件只能被其擁有者刪除
3.文件只能有該目錄的擁有者刪除
其實系統已經為我們準備好了這一特殊目錄,就是根目錄下的temp目錄
我們可以看到temp的other權限最后一個字母是t,這就代表粘滯位。
一般需要文件上的多人合作,都是在temp里進行。
鏈接:https://blog.csdn.net/huangyuchi/article/details/148154142
-
Linux
+關注
關注
87文章
11462瀏覽量
212803 -
操作系統
+關注
關注
37文章
7091瀏覽量
124961 -
程序
+關注
關注
117文章
3824瀏覽量
82420
原文標題:Linux權限管理太復雜?3個命令輕松搞定!90%的人不知道的技巧
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
linux的權限和指令
Linux 中文件權限管理的探討
Linux改變文件或目錄的訪問權限命令
linux指令大全
淺談Linux權限管理的ACL權限
Linux進程權限的分析說明
linux文件訪問權限怎么設置
Linux把目錄權限給指定用戶
Linux權限管理基礎入門

評論