主頁 > 作業系統 > linux入門系列9--用戶管理及檔案權限控制

linux入門系列9--用戶管理及檔案權限控制

2020-09-30 00:58:14 作業系統

? 前面文章分享了Linux下常用命令以及Shell編程相關知識,本節繼續學習Linux用戶管理及檔案權限控制,

? Linux是多用戶多任務作業系統,具有很好的穩定性和安全性,既然是多用戶,那就意味著多個用戶可以同時使用同一個Linux作業系統,因此就會涉及用戶的添加、修改、洗掉等管理作業以及權限分配問題;平時使用Linux系統一般是用于資訊處理,而檔案是資訊載體,因此也需要掌握檔案相關的操作和權限,

? 相信大家平時在使用windows作業系統時,為了不讓別人輕易看到某些敏感檔案,而把檔案設定為隱藏檔案,Linux下是否也能實作同樣的操作?是否能通過隱藏權限讓黑客最多只能查看某些日志檔案但不能進行修改和洗掉操作?是否能夠對某個用戶或某個用戶組進行特殊的權限設定,讓其只有能滿足作業需求的最小權限,從而降低安全風險?本篇文章將逐一解決這些疑問,

一、用戶及用戶組管理

1.1 用戶相關命令

? 針對初學者,在日常作業中,一般都是領導分配一個擁有一定權限的賬號,然后開展各項作業,不會開放很高的權限,但初學階段,正如前面系列文章所演示,都是直接用root賬戶進行操作,這樣的目的是減少權限帶來的干擾,讓我們更專注于相應知識點的學習,但是在生產環境中建議慎用root,因為權限太大,控制不當會有安全隱患,

1.1.1 who命令

? who命令用于查看登錄用戶資訊,包括:who、whoami、who am i,

  • whoami

功能描述:查看當前登錄用戶的用戶名

案例:

[root@heimatengyun test]# whoami
root
[root@heimatengyun test]# su - test
Last login: Sat Nov 30 22:55:38 CST 2019 on pts/0
[test@heimatengyun ~]$ whoami
test
[test@heimatengyun ~]$ exit
logout

可以看到,切換用戶后,相應的結果發生變化,只顯示當前登錄的用戶,

  • who am i

功能描述:顯示最初登錄時用的用戶名(無論切換幾次)

案例:

[root@heimatengyun test]# who am i
root     pts/0        2019-12-17 22:23 (192.168.78.1)
[root@heimatengyun test]# su - test
Last login: Tue Dec 17 22:31:09 CST 2019 on pts/0
[test@heimatengyun ~]$ who am i
root     pts/0        2019-12-17 22:23 (192.168.78.1)
[test@heimatengyun ~]$ exit
logout

? 可以看到,切換后用戶名還是顯示最開始登錄時的用戶名稱,

  • who

功能描述:顯示當前有哪些用戶真正登錄到了本臺機器(不會顯示那些用su命令切換的用戶)

案例:

[root@heimatengyun test]# who
(unknown) :0           2019-12-17 22:22 (:0)
root     pts/0        2019-12-17 22:23 (192.168.78.1)
[root@heimatengyun test]# su - test
Last login: Tue Dec 17 22:34:44 CST 2019 on pts/0
[test@heimatengyun ~]$ who
(unknown) :0           2019-12-17 22:22 (:0)
root     pts/0        2019-12-17 22:23 (192.168.78.1)
[test@heimatengyun ~]$ exit
logout

? 可以看到用su命令切換用戶后,顯示結果中并咩有test用戶,因此顯示的知識真正登錄到本機的所有用戶,

1.1.2 id命令

語法:id 用戶名

功能描述:判斷用戶是否存在

案例:

[root@heimatengyun test]# id test
uid=1000(test) gid=1000(test) groups=1000(test)
[root@heimatengyun test]# id lover
id: lover: no such user

? 如果用戶存在回傳用戶資訊,如果用戶不存在則提示no such user

1.1.3 useradd命令

語法:

? useradd [選項] 用戶名

功能描述:

? 添加新用戶,默認的用戶家目錄存放在/home目錄中,默認的Shell解釋器為 /bin/bash,同時會默認創建一個與該用戶同名的基本用戶組,在創建用戶時,通過以下引數可以修改默認設定,

選項:

引數 作用
-d home-dir,指定用戶的家目錄,默認為/home/username
-e expiredate,賬戶到期時間,格式:YYYY-MM-DD
-u uid,指定用戶默認的UID
-g gid,指定初始用戶基本組,組必須已存在
-G groups,指定一個或多個擴展用戶組
-N no-user-group,不創建與用戶同名的基本用戶組
-s shell,指定用戶默認的Shell解釋器

案例:

(1)采用默認引數創建用戶

[root@heimatengyun test]# id lover
id: lover: no such user
[root@heimatengyun test]# useradd lover
[root@heimatengyun test]# id lover
uid=1001(lover) gid=1001(lover) groups=1001(lover)
[root@heimatengyun ~]# cat /etc/passwd
...省略部分內容
lover:x:1001:1001::/home/lover:/bin/bash

創建的用戶保存在/etc/passwd檔案中,可以通過此檔案查看用戶資訊,

一行為一條用戶記錄,分為7個欄位,每個欄位用冒號分隔,每個欄位分別對應:

用戶名:密碼:UID:GID:注釋:家目錄:偽用戶

(2)創建用戶指定家目錄、UID以及Shell解釋器

[root@heimatengyun ~]# useradd -d /home/heima -u 9988 -s /sbin/nologin heimage
[root@heimatengyun ~]# id heimage
uid=9988(heimage) gid=9988(heimage) groups=9988(heimage)
[root@heimatengyun ~]# ls /home/
heima  test

/sbin/nologin是終端解釋器中的一員,但是與Bash解釋器不同,被設定為nologin后,用戶將不能登錄到系統中,

RHEL7(Centos7)系統中,用戶身份有3種:管理員、系統用戶、普通用戶,系統的管理員用戶UID為0;系統用戶UID 為 1~999, Linux 系統為了避免因某個服務程式出現漏洞而被黑客提 權至整臺服務器,默認服務程式會有獨立的系統用戶負責運行,進而有效控制被破壞 范圍;普通用戶 UID 從 1000 開始,是由管理員創建的用于日常作業的用戶,

需要注意的是,UID 是不能沖突的,而且管理員創建的普通用戶的 UID 默認是從 1000 開始的(即使前面有閑置的號碼),

另外,在 Linux 系統中創建每個用戶時,將自動創建一個與其同名的基本用戶組,而且 這個基本用戶組只有該用戶一個人,如果該用戶以后被歸納入其他用戶組,則這個其他用戶 組稱之為擴展用戶組,一個用戶只有一個基本用戶組,但是可以有多個擴展用戶組,從而滿 足日常的作業需要,

1.1.4 passwd命令

語法:

? passwd [選項] 用戶名

功能描述:

? 設定或修改用戶密碼、過期時間、認證資訊等,

選項:

引數 作用
-l lock,鎖定用戶,禁止登錄
-u unlock,解除鎖定,允許用戶登錄
-e expire,強制用戶在下次登錄時修改密碼
-S status,顯示yoghurt的密碼是否被鎖定,以及密碼采用的加密演算法名稱

案例:

(1)修改其他賬戶密碼

[root@heimatengyun test]# passwd lover
Changing password for user lover.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.

? 修改的密碼不能太簡單,否則修改不成功,修改成功后,即可使用賬戶進行登錄,在界面中登錄后,即可查看當前登錄用戶

[root@heimatengyun test]# who
lover    :0           2019-12-17 23:05 (:0)
root     pts/0        2019-12-17 22:23 (192.168.78.1)

新建一個用戶,如果沒有設定密碼,則用戶無法直接登錄,只能通過root用戶使用su命令切換,因此,一般新建用戶就會同時設定密碼,也就是說useradd和passed命令一般是一起使用,

? 無論是普通用戶還是超級權限用戶都可以運行passwd命令,但是如果是普通用戶則只能修改自己的密碼,配合選項引數可以實作更豐富的功能,具體用法可以通過man命令進行查看,

(2)鎖定及解鎖賬戶

假設你部門有一位同事要休假半年,那么可以通過-l引數鎖定用戶,禁止其登錄,等休假完畢回來上班后再使用-u引數將其解鎖,這樣避免了洗掉用戶、添加用戶帶來的麻煩同時也保證了這段時間內系統的安全,

[root@heimatengyun ~]# passwd -S test
test PS 2019-11-27 0 99999 7 -1 (Password set, SHA512 crypt.)
[root@heimatengyun ~]# passwd -l test
Locking password for user test.
passwd: Success
[root@heimatengyun ~]# passwd -S test
test LK 2019-11-27 0 99999 7 -1 (Password locked.)
[root@heimatengyun ~]# passwd -u test
Unlocking password for user test.
passwd: Success
[root@heimatengyun ~]# passwd -S test
test PS 2019-11-27 0 99999 7 -1 (Password set, SHA512 crypt.)
1.1.5 usermod命令

語法:

? usermod [選項] 用戶名

功能描述:

? 修改用戶資訊

Linux系統一切皆檔案,修改用戶也就是修改組態檔,用戶資訊保存在/etc/passwd檔案中,可以直接采用文本編輯器修改也可以通過usermod命令進行修改,

選項:

引數 作用
-e expiredate,賬號到期時間,格式為YYYY-MM-DD
-g gid,變更所屬用戶組
-G groups,變更擴展用戶組
-L lock,鎖定用戶禁止其登錄
-U unlock,解鎖用戶,允許其登錄
-u uid,修改用戶的UID

案例:

? 通過-G引數將上邊創建的lover用戶加入到root用戶組

[root@heimatengyun test]# id lover
uid=1001(lover) gid=1001(lover) groups=1001(lover)
[root@heimatengyun test]# usermod -G root lover
[root@heimatengyun test]# id lover             
uid=1001(lover) gid=1001(lover) groups=1001(lover),0(root)
1.1.5 userdel命令

語法:

? userdel [選項] 用戶名

功能描述:

? 當用戶不會再登錄系統,則使用此命令洗掉用戶

選項:

引數 作用
-f force,強制洗掉
-r remove,洗掉用戶及用戶家目錄

案例:

? 洗掉之前創建的lover用戶,并洗掉目錄

[root@heimatengyun home]# pwd
/home
[root@heimatengyun home]# ls
lover  test
[root@heimatengyun home]# userdel -r lover
userdel: user lover is currently used by process 4419
[root@heimatengyun home]# userdel -rf lover
[root@heimatengyun home]# ls
test

? 洗掉用戶時默認會保留用戶主目錄,添加-r引數則會洗掉home目錄下用戶主目錄,-f表示強制洗掉,由于前文通過界面上登錄了lover用戶,所以提示有行程在使用,通過-f強制洗掉用戶,

1.2 用戶組相關命令

1.2.1 groupadd命令

語法:

? groupadd [選項] 組名

功能描述:

? 添加用戶組,有時候為了高效的管理系統中各個用戶的權限,經常會將多個用戶添加到一個指定組中,

案例:

添加heima用戶組并查看組資訊

[root@heimatengyun ~]# groupadd heima
[root@heimatengyun ~]# cat /etc/group
...省略部分內容
test:x:1000:test
heima:x:1001:

/etc/group檔案包含所有組資訊,可以查看到剛才添加的heima用戶組,

/etc/group檔案每行表示一條記錄,標識一個用戶組,每條記錄分為四個欄位,用冒號分割,第一欄位:用戶組名稱;第二欄位:用戶組密碼;第三欄位:GID;第四欄位:用戶串列,每個用戶之間用逗號分隔,本欄位可以為空

1.2.2 groupmod命令

語法:

? groupmod [選項] 新組名 老組名

功能描述:

選項:

引數 作用
-n 修改組名稱

案例:

(1)修改heima組名稱heimage

[root@heimatengyun ~]# groupmod -n heimage heima
[root@heimatengyun ~]# cat /etc/group
...省略部分內容
test:x:1000:test
heimage:x:1001:

(2)新建并添加用戶到heimage組

[root@heimatengyun ~]# cat /etc/group
...省略部分內容
test:x:1000:test
heimage:x:1001:
[root@heimatengyun ~]# useradd -g 1001 heimagege
[root@heimatengyun ~]# id heimagege
uid=1001(heimagege) gid=1001(heimage) groups=1001(heimage)
[root@heimatengyun ~]# cat /etc/group
...省略部分內容
test:x:1000:test
heimage:x:1001:
[root@heimatengyun ~]# cat /etc/passwd
...省略部分內容
heimagege:x:1001:1001::/home/heimagege:/bin/bash
1.2.3 groupdel命令

語法:

? groupdel 組名

功能描述:

? 洗掉組,前提是組內沒有用戶才能洗掉

案例:

(1)洗掉用戶組

[root@heimatengyun ~]# groupdel heimage
groupdel: cannot remove the primary group of user 'heimagege'
[root@heimatengyun ~]# userdel heimagege
[root@heimatengyun ~]# groupdel heimage 

(2)查看組內用戶

如案例1所示,如果組內有用戶則無法直接洗掉組,可以通過/etc/group檔案匹配對應的組名查看對應組內有哪些用戶

[root@heimatengyun ~]# grep 'test' /etc/group
test:x:1000:test

查找之前建的test組內有哪些用戶,第四個欄位即為該組內所有用戶串列,

二、檔案及相關權限

2.1 檔案權限

2.1.1 ll命令查看檔案權限

Linux中一切皆檔案,但是每個檔案型別可能不同,如何區分檔案型別呢?每個檔案都有所有者和所有組以及其他人對檔案擁有的讀、寫、執行權限,如何查看檔案的這些權限呢?

當然是通過ls或ll命令就可以查看

[root@heimatengyun test]# ll
-rw-r--r--. 1 root root   9 Nov 30 20:43 test1.txt
drwxr-xr-x. 2 root root   6 Dec 20 11:32 test1

ll命令顯示結果詳解

file

以test1.txt檔案為例,各部分代表的含義依次為如下

  • 檔案型別:
    第一個字符“-”表示檔案型別,此處表示test1.txt是一個普通檔案,不同檔案型別用不同字符表示,檔案型別與字符對應關系如下
符號 檔案型別
- 普通檔案
d 目錄檔案
l 連接檔案
b 塊設備檔案
c 字符設備檔案
p 管理檔案
s 套接字檔案
  • 檔案權限:

    “rw-r--r--.”,可以分為四段,前三段每三位為一段,最后一個點單獨為一段,第一段rw-表示檔案創建者/所有者對該檔案所具有的權限,第二段r--表示創建者/所有者所在的組的其他用戶所具有的權限,第三段r--表示其他組的其他用戶所具有的權限,第四段.

字符 權限型別
r read,讀取權限,數字表示為4,對檔案而言,具有讀取檔案內容的權限;對目錄來說,具有瀏覽目錄的權限
w write,寫入權限,數字表示為2,對檔案而言,具有新增、修改檔案內容的權限;對目錄來說,具有洗掉、移動目錄內檔案的權限
x execute,執行權限,數字表示為1,對檔案而言,具有執行檔案的權限;對目錄來說,該用戶具有進入目錄的權限,
s或S SUID,Set UID,可執行的檔案搭配這個權限,便能得到特權,任意存取該檔案的所有者能使用的全部系統資源,請注意具備SUID權限的檔案,黑客經常利用這種權限,以SUID配上root帳號擁有者,無聲無息地在系統中開扇后門,供日后進出使用,
t或T sticky,/tmp和 /var/tmp目錄供所有用戶暫時存取檔案,亦即每位用戶皆擁有完整的權限進入該目錄,去瀏覽、洗掉和移動檔案,
.或+ 如果為+表示設定了ACL

此處test1.txt檔案,其創建者/所有者具有可讀可寫的權限,其創建者/所有者所在的組的其他用戶具有可讀權限,其他組的其他用戶則具有可讀權限,

檔案權限除了可以使用rwx表示,也可以用數字表示,如777代表:rwxrwxrwx(r=4,w=2,x=1,4+2+1=7=rwx),由此可以看出數字表示會簡潔一些,

  • 連接個數

    對于檔案,表示指向它的鏈接檔案的個數;對于目錄檔案,表示它的第一級子目錄的個數,注意此處看到的值要減2才等于該目錄下的子目錄的實際個數,比如test1目錄下其實并沒有任何檔案和目錄,但此處顯示為2,這是因為要加上.目錄和..目錄,在linux下,.目錄表示當前目錄,..目錄表示上一級目錄,

  • 所有者和所屬組

    表示該檔案的所有者/創建者(owner)及其所在的組(group),

  • 檔案大小

    如果是檔案,則表示該檔案的大小,單位為位元組,如果是目錄,則表示該目錄符所占的大小,并不表示該目錄下所有檔案的大小,

  • 修改日期

    該檔案最后修改的日期時間,

  • 檔案名稱

    檔案或目錄的名稱,

不同的shell視窗,還能用顏色區分檔案的屬性,能一目了然通過顏色區分檔案型別,普通檔案、可執行檔案、壓縮檔案、目錄、連接檔案都有不同的顏色區分,不同工具可以根據自己需要進行顏色方案的修改和配置,這里就不說了,

2.1.2 檔案權限設定
2.1.2.1 chmod命令

語法:

? chmod [選項] [ugoa] [+-=] [rwx或數字] 檔案或目錄

選項引數:

選項 含義
-R recursive,遞回執行
屬性符號 作用
u 檔案擁有者
g 檔案所屬組
o 檔案所屬組外的其他用戶
a 所有用戶,相當于是ugo同時使用
運算子號 作用
+ 添加權限
- 洗掉權限
= 設定權限,未指定的部分將被清除
權限符號 作用
r 對于檔案有查看權限,對于目錄可以列出目錄內容
w 對于檔案有修改權限,對于目錄可以在目錄中創建和洗掉
x 對于檔案有執行權限,對于目錄可以進入目錄

功能描述:

? 改變檔案或目錄權限

案例:

(1)分別通過ugoa添加檔案的可執行權限

[root@heimatengyun test1]# ll
total 8
-rw-r--r--. 1 root root 6 Dec 20 14:52 hello
-rw-r--r--. 1 root root 6 Dec 20 14:51 test
[root@heimatengyun test1]# chmod u+x hello
[root@heimatengyun test1]# ll
total 8
-rwxr--r--. 1 root root 6 Dec 20 14:52 hello
-rw-r--r--. 1 root root 6 Dec 20 14:51 test
[root@heimatengyun test1]# chmod g+x hello
[root@heimatengyun test1]# ll
total 8
-rwxr-xr--. 1 root root 6 Dec 20 14:52 hello
-rw-r--r--. 1 root root 6 Dec 20 14:51 test
[root@heimatengyun test1]# chmod o+x hello
[root@heimatengyun test1]# ll
total 8
-rwxr-xr-x. 1 root root 6 Dec 20 14:52 hello
-rw-r--r--. 1 root root 6 Dec 20 14:51 test
[root@heimatengyun test1]# chmod a+x test
[root@heimatengyun test1]# ll
total 8
-rwxr-xr-x. 1 root root 6 Dec 20 14:52 hello
-rwxr-xr-x. 1 root root 6 Dec 20 14:51 test

從示例可以看到可以通過u、g、o分別對不同部分賦予權限,也可以直接用o一次性賦值,根據實際需要靈活選擇即可,

(2)移除所有者或所屬組之外其他用戶的執行權限

[root@heimatengyun test1]# ll
total 8
-rwxr-xr-x. 1 root root 6 Dec 20 14:52 hello
-rwxr-xr-x. 1 root root 6 Dec 20 14:51 test
[root@heimatengyun test1]# chmod o-x test
[root@heimatengyun test1]# ll
total 8
-rwxr-xr-x. 1 root root 6 Dec 20 14:52 hello
-rwxr-xr--. 1 root root 6 Dec 20 14:51 test

(3)用數字設定權限

[root@heimatengyun test1]# ll
total 8
-rwxr-xr-x. 1 root root 6 Dec 20 14:52 hello
-rwxr-xr--. 1 root root 6 Dec 20 14:51 test
[root@heimatengyun test1]# chmod 777 test
[root@heimatengyun test1]# ll
total 8
-rwxr-xr-x. 1 root root 6 Dec 20 14:52 hello
-rwxrwxrwx. 1 root root 6 Dec 20 14:51 test

(4)通過=號設定權限

[root@heimatengyun test1]# ll
total 8
-rwxr-xr-x. 1 root root 6 Dec 20 14:52 hello
-rwxrwxrwx. 1 root root 6 Dec 20 14:51 test
[root@heimatengyun test1]# chmod o=w test
[root@heimatengyun test1]# ll
total 8
-rwxr-xr-x. 1 root root 6 Dec 20 14:52 hello
-rwxrwx-w-. 1 root root 6 Dec 20 14:51 test

(5)改變目錄下所有檔案

[root@heimatengyun test]# chmod -R 777 test1
[root@heimatengyun test]# ll
drwxrwxrwx. 2 root root  29 Dec 20 14:52 test1
[root@heimatengyun test]# cd test1/
[root@heimatengyun test1]# ll
total 8
-rwxrwxrwx. 1 root root 6 Dec 20 14:52 hello
-rwxrwxrwx. 1 root root 6 Dec 20 14:51 test

可以看到內部的所有檔案權限一次性被修改,

2.1.2.2 chown命令

語法:

? chown [選項] 最終用戶[:最終所屬組] 檔案或目錄

引數:

引數 作用
-R 遞回修改

功能描述:

? 改變檔案或目錄的所有者

案例:

(1)修改檔案所有者

[root@heimatengyun test1]# ll
total 8
-rwxrwxrwx. 1 root root 6 Dec 20 14:52 hello
-rwxrwxrwx. 1 root root 6 Dec 20 14:51 test
[root@heimatengyun test1]# chown test test
[root@heimatengyun test1]# ll
total 8
-rwxrwxrwx. 1 root root 6 Dec 20 14:52 hello
-rwxrwxrwx. 1 test root 6 Dec 20 14:51 test

(2)遞回修改目錄及其下所有檔案所有者

[root@heimatengyun test]# chown -R test:test /root/test/test1
[root@heimatengyun test]# ll
drwxrwxrwx. 2 test test  29 Dec 20 14:52 test1
[root@heimatengyun test]# cd test1/
[root@heimatengyun test1]# ll
total 8
-rwxrwxrwx. 1 test test 6 Dec 20 14:52 hello
-rwxrwxrwx. 1 test test 6 Dec 20 14:51 test

這種用法在修改所有者時同時修改了所屬組,注意,修改的當前目錄及其下的所有檔案都會修改,上級目錄不會影響,如此處的/root/test目錄不會變化,只會影響test1目錄,

2.1.2.3 chgrp命令

語法:

? chgrp 最終用戶組 檔案或目錄

功能描述:

? 改變檔案或目錄的所屬組

案例:

[root@heimatengyun test1]# ll
total 8
-rwxrwxrwx. 1 test test 6 Dec 20 14:52 hello
-rwxrwxrwx. 1 test test 6 Dec 20 14:51 test
[root@heimatengyun test1]# chgrp root test
[root@heimatengyun test1]# ll
total 8
-rwxrwxrwx. 1 test test 6 Dec 20 14:52 hello
-rwxrwxrwx. 1 test root 6 Dec 20 14:51 test

2.2 檔案特殊權限

? 單純設定檔案的 rwx 一般權限無法滿足我們對安全和靈活性的需求,因此便有了 SUID、SGID 與 SBIT 的特殊權限位,

? 這是一種對檔案權限進行設定的特殊功 能,可以與一般權限同時使用,以彌補一般權限不能實作的功能,

2.2.1 SUID

? 針對二進制程式設定的特殊權限,可以讓二進制程式的執行者臨時擁有屬主的權限(僅對擁有執行權限的二進制程式有效),SUID是一種有條件的、臨時的特殊權限授權方法,下文以passwd命令進行介紹,

? 還記得1.1.4講的passwd命令嗎?該命令用于修改用戶密碼,所有用戶都可以執行 passwd 命 令來修改自己的用戶密碼,而用戶密碼保存在/etc/shadow 檔案中,執行passwd命令本質就是修改shadow檔案,

? 但仔細查看這個檔案就會發 現它的默認權限是 000,也就是說除了 root 管理員以外,所有用戶都沒有查看或編輯該檔案的權限,

[root@heimatengyun test1]# ll /etc/shadow
----------. 1 root root 1157 Dec 20 00:06 /etc/shadow

? 既然沒有此密碼檔案讀寫權限,那為何所有用戶都可以執行命令修改密碼呢?先不急,我們來看看passed命令的權限,

[root@heimatengyun test1]# ll /bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10  2014 /bin/passwd

? 可以看到所有者權限為rws,以前講過可執行權限為x,此處為s,對,就是因為所有者的權限由 rwx變成了rws,其中x改變成s就意味著該檔案被賦予了SUID 權限,在使用 passwd 命令時如果加上 SUID 特殊權限位,就可讓普通用戶臨時獲得程式所有者的身份,把變更的密碼資訊寫入到 shadow 檔案中,

說明:設定SUID后,如果原本沒有執行權限,則為S,有執行權限則為s,如rwx將變為rws,rw-變為rwS,

設定SUID權限,就是使用之前介紹的chmod命令即可,針對命令或可執行二進制檔案進行設定,

[root@heimatengyun test]# ll
-rwxrwxrwx. 1 root root 145 Dec  1 16:06 mypid.sh
[root@heimatengyun test]# chmod u+s mypid.sh 
[root@heimatengyun test]# ll
-rwsrwxrwx. 1 root root 145 Dec  1 16:06 mypid.sh
2.2.2 SGID

主要應用場景和功能有:

(1)讓執行者臨時擁有所屬組權限,對擁有執行權限的二進制程式進行設定,

(2)在某個目錄中創建的檔案自動繼承該目錄的用戶組,只可以對目錄進行設定,

SGID 的第一種功能是參考 SUID 而設計的,不同點在于執行程式的用戶獲取的不再是文 件所有者的臨時權限,而是獲取到檔案所屬組的權限,

針對第二種功能,我們知道,每個檔案都有其歸屬的所有者和所屬組,當創建或傳送一個檔案后,這個檔案就會自動歸屬于執行這個操作的用戶,即該用戶就是檔案的所有者,

假設有這樣一種情況,需要在部門內創建一個共享目錄,部門內所有人員都能讀取目錄中的內容,如果每個人都去建立各自的檔案,所有者和所屬組都是創建者自己,別人無法使用,SGID的出現就是為了解決這個問題,創建部門共享目錄后,在該目錄上設定 SGID 特殊權限位,這樣,部門內的任何人員在里面創建的任何檔案都會歸屬于該目錄的所屬組,而不再是自己的基本用戶組,

SGID功能就是在某個目錄中創建的檔案自動繼承該目錄的用戶組,只可以對目錄進行設定,

下面演示在目錄上創建SGID

[root@heimatengyun test]# mkdir sgid
[root@heimatengyun test]# ll
drwxr-xr-x. 2 root root  6 Dec 20 18:11 sgid
[root@heimatengyun test]# chmod 777 sgid/
[root@heimatengyun test]# ll
drwxrwxrwx. 2 root root  6 Dec 20 18:11 sgid
[root@heimatengyun test]# chmod g+s sgid/
[root@heimatengyun test]# ll
drwxrwsrwx. 2 root root  6 Dec 20 18:11 sgid

創建SGID后,就可以切換到普通用戶,創建檔案,觀察檔案的所屬組

[root@heimatengyun test]# su - test
Last login: Fri Dec 20 17:26:36 CST 2019 on pts/0
[test@heimatengyun ~]$ cd sgid/
[test@heimatengyun sgid]$ echo 'hello'>hello
[test@heimatengyun sgid]$ ll
total 4
-rw-rw-r--. 1 test root 6 Dec 20 18:14 hello

可以看到test普通用戶創建的檔案所屬組變為給上層檔案夾一致屬于root,不再屬于test自己,這樣針對所屬組設定權限,其他用戶就可以實作操作檔案,

2.2.3 SBIT

SBIT 特殊權限位可確保用戶只能洗掉自己的檔案,而不能洗掉其他用戶的檔案,當對某個目錄設定了 SBIT 粘滯位權限后,那么該目錄中的檔案就只能被其所有者執行洗掉操作了,

回到上文的例子,當一個部門共享一個目錄后,如何避免用戶洗掉其他用戶的檔案呢?顯然用SBIT就可以保證用戶不能洗掉別人的檔案,

設定目錄SBIT,同樣用chmod命令

[root@heimatengyun test]# mkdir sbit
[root@heimatengyun test]# ll
drwxr-xr-x. 2 root root  6 Dec 20 18:26 sbit
[root@heimatengyun test]# chmod -R o+t sbit/
[root@heimatengyun test]# ll
drwxr-xr-t. 2 root root  6 Dec 20 18:26 sbit

與前面所講的 SUID 和 SGID 權限顯示方法不同,當目錄被設定 SBIT 特殊權限位后,檔案的其他人權限部分的 x 執行權限就會被替換成 t 或者 T,原本有 x 執行權限則會寫成 t,原本沒有 x 執行權限則會被寫成 T,

我們仔細觀察,就會發現/tmp目錄其實就是默認設定了SBIT,它是一個共享目錄,保證用戶只能洗掉自己的檔案,

[root@heimatengyun /]# ll -d /tmp/
drwxrwxrwt. 15 root root 4096 Dec 20 18:30 /tmp/

創建新用戶并在tmp下創建檔案,驗證用其他用戶去洗掉看能否洗掉,答案肯定是不能洗掉的,

[root@heimatengyun /]# useradd heimagege
[root@heimatengyun /]# su - heimagege
[heimagege@heimatengyun ~]$ cd /tmp/
[heimagege@heimatengyun tmp]$ echo 'heimagege'>heimagege
[heimagege@heimatengyun tmp]$ ll
-rw-rw-r--. 1 heimagege heimagege 10 Dec 20 18:34 heimagege
[root@heimatengyun /]# su - test
Last login: Fri Dec 20 18:29:10 CST 2019 on pts/0
[test@heimatengyun ~]$ cd /tmp/
[test@heimatengyun tmp]$ rm -f heimagege 
rm: cannot remove ‘heimagege’: Operation not permitted

2.3 檔案隱藏屬性

? Linux 系統中的檔案除了具備一般權限和特殊權限之外,還有一種隱藏權限,即被隱藏起 來的權限,默認情況下不能直接被用戶發覺,當你新接手一臺服務器,碰到明明權限充足但卻無法洗掉某個檔案的情況,或者僅能在日志檔案中追加內容而不能修改或洗掉內容,這肯you可能就是設定了檔案隱藏屬性,這種屬性在一定程度上阻止了黑客篡改系統日志的圖謀,因此這種“奇怪”的檔案也保障了Linux 系統的安全性,

2.3.1 chattr命令

語法:

? chattr [選項] [+-=引數] 檔案

選項及引數:

選項 作用
R 遞回
引數 作用
i 無法對檔案進行修改;若對目錄設定了該引數,則僅能修改其中的子檔案內容 而不能新建或洗掉檔案
a 僅允許補充(追加)內容,無法覆寫/洗掉內容(Append Only)
S 檔案內容在變更后立即同步到硬碟(sync)
s 徹底從硬碟中洗掉,不可恢復(用 0 填充原檔案所在硬碟區域)
A 不再修改這個檔案或目錄的最后訪問時間(atime)
b 不再修改檔案或目錄的存取時間
d 使用 dump 命令備份時忽略本檔案/目錄
u 當洗掉該檔案后依然保留其在硬碟中的資料,方便日后恢復

功能描述:

? 設定檔案的隱藏權限

案例:

通過隱藏屬性,設定檔案不能洗掉

[root@heimatengyun test]# echo 'test chattr'>testattr
[root@heimatengyun test]# chattr +a testattr 
[root@heimatengyun test]# rm testattr 
rm: remove regular file ‘testattr’? y
rm: cannot remove ‘testattr’: Operation not permitted
2.3.2 lsattr命令

語法:

? lsattr 檔案

功能描述:

? 顯示檔案的隱藏權限

案例:

? 查看檔案隱藏屬性,洗掉隱藏屬性

[root@heimatengyun test]# lsattr testattr 
-----a---------- testattr
[root@heimatengyun test]# chattr -a testattr 
[root@heimatengyun test]# lsattr testattr    
---------------- testattr
[root@heimatengyun test]# rm testattr 
rm: remove regular file ‘testattr’? y
[root@heimatengyun test]# 

? 可以看到,洗掉隱藏屬性后檔案洗掉成功,

2.3 檔案訪問控制串列

前文講解的一般權限、特殊權限、隱藏權限都是針對某一類用戶設定的,如果希望對某個指定的用戶進行單獨的權限控制,就需要用到檔案 的訪問控制串列(ACL)了,

2.3.1 setfacl命令

基于普通檔案或目錄設定 ACL 其實就是針對指定的用戶或用戶組設定檔案或目錄的操作權限,另外,如果針對某個目錄設定了 ACL,則目錄中 的檔案會繼承其 ACL;若針對檔案設定了 ACL,則檔案不再繼承其所在目錄的 ACL,

檔案的 ACL 提供的是在所有者、所屬組、其他人的讀/寫/執行權限之外的特殊權限控制,使用 setfacl 命令可以針對單一用戶或用戶組、單一檔案或目錄來進行讀/寫/執行權限的控制,

語法:

? setfacl [引數] 檔案名稱

引數選項:

引數 作用
-R 遞回引數
-m modify修改目錄或檔案的ACL
-b 洗掉擴展ACL,保留原有的基礎權限

功能描述:

? 管理檔案的 ACL 規則

案例:

讓普通用戶能訪問root目錄

[root@heimatengyun ~]# ll -d /root/
dr-xr-x---. 16 root root 4096 Dec 20 11:49 /root/
[root@heimatengyun ~]# su - test
Last login: Fri Dec 20 18:34:47 CST 2019 on pts/0
[test@heimatengyun ~]$ ls /root/
ls: cannot open directory /root/: Permission denied
[test@heimatengyun ~]$ exit
logout

未設定ACL前其他用戶是不能訪問root目錄的,設定root目錄ACL允許test訪問,

[root@heimatengyun ~]# setfacl -Rm u:test:rwx /root/
[root@heimatengyun ~]# ll -d /root/                 
dr-xrwx---+ 16 root root 4096 Dec 20 11:49 /root/
[root@heimatengyun ~]# su - test
Last login: Fri Dec 20 22:10:26 CST 2019 on pts/0
[test@heimatengyun ~]$ ls /root/
anaconda-ks.cfg  Documents  initial-setup-ks.cfg  Pictures  Templates  Videos  Desktop          Downloads  Music                 Public    test

同時通過ll命令可以看到權限后邊的點變為了+,這個標識說明已經設定了ACL,

2.3.2 getfacl命令

語法:

? getfacl 檔案名稱

功能描述:

? 查看檔案上設定的ACL資訊

案例:

(1)查看檔案上設定的ACL

[test@heimatengyun ~]$ getfacl /root/
getfacl: Removing leading '/' from absolute path names
# file: root/
# owner: root
# group: root
user::r-x
user:test:rwx
group::r-x
mask::rwx
other::---

(2)洗掉檔案ACL

[root@heimatengyun ~]# ll -d /root/
dr-xrwx---+ 16 root root 4096 Dec 20 11:49 /root/
[root@heimatengyun ~]# setfacl -b /root/
[root@heimatengyun ~]# ll -d /root/     
dr-xr-x---. 16 root root 4096 Dec 20 11:49 /root/

2.4 臨時權限提升

? 平時學習一般直接用root可以避免各種配置服務或權限導致的干擾問題,使得學習中心放在相應的知識點上,但是正式作業中,往往很少用root操作,因此可能會涉及用戶切換以及用戶提權問題,

2.4.1 su命令

? su 命令可以解決切換用戶身份的需求,使得當前用戶在不退出登錄的情況下,順暢地切 換到其他用戶,

? 由于前文已經演示了su命令的用法,因此不再贅述,只是要注意su命令與用戶名之間有一個減號(-),這意味著完全切 換到新的用戶,即把環境變數資訊也變更為新用戶的相應資訊,而不是保留原始的資訊,強 烈建議在切換用戶身份時添加這個減號(-),另外,當從 root 管理員切換到普通用戶時是不需要密碼驗證的,而從普通用戶切換成 root 管理員就需要進行密碼驗證了;這也是一個必要的安全檢查,

2.4.2 sudo命令

? 盡管使用 su 命令后,普通用戶可以完全切換到 root 管理員身份來完成相應作業,但這將暴露 root 管理員的密碼,從而增大了系統密碼被黑客獲取的幾率;這并不是最安全的方案,

? sudo 命令可以把特定命令的執行權限賦予給指定用戶而無需給出root密碼, 這樣既可保證普通用戶能夠完成特定的作業,也可以避免泄露 root 管理員密碼,

語法格式:

? sudo [引數] 命令

引數:

引數 作用
-l 列出當前用戶可執行的命令

功能描述:

? sudo 命令用于給普通用戶提供額外的權限來完成原本 root 管理員才能完成的任務,

? 使用sudo之前需要先配置sudo服務,組態檔為/etc/sudoers,可以直接編輯此檔案,也可以使用visudo命令進行配置,

案例:

(1)為普通用戶test添加sudo權限

? 未為普通用戶配置sudo服務時,通過sodo命令查看能執行的命令,將提升沒有配置,

[root@heimatengyun ~]# su - test
Last login: Fri Dec 20 22:14:02 CST 2019 on pts/0
[test@heimatengyun ~]$ sudo -l
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.
[sudo] password for test: 
Sorry, user test may not run sudo on heimatengyun.

? 通過visudo命令,在“root ALL=(ALL) ALL”后仿照添加“test ALL=(ALL) ALL”,然后保存退出,操作方式跟vi編輯器一致,

配置內容解釋:test ALL=(ALL) ALL 其中test為用戶名,表示誰可以使用sudo,第一個ALL表示是運行使用的主機,等號之后括號內的ALL表示以誰的身份執行,最后的ALL表示可執行命令的串列,“誰可以使用 允許使用的主機=(以誰的身份) 可執行命令的串列”

配置后,再次使用test用戶來查看,將得出如下結果:

[root@heimatengyun ~]# su - test
Last login: Fri Dec 20 22:41:52 CST 2019 on pts/0
[test@heimatengyun ~]$ sudo -l
[sudo] password for test: 
Matching Defaults entries for test on this host:
    requiretty, !visiblepw, always_set_home, env_reset, env_keep="COLORS
    DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1
    PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE
    LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY
    LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL
    LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
    secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
User test may run the following commands on this host:
    (ALL) ALL

表明針對test用戶的sudo服務配置成功,配置成功之后,就可以采用sudo提升test用戶的權限了,

[test@heimatengyun ~]$ ls /root/
ls: cannot open directory /root/: Permission denied
[test@heimatengyun ~]$ sudo ls /root/
anaconda-ks.cfg  Documents  initial-setup-ks.cfg  Pictures  Templates  Videos
Desktop          Downloads  Music                 Public    test
[test@heimatengyun ~]$ 

是不是很神奇,test用戶通過sudo提權就可以看到root目錄內容了,

(2)按需為用戶配置sudo權限

我們前邊直接給了ALL最大的權限,實際情況應該按需分配最小權限,比如我們只給test用戶cat命令權限,

通過whereis命令查看cat所在路徑,一定要給命令的絕對路徑,不然系統無法識別命令,

[test@heimatengyun ~]$ whereis cat
cat: /usr/bin/cat /usr/share/man/man1/cat.1.gz /usr/share/man/man1p/cat.1p.gz

通過visudo命令修改之前添加的內容為:test ALL=(ALL) /usr/bin/cat,保存后切換到test普通用戶查看效果

[root@heimatengyun ~]# visudo 
...省略部分內容
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
#test ALL=(ALL) ALL
test ALL=(ALL) /usr/bin/cat
...省略部分內容
[test@heimatengyun ~]$ sudo -l
[sudo] password for test: 
Matching Defaults entries for test on this host:
    requiretty, !visiblepw, always_set_home, env_reset, env_keep="COLORS
    DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1
    PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE
    LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY
    LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL
    LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
    secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
User test may run the following commands on this host:
    (ALL) /usr/bin/cat
[test@heimatengyun ~]$ cat /etc/shadow
cat: /etc/shadow: Permission denied
[test@heimatengyun ~]$ sudo cat /etc/shadow
...省略部分內容
heimagege:!!:18250:0:99999:7:::
[test@heimatengyun ~]$ ls /root/
ls: cannot open directory /root/: Permission denied
[test@heimatengyun ~]$ 

從實驗結果可以看出,配置cat命令后,只能執行cat命令,再次使用ls命令就不能看到root目錄內容,這樣權限就得到了很好的控制,

學習完用戶及檔案相關權限知識后,下一篇文章我們將講解防火墻相關知識,

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/140414.html

標籤:Linux

上一篇:ELK學習004:Elasticsearch常規操作

下一篇:ELK學習005:Kibana 安裝與運行

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • CA和證書

    1、在 CentOS7 中使用 gpg 創建 RSA 非對稱密鑰對 gpg --gen-key #Centos上生成公鑰/密鑰對(存放在家目錄.gnupg/) 2、將 CentOS7 匯出的公鑰,拷貝到 CentOS8 中,在 CentOS8 中使用 CentOS7 的公鑰加密一個檔案 gpg -a ......

    uj5u.com 2020-09-10 00:09:53 more
  • Kubernetes K8S之資源控制器Job和CronJob詳解

    Kubernetes的資源控制器Job和CronJob詳解與示例 ......

    uj5u.com 2020-09-10 00:10:45 more
  • VMware下安裝CentOS

    VMware下安裝CentOS 一、軟硬體準備 1 Centos鏡像準備 1.1 CentOS鏡像下載地址 下載地址 1.2 CentOS鏡像下載程序 點擊下載地址進入如下圖的網站,選擇需要下載的版本,這里選擇的是Centos8,點擊如圖所示。 決定選擇Centos8后,選擇想要的鏡像源進行下載,此 ......

    uj5u.com 2020-09-10 00:12:10 more
  • 如何使用Grep命令查找多個字串

    如何使用Grep 命令查找多個字串 大家好,我是良許! 今天向大家介紹一個非常有用的技巧,那就是使用 grep 命令查找多個字串。 簡單介紹一下,grep 命令可以理解為是一個功能強大的命令列工具,可以用它在一個或多個輸入檔案中搜索與正則運算式相匹配的文本,然后再將每個匹配的文本用標準輸出的格式 ......

    uj5u.com 2020-09-10 00:12:28 more
  • git配置http代理

    git配置http代理 經常遇到克隆 github 慢的問題,這里記錄一下幾種配置 git 代理的方法,解決 clone github 過慢。 目錄 git配置代理 git單獨配置github代理 git配置全域代理 配置終端環境變數 git配置代理 主要使用 git config 命令 git單獨 ......

    uj5u.com 2020-09-10 00:12:33 more
  • Linux npm install 裝包時提示Error EACCES permission denied解

    npm install 裝包時提示Error EACCES permission denied解決辦法 ......

    uj5u.com 2020-09-10 00:12:53 more
  • Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包

    Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包。 18 (flaskApi) [root@67 flaskDemo]# yum -y install nginx 19 已加載插件:fastestmirror, langpacks 20 Loading ......

    uj5u.com 2020-09-10 00:13:13 more
  • Linux查看服務器暴力破解ssh IP

    在公網的服務器上經常遇到別人爆破你服務器的22埠,用來挖礦或者干其他嘿嘿嘿的事情~ 這種情況下正確的做法是: 修改默認ssh的22埠 使用設定密鑰登錄或者白名單ip登錄 建議服務器密碼為復雜密碼 創建普通用戶登錄服務器(root權限過大) 建立堡壘機,實作統一管理服務器 統計爆破IP [root ......

    uj5u.com 2020-09-10 00:13:17 more
  • CentOS 7系統常見快捷鍵操作方式

    Linux系統中一些常見的快捷方式,可有效提高操作效率,在某些時刻也能避免操作失誤帶來的問題。 ......

    uj5u.com 2020-09-10 00:13:31 more
  • CentOS 7作業系統目錄結構介紹

    作業系統存在著大量的資料檔案資訊,相應檔案資訊會存在于系統相應目錄中,為了更好的管理資料資訊,會將系統進行一些目錄規劃,不同目錄存放不同的資源。 ......

    uj5u.com 2020-09-10 00:13:35 more
最新发布
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:43:21 more
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:42:36 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:26:53 more
  • 設定Windows主機的瀏覽器為wls2的默認瀏覽器

    這里以Chrome為例。 1. 準備作業 wsl是可以使用Windows主機上安裝的exe程式,出于安全考慮,默認情況下改功能是無法使用。要使用的話,終端需要以管理員權限啟動。 我這里以Windows Terminal為例,介紹如何默認使用管理員權限打開終端,具體操作如下圖所示: 2. 操作 wsl ......

    uj5u.com 2023-04-19 09:25:49 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:19:04 more
  • Linux學習筆記

    IP地址和主機名 IP地址 ifconfig可以用來查詢本機的IP地址,如果不能使用,可以通過install net-tools安裝。 Centos系統下ens33表示主網卡;inet后表示IP地址;lo表示本地回環網卡; 127.0.0.1表示代指本機;0.0.0.0可以用于代指本機,同時在放行設 ......

    uj5u.com 2023-04-18 06:52:01 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:50 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:01 more
  • 你是不是暴露了?

    作者:袁首京 原創文章,轉載時請保留此宣告,并給出原文連接。 如果您是計算機相關從業人員,那么應該經歷不止一次網路安全專項檢查了,你肯定是收到過資訊系統技術檢測報告,要求你加強風險監測,確保你提供的系統服務堅實可靠了。 沒檢測到問題還好,檢測到問題的話,有些處理起來還是挺麻煩的,尤其是線上正在運行的 ......

    uj5u.com 2023-04-05 16:52:56 more
  • 細節拉滿,80 張圖帶你一步一步推演 slab 記憶體池的設計與實作

    1. 前文回顧 在之前的幾篇記憶體管理系列文章中,筆者帶大家從宏觀角度完整地梳理了一遍 Linux 記憶體分配的整個鏈路,本文的主題依然是記憶體分配,這一次我們會從微觀的角度來探秘一下 Linux 內核中用于零散小記憶體塊分配的記憶體池 —— slab 分配器。 在本小節中,筆者還是按照以往的風格先帶大家簡單 ......

    uj5u.com 2023-04-05 16:44:11 more