日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux系列教程——Linux文件编辑、Linux用户管理

發布時間:2023/12/20 linux 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux系列教程——Linux文件编辑、Linux用户管理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Linux文件編輯

1.VIM基本概述

1.什么是VIM?

vi和vim是Linux下的一個文本編輯工具。(可以理解為windows的記事本,或word文檔)

2.為什么要使用VIM?

因為Linux系統一切皆為文件,而我們工作最多的就是修改某個服務的配置(其實就是修改文件內容)。也就是說如果沒有vi/vim,我們很多工作都無法完成。PS: vim是學習linux最重要的命令之一

3.VI與VIM有什么區別?

vi和vim都是文本編輯器,只不過vim是vi的增強版,比vi多了語法高亮顯示,其他編輯功能幾乎無差,所以使用vi還是vim取決個人習慣。(相當于windows系統下的文本編輯軟件“記事本”與”notepad++”的區別)PS:因為前期最小化安裝CentOS系統,所以默認情況下沒有vim命令,但可以使用yum install vim -y安裝

4.如何使用VIM編輯器?

在使用VIM之前,我們需要先介紹下VIM的三種模式: 普通模式、編輯模式、命令模式,每種模式分別支持多種不同的快捷鍵,要想高效率地操作文本,就必須先搞清這三種模式的操作區別以及模式之間的切換方法。

5.VIM模式三種模式介紹

1.普通模式: 主要是控制光標移動,可對文本進行復制、粘貼、刪除等工作。使用vim filename 編輯一個文件時,一進入該文件就是普通模式了。在這個模式下,可以進行光標移動、復制、刪除、粘貼操作。
2.編輯模式: 主要進行文本內容編輯和修改從普通模式進入編輯模式,只需你按一個鍵即可(i, I, a, A, o, O)當進入編輯模式時,會在屏幕的最下一行會出現 “INSERT”標記從編輯模式回到普通模式只需要按鍵盤左上方的 ESC 鍵即可。
3.末行模式: 主要用于保存或退出文本。在普通模式下,輸入 “:” 或者 “/“ 即可進入命令模式。在命令該模式下,可進行的操作有,顯示行號、搜索、替換、保存、退出。
小結: vim編輯打開文件整體流程如下:1.默認打開文件處于普通模式2.從普通模式切換至編輯模式需要使用a、i、o3.編輯模式修改完畢后需要先使用ECS返回普通模式4.在普通模式輸入”:”或”/“進入命令模式,可實現文件的保存與退出。PS: 在vim中,無法直接從編輯模式切換到命令模式。

2.VIM模式使用

1.普通模式

#1.命令光標跳轉 G #光標跳轉至末端 gg #光標跳轉至頂端 Ngg #光標跳轉至當前文件內的N行 $ #光標跳轉至當前光標所在行的尾部 ^或者0 #光標跳轉至當前光標所在行的首部#2.文件內容較多 ctrl+f #往下翻頁(行比較多) ctrl+b #往上翻頁#3.復制與粘貼 yy #復制當前光標所在的行 5yy #復制當前光標以及光標向下4行p(小寫) #粘貼至當前光標下一行 P(大寫) #粘貼至當前光標上一行#4.刪除、剪貼、撤銷 dd #刪除當前光標所在的行 4dd #刪除當前光標所在的行以及往下的3行 dG #刪除當前光標以后的所有行 D #刪除當前光標及光標以后的內容 x #刪除當前光標標記往后的字符 X #刪除當前光標標記往前的字符 dd & p #剪貼、先刪除dd(number dd),后粘貼p u #撤銷上一次的操作#5.替換 r #替換當前光標標記的單個字符 R #進入REPLACE模式, 連續替換,ESC結束

2.編輯模式(從普通模式進入到編輯模式)

i #進入編輯模式,光標不做任何操作 a #進入編輯模式,將當前光標往后一位 o #進入編輯模式,并在當前光標下添加一行空白內容I #進入編輯模式,并且光標會跳轉至本行的頭部 A #進入編輯模式,將光標移動至本行的尾部 O #進入編輯模式,并在當前光標上添加一行空白內容

3.命令模式,主要用于搜索, 保存, 退出文件。

#1.文件保存與退出 :w 保存當前狀態 :w! 強制保存當前狀態 :q 退出當前文檔(文檔必須保存才能退出) :q! 強制退出文檔不會修改當前內容 :wq 先保存,在退出 :wq! 強制保存并退出 :x 先保存,在退出 ZZ 保存退出, shfit+zz :number 跳轉至對應的行號 :set nu 顯示行號 :set nonu 不顯示行號#2.文件內容查找 /string #需要搜索的內容(查找) n #按搜索到的內容依次往下進行查找 N #按搜索到的內容依次往上進行查找#3.文件內容替換 :1,5s#sbin#test#g #替換1-5行中包含sbin的內容為test :1,5s#sbin#test# #只替換1-5行中第一個包含sbin的內容為test :%s#sbin#test#g #替換整個文本文件中包含sbin的替換為test :%s#sbin#test#gc #替換內容時時提示是否需要替換#4.文件內容另存 :w /root/test.txt #將所有內容另存為/root/test.txt文件中#5.文件內容讀入 :r /etc/hosts #讀入/etc/hosts文件至當前光標下面 :5r /etc/hosts #指定插入/etc/hosts文件至當前文件的第五行下面

4.視圖模式(從普通模式進入視圖模式),主要進行批量操作

ctrl+v 進入可視塊模式,選中需要注釋的行1.插入:按shift+i進入編輯模式,輸入#,結束按ESC鍵2.刪除:選中內容后,按x或者d鍵刪除3.替換:選中需要替換的內容, 按下r鍵,然后輸入替換后的內容shift+v 進入可視行模式,選中整行內容1.復制:選中行內容后按y鍵及可復制。2.刪除:選中行內容后按d鍵刪除。

3.VIM擴展知識

1.環境變量臨時生效

:set nu #顯示行號 :set ic #忽略大小寫, 在搜索的時候有用 :set ai #自動縮進 :set list #顯示制表符(空行、tab鍵) :set no[nu|ic|ai…] #取消臨時設定的變量

2.環境變量永久生效。~/.vimrc 個人環境變量(優先級高) /etc/vimrc 全局環境變量

# vim ~/.vimrc #當下次再打開文件自動顯示行號并忽略大小寫 set nu set ic#如果個人vim環境沒有配置, 則使用全局vim環境變量配置。 #如果個人vim環境和全局環境變量產生沖突, 優先使用個人vim環境變量。

3.如何同時編輯多個文件

vim -o file1 file2 #水平分割 vim -O file1 file2 #垂直分割#ctrl+ww 文件間切換

4.相同文件之間差異對比,通常用于對比修改前后差異

# diff #文件對比 # vimdiff #以vim方式打開兩個文件對比,高亮顯示不同的內容

5.如果VIM非正常退出 (ctrl+z)掛起或強制退出終端沒關閉VIM后

#假設打開filename文件被以外關閉,需要刪除同文件名的.swp文件即可解決 # rm -f .filename.swp

4.VIM練習示例

1.將/etc/passwd 復制到/root/目錄下,并重命名為test.txt2.用vim打開test.txt并顯示行號3.分別向下、向右、向左、向右移動5個字符,分別向下、向上翻兩頁4.把光標移動到第10行,讓光標移動到行末,再移動到行首,移動到test.txt文件的最后一行,移動到文件的首行5.搜索文件中出現的 root 并數一下一共出現多少個,不區分大小寫搜索6.把從第一行到第三行出現的root 替換成–od–,然后還原上一步操作8.把整個文件中所有的root替換成–od–9.把光標移動到20行,刪除本行,還原上一步操作10.刪除第19行,還原上一步操作11.刪除從5行到10行的所有內容,還原上一步操作12.復制2行并粘貼到11行下面,還原上一步操作(按兩次u)13.復制從11行到15行的內容并粘貼到8行上面,還原上一步操作(按兩次u)14.把13行到18行的內容移動文件的尾部,還原上一步操作(按兩次u)15.光標移動到首行,把/sbin/nologin改成/bin/bash16.在第一行下面插入新的一行,并輸入”# Hello!”17.保存文檔并退出
2.練習示例2-文件

[root@www ~]# cat proxy.conf server {Listen 8080;Server_Name vim.OldboyEDU.com;location / {proxy_pass http://127.0.0.1:8080;proxy_set_header Host $http_host;proxy_set_header X-Forward-for;proxy_intercept_errors on;proxy_next_upstream error timeout;proxy_next_upstream_timeout 3s;proxy_next_upstream_tries 2;error_page 500 502 403 404 = /proxy_error.html;}location = /proxy_error.html {root /code/proxy;} }

2.練習示例2-題目1.使用vim打開proxy.conf文件2.修改Listen為listen小寫,并將8080修改為803.修改ServerName為server_name小寫。4.修改vim.OldboyEDU.com為vim.oldboy.com5.在server_name行下插入一行 root /code;5.復制5-14行的內容,然后將其粘貼到14行下面6.刪除與proxy_set_header相關的兩行全部刪除7.如上操作完成后,在13-20行前面加上#號8.刪除21-23的行,然后保存當前文件
ver_name小寫。4.修改vim.OldboyEDU.com為vim.oldboy.com5.在server_name行下插入一行 root /code;5.復制5-14行的內容,然后將其粘貼到14行下面6.刪除與proxy_set_header相關的兩行全部刪除7.如上操作完成后,在13-20行前面加上#號8.刪除21-23的行,然后保存當前文件

2 Linux用戶管理

1.用戶基本概述

1.什么是用戶?

用戶指的是能夠正常登錄Linux或Windows系統(可以理解為你租了房子,能夠正常入駐)F:那Linux與Windows系統的用戶有什么區別? Q:本質都是登陸系統,只不過Linux支持多個用戶同時登陸。F:難道Windows就不算多用戶操作系統嗎? Q:其實不是,在Windows系統中可以創建多個用戶,但不允許同一時刻多個用戶登陸系統,但Linux系統則允許同一時刻多個用戶同時登陸,登陸后相互之間操作并不影響。

2.Linux下的用戶有什么用

或者說我們為什么要創建用戶?
1.系統上的每一個進程(運行的程序),都需要一個特定的用戶運行2.通常在公司是使用普通用戶管理服務器,因為root權限過大,容易造成故障。

3.查看用戶

如何查看系統中所存在的用戶

1.查看當前登錄的用戶信息

[root@bgx ~]# id #查看當前所登陸的用戶信息 # uid:用戶id,系統只能識別uid,不能識別名字,人看名字 # gid:組id uid=0(root) gid=0(root) groups=0(root) [root@bgx ~]# id oldboy #查看其它用戶的信息 uid=1000(oldboy) gid=1000(oldboy) groups=1000(oldboy)

2.每一個進程都會由一個用戶身份運行

[root@bgx ~]# ps aux|less #簡單使用一下,不用理解 root 33782 0.0 0.0 0 0 ? R 02:46 0:00 [kworker/u256:0] root 35637 0.0 0.0 0 0 ? R 05:11 0:03 [kworker/0:2]

4.用戶存存放位置

Linux系統會將用戶的信息存放在/etc/passwd,記錄了用戶的信息,但沒有密碼信息,密碼被存放在/etc/shadow中。也就是說這兩個文件非常的重要,不要輕易刪除與修改。
1./etc/passwd 配置文件解釋如下圖,或者man 5 passwd2./etc/shadow 配置文件解釋如下圖,或者man 5 shadowPS: 使用change修改密碼過期時間示例
4.最后我們需要了解下系統對用戶的一個約定?(約定娶你,就真的會娶嗎?)

用戶UID
系統中約定的含義

0
超級管理員,最高權限,有著極強的破壞能力

1~200
系統用戶,用來運行系統自帶的進程,默認已創建

201~999
系統用戶,用來運行用戶安裝的程序,所以此類用戶無需登錄系統

1000+
普通用戶,正常可以登陸系統的用戶,權限比較小,能執行的任務有限

PS:在CentOS7系統之前, UID1-499用于系統用戶, 而UID 500+則用于普通用戶

2.用戶相關命令

下面我們就圍繞著用戶的創建、變更、刪除等來講講涉及到的命令: useradd、usermod、userdel

1.新增用戶

使用useradd命令,注意: adduser命令軟鏈接指向useradd命令

#選項 # -u 指定要創建用戶的UID,不允許沖突 # -g 指定要創建用戶默認組 # -G 指定要創建用戶附加組,逗號隔開可添加多個附加組 # -d 指定要創建用戶家目錄 # -s 指定要創建用戶的bash shell /bin/bash /sbin/nologin # -c 指定要創建用戶注釋信息 # -M 給創建的用戶不創建家目錄 # -r 創建系統賬戶,默認無家目錄#1.創建bgx用戶,UID5001,基本組students,附加組sa 注釋信息:2019 new student,登陸shell:/bin/bash [root@bgx ~]# groupadd sa [root@bgx ~]# groupadd students [root@bgx ~]# useradd -u 5001 -g students -G sa -c "2019 new student" -s /bin/bash bgx#2.創建mysql系統用戶,-M不建立用戶家目錄 -s指定nologin使其用戶無法登陸系統 [root@bgx ~]# useradd mysql -M -s /sbin/nologin [root@bgx ~]# useradd -r dba -s /sbin/nologin# 3 useradd od -u 7777 -G sa -d /tmp/od -s /sbin/nologin grep "7777" /etc/passwd # 4 SELinux getenforce # 查看 setenforce 0 # 臨時關閉 cat /etc/selinux/config SELINUX=disabled

2.修改用戶信息

使用usermod命令修改用戶信息

#選項 # -u 指定要修改用戶的UID # -g 指定要修改用戶基本組 # -G 指定要修改用戶附加組,使用逗號隔開多個附加組, 覆蓋原有的附加組,-aG追加 # -d 指定要修改用戶家目錄 -md 舊家搬新家 # -s 指定要修改用戶的bash shell # -c 指定要修改用戶注釋信息 # -l 指定要修改用戶的登陸名 # -L 指定要鎖定的用戶 # -U 指定要解鎖的用戶#1.檢查此前創建的用戶信息 [root@bgx ~]# grep "bgx" /etc/passwd bgx:x:5001:503:2019 new student:/home/bgx:/bin/bash#2.修改bgx用戶uid、gid,附加組 -a表示追加 [root@bgx ~]# groupadd -g 5008 network_sa [root@bgx ~]# groupadd -g 5009 devops [root@bgx ~]# usermod -u 6001 -g5008 -a -G 5009 bgx#3.修改bgx用戶的注釋信息, 用戶家目錄, 登錄shell, 登錄名 -l:改名字,-md,把環境也帶過去 [root@bgx ~]# usermod -c "2019 new student" -md /bgx -s /bin/sh -l change_bgx bgx#檢查是否修改成功 [root@bgx ~]# grep "bgx" /etc/passwd bgx_lqz:x:6001:5008:2019 new student:/bgx:/bin/sh [root@bgx ~]# id change_bgx uid=6001(change_bgx) gid=5008(network_sa) groups=5008(network_sa),503(sa),5009(devops) [root@bgx ~]# ll -d /bgx drwx------. 2 bgx_lqz network_sa 4096 2014-09-23 00:13 /bgx#4.鎖定用戶[擴展] [root@bgx ~]# echo "123" |passwd --stdin change_bgx [root@bgx ~]# usermod -L change_bgx #鎖定后會無法登陸系統#5.解鎖用戶[擴展] [root@bgx ~]# usermod -U change_bgx

3.刪除賬戶

使用userdel命令刪除賬戶

#選項 -r 刪除用戶同時刪除它的家目錄#1.刪除user1用戶,但不刪除用戶家目錄和 mail spool [root@bgx ~]# userdel user1 [root@bgx ~]# ls /var/spool/mail/#2.-r參數可以連同用戶家目錄一起刪除(慎用) [root@bgx ~]# userdel -r user1

4.其他

  • 使用finger命名查詢用戶信息以及登錄信息(yum install finger),示例: finger UserName2) 使用chfn命令修改用戶信息(其實是修改注釋),示例: chfn UserName3) 使用chsh命令修改用戶登錄Bash Shell,示例: chsh UserName4) 使用who(當前有哪些用戶登錄了)、whoami、w檢查用戶登陸情況
  • 3.用戶擴展知識

    1.創建流程

    前面我們學習如何創建、修改、刪除用戶,接下來了解下用戶的?
    1.useradd創建用戶時,系統會以/etc/login.defs、/etc/defaults/useradd兩個配置文件作為參照物,如果在創建用戶時指定了參數則會覆蓋/etc/login.defs、/etc/defaults/useradd文件默認配置,如未指定則使用默認。

    [root@bgx ~]# grep -Ev "^#|^$" /etc/login.defs [root@bgx ~]# cat /etc/login.defs MAIL_DIR /var/spool/mail # 定義了郵件路徑放在哪 PASS_MAX_DAYS 99999 # 密碼過期時間 PASS_MIN_DAYS 0 # 密碼最少0天 PASS_MIN_LEN 5 # 密碼長度 PASS_WARN_AGE 7 # 7天提醒 UID_MIN 1000 UID_MAX 60000 SYS_UID_MIN 201 SYS_UID_MAX 999 GID_MIN 1000 GID_MAX 60000 SYS_GID_MIN 201 SYS_GID_MAX 999 CREATE_HOME yes # 是否創建home UMASK 077 USERGROUPS_ENAB yes # 用戶不指定組,默認創建一個同名組 ENCRYPT_METHOD SHA512 # 密碼加密算法[root@bgx ~]# cat /etc/default/useradd GROUP=100 HOME=/home #把用戶的家目錄建在/home中。 INACTIVE=-1 #是否啟用賬號過期停權,-1表示不啟用。 EXPIRE= #賬號終止日期,不設置表示不啟用。 SHELL=/bin/bash #新用戶默認所有的shell類型。 SKEL=/etc/skel #配置新用戶家目錄的默認文件存放路徑。 CREATE_MAIL_SPOOL=yes #創建mail文件。

    2.當使用useradd創建用戶時,創建的用戶家目錄下會存在 .bash_ 環境變量相關的文件,這些環境變量文件默認從/etc/skel目錄中拷貝。這個默認拷貝環境變量位置是由/etc/defaults/useradd配置文件中定義的。

    #故障案例,在當前用戶家目錄執行了rm -rf .,下次登錄系統時出現-bash-4.1$,如何解決! -bash-4.1$ cp -a /etc/skel/.bash ./ -bash-4.1$ exit [root@bgx ~]# #重新連接即可恢復

    2.設置、修改密碼

    創建用戶后,如需要使用該用戶登陸系統則需要為用戶設定密碼,設定密碼使用passwd命令。建議密碼復雜度高一些、長度大于10、出現各種特殊字符、無任何規律(不要出現名字,電話,生日等)PS: 注意事項1.普通用戶只允許變更自己的密碼,無法修改其他人密碼,并且密碼長度必須8位字符2.管理員用戶允許修改任何人的密碼,無論密碼長度多長或多短。

    #1.使用passwd命令修改用戶密碼 # passwd #給當前用戶修改密碼 # passwd root #給root用戶修改密碼 # passwd oldboy #給oldboy用戶修改密碼,普通用戶只能自己修改自己#2.驗證如下幾項指標 # passwd #root管理員用戶登陸,修改root用戶密碼 # passwd lqz #root用戶登陸,修改其他用戶的密碼 $ passwd root #普通用戶修改root管理員密碼 # echo "123" | passwd --stdin lqz #非交互式修改密碼 # 批量創建100個用戶,密碼都為123456 for i in {1..100} douseradd test$1echo "123456" |passwd --stdin test$1 done#3.系統內置變量生成隨機字符串(對隨機字符串進行md5加密) [root@bgx ~]# echo $RANDOM|md5sum|cut -c 1-10 d09fe9b1xs [root@bgx ~]# echo $(echo $RANDOM|md5sum |cut -c 5-14) |tee pass.txt| passwd --stdin lqz#4.mkpasswd生成隨機字符串, -l設定密碼長度,-d數子,-c小寫字母,-C大寫字母,-s特殊字符 [root@bgx ~]# yum install -y expect //需要安裝擴展包 [root@bgx ~]# mkpasswd -l 10 -d 2 -c 2 -C 2 -s 4 |K&13bR)i/

    PS: 推薦密碼保存套件工具,支持windows、MacOS、Iphone以及瀏覽器插件Lastpass官方網站

    4.用戶組的管理

    1.什么是用戶組

    其實就是一種邏輯層面的定義,邏輯上將多個用戶歸納至一個組,當我們對組操作,其實就相當于對組中的所有用戶操作。

    2.組有類別

    對于用戶來說,組有幾種類別?
    基本組,用戶只能有一個基本組,創建時可通過-g指定,如未指定則創建一個默認的組(與用戶同名),簡稱私有組附加組,基本組不能滿足授權要求,創建附加組,將用戶加入該組,用戶可以屬于多個附加組

    3.組的信息位置

    組賬戶信息保存在/etc/group和/etc/gshadow兩個文件中。重點關注group
    1./etc/group 配置文件解釋如下圖

    head -1 /etc/group

    2./etc/gshadow 配置文件解釋如下圖

    1 groupadd新增組

    使用groupadd命令新增組,groupadd [-g GID] groupname

    #創建基本組, 不指定gid [root@bgx ~]# groupadd no_gid [root@bgx ~]# tail -n1 /etc/group no_gid:x:1000:#創建基本組, 指定gid為5555 [root@bgx ~]# groupadd -g 5555 yes_gid [root@bgx ~]# tail -n1 /etc/group yes_gid:x:5555:#創建系統組,gid從201-999 [root@bgx ~]# groupadd -r sys_group [root@bgx ~]# tail -n1 /etc/group sys_group:x:990:

    2 groupmod修改組

    使用groupmod命令修改組

    #-g 修改組gid [root@bgx ~]# groupmod -g 1111 no_gid [root@bgx ~]# tail -1 /etc/group no_gid:x:1111:#-n 修改組名稱(把yes_gid名字改為active_group) [root@bgx ~]# groupmod yes_gid -n active_group [root@bgx ~]# tail -1 /etc/group active_group:x:5555:

    3.groupdel刪除組,

    刪除時需要注意,如果用戶存在基本組則無法直接刪除該組,如果刪除用戶則會移除默認的私有組,而不會移除基本組。

    # 私有組的情況,直接刪除用戶,組也就沒了 [root@bgx ~]# userdel jack#刪除組 [root@bgx ~]# groupdel active_group#刪除用戶附加組 [root@bgx ~]# id lqz uid=1069(lqz) gid=5005(lqz) groups=5005(lqz),5004(devops) [root@bgx ~]# groupdel devops [root@bgx ~]# id lqz uid=1069(lqz) gid=5005(lqz) groups=5005(lqz)#無法刪除用戶基本組 [root@bgx ~]# groupdel network_sa groupdel: cannot remove the primary group of user 'bgx_lqz' #只有刪除用戶或者用戶變更基本后,方可刪除該組

    4 gpasswd設置組密碼

    使用gpasswd設置組密碼[擴展,可以不會]

    [root@bgx ~]# groupadd devops [root@bgx ~]# gpasswd devops Changing the password for group devops New Password: Re-enter new password:

    5 newgrp切換基本組身份

    使用newgrp命令切換基本組身份[擴展,可以不會]

    #1.檢查賬戶信息 [root@bgx ~]# useradd lqz [root@bgx ~]# id lqz uid=1069(lqz) gid=5005(lqz) groups=5005(lqz)#2.切換普通用戶 [root@bgx ~]# su - lqz#3.創建新文件,查看文件的屬主和屬組 [lqz@bgx ~]$ touch file_roots [lqz@bgx ~]$ ll -rw-rw-r-- 1 lqz lqz 0 Jun 13 10:06 file_roots#4.使用newgrp切換到devops組 [lqz@bgx ~]$ newgrp devops Password:#5.創建文件,檢查屬主和屬組 [lqz@bgx ~]$ touch file_test [lqz@bgx ~]$ ll -rw-rw-r-- 1 lqz lqz 0 Jun 13 10:06 file_roots -rw-r--r-- 1 lqz devops 0 Jun 13 10:08 file_test

    5.用戶如何提權

    往往公司的服務器對外都是禁止root用戶直接登錄,所以我們通常使用的都是普通用戶,那么問題來了?當我們使用普通用戶執行/sbin目錄下的命令時,會發現沒有權限運行,這種情況下我們無法正常的管理服務器,那如何才能不使用root用戶直接登錄系統,同時又保證普通用戶能完成日常工作?PS: 我們可以使用如下兩種方式: su、sudo1.su切換用戶,使用普通用戶登錄,然后使用su命令切換到root。優點:簡單 缺點:需要知道root密碼2.sudo提權,當需要使用root權限時進行提權,而無需切換至root用戶,優點:安全、方便 缺點:復雜

    1.su身份切換

    在使用su切換前,我們需要了解一些預備知識,比如shell分類、環境變量配置文件有哪些
    1.Linux Shell主要分為如下幾類交互式shell,等待用戶輸入執行的命令(終端操作,需要不斷提示)非交互式shell,執行shell腳本, 腳本執行結束后shell自動退出登陸shell,需要輸入用戶名和密碼才能進入Shell,日常接觸的最多的一種非登陸shell,不需要輸入用戶和密碼就能進入Shell,比如運行bash會開啟一個新的會話窗口
    2.bash shell配置文件介紹(文件主要保存用戶的工作環境)個人配置文件:~/.bash_profile ~/.bashrc 。
    全局配置文件:/etc/profile /etc/profile.d/.sh /etc/bashrcprofile類文件, 設定環境變量, 登陸前運行的腳本和命令。bashrc 類文件, 設定本地變量, 定義命令別名PS: 如果全局配置和個人配置產生沖突,以個人配置為準。
    3.登陸系統后,環境變量配置文件的應用順序是?登錄式shell配置文件執行順序: /etc/profile->/etc/profile.d/.sh->/.bash_profile->/.bashrc->/etc/bashrc非登陸式shell配置文件執行順序: ~/.bashrc->/etc/bashrc->/etc/profile.d/*.shPS: 驗證使用echo在每行添加一個輸出即可
    4.說了這么多預備知識,那這些和su命令切換用戶有什么關系?su - username屬于登陸式shell,su username屬于非登陸式shell,區別在于加載的環境變量不一樣。su username 屬于非登陸式shell
    普通用戶su -可以直接切換至root用戶,但需要輸入root用戶的密碼。超級管理員root用戶使用su - username切換普通用戶不需要輸入任何密碼。

    #1.普通用戶使用su切換root [lqz@node1 ~]$ su 密碼: #輸入root的密碼 [root@node1 lqz]# pwd /home/lqz#2.普通用戶使用su -切換到root,會加載root的環境變量 [lqz@node1 ~]$ su - 密碼: [root@node1 ~]# pwd /root#3.以某個用戶的身份執行某個服務,使用命令su -c username [root@bgx ~]# su - lqz -c 'ifconfig' [root@bgx ~]# su - lqz -c 'ls ~'#4 其他 yum provides pstree yum install psmisc pstree# 5 關閉root遠程登陸,普通用戶登進來,su - 切換到root用戶 vim /etc/ssh/sshd_config PermitRootLogin yes # 設成no

    2.sudo提權

    su命令在切換用戶身份時,如果每個普通用戶都能拿到root用戶的密碼,當其中某個用戶不小心泄漏了root的密碼,那系統會變得非常不安全。為了改進這個問題,從而產生了sudo這個命令。
    其實sudo就相當于給某個普通用戶埋下了浩克(hulk)的種子,當需要執行一些高級操作時,進行發怒,但正常情況下還是普通人,還是會受到限制。
    1.如何快速埋下hulk的種子呢?

    #1.快速配置sudo方式[先睹為快] [root@node1 ~]# usermod bgx -G wheel # 把用戶加到wheel組中 [root@node1 ~]$ sudo tail -f /var/log/secure #sudo審計日志#2.一般正常配置sudo方式 [root@www ~]# #visudo => vim /etc/sudoers #1.用戶名 2.主機名=(角色名) 4.命令名 bgx ALL=(ALL) /usr/bin/yum,/usr/sbin/useradd #允許使用sudo執行命令 oldboy ALL=(ALL) NOPASSWD:/bin/cp, /bin/rm #NOPASSWD不需要使用密碼visudo -c # 檢查剛剛編輯的是否有錯誤 sudo -l # 對主機有哪些權限

    2.埋下了hulk種子后又如何提權使用呢?

    #1.切換普通用戶 [root@bgx ~]# su - lqz#2.檢查普通用戶能提權的命令 [lqz@lqz ~]$ sudo -l User lqz may run the following commands on this host:(ALL) ALL#3.普通用戶正常情況下是無法刪除opt目錄的 [lqz@lqz ~]$ rm -rf /opt/ rm: cannot remove `/opt: Permission denied#4.使用sudo提權,需要輸入普通用戶的密碼。 [lqz@lqz ~]$ sudo rm -rf /opt

    3.開啟某個命令的使用權限

    提升的權限太大,能否有辦法限制僅開啟某個命令的使用權限?其他命令不允許?
    第一種方式:使用sudo中自帶的別名操作,將多個用戶定義成一個組,這個組只有sudo認可

    [root@bgx ~]# visudo #也可以使用vi /etc/sudoers來配置 # 1.使用sudo定義分組,這個系統group沒什么關系 User_Alias OPS = oldboy,alex User_Alias DEV = bgx,py# 2.定義可執行的命令組,便于后續調用 Cmnd_Alias NETWORKING = /sbin/ifconfig, /bin/ping Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/yum Cmnd_Alias SERVICES = /sbin/service, /usr/bin/systemctl start Cmnd_Alias STORAGE = /bin/mount, /bin/umount Cmnd_Alias DELEGATING = /bin/chown, /bin/chmod, /bin/chgrp Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall# 3.使用sudo開始分配權限 OPS ALL=(ALL) NETWORKING,SOFTWARE,SERVICES,STORAGE,DELEGATING,PROCESSES DEV ALL=(ALL) SOFTWARE,PROCESSES#4.登陸對應的用戶使用 sudo -l 驗證權限

    第二種方式:使用groupadd添加組,然后給組分配sudo的權限,如果有新用戶加入,直接將用戶添加到該組.

    #1.添加兩個真實的系統組, group_dev group_op [root@www ~]# groupadd group_dev [root@www ~]# groupadd group_op#2.添加兩個用戶, group_dev(user_a user_b) group_op(user_c user_d) [root@www ~]# useradd user_a -G group_dev [root@www ~]# useradd user_b -G group_dev [root@www ~]# useradd user_c -G group_op [root@www ~]# useradd user_d -G group_op#3.記得添加密碼 [root@www ~]# echo "1" | passwd --stdin user_a [root@www ~]# echo "1" | passwd --stdin user_b [root@www ~]# echo "1" | passwd --stdin user_c [root@www ~]# echo "1" | passwd --stdin user_d#4.在sudo中配置規則 [root@www ~]# visudoCmnd_Alias NETWORKING = /sbin/ifconfig, /bin/pingCmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/yumCmnd_Alias SERVICES = /sbin/service, /usr/bin/systemctl startCmnd_Alias STORAGE = /bin/mount, /bin/umountCmnd_Alias DELEGATING = /bin/chown, /bin/chmod, /bin/chgrpCmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall%group_dev ALL=(ALL) SOFTWARE%group_op ALL=(ALL) SOFTWARE,PROCESSES#5.檢查sudo是否配置有錯 [root@www ~]# visudo -c /etc/sudoers: parsed OK#6.檢查user_a,和user_d的sudo權限 [user_a@www.oldboyedu.com ~]$ sudo -l User user_a may run the following commands on www:(ALL) /bin/rpm, /usr/bin/yum[user_d@www.oldboyedu.com ~]$ sudo -l User user_d may run the following commands on www:(ALL) /bin/rpm, /usr/bin/yum, /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall

    4.sudo命令的執行流程

  • 普通用戶執行sudo命令時, 會檢查/var/db/sudo是否存在時間戳緩存2) 如果存在則不需要輸入密碼, 否則需要輸入用戶與密碼3) 輸入密碼會檢測是否該用戶是否擁有該權限4) 如果有則執行,否則報錯退出

    sudo不支持系統內置命令
  • 總結

    以上是生活随笔為你收集整理的Linux系列教程——Linux文件编辑、Linux用户管理的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。