前言
本文涉及到用戶、組和權(quán)限等相關(guān)概念巴碗,詳細(xì)解釋請(qǐng)參閱Linux系列之知識(shí)補(bǔ)充一:用戶朴爬、組和權(quán)限。
一橡淆、umask
1-1寝殴、umask概念
當(dāng)我們登錄系統(tǒng)之后創(chuàng)建一個(gè)文件是會(huì)有一個(gè)默認(rèn)權(quán)限,umask用于設(shè)置用戶創(chuàng)建文件或者目錄的默認(rèn)權(quán)限明垢。umask相當(dāng)于是權(quán)限碼的“補(bǔ)碼”蚣常,而我們常用chmod設(shè)置的是文件權(quán)限碼。
一般在/etc/profile,HOME/.bashprofile或者HOME/.profile中設(shè)置umask值痊银。默認(rèn)情況下的umask值是022抵蚊,可以用umask命令查看。此時(shí)你建立的文件默認(rèn)權(quán)限是644(6-0,6-2,6-2)溯革,建立的目錄的默認(rèn) 權(quán)限是755(7-0,7-2,7-2)贞绳,如圖所示:
1-2、umask計(jì)算權(quán)限
對(duì)于文件和目錄來(lái)說(shuō)致稀, 最大的權(quán)限其實(shí)都是777冈闭。但是執(zhí)行權(quán)限對(duì)于文件來(lái)說(shuō),很可怕抖单,而對(duì)目錄來(lái)說(shuō)執(zhí)行權(quán)限是個(gè)基本權(quán)限萎攒。所以默認(rèn)目錄的最大權(quán)限是777,而文件的默認(rèn)最大權(quán)限就是666矛绘。
對(duì)于root用戶的umask=022這個(gè)來(lái)說(shuō)耍休,777權(quán)限二進(jìn)制碼就是(111)(111)(111),022權(quán)限二進(jìn)制碼為(000)(010)(010)货矮。
- 所有權(quán)限二進(jìn)制的1:代表有這個(gè)權(quán)限羊精,0:代表沒(méi)有這個(gè)權(quán)限
- umask二進(jìn)制1:代表要去掉這個(gè)權(quán)限,不管你原來(lái)有沒(méi)有權(quán)限囚玫,你最終一定沒(méi)有這個(gè)權(quán)限喧锦。
- umask二進(jìn)制的0:代表我不關(guān)心對(duì)應(yīng)位的權(quán)限读规,你原來(lái)有權(quán)限就有權(quán)限,沒(méi)有就沒(méi)有燃少, 我不影響你掖桦。
如圖所示:計(jì)算方式
上面就是一個(gè)umask的正常計(jì)算過(guò)程,但是這樣實(shí)在是太麻煩了供汛。我們使用如下的簡(jiǎn)單的方法快速計(jì)算枪汪。
- 對(duì)于目錄,直接使用777-umask即可怔昨,就得到了最終結(jié)果雀久。
- 對(duì)于文件,先使用666-umask趁舀。
- 如果對(duì)應(yīng)位上為偶數(shù):最終權(quán)限就是這個(gè)偶數(shù)值赖捌。
- 如果上面的對(duì)應(yīng)為上有奇數(shù),就對(duì)應(yīng)位+1矮烹。
上面的這個(gè)方法計(jì)算是非常方便的越庇, 但是為何文件得到奇數(shù)要+1呢?因?yàn)槲募淖畲髾?quán)限是666奉狈,都是偶數(shù)卤唉。如果計(jì)算得到奇數(shù),說(shuō)明umask有奇數(shù)仁期,而讀權(quán)限為4桑驱,寫權(quán)限為2,都是偶數(shù)跛蛋,umask有奇數(shù)說(shuō)明有執(zhí)行權(quán)限熬的,所以結(jié)果要+1。就按照上面的umask=023為例赊级,在計(jì)算其他用戶權(quán)限的時(shí)候6-3=3 押框,6是讀寫,3是寫和執(zhí)行理逊,其實(shí)應(yīng)該是讀寫權(quán)限減去讀和執(zhí)行權(quán)限橡伞,最終得到寫權(quán)限的,相當(dāng)于我們多減去了一個(gè)執(zhí)行權(quán)限挡鞍。所以結(jié)果+1骑歹。
1-3、修改umask
umask 的修改分兩種墨微, 臨時(shí)修改和永久修改
- 臨時(shí)修改:
[root@node000 ~]# umask 023
[root@node000 ~]# umask
0023
[root@node000 ~]#
-
永久修改:
可以編輯以下文件,添加:umask=022- 交互式登陸的配置生效:/etc/bashrc的配置最有效扁掸,可以覆蓋前面的配置
/etc/profile < /etc/profile.d/*.sh < ~/.bash_profile < ~/.bashrc </etc/bashrc
- 非交互登陸的配置生效:
~/.bashrc < /etc/bashrc < /etc/profile.d/*.sh
二翘县、bash的配置文件
2-1最域、shell的類型
站在用戶登錄的角度來(lái)說(shuō),shell的類型:
-
登錄式shell:正常通常某終端登錄
- su - USERNAME
- su -l USERNAME
-
非登錄式shell:
- su USERNAME
- 圖形終端下打開命令窗口
- 自動(dòng)執(zhí)行的shell腳本
2-2锈麸、bash的配置文件
- 全局配置
/etc/profile, /etc/profile.d/*.sh, /etc/bashrc
- 個(gè)人配置
~/.bash_profile, ~/.bashrc
profile類的文件作用:
- 設(shè)定環(huán)境變量
- 運(yùn)行命令或腳本
bashrc類的文件文件的作用:
- 設(shè)定本地變量
- 定義命令別名
2-3镀脂、bash的配置文件讀取順序
- 登錄式shell如何讀取配置文件順序
/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc
- 非登錄式shell如何配置文件順序
~/.bashrc --> /etc/basrc --> /etc/profile.d/*.sh
2-4、su和su -的區(qū)別
以su root 和 su - root為例來(lái)說(shuō)明su和su -的區(qū)別忘伞。
前者只是切換了root身份薄翅,但shell環(huán)境仍然是普通用戶的shell;而后者連用戶和shell環(huán)境一起切換成root身份了氓奈。
只有切換了shell環(huán)境才不會(huì)出現(xiàn)PATH環(huán)境變量錯(cuò)誤翘魄。
su切換成root用戶以后,pwd一下舀奶,發(fā)現(xiàn)工作目錄仍然是普通用戶的工作目錄暑竟;而用su -命令切換以后,工作目錄變成root的工作目錄了育勺。
用echo $PATH命令看一下su和su -以后的環(huán)境變量有何不同但荤。以此類推,要從當(dāng)前用戶切換到其它用戶也一樣涧至,應(yīng)該使用su -命令腹躁。