從0開(kāi)始-Linux學(xué)習(xí)筆記(四)

劉小澤寫(xiě)于18.6.24-7.1 一個(gè)星期入門linux
我相信這是比之前寫(xiě)的 “測(cè)序的世界” 更浩大的工程,但值得寫(xiě)出來(lái)!

Linux管理(大部分基于ROOT用戶)

1. 背景知識(shí):介紹用戶和組

linux 無(wú)論識(shí)別用戶還是進(jìn)程,都會(huì)通過(guò)數(shù)字識(shí)別。

所以每一個(gè)用戶或組都有一個(gè)ID,存儲(chǔ)在各自數(shù)據(jù)庫(kù)中

  • 用戶:UID,數(shù)據(jù)庫(kù)/etc/passwd
    用戶類別:6位二進(jìn)制共65536個(gè)
    #管理員:0
    $普通用戶: 系統(tǒng)用戶1-499 ; 一般用戶:500-60000再后面很少用
    【只需了解】用戶信息:
      例如:u1239:X:503:504:::/home/1239/:/bin/bash  
      u1239 #用戶名  
      X     #x 表示密碼,存放于 /etc/shadow  
      503    #用戶id(0代表root、普通新建用戶從500開(kāi)始)  
      504    #基本組ID,額外組等信息在 /etc/group  
      :      #注釋(多個(gè)注釋逗號(hào)隔開(kāi))  
      /home/u1239/  #家目錄  
      /bin/bash     
      #默認(rèn)shell, 當(dāng)前系統(tǒng)所有合法shell存放于:/etc/shells        
  • 組:GID,數(shù)據(jù)庫(kù)/etc/group
    $私有組:創(chuàng)建用戶時(shí),如果沒(méi)有為其指定所屬的組,系統(tǒng)會(huì)自動(dòng)為其創(chuàng)建一個(gè)與用戶名同名的組 ;
    $ 基本組:用戶的默認(rèn)組 ;
    $ 附加組,額外組:默認(rèn)組以外的其它組
    【只需了解】組信息:
      例如:vip:`$!$`:???:13801:0:99999:7:*:*:  
      vip   #組名  
      `$!$`   #被加密的口令  
      13801   #創(chuàng)建日期與今天相隔的天數(shù)  
      0         #口令最短位數(shù)  
      99999   #用戶口令  
      7         #到7天時(shí)提醒  
      *         #禁用天數(shù)  
      *         #過(guò)期天數(shù)  

2. 管理用戶:

添加用戶 useradd

-u<uid>:指定用戶id;< 默認(rèn)uid要>=500,且其他用戶沒(méi)有使用>;同時(shí)創(chuàng)建私有組
    【建立的帳號(hào),保存在/etc/passwd文本文件中 --> tail -1查看最后一行】
-g<gid>: 指定基本組(必須事先存在)
-G<gid>: 指定附加組,可以有多個(gè),用逗號(hào)隔開(kāi)
-c: “COMMENT” 用戶注釋(注意要加引號(hào))
-d:/path/to/somedir 指定家目錄
例如:useradd -c "Tony" -d /home/bla uer2 
    => 新建名叫Tony的user2,指定家目錄在/home/bla
-s: 指定shell路徑
-m -k: 在用戶家目錄下復(fù)制skel文件
    skel文件是:bash基礎(chǔ)結(jié)構(gòu)文件 ls -a /etc/skel查看
        包含.bashrc、.bash_logout、.profile三個(gè)基礎(chǔ)文件
-M:不創(chuàng)建家目錄
-r:添加系統(tǒng)用戶(UID:1-499)

修改用戶屬性 usermod

-u UID
-g GID(必須是之前存在的)
-a -G GID 追加附加組,而不覆蓋原來(lái)的(不加-a則之前存在的附加組將會(huì)被覆蓋)
-c 修改注釋
-d -m:指定新的家目錄,并把之前家目錄文件移動(dòng)到新的家目錄
-l : 修改登錄名
-e : 指定過(guò)期時(shí)間YYYY-MM-DD
-L:鎖定/禁用用戶 -U:解鎖
-s : 修改默認(rèn)shell

修改默認(rèn)shell :chsh [USERNAME] =>這種方法是交互式,不如usermod -s快

刪除用戶 userdel

-r: 同時(shí)刪除用戶的家目錄,默認(rèn)不會(huì)刪除用戶家目錄

ID 查看用戶賬號(hào)相關(guān)屬性信息 【普通用戶也可以使用】

UID 是對(duì)一個(gè)用戶的單一身份標(biāo)識(shí)。組ID(GID)則對(duì)應(yīng)多個(gè)UID.

一些程序可能需要UID/GID來(lái)運(yùn)行。id使我們更加容易地找出用戶的UID以GID而不必在/etc/group文件中搜尋

-u或--user :顯示用戶ID;
-g或--group:顯示用戶所屬群組的ID;
-G或--groups:顯示用戶所屬附加群組的ID;
-n或--name:顯示用戶,所屬群組或附加群組的名稱

finger 查找并顯示用戶信息

顯示本地主機(jī)現(xiàn)在所有的用戶的登陸信息,包括帳號(hào)名稱,真實(shí)姓名,登入終端機(jī),閑置時(shí)間,登入時(shí)間以及地址和電話

修改finger注釋信息: chfn [USERNAME]

密碼管理:

passwd [USERNAME]
--stdin:采用標(biāo)準(zhǔn)輸入方式修改密碼
【利用管道將密碼指定給這個(gè)命令,減少與用戶的交互】
-n 最短使用
-x 最長(zhǎng)使用

例如:echo 'mykey' | passwd --stdin user

-l : 鎖定 -u:解鎖
-d : 刪除

pwck:驗(yàn)證系統(tǒng)密碼/etc/passwd/etc/shadow的內(nèi)容和格式的完整性

3. 管理組:

創(chuàng)建組:groupadd -g GID -r 添加為系統(tǒng)組

修改組 :groupmod -g GID -n 修改組名

刪除組 :groupdel
組加密:gpasswd
登陸新組:newgrp
【流程就是:1. 如果之前用戶和這個(gè)新組沒(méi)關(guān)系:
'root下' groupadd -> gpasswd -> ‘當(dāng)前組下’ newgrp;
2.如果之前用戶有一個(gè)附加組,現(xiàn)在想切換到附加組,直接newgrp】
切換后退出:exit

練習(xí):需要root權(quán)限
1、創(chuàng)建一個(gè)用戶thanos,其ID號(hào)是2018,基本組是marvel(組ID為2222),附加組為linux:

groupadd -g 2222 marvel
groupadd linux
useradd -u 2018 -g marvel -G linux thanos

2、創(chuàng)建一個(gè)用戶steve, 其全名為Steve Rogers, 默認(rèn)shell為tcsh:

useradd -c “Steve Rogers” -s /bin/tcsh steve

3、修改thanos的ID號(hào)為2020,基本組為linux,附加組為steve和marvel:

usermod -u 2020 -g linux -G steve, marvel thanos

4、給steve加密碼,并設(shè)定密碼最短使用期限為3天,最長(zhǎng)30天:

passwd -n 3 -x 30 steve

5、將thanos的默認(rèn)shell改為/bin/bash:

usermod -s /bin/bash steve 或者使用chsh steve

6、添加系統(tǒng)用戶banner,且不允許它登陸系統(tǒng):

useradd -r -s /sbin/nologin banner

4. 管理:

chown:改變文件/目錄屬主(只有管理員才能使用)
chown USENAME file
-R: 遞歸改變目錄中的子目錄/文件的屬主
--reference=/path/to/somefile file1 : 把file1文件屬主設(shè)定為和somefile一樣
chown USENAME:或.GRPNAME file : 同時(shí)改變屬主和屬組

chgrp: 改變屬組 --> 用法同chown

chmod: 修改文件權(quán)限
支持-R 以及 --reference
權(quán)限范圍的表示法如下:

u User,即文件或目錄的擁有者;
g Group,即文件或目錄的所屬群組;
o Other,除了文件或目錄擁有者或所屬群組之外,其他用戶皆屬于這個(gè)范圍;
a All,即全部的用戶,包含擁有者,所屬群組以及其他用戶;
r 讀取權(quán)限,數(shù)字代號(hào)為“4”;
w 寫(xiě)入權(quán)限,數(shù)字代號(hào)為“2”;
x 執(zhí)行或切換權(quán)限,數(shù)字代號(hào)為“1”;
- 不具任何權(quán)限,數(shù)字代號(hào)為“0”;
s 特殊功能說(shuō)明:變更文件或目錄的權(quán)限。

  • 更改三類用戶的權(quán)限

    也就是說(shuō),如果權(quán)限是rwx,那就是4 + 2+ 1 =7
    如果是-wx,就是 0 + 2 + 1 =3
    chmod 733 file 表示對(duì)于屬主滿足rwx,對(duì)屬組和其他組是-wx
    如果要對(duì)整個(gè)文件夾設(shè)置權(quán)限,chmod +R 733 dir
    采用數(shù)字的方式比識(shí)別rwx字母的速度快得多,推薦用數(shù)字
    【三位數(shù)字少一位就從頭補(bǔ)0,如:輸入75,理解為075】

  • 更改某一類用戶的權(quán)限:

    chmod a/u/g/o=MODE file 【這里mode只能用r、w、x,不能用數(shù)字】
    也可以一次性改兩個(gè):e.g. chmod go=r file ; chmod g=rx,o= file

  • 更改某類用戶的某個(gè)或某些權(quán)限:

    操作某個(gè)權(quán)限:e.g. chmod u+x,g-x file
    全部用戶都增加某一權(quán)限:chmod +x file
    操作某些權(quán)限:chmod u-wx file

    【特殊權(quán)限
    SUID:運(yùn)行某程序時(shí),相應(yīng)進(jìn)程的屬主是程序文件自身的屬主,不是啟動(dòng)者
    開(kāi)啟這一項(xiàng),意味著賦予用戶臨時(shí)對(duì)這個(gè)文件有了root權(quán)限
    chmod u+s FILE / chmod u-s FILE
    如果FILE本身原來(lái)就有執(zhí)行權(quán)限,則SUID顯示為s;否則為S

    SGID : 與SUID原理相似

    Sticky: 在一個(gè)公共目錄,每個(gè)都可以創(chuàng)建文件,刪除自己的文件,但不能刪除別人的文件
    chmod o+t DIR / chmod o-t DIR

    同rwx,SUID、SGID、Sticky也對(duì)應(yīng)4、2、1
    假如更改權(quán)限時(shí)是這樣:chmod 5755 file :
    第一個(gè)5就對(duì)應(yīng)4+1: SUID+Sticky

    【了解即可】umask ** 新建文件權(quán)限的掩碼 【四位數(shù),只看后三位】
    創(chuàng)建文件:初始值666- umask
    創(chuàng)建目錄:初始值777-umask
    例如當(dāng)前用戶umask 為022,新建文件的權(quán)限將變?yōu)?66 - 022 = 644
    改變umask:直接定義新的值 umask Num
    【文件默認(rèn)不具有執(zhí)行權(quán)限,若算得的結(jié)果中有執(zhí)行權(quán)限,則將其權(quán)限加1】

    【非必須掌握】屬主、屬組和權(quán)限位的關(guān)聯(lián)?

    當(dāng)一個(gè)用戶發(fā)起一個(gè)進(jìn)程,它能訪問(wèn)的權(quán)限取決于這個(gè)進(jìn)程的屬主與被訪問(wèn)的文件的屬主是否一致,一致就運(yùn)行屬主的權(quán)限(前三位);
    不一致再看訪問(wèn)的屬主和被訪問(wèn)的屬組是否一致,一致就運(yùn)行被訪問(wèn)的屬組權(quán)限(中間三位);
    若都不一致就運(yùn)行其他組權(quán)限。
    然后程序運(yùn)行起來(lái)后,不管之前程序的屬主是誰(shuí),現(xiàn)在就是該用戶

  • 只想讓某個(gè)用戶獲得文件權(quán)限怎么辦?

    之前學(xué)了使用chmod +數(shù)字可以設(shè)定組內(nèi)、其他組的訪問(wèn)權(quán)限,那么如果只想讓組內(nèi)或組外的某個(gè)成員看怎么辦?

    FACL:Filesystem Access Control List 幫助你
    利用文件擴(kuò)展保存額外的訪問(wèn)控制權(quán)限

    • setfacl
      -m:設(shè)定
      -x:取消
      u:UID:perm : 設(shè)定某某用戶有什么權(quán)限(perm)
      g:GID:perm:設(shè)定某某組有什么權(quán)限(perm)

      例如:setfacl -m u:u1239:rw inittab
      就是將u1239這個(gè)用戶賦予了inintab文件的rw屬性
      
    • getfacl:查看文件的fac

【練習(xí):從頭創(chuàng)建新用戶[完全手動(dòng)]--root用戶下進(jìn)行】

1、 新建一個(gè)沒(méi)有家目錄的用戶bioplanet;
--> 結(jié)果是該用戶的屬主、屬組仍然為root

useradd -M bioplanet
#每執(zhí)行完一個(gè)命令要驗(yàn)證,比如這里怎么驗(yàn)證新添加了沒(méi)有home的用戶?
#查找用戶信息 -- finger bioplanet
#看看/home下有沒(méi)有-- ls /home -- 現(xiàn)在/home下沒(méi)有是正常的
#看看有沒(méi)有用戶id -- id bioplanet

2、 復(fù)制/etc/skel 為 /home/bioplanet;
—> 添加架構(gòu)文件為了在/home下表現(xiàn)出來(lái)該用戶

cp -r /etc/skel /home/bioplanet
#驗(yàn)證下bioplanet的權(quán)限,以及復(fù)制成功沒(méi)有
ls -l /home 看屬主、屬組是否為root
ls -la /home/bioplanet 看三個(gè)架構(gòu)文件是否生成

3、改變/home/bioplanet 及其內(nèi)部文件的屬主屬組均為bioplanet;

chmod -R bioplanet:bioplanet /home/bioplanet
#ls -ld /home/bioplanet 驗(yàn)證

4、/home/bioplanet及其內(nèi)部的文件,屬組和其他用戶沒(méi)有任何訪問(wèn)權(quán)限

這里不能用:chmod -R 700 /home/bioplanet 因?yàn)?00相當(dāng)于也改變了屬主
我們這里只需要改屬組和其他,使用 chmod -R go= /home/bioplanet

5、su bioplanet 新建用戶完成, 接下來(lái)還要改三樣?xùn)|西
設(shè)置基本組為bioplanet(5000),附加組為之前存在的mygroup

6、修改passwd:

vi /etc/passwd
最后一行添加:bioplanet:x:5000:5000::/home/bioplanet:/bin/bash

7、修改group:

vi /etc/group
最后一行添加:bioplanet:x:5000:, 另外找到mygroup,在后面添加上bioplanet

8、修改shadow

先看一下shadow的格式:
用戶:密碼:修改時(shí)間:密碼最短使用期限:最長(zhǎng)使用期限:警告時(shí)間:::
【修改時(shí)間time=(date +%s)/86400 】【后三項(xiàng)一般就是0:99999:7:::】

vi /etc/shadow

#一會(huì)設(shè)置密碼,先用!!占位
bioplanet:!!:time:0:99999:7:::

自動(dòng)設(shè)置密碼:password
手動(dòng)設(shè)置:openssl passwd -1 -salt '12345678'
再輸入密碼,就得到一串加密的密碼
密碼復(fù)制到剛編輯的shadow中, 把!!替換

5. 用戶登陸:

bash的配置文件

  • 按作用范圍分類:

    • 全局配置:/etc/profile, /etc/profile.d/*.sh, /etc/bashrc
    • 個(gè)人配置:~/.bash_profile, ~/.bashrc
      【當(dāng)全局和個(gè)人發(fā)生沖突時(shí),以個(gè)人為準(zhǔn)】
  • 按功能分類:

    • profile類的文件:
      設(shè)定環(huán)境變量
      運(yùn)行命令或腳本

    • bashrc類的文件:

      ? 設(shè)定本地變量
      定義命令別名

在用戶登陸角度看shell類型

  • 登錄式shell:
    • 賬號(hào)密碼正常通過(guò)終端登錄
    • su - USERNAME
    • su -l USERNAME
  • 非登錄式shell:
    • su USERNAME
    • 圖形終端打開(kāi)窗口
    • 自動(dòng)執(zhí)行的shell腳本

配置文件讀取順序:

  • 登錄式shell

    /etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc

  • 非登錄式shell

    ~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh


歡迎關(guān)注我們的公眾號(hào)~_~  
我們是兩個(gè)農(nóng)轉(zhuǎn)生信的小碩,打造生信星球,想讓它成為一個(gè)不拽術(shù)語(yǔ)、通俗易懂的生信知識(shí)平臺(tái)。需要幫助或提出意見(jiàn)請(qǐng)后臺(tái)留言或發(fā)送郵件到Bioplanet520@outlook.com

bioinfoplanet

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容