劉小澤寫(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;否則為SSGID : 與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
