小白linux運(yùn)維day-14

昨日內(nèi)容:
1.什么是權(quán)限?
用來約束用戶能對系統(tǒng)所做的操作。( 稱職為權(quán)限 )
2.為什么要有權(quán)限?
因?yàn)橐粋€(gè)系統(tǒng)中存在很多用戶,保證每個(gè)用戶的隱私。
3.權(quán)限和用戶如何進(jìn)行綁定?
-rw-r--r--. 1 oldxu oldxu 58112885 3月 13 09:25 access.log
rw- 綁定oldxu用戶( 讀寫 6)
r-- 綁定 oldxu組 ( 讀 4 )
r-- 除了oldxu用戶、oldxu組,剩下所有人訪問該文件只有這個(gè)權(quán)限 ( 讀 4)
權(quán)限: 644 三個(gè)數(shù)字代表了三個(gè)身份( 用戶、組、其他人 )
4.權(quán)限中的rwx是干什么的?
r 讀 4
w 寫 2
x 執(zhí)行 1
- 無 0
5.驗(yàn)證權(quán)限r(nóng)wx對文件和對目錄的含義?
普通用戶去驗(yàn)證,因?yàn)閞oot不受權(quán)限控制
6.如何變更一個(gè)文件至其他用戶? (實(shí)際生產(chǎn)使用例子)
進(jìn)程能夠以什么樣的方式去訪問 一個(gè)文件,取決于該進(jìn)程運(yùn)行的用戶身份對該文件擁有什么樣的權(quán)限。
7.查看用戶屬于那個(gè)組
[root@oldboy ~]# groups oldxu (用戶名稱)
oldxu : oldxu root adm
今日內(nèi)容:
1.特殊權(quán)限
2.特殊權(quán)限SUID
3.特殊權(quán)限SGID
4.特殊權(quán)限SBIT
5.文件的屬性( chattr、lsattr )
6.UMASK默認(rèn)權(quán)限
oldboy用戶-->執(zhí)行-->passwd命令時(shí)。
1.由于passwd命令擁有suid特殊權(quán)限(在命令屬主權(quán)限位有一個(gè)s),
2.那么在整個(gè)命令執(zhí)行的過程中,會以命令的屬主身份去運(yùn)行該命令。 <-- root
oldxu --> passwd ---> 該命令屬主身份root在運(yùn)行 ---> 依托root身份 --> 變更 /etc/shadow 密碼信息
演示:1.登錄oldboy用戶執(zhí)行passwd命令
[oldboy@oldboy ~]$ passwd
更改用戶 oldboy 的密碼 。
為 oldboy 更改 STRESS 密碼。
(當(dāng)前)UNIX 密碼:
2.過濾一下passwd這個(gè)命令是由那個(gè)身份運(yùn)行起來的 (該進(jìn)程運(yùn)行的身份是該命令的屬主,而不是oldboy用戶)
[root@oldboy ~]# ps aux |grep passwd
root 9099 0.0 0.0 112724 988 pts/0 R+ 16:38 0:00 grep --color=auto passwd
3.結(jié)論:
/etc/shadow 這個(gè)文本本身是誰都無法修改的,但是root除外。
此時(shí)oldboy執(zhí)行passwd 通過 特殊權(quán)限 借助的是root身份運(yùn)行該命令
所以最終是由root去更新了/etc/shadow 文件,完成的密碼修改。
suid使用:
需求:默認(rèn)情況下所有的普通用戶都無法查看/etc/shadow,有沒有辦法讓/etc/sahow讓所有的普通用戶都能看
方法一:chmod 004 /etc/shadow
方式二:給cat 命令賦予一個(gè)suid的權(quán)限
設(shè)定suid: u+s 4755 == 4表示的特殊權(quán)限中的suid
[root@oldboy ~]# which cat #查看cat命令的位置
/usr/bin/cat
[root@oldboy ~]# ll /usr/bin/cat
-rwxr-xr-x. 1 root root 54160 10月 31 2018 /usr/bin/cat
[root@oldboy ~]# chmod 4755 /usr/bin/cat #給cat 命令設(shè)置suid(屬主特殊權(quán)限)
[root@oldboy ~]# ll /usr/bin/cat
-rwsr-xr-x. 1 root root 54160 10月 31 2018 /usr/bin/cat
結(jié)論:

  • ? 當(dāng)為cat命令賦予了特殊權(quán)限后,此時(shí)所有的普通用戶通過cat去查看文件時(shí),其實(shí)都是通過cat的屬主身份查看的該文件
    ? oldboy--> cat ---> /etc/shadow
    ? 由于cat有suid
    ? cat的屬主又是root
    ? 轉(zhuǎn)換的結(jié)果
    ? root --> cat --->/etc/shadow -->結(jié)果 -->輸出到--->oldboy ---> bash窗口
    特殊權(quán)限SGID: 組
    表現(xiàn)形式: 在文件的 屬組權(quán)限上有顯示一個(gè)s(執(zhí)行權(quán)限) S(沒有執(zhí)行權(quán)限)
    oldxu用戶-->執(zhí)行-->passwd命令時(shí)。
    1.由于passwd命令擁有SGID特殊權(quán)限 (在命令屬組權(quán)限位有一個(gè)s),
    2.那么在整個(gè)命令執(zhí)行的過程中,會以命令的 “屬組” 身份去運(yùn)行該命令。 <-- root組
    oldboy --> passwd ---> 該命令屬組身份 root 在運(yùn)行 ---> 依托root組 身份 --> 變更 /etc/shadow 密碼信息
    suid 借助 ” 屬主 “ 身份運(yùn)行該命令程序
    sgid 借助 “ 屬組 ” 身份運(yùn)行該命令程序
    目錄:將目錄設(shè)置為sgid后,如果在該目錄下創(chuàng)建文件,都將與該目錄的所屬組保持一致,演示如下

1.建立測試目錄

[root@oldboy ~]# cd /tmp/ && mkdir dest

2.給測試目錄賦予SetGID權(quán)限,檢查SetGID是否生效 chmod 2755 = 2 表示SGID

[root@bgx tmp]# chmod g+s dtest/ && ll -d dtest/
drwxr-sr-x 2 root root 6 Apr 13 05:21 dtest/

3.給測試目錄賦予777權(quán)限,讓普通用戶可以寫

[root@bgx tmp]# chmod 777 dtest/

4.切換成普通用戶lamp,并進(jìn)入該目錄

[root@bgx tmp]# su - lamp
[lamp@bgx ~]$ cd /tmp/dtest/

5.普通用戶創(chuàng)建測試文件,檢查文件的信息

[lamp@bgx dtest]touch lamp_test [lamp@bgx dtest] ll
-rw-rw-r-- 1 lamp root 0 Apr 13 05:21 lamp_test
演示的整個(gè)過程:
[root@oldboy tmp]# ll -d dest
drwxr-xr-x. 2 root root 6 3月 17 17:03
[root@oldboy tmp]# chmod 2755 dest
[root@oldboy tmp]# ll -d dest
drwxr-sr-x. 2 root root 6 3月 17 17:03 dest
[root@oldboy tmp]# chmod 777 dest/
[root@oldboy tmp]# ll -d dest/
drwxrwsrwx. 2 root root 6 3月 17 17:03 dest
[root@oldboy dest]# ls
dest_1 jacky_1
[root@oldboy dest]# ll
-rw-rw-r--. 1 oldboy root 0 3月 17 17:07 dest_1
-rw-rw-r--. 1 jacky root 0 3月 17 17:08 jacky_1
sgid作用
使用sgid可以使得多個(gè)用戶之間共享一個(gè)目錄的所有文件變得簡單
特殊權(quán)限SBIT:
針對的是目錄:
目錄一旦被賦予了粘滯位,除了 root 可以刪除所有文件,普通用戶對該目錄就算擁有 w 權(quán)限,也只能刪除自己建立的文件,而不能刪除其他用戶建立的文件。
[root@oldboy dtest]# ll -d /tmp/
drwxrwxrwt. 9 root root 202 3月 17 10:52 /tmp/
后面學(xué)習(xí)MySQL的時(shí),當(dāng)我們要初始化MySQL時(shí),他會創(chuàng)建一些臨時(shí)文件 /tmp目錄下,當(dāng)初始化完畢后,自己會清理掉里面的數(shù)據(jù),別人無法清理。(如果這個(gè)目錄不是粘滯位,那么初始化MySQL就會報(bào)錯(cuò)。)
[root@oldboy tmp]# ll -d /tmp/
drwxrwxrwx. 10 root root 242 3月 17 17:21 /tmp/
[root@oldboy tmp]# chmod 1777 /tmp/
[root@oldboy tmp]# ll -d /tmp/
drwxrwxrwt. 10 root root 242 3月 17 17:21 /tmp
[oldboy@oldboy tmp]ls abc1 jacky1 [oldboy@oldboy tmp] rm -rf jacky1
rm: 無法刪除"jacky1": 不允許的操作
[oldboy@oldboy tmp]rm -rf abc1 [jacky@oldboy tmp] rm -rf abc1
rm: 無法刪除"abc1": 不允許的操作
[jacky@oldboy tmp]$ rm -rf jacky1
特殊的屬性:權(quán)限有關(guān)
需求:1.我希望創(chuàng)建一個(gè)文件,不允許被刪除。包括root都不行。
2.我希望這個(gè)文件只能往里面追加數(shù)據(jù)。
chatrr 只有 root 用戶可以使用,用來修改文件系統(tǒng)的權(quán)限屬性,建立凌駕于 rwx 基礎(chǔ)權(quán)限之上的授權(quán)。
chattr [+-=] [選項(xiàng)] 文件或目錄名
選項(xiàng):+ 增加權(quán)限 -減少權(quán)限 = 等于某個(gè)權(quán)限
a :讓文件或內(nèi)容只可以追加內(nèi)容
i:不得任意改動文件或目錄
1.配置一個(gè)文件,讓其只能追加內(nèi)容,不允許手動修改,也不允許刪除
比如sudo -->日志-->設(shè)置為只能追加,不能修改,不能刪除 )
[root@oldboy tmp]# touch /mnt/file_a
[root@oldboy tmp]# chattr +a /mnt/file_a
[root@oldboy tmp]# lsattr /mnt/file_a
-----a---------- /mnt/file_a
2.可以追加內(nèi)容
[root@oldboy tmp]# echo "123" >> /mnt/file_a
[root@oldboy tmp]# echo "123" >> /mnt/file_a
[root@oldboy tmp]# echo "123" >> /mnt/file_a
[root@oldboy tmp]# cat /mnt/file_a
123
123
123
3.不能刪除
[root@oldboy tmp]# rm -f /mnt/file_a
rm: 無法刪除"/mnt/file_a": 不允許的操作
a屬性一般作用于日志類文件,特別是 sudo 記錄下來的日志
4.如果想刪除特殊屬性,需要使用root身份,先取消屬性,然后刪除
[root@oldboy tmp]# chattr -a /mnt/file_a
[root@oldboy tmp]# lsattr /mnt/file_a
---------------- /mnt/file_a
[root@oldboy tmp]# rm -f /mnt/file_a
示例2:
1.配置一個(gè)文件,不能改,不能追加,不能刪除。 ( /etc/passwd 可能不需要?jiǎng)h除、更改、追加。 )
[root@oldboy tmp]# touch /mnt/file_i
[root@oldboy tmp]# lsattr /mnt/file_i
---------------- /mnt/file_i

2.賦予權(quán)限

[root@oldboy tmp]# chattr +i /mnt/file_i

3.驗(yàn)證權(quán)限

[root@oldboy tmp]# rm -f /mnt/file_i
rm: 無法刪除"/mnt/file_i": 不允許的操作
[root@oldboy tmp]# echo "123" >> /mnt/file_i
-bash: /mnt/file_i: 權(quán)限不夠
默認(rèn)權(quán)限UMASK:
1.為什么系統(tǒng)中默認(rèn)創(chuàng)建的文件權(quán)限是 644 目錄是 755
2.為什么默認(rèn)創(chuàng)建一個(gè)普通用戶,他的家目錄權(quán)限是 700
drwx------. 3 u1 u1 99 3月 17 11:48 u1 (700)
原因:
默認(rèn)系統(tǒng)規(guī)定的權(quán)限, 目錄 777 文件 666 那么為什么創(chuàng)建出來的文件和目錄都不是777 也不是 666呢?
由于UMASK控制了, 比如UMASK 設(shè)置為 0022
那么最終創(chuàng)建出來的文件和目錄分別就是 目錄:755 文件:644
UMASK表示要減權(quán)
目錄:777-022=755
文件:666-022=644
1.默認(rèn)創(chuàng)建普通用戶家目錄的權(quán)限,在哪個(gè)文件中控制的UMASK:
[root@oldboy tmp]# vim /etc/login.defs
UMASK 077 #創(chuàng)建用戶時(shí),設(shè)定的UMASK為077
2.假設(shè)去創(chuàng)建一個(gè)用戶那么如何計(jì)算這個(gè)家目錄的權(quán)限呢?
777 - 077 = 700
[root@oldboy tmp]# ll -d /home/oldboy/
drwx------. 2 oldboy oldboy 62 3月 17 11:33 /home/oldboy/
3.如果我希望創(chuàng)建出來的目錄權(quán)限是755,我該怎么做呢?
777 - 755 = 022 (將/etc/login.defs 中UMASK設(shè)置為022,那么我們的目錄是不是在創(chuàng)建初就為755了)
[root@oldboy tmp]# ll -d /home/olgirl/
drwxr-xr-x. 2 olgirl olgirl 62 3月 17 11:36 /home/olgirl/
2.默認(rèn)情況下 root用戶創(chuàng)建的文件權(quán)限,和普通用戶創(chuàng)建的文件權(quán)限是不一樣的?為什么?
那么他們的UMASK又是在哪個(gè)文件中控制的呢?
root創(chuàng)建的文件,默認(rèn)是644
[root@oldboy tmp]# ll root_file
-rw-r--r--. 1 root root 0 3月 17 11:39 root_file
普通用戶創(chuàng)建的文件,默認(rèn)是664
[oldxu@oldboy tmp]ll -rw-rw-r--. 1 oldxu oldxu 0 Mar 17 11:39 oldxu_file root執(zhí)行 666 - 022 = 644 [root@oldboy tmp]# umask 0022 普通用戶執(zhí)行 666 - 002 =664 [oldxu@oldboy tmp] umask
0002
當(dāng)一個(gè)用戶登陸系統(tǒng)時(shí),會去加載一些環(huán)境變量,來初始化我們的工作目錄。
/etc/profile <--umask就在這里面給控制了
通過查看/etc/profile發(fā)現(xiàn)了如下公式:
if [ $UID -gt 199 ] && [ "/usr/bin/id -gn" = "/usr/bin/id -un" ]; then
umask 002
else
umask 022
root: 0 既然你的UID沒有大于199,那么就將你的 UMASK 初始化為 022
oldboy: 1000 UID大于199,并且,組名稱和用戶名稱一致,所以條件成立,那么就講你的UMASK初始化為 002
文件和目錄的默認(rèn)權(quán)限都是授UMASK控制,而UMASK是用戶在登陸系統(tǒng)時(shí),通過 /etc/profile 中的一個(gè)公式來進(jìn)行的分別設(shè)定。
這里的UMASK可以改,但是我們基本不動他。(這是系統(tǒng)默認(rèn)的機(jī)制,了解就可以,不要?jiǎng)樱。。。。。。。。。。。?br> UMASK擴(kuò)展:如何去臨時(shí)修改UMASK,來驗(yàn)證我們的權(quán)限的說法:
1.假設(shè)umask值為:022(所有位為偶數(shù))
文件的起始權(quán)限值
6 6 6 - 0 2 2 = 6 4 4
7 7 7 - 0 2 2 = 7 5 5
2.假設(shè)umask值為:045(其他用戶組位為奇數(shù))
計(jì)算出來的權(quán)限。由于umask的最后一位數(shù)字是5,所以,在其他用戶組位再加1。
6 6 6 - 0 4 5 = 6 2 1 + 1 = 622
7 7 7 - 0 4 5 = 7 3 2
3.umask所有位全為偶數(shù)時(shí)
umask 044
mkdir d044 目錄權(quán)限為 777 - 044 = 733
touch f044 文件權(quán)限為 666 - 044 = 622
4.umask部分位為奇數(shù)時(shí)
umask 023
mkdir d023 目錄權(quán)限為777 - 023 = 754
touch f023 文件權(quán)限為666 - 023 = 643 + 001 = 644
5.umask部分位為奇數(shù)時(shí)
umask 032
mkdir d032 目錄權(quán)限為777 - 032 = 745
touch f032 文件權(quán)限為666 - 032 = 634 + 010 = 644
6.umask值的所有位為奇數(shù)時(shí)
umask 035
mkdir d035 目錄權(quán)限為777 - 035 = 742
touch f035 文件權(quán)限為666 - 035 = 631 + 011 = 642
總結(jié):在臨時(shí)修改umask值是如果值全偶數(shù)則文件和目錄都不需要加1,不管umask是奇數(shù)還是偶數(shù)目錄得值不需要增加減。但是如果umask得值有奇數(shù)位那文件就需要在相應(yīng)得奇數(shù)位加1

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

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

  • 今日內(nèi)容:基本權(quán)限 1.什么是權(quán)限?我們可以把它理解為操作系統(tǒng)對用戶能夠執(zhí)行的功能所設(shè)立的限制,主要用于約束用戶能...
    糖永久沒有懂醋的酸閱讀 442評論 0 0
  • Linux 系統(tǒng)文件除了9位基本權(quán)限,還有額外3位特殊權(quán)限,分別是SUID(setuid),SGID(setgid...
    DB哥閱讀 1,576評論 0 0
  • Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關(guān)示例演示。 1.chown chown將指定文件的擁...
    jyt802341閱讀 363評論 0 0
  • list:1.輸入、輸出重定向;2.tr 轉(zhuǎn)換或刪除字符;3. | 管道;4.tee 重定向到多個(gè)目標(biāo); 5.rz...
    溪云初起日沉閣l閱讀 682評論 0 2
  • 一、VMware的使用和Linux系統(tǒng)的安裝1、VMware的快照、掛起的作用 快照:保存某一個(gè)狀態(tài),連命令行的輸...
    seeiy閱讀 2,059評論 0 1

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