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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux下的用户、组和权限的详细解释

發(fā)布時(shí)間:2025/3/15 linux 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux下的用户、组和权限的详细解释 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? ? ? ? 前言:在linux中一切都是文件(文件夾和硬件設(shè)備是特殊的文件),如果有可能盡量使用文本文件。文本文件是人和機(jī)器能理解的文件,也成為人和機(jī)器進(jìn)行交流的最好途徑。由于所有的配置文件都是文本,所以你只需要一個(gè)最簡單的編輯器就可以修改。由于修改文本文件如此簡單,所以Linux系統(tǒng)本身肯定要加以規(guī)范。這就引出了用戶(組)和權(quán)限這2個(gè)概念。而這2個(gè)概念的引入,完美的保證了Linux的安全性,同時(shí)沒有添加復(fù)雜性。由于一切皆為文件。所以Linux引入了3個(gè)文件來管理用戶(組), /etc/passwd存放用戶信息,/etc/shadow存放用戶密碼信息,/etc/group存放組信息,然后在文件系統(tǒng)中的每個(gè)文件的文件頭里面添加了用戶和文件之間的關(guān)系信息。

用戶、組、文件間有三種關(guān)系

  • 用戶和文件的關(guān)系只有2種, 擁有和不擁有。
  • 組和文件的關(guān)系只有2種,??擁有和不擁有。
  • 用戶和組的關(guān)系只有2種, 屬于和不屬于。

將這三種關(guān)系疊加,用戶和文件的最終關(guān)系可以歸納為3類

  • 用戶擁有該文件
  • 用戶屬于某個(gè)組,某個(gè)組擁有該文件(即用戶通過屬于某組來擁有該文件)?
  • 用戶不擁有該文件

一:用戶和組信息的查看

在Linux下,用戶分為三類:超級(jí)用戶(root)、普通用戶、程序用戶。

  • 超級(jí)用戶:UID=0
  • 程序用戶:Rhel5/6,UID=1-499; ???????????????Rhel7,UID=1-999
  • 普通用戶:Rhel5/6,UID=500-65535;????????Rhel7,UID=1000-60000

有三個(gè)命令可以查看用戶的相關(guān)信息

cat /etc/passwd #查看用戶信息 cat /etc/shadow #查看用戶的密碼信息 cat /etc/group #查看用戶的組信息

查看用戶信息

cat /etc/passwd #/etc/passwd默認(rèn)權(quán)限為644,其最小權(quán)限為444

用戶信息的顯示有7個(gè)字段

  • ??字段1:用戶名??--> root
  • ??字段2:密碼占位符??--> x (這里都是用x代替)
  • ??字段3:uid,用戶id??-->?0
  • ??字段4:gid ,組id --> 0
  • ??字段5:用戶描述信息??--> root
  • ??字段6:家目錄??-->??/root
  • ??字段7:登錄 shell ??(用戶登陸shell ,當(dāng)為/bin/bash表示可以登陸,/sbin/nologin表示不被授權(quán)登陸)
  • :一般來說,只有 root 用戶的 uid 是為0的。如果黑客把一個(gè)普通用戶的 uid 修改為0的話,那么他只要以普通用戶的用戶名和密碼登錄,系統(tǒng)就會(huì)自動(dòng)切換到root用戶。所以,系統(tǒng)加固的時(shí)候一定要過濾出有哪些用戶的UID為0

    使用腳本查看用戶信息

    #! /bin/bash # Author:謝公子 # Date:2018-10-12 # Function:根據(jù)用戶名查詢?cè)撚脩舻乃行畔?read -p "請(qǐng)輸入要查詢的用戶名:" A echo "------------------------------" n=`cat /etc/passwd | awk -F: '$1~/^'$A'$/{print}' | wc -l` if [ $n -eq 0 ];then echo "該用戶不存在" echo "------------------------------" elseecho "該用戶的用戶名:$A"echo "該用戶的UID:`cat /etc/passwd | awk -F: '$1~/^'$A'$/{print}'|awk -F: '{print $3}'`"echo "該用戶的組為:`id $A | awk {'print $3'}`"echo "該用戶的GID為:`cat /etc/passwd | awk -F: '$1~/^'$A'$/{print}'|awk -F: '{print $4}'`"echo "該用戶的家目錄為:`cat /etc/passwd | awk -F: '$1~/^'$A'$/{print}'|awk -F: '{print $6}'`"Login=`cat /etc/passwd | awk -F: '$1~/^'$A'$/{print}'|awk -F: '{print $7}'`if [ $Login == "/bin/bash" ];thenecho "該用戶有登錄系統(tǒng)的權(quán)限!!"echo "------------------------------"elif [ $Login == "/sbin/nologin" ];thenecho "該用戶沒有登錄系統(tǒng)的權(quán)限!!"echo "------------------------------"fi fi

    查看密碼信息

    cat? /etc/shadow #shadow默認(rèn)權(quán)限為600,最小權(quán)限為400

    密碼信息的顯示有9個(gè)字段

  • ??字段1:用戶名
  • ??字段2:通過sha-512加密(二次加密,在經(jīng)過第一次加密后,第二次加入隨機(jī)數(shù)再次加密)的密碼
  • ??字段3:最后一次修改密碼距離1970年1月1日的天數(shù)間隔
  • ??字段4:密碼最短有效期
  • ??字段5:密碼最長有效期
  • ??字段6:密碼過期前幾天進(jìn)行警告
  • ??字段7:賬戶過期后,被鎖定的天數(shù)
  • ??字段8:賬號(hào)失效時(shí)間距離1970年1月1日的天數(shù)間隔
  • ??字段9:未分配功能
  • 字段2是用戶的密碼位,如果是 *?表示該用戶禁用,!!?表示用戶密碼未初始化,如果為空,表示空密碼的

    :借助chage指令,可以修改用戶的密碼策略,也可通過編輯 /etc/shadow (不建議)
    比如:chage???-l???bob,查看用戶bob的密碼策略
    ???????????chage??-M??90??bob,將用戶bob的密碼有效期修改為90天腳本實(shí)現(xiàn)修改用戶的密碼策略

    #! /bin/bash # Author:謝公子 # Date: 2018-10-12 # Function: 實(shí)現(xiàn)對(duì)用戶密碼策略的設(shè)定,如密碼最長有效期等 read -p "設(shè)置密碼最多可多少天不修改:" A read -p "設(shè)置密碼修改之間最小的天數(shù):" B read -p "設(shè)置密碼最短的長度:" C read -p "設(shè)置密碼失效前多少天通知用戶:" D sed -i '/^PASS_MAX_DAYS/c\PASS_MAX_DAYS '$A'' /etc/login.defs sed -i '/^PASS_MIN_DAYS/c\PASS_MIN_DAYS '$B'' /etc/login.defs sed -i '/^PASS_MIN_LEN/c\PASS_MIN_LEN '$C'' /etc/login.defs sed -i '/^PASS_WARN_AGE/c\PASS_WARN_AGE '$D'' /etc/login.defs echo "已設(shè)置好密碼策略......"

    查看組信息

    cat /etc/group

    組信息的顯示有四個(gè)字段

  • ? 字段1:組名稱 -->?root
  • ? 字段2:組密碼占位符? --> x
  • ? 字段3:gid --> 0
  • ? 字段4:組成員
  • :一個(gè)用戶只能有一個(gè)主要組,最多可以有31個(gè)附加組。主要組是用戶創(chuàng)建文件時(shí)默認(rèn)的所有組,附加組主要用于權(quán)限管理。不論用戶屬于哪個(gè)組,用戶都能擁有該組的權(quán)限

    特殊組wheel

    ? ? ? ? 在Linux中有一個(gè)特殊組wheel,wheel組就類似于一個(gè)管理員的組。在linux中,即使我們有系統(tǒng)管理員root的權(quán)限,也不推薦用root用戶登錄。一般情況下用普通用戶登錄就可以了,在需要root權(quán)限執(zhí)行一些操作時(shí),再su登錄成為root用戶。但是,任何人只要知道了root用戶的密碼,就都可以通過su命令來登錄為root用戶--這無疑為系統(tǒng)帶來了安全隱患。所以,將普通用戶加入到wheel組中,被加入的這個(gè)普通用戶就成了管理員組內(nèi)的用戶了,然后可以修改配置文件使得只有wheel組內(nèi)的用戶可以切換到root用戶。

    二:用戶和組信息的管理

    用戶管理

    新建用戶系統(tǒng)會(huì)做三件事

  • ?新建用戶時(shí),系統(tǒng)會(huì)將 /etc/skel 中的目錄及文件拷貝到新建用戶的家目錄中
  • ?在 /var/spool/mail 中,新建用戶名的郵箱?
  • ?在 /etc下的 passwd 、shadow 、group文件中,增加用戶信息
  • 添加用戶時(shí)指定參數(shù):

    • 添加用戶時(shí),使用 -g?指定新建用戶的組,使用 -u 指定用戶uid
    • -G?參數(shù)可以指定新建用戶的附加組
    • 使用??-s???/sbin/nologin??指定創(chuàng)建的用戶沒有登錄系統(tǒng)的權(quán)限
    • 還可以使用 -M?參數(shù),指定創(chuàng)建的用戶不在home目錄下創(chuàng)建家目錄
    • 還可以使用 -d?參數(shù) ,指定其家目錄
    useradd tom #新建tom用戶,其配置默認(rèn) useradd? -u 2000? -g? james? ?bob? #新建bob用戶,將其uid設(shè)置為 2000,將其所在的組設(shè)置為? james?(?不修改默認(rèn)是bob?),前提是james組已經(jīng)存在 useradd -G root tom #新建tom用戶,指定其附加組為root useradd -s /sbin/nologin tom #新建tom用戶,但是不讓tom用戶有登錄系統(tǒng)的權(quán)限,默認(rèn)是 /bin/bash ,沒登錄權(quán)限的話是 /sbin/nologin useradd -d /test tom #新建tom用戶,指定其家目錄為 /test (默認(rèn)是 /home/tom) useradd -M tom #新建tom用戶,但是不在home目錄下新建目錄(默認(rèn)創(chuàng)建新用戶會(huì)在home目錄下新建同名的家目錄)useradd xie;echo 'xie:123456'|chpasswd #添加用戶xie,密碼為 123456

    注:用戶創(chuàng)建時(shí),默認(rèn)的屬性(比如UID,GID,是否創(chuàng)建家目錄,創(chuàng)建郵箱等)都是通過/etc/login.defs文件控制的,修改此文件的屬性,會(huì)影響以后創(chuàng)建的所有用戶。也可以創(chuàng)建用戶時(shí)指定參數(shù)修改,這樣只對(duì)當(dāng)前創(chuàng)建用戶有效

    刪除用戶?:

    userdel? -r? james? #刪除用戶一定記得加 -r?參數(shù) !!
  • 不加 -r?參數(shù),只刪除 passwd、shadow 和 group 文件中的用戶信息,/home 目錄下的文件不刪除,/var/spool/mail/ 下的文件不刪除
  • 加??-r?參數(shù),刪除 passwd、shadow 和 group 文件中的用戶信息,同時(shí)刪除用戶的家目錄和郵箱
  • 修改賬戶密碼?:

    passwd? james? #給james用戶設(shè)置密碼

    ? 當(dāng)前用戶為 root 時(shí):

  • 不需要知道當(dāng)前的密碼
  • 設(shè)置新密碼時(shí),不需要遵循密碼要求
  • ? ? 當(dāng)前用戶為普通用戶時(shí):

  • 需要知道當(dāng)前密碼
  • 設(shè)置新密碼時(shí),必須遵循密碼要求(1.不能少于8個(gè)字符,2.滿足復(fù)雜度要求)
  • 修改賬戶屬性:?

    usermod? ?參數(shù)?? james
  • ??-s 修改用戶的登陸shell???????usermod???-s???/sbin/nologin????james?
  • ??-L 賬戶鎖定 ?(可以通過 passwd -S ?賬戶名 查看賬戶的狀態(tài))
  • ??-U 解鎖賬戶
  • ??-g??修改賬戶所在組??????例:?將bob所在組改成james:usermod??-g??james???bob???
  • ??-G??給賬戶添加附加組??例:給bob添加一個(gè)附加組john:usermod??-G??john??bob??????;????????????????????從附加組john中刪除用戶bob:?gpasswd -d??bob??john
  • ??-a??默認(rèn)情況下,當(dāng)用戶已經(jīng)存在附加組時(shí),再添加附加組則會(huì)把之前的附加組給替換了,加 -a 參數(shù),則不替換原來的附加組,意味著該用戶可以有多個(gè)附加組。
  • [root@Redhat ]# id james uid=1000(james) gid=2002(james) 組=2002(james)[root@Redhat ]# usermod -g aaa james ; id james; //修改用戶的主組為aaa uid=1000(james) gid=2000(aaa) 組=2000(aaa)[root@Redhat ]# usermod -G xie james ;id james; //給用戶添加附加組 xie uid=1000(james) gid=2000(aaa) 組=2000(aaa),1000(xie)[root@Redhat ]# usermod -G xiao james ;id james; //給用戶添加附加組xiao,并且如果原來有附加組的話替換原來的附加組 uid=1000(james) gid=2000(aaa) 組=2000(aaa),2001(xiao)[root@Redhat ]# usermod -aG xie james;id james; //給用戶添加附加組 xie ,并且不替換原來的附加組 uid=1000(james) gid=2000(aaa) 組=2000(aaa),1000(xie),2001(xiao)

    鎖定和解鎖用戶 :

    • 鎖定用戶:?usermod? -L? xie? ? 或? ?passwd? -l? ?xie
    • 解鎖用戶: usermod? -U? xie? ?或? ?passwd? -u? xie
    • 查看用戶狀態(tài):passwd? -S xie

    注:雖然 usermod 和 passwd 這兩個(gè)命令都可以鎖定和解鎖用戶,但是還是有區(qū)別的。區(qū)別之一就是passwd命令操作完后會(huì)有提示。還有一個(gè)區(qū)別就是?passwd?的權(quán)限比?usermod?大,使用?usermod?鎖定的用戶可以用 passwd 來解鎖,但是使用?passwd?鎖定的用戶不能用?usermod?來解鎖

    組管理

    添加組 : groupadd??xie

  • ??-g, --gid ????????????????????????為新組使用 GID,例 groupadd??-g 2000??xie???創(chuàng)建新組xie,并且gid設(shè)置為2000
  • ??-K, --key ???????????????????????不使用 /etc/login.defs 中的默認(rèn)值
  • ??-o, --non-unique????????????允許創(chuàng)建有重復(fù) GID 的組
  • ??-p, --password???????????????為新組使用此加密過的密碼
  • ??-r, --system????????????????????創(chuàng)建一個(gè)系統(tǒng)賬戶
  • 刪除組: groupdel????xie

  • ??-r , --remove????????????????????????????刪除主目錄和郵件池
  • 注:只能刪除附加組,而不能刪除主組!!!!

    修改組的屬性: groupmod??xie

  • ??-g, --gid GID ????????????????將組 ID 改為 GID
  • ??-n, --new-name????????????改名為 NEW_GROUP
  • ??-o, --non-unique ?????????允許使用重復(fù)的 GID
  • groupmod? -g? 2000 bob? ? ? //將bob組的GID修改為2000 groupmod? -n? aaa? ?bob? ? ? //將bob組的名字改為aaa groups? ? bob? ? ? ? ? ? ? ? //查看bob所屬的所有組

    修改組中的用戶:groupmems?

    groupmems? ?-a? john? -g? xie? ? ?將用戶john加到xie組中 groupmems? -d? john? -g? xie? ? ?將用戶john從xie組中移除 或 gpasswd -d? john? xie

    三:文件權(quán)限

    文件權(quán)限的查看

    使用 ls -lh?可以查看文件的具體信息,其中包括不同的用戶對(duì)該文件的權(quán)限

    drwxr-xr-x. 3 root root 97 8月 24 23:04 abrt -rw-r--r--. 1 root root 16 8月 24 23:08 adjtime

    我們拿?abrt?這個(gè)目錄和?adjtime這個(gè)文件來解釋。

    ?前11個(gè)字符確定不同用戶能對(duì)文件干什么
    ?第一個(gè)字符代表文件(-)、目錄(d),鏈接(l) 設(shè)備(C) 塊設(shè)備(b)
    ?其余字符每3個(gè)一組(rwx),讀(r)、寫(w)、執(zhí)行(x)

    • ?第一組rwx:文件所有者的權(quán)限是讀、寫和執(zhí)行
    • ?第二組rw-:與文件所在組同一組的用戶的權(quán)限是讀、寫但不能執(zhí)行
    • ?第三組r--: ?不與文件所有者同組的其他用戶的權(quán)限是讀不能寫和執(zhí)行

    最后的?.??代表沒有ACL擴(kuò)展權(quán)限? +?代表有ACL擴(kuò)展權(quán)限。? ? ?

    針對(duì)文件:

    • ?r 表示可以讀取文件
    • ?w 表示可以對(duì)文件內(nèi)容做修改
    • ?x 表示文件可執(zhí)行

    針對(duì)目錄:

    • ?r 表示可以列出目錄內(nèi)容(可以使用ls),前提是得有 x 權(quán)限,因?yàn)槿绻愣疾荒苓M(jìn)入這個(gè)目錄,你怎么列出該目錄的內(nèi)容
    • ?w 表示可以在目錄中增刪改查,前提是得有 x 權(quán)限,因?yàn)槿绻愣疾荒苓M(jìn)入這個(gè)目錄,你怎么增刪改查
    • ?x 表示可以進(jìn)入目錄,但不一定能讀取目錄內(nèi)的內(nèi)容。要想讀取目錄的內(nèi)容,需要有 r 權(quán)限,要想修改,需要有?w?權(quán)限!

    注:目錄的權(quán)限比較特殊,可以看到,x?權(quán)限是目錄最基本的權(quán)限,因?yàn)槿绻愣疾荒苓M(jìn)入該目錄,那讀取內(nèi)容和增刪改查就更無從所起了。還有一個(gè)就是當(dāng)你對(duì)目錄擁有?rwx?權(quán)限的時(shí)候。倘若目錄中有一個(gè)文件,該文件對(duì)你的權(quán)限是沒有?w?權(quán)限的,但是因?yàn)槟阆绕ヅ涞皆撃夸浀臋?quán)限,可以對(duì)目錄中的文件修改,所以你可以強(qiáng)制修改該文件,保存退出!

    后面的各個(gè)字段的含義:

    • 3 代表文件的鏈接數(shù)是3;
    • root 代表該文件的所屬用戶
    • root 代表該文件所屬的組。一般文件所屬的組就是文件所屬主所在的組,也有特殊情況,可以自己隨意修改!!
    • 97 代表文件的大小;
    • 8月 24 23:04代表文件最后的修改日期;
    • abrt?表示的是文件名
    例子: 這里有幾個(gè)用戶,其UID和GID分別如下 root 用戶: uid=0(root) gid=0(root) groups=0(root) xie 用戶: uid=1000(xie) gid=1001(john) groups=1001(john) john 用戶: uid=1001(john) gid=1001(john) groups=1001(john) james用戶: uid=1002(james) gid=1002(james) groups=1002(james) jerry用戶: uid=1003(jerry) gid=1002(james) groups=1002(james)然后,我們以root身份新建一個(gè)文件夾 test ,則test默認(rèn)的權(quán)限如下 drwxr-xr-x 2 root root 4096 Aug 31 19:16 test 我們修改其文件權(quán)限,文件所有者,文件所在組,修改為如下 drwxrwx--- 2 xie james 4096 Aug 31 19:19 test 最后得到的結(jié)論如下:xie用戶的身份是文件所有者,其可以在該目錄下創(chuàng)建文件,且創(chuàng)建文件的信息如下 -rw-r--r-- 1 xie john 0 Aug 31 19:45 file1 john用戶的身份是other,對(duì)該文件不可以做任何操作 james用戶是身份是文件所屬組的成員,其在該目錄下創(chuàng)建文件的信息如下 -rw-rw-r-- 1 james james 0 Aug 31 19:32 file2 jerry用戶的身份是文件所屬組的成員,其在該目錄下創(chuàng)建文件的信息如下 -rw-r--r-- 1 jerry james 0 Aug 31 19:43 file3

    文件權(quán)限的修改?

    修改文件的權(quán)限?chmod

    chmod 755 abrt? ? ? ? ? ? ? ? ? ? ? ? ?//賦予abrt權(quán)限r(nóng)wxr-xr-x chmod? u=rwx ,g=rx,o=rx abrt //賦予abrt? rwxr-xr-x權(quán)限。u=用戶權(quán)限,g=組權(quán)限,o=不同組其他用戶權(quán)限 chmod? u-x , g+w abrt? ? ? ? ? ? //給abc去除用戶執(zhí)行的權(quán)限,增加組寫的權(quán)限 chmod? a+r? abrt ?? ? ? ? ? ? ?//給所有用戶添加讀的權(quán)限

    修改文件的所有者 chown 和 所屬組?chgrp

    chown? ?bob? ? adjtime? ? ? ? ? ?// 改變 adjtime 的所有者為?bob chgrp? ?root? ?abrt? ? ? ? ? ? //改變 adjtime 所屬的組為 rootchgrp? ?-R? root? abrt ? ? ? ? ? //改變abc這個(gè)目錄及其目錄下所有的文件的所屬的組織為 root chown? ‐R? root? abrt? ? ? ? ? //改變abc這個(gè)目錄及其下面所有的文件和目錄的所有者是 root

    注:修改文件和文件夾所有者和所屬組方法都是一樣的,如果要把文件夾內(nèi)的文件的所有者和所屬組都修改了,要加 -R?參數(shù)。chown除了可以修改屬主屬性,還可以修改所屬組屬性。? ? ? ? ? ? ? ? ? ? ? ??

    語法:?chown? ? 屬主:屬組? ?文件

    chown ? john:james ? adjtime   ? //改變 adjtime 的所有者為john,所屬組為 james

    ACL控制權(quán)限?setfacl? 、?getfacl

    setfacl :設(shè)置文件訪問控制規(guī)則

    • ?-m , ???給文件加擴(kuò)展ACL規(guī)則??, setfacl??-m????u:bob:r???abrt ;??
    • ?-x??,????給文件移除擴(kuò)展ACL規(guī)則?, setfacl???-x????u:bob??????abrt ;
    • ?-b ,??移除文件所有的ACL規(guī)則 ,setfacl??-b???u:bob???abrt ;
    • ?-R ,????遞歸的對(duì)所有目錄內(nèi)所有的文件和目錄進(jìn)行操作 ,??setfacl??-R -m??u:bob:rwx???abrt ;
    • ?-d ,????設(shè)置默認(rèn)的ACL規(guī)則

    getfacl :?獲取文件訪問控制規(guī)則

    例子: 這里有幾個(gè)用戶,其UID和GID分別如下 用戶a: uid=1006(a) gid=1006(a) groups=1006(a) 用戶b: uid=1007(b) gid=1007(b) groups=1007(b) 用戶c: uid=1007(c) gid=1000(root) groups=1000(root)我們以root身份在根目錄下新建一個(gè)文件file,其權(quán)限如右:-rw-r--r-- 1 root root 4 Aug 31 23:00 file 其acl信息如下: getfacl file# file: file# owner: root# group: rootuser::rw-group::r--other::r-- 所以用戶a和用戶b只對(duì)他有讀的權(quán)限,現(xiàn)在我們要讓用戶a擁有rwx權(quán)限,而用戶b不變化 設(shè)置用戶a的ACL權(quán)限:setfacl -m u:a:rwx file 設(shè)置完acl之后,文件file的權(quán)限就變成了: -rw-rwxr--+ 1 root root 4 Aug 31 23:01 file 注:用戶的組權(quán)限位變化,等于acl信息中的mask值,還多了一個(gè)+擴(kuò)展權(quán)限位。此時(shí)雖然用戶c是root組中的,但是用戶c對(duì)文件file的權(quán)限還仍然是之前的r--,而不是rwx 查看file的acl信息 getfacl file ,顯示如下# file: file# owner: root# group: rootuser::rw-user:a:rwx // 用戶a的ACL權(quán)限group::r-- mask::rwx // 等于用戶之前的權(quán)限與acl設(shè)置的權(quán)限進(jìn)行 或運(yùn)算other::r- 可知,用戶a對(duì)其有rwx權(quán)限,用戶b對(duì)其仍然只有 r 的權(quán)限 若要移除acl ,則 setfacl -x u:a file 移除了之后,a的權(quán)限就又還是只有 r 的權(quán)限了

    注:若a用戶原來對(duì)文件只有 r 權(quán)限,設(shè)置的acl是 setfacl??-m??u:a:w??file??,則設(shè)置完acl后,用戶a只對(duì)文件有 w 權(quán)限,沒有 r 權(quán)限了

    ?倘若要讓一個(gè)文件夾內(nèi)的所有已存在文件都繼承于文件夾的設(shè)置的acl的權(quán)限屬性,??可以使用??setfacl??-R??-m??u:a:rwx??文件名

    Umask、Suid、Sgid、粘滯位

    UMSK

    root用戶的umask值默認(rèn)是0022,普通用戶的umask值默認(rèn)是 0002。umask值是可以手動(dòng)修改的。第一位是特殊位,配置了SUID(4) 、SGID(2) 和 粘滯位(1) 才有值。

    所以當(dāng)root用戶去創(chuàng)建一個(gè)文件夾的時(shí)候,其權(quán)限就是 777-022=755,而創(chuàng)建一個(gè)文件的時(shí)候,其權(quán)限就是 755-111=644

    普通用戶去創(chuàng)建一個(gè)文件夾的時(shí)候,其權(quán)限就是 777-002=775,而創(chuàng)建一個(gè)文件的時(shí)候,其權(quán)限就是 775-111-664

    所以root用戶和普通用戶權(quán)限的不同之處就在于group組。root用戶的屬組位置的 w 只在自己的手中。而普通用戶的屬組權(quán)限只要是和他在一個(gè)組內(nèi),就擁有 w 權(quán)。

    SUID 、SGID和粘滯位

    • suid的作用:用于執(zhí)行文件,以文件的擁有者的身份運(yùn)行該文件。?????chmod u+s??文件名
    • sgid的作用:??用于目錄,在該目錄下建立的所有文件和目錄,屬組都繼承該目錄的屬組,且該組內(nèi)其他成員修改目錄內(nèi)的文件時(shí),其屬主和屬組都不改變!?????chmod??g+s??目錄
    • 粘滯位stick ?bit?的作用:?用于目錄,在該目錄建立的文件或目錄,只有建立者可以刪除和修改,其他用戶無法刪除和修改 chmod??o+t??目錄

    SUID的作用:SUID是set?uid的簡稱,它出現(xiàn)在文件所屬主權(quán)限的執(zhí)行位上面,標(biāo)志為?s 。當(dāng)設(shè)置了SUID后,UMSK第一位為4。我們知道,我們賬戶的密碼文件存放在/etc/shadow中,而/etc/shadow的權(quán)限為 ----------。也就是說:只有root用戶可以對(duì)該目錄進(jìn)行操作,而其他用戶連查看的權(quán)限都沒有。當(dāng)普通用戶要修改自己的密碼的時(shí)候,可以使用passwd這個(gè)指令。passwd這個(gè)指令在/bin/passwd下,當(dāng)我們執(zhí)行這個(gè)命令后,就可以修改/etc/shadow下的密碼了。那么為什么我們可以通過passwd這個(gè)指令去修改一個(gè)我們沒有權(quán)限的文件呢?這里就用到了suid,suid的作用是讓執(zhí)行該命令的用戶以該命令擁有者即root的權(quán)限去執(zhí)行,意思是當(dāng)普通用戶執(zhí)行passwd時(shí)會(huì)擁有root的權(quán)限,這樣就可以修改/etc/passwd這個(gè)文件了。命令:???chmod u+s??文件名

    使用suid需要滿足的幾個(gè)條件

    • SUID只對(duì)可執(zhí)行文件有效
    • 調(diào)用者對(duì)該文件有執(zhí)行權(quán)
    • 在執(zhí)行過程中,調(diào)用者會(huì)暫時(shí)獲得該文件的所有者權(quán)限
    • 該權(quán)限只在程序執(zhí)行的過程中有效

    SGID的作用:SGID是set?gid的簡稱,它出現(xiàn)在文件所屬組權(quán)限的執(zhí)行位上面,標(biāo)志位 s?。它用當(dāng)設(shè)置了SGID后,UMSK第一位為2 。它作用于目錄,當(dāng)用戶 a 對(duì)某一目錄有rwx 權(quán)限時(shí),該用戶就可以在該目錄下建立文件,新建文件的所屬主和所屬組繼承于 a。當(dāng)另一個(gè)用戶 b 也對(duì)該目錄有rwx權(quán)限的時(shí)候,就可以修改 a 創(chuàng)建的文件,而且修改后的文件所屬主和所屬組都會(huì)變成 b!但是如果該目錄用SGID修飾,則所有擁有 rwx權(quán)限的用戶在這個(gè)目錄下建立的文件都是屬于這個(gè)目錄所屬的組。當(dāng)其他用戶修改時(shí),有三種情況:

  • 當(dāng)兩個(gè)用戶都是屬于group組內(nèi),則修改后的文件的所屬主和所屬組都不會(huì),而且修改文件時(shí)不會(huì)提示read?only!可以正常修改
  • 當(dāng)兩個(gè)用戶都是屬于other時(shí),則修改后的文件的所屬組不變,所屬主會(huì)變成另一個(gè)用戶,修改文件時(shí)會(huì)提示read?only,必須強(qiáng)制保存退出
  • 當(dāng)一個(gè)用戶是group組,一個(gè)是other時(shí),則修改后的文件的所屬組不變,所屬主會(huì)變成另一個(gè)用戶,修改文件時(shí)會(huì)提示read?only,必須強(qiáng)制保存退出
  • SGID的例子代碼

    例子: 這里有幾個(gè)用戶,其UID和GID分別如下 s1 用戶: uid=1004(s1) gid=1005(s1) groups=1005(s1),1004(sgid) s2 用戶: uid=1005(s2) gid=1006(s2) groups=1006(s2),1004(sgid)我們以root身份在根目錄下創(chuàng)建一個(gè) test 文件 ,其默認(rèn)權(quán)限如右:drwxr-xr-x 2 root root 4096 Aug 31 20:54 test 修改其默認(rèn)權(quán)限如右:drwxrwx--- 2 root sgid 4096 Aug 31 20:54 test 因?yàn)閟1和s2都是組sgid內(nèi)的成員,所以s1和s2均可對(duì)test文件執(zhí)行rwx權(quán)限 s1進(jìn)入test內(nèi),創(chuàng)建一個(gè)文件 file1 ,其權(quán)限如右: -rw-rw-r-- 1 s1 s1 3 Aug 31 21:01 file1 s2進(jìn)入test內(nèi),用vim打開file1文件,顯示文件read only。對(duì)其修改,強(qiáng)制保存退出!然后file1的權(quán)限如右:-rw-rw-r-- 1 s2 s2 3 Aug 31 21:04 file1 可見,s2可以強(qiáng)制修改s1創(chuàng)建的文件。雖然s2對(duì)于file1來說是other,但是因?yàn)閟1和s2均屬于sgid組,所以可以對(duì)test文件夾內(nèi)的數(shù)據(jù)擁有讀寫執(zhí)行的權(quán)限,所以可以用vim對(duì)其強(qiáng)制修改保存退出。修改后,file1文件的所屬用戶和所屬組都變成了s2的了。 顯然,這不是我們想要的,如果我們想要s2修改了文件后,文件的所有用戶和所屬組都不變的話,我們就需要用到SGID了。 執(zhí)行 chmod g+s /test s1再新建一個(gè)文件file2,其權(quán)限如右:-rw-rw-r-- 1 s1 sgid 3 Aug 31 21:03 file2 可見,其所屬組繼承了文件夾test的所屬組 s2再用vim打開file2,不提示文件read only了,修改,保存退出!然后file2的權(quán)限如右:-rw-rw-r-- 1 s1 sgid 13 Aug 31 21:04 file2 可見,執(zhí)行了SGID后,同一組內(nèi)的其他成員修改文件后,其屬主和屬組都不發(fā)生變化!

    粘滯位的作用:

    ?SBIT即Sticky Bit,它出現(xiàn)在其他用戶權(quán)限的執(zhí)行位上,標(biāo)志位為 t,當(dāng)設(shè)置了粘滯位后,UMSK第一位為1?。它只能用來修飾一個(gè)目錄。當(dāng)某一個(gè)目錄擁有SBIT權(quán)限時(shí),則任何一個(gè)能夠在這個(gè)目錄下建立文件的用戶,該用戶在這個(gè)目錄下所建立的文件,只有該用戶自己和root可以修改和刪除,其他用戶均不可以修改和刪除!!我們知道/tmp是系統(tǒng)的臨時(shí)文件目錄,所有的用戶在該目錄下?lián)碛兴械臋?quán)限,也就是說在該目錄下可以任意創(chuàng)建、修改、刪除文件,那如果用戶A在該目錄下創(chuàng)建了一個(gè)文件,用戶B將該文件刪除或修改了,這種情況我們是不能允許的。為了達(dá)到該目的,就出現(xiàn)了stick ?bit(粘滯位)的概念。

    無論是兩個(gè)用戶都屬于group組,還是都屬于other,或者是一個(gè)屬于group,一個(gè)屬于other,都不能對(duì)其他人創(chuàng)建的文件進(jìn)行修改和刪除!!

    例子: 這里有幾個(gè)用戶,其UID和GID分別如下 用戶a: uid=1006(a) gid=1007(a) groups=1007(a) 用戶b: uid=1007(b) gid=1008(b) groups=1008(b)我們以root身份在根目錄下創(chuàng)建一個(gè) test 文件 ,其默認(rèn)權(quán)限如右:drwxr-xr-x 2 root root 4096 Aug 31 20:54 test 我們修改其權(quán)限:drwxrwxrwx 2 root root 4096 Aug 31 20:54 test 用戶a匹配test文件夾的other權(quán)限,擁有rwx權(quán)限,進(jìn)入test內(nèi),新建文件夾file1,其權(quán)限如右:-rw-rw-r-- 1 a a 5 Aug 31 21:45 file1 用戶b匹配test文件夾的other權(quán)限,擁有rwx權(quán)限,進(jìn)入test內(nèi),可以執(zhí)行刪除file1。因?yàn)橛脩鬮擁有文件夾test的rwx權(quán)限,所以可以對(duì)其文件夾內(nèi)的所有數(shù)據(jù)刪除。即使file1的other權(quán)限是只讀!! 很明顯,這不是我們想要的 執(zhí)行 chmod o+t /test s1再新建一個(gè)文件file2,其權(quán)限如右:-rw-rw-r-- 1 a a 3 Aug 31 21:03 file2 s2再嘗試刪除file2,刪不了!!只有文件的主人可以刪除 可見,執(zhí)行了棧滯位后,只有文件的所有者才可以刪除文件

    注意:有時(shí)你設(shè)置了s 或 t ?權(quán)限,你會(huì)發(fā)現(xiàn)它變成了S或T,這是因?yàn)樵谀莻€(gè)位置上你沒有給它x(可執(zhí)行)的權(quán)限,這樣的話這樣的設(shè)置是不會(huì)有效的,你可以先給它賦上x的權(quán)限,然后再給s或t ?的權(quán)限

    四:Linux中的sudo、sudo -i、su、su -命令

    sudo?:暫時(shí)切換到超級(jí)用戶模式以執(zhí)行超級(jí)用戶權(quán)限,提示輸入密碼時(shí)該密碼為當(dāng)前用戶的密碼,而不是超級(jí)賬戶的密碼。缺點(diǎn)是每次執(zhí)行超級(jí)用戶權(quán)限都要在命令前加上 sudo ,優(yōu)點(diǎn)是在當(dāng)前終端再使用 sudo?不要再重復(fù)輸入密碼(只對(duì)于當(dāng)前終端有效)。

    sudo -i為了頻繁的執(zhí)行某些只有超級(jí)用戶才能執(zhí)行的權(quán)限,而不用每次輸入密碼,可以使用該命令。提示輸入密碼時(shí)該密碼為當(dāng)前賬戶的密碼。沒有時(shí)間限制。執(zhí)行該命令后提示符變?yōu)椤?”而不是“$”。想退回普通賬戶時(shí)可以執(zhí)行“exit”或“l(fā)ogout”?。

    注意:但是只有指定的一些用戶才有執(zhí)行?sudo?的權(quán)限,具體配置在 /etc/sudoers?文件中。

    有兩個(gè)方法:第一是將該用戶加入?wheel組中(因?yàn)?etc/sudoers中默認(rèn)加入了wheel組中的用戶可以使用sudo權(quán)限),第二是在/etc/sudoers文件中加入? hack???ALL=(ALL) ? ?ALL

    su?: 切換到某某用戶模式,提示輸入密碼時(shí)的密碼為切換后賬戶的密碼,用法為“su? 賬戶名稱”。如果后面不加賬戶時(shí)系統(tǒng)默認(rèn)為root賬戶,密碼也為超級(jí)賬戶的密碼。沒有時(shí)間限制。

    su -?:su -?和 su?的不同之處在于 su -?切換用戶后的目錄為切換后目錄的家目錄,而 su?則是原目錄

    ?

    ?

    ?

    ?

    新人創(chuàng)作打卡挑戰(zhàn)賽發(fā)博客就能抽獎(jiǎng)!定制產(chǎn)品紅包拿不停!

    總結(jié)

    以上是生活随笔為你收集整理的Linux下的用户、组和权限的详细解释的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。