Linux操作系統—linux大神必懂的文件用戶管理和文件權限,很重要

上章節給大家整理了Linux系統目錄結構,即各個目錄的文件作用是什麼、還有文件的鏈接,本文主要給大家分享linux用戶管理、文件操作權限等。

用戶管理

一、 增加新的用戶帳號

以新增一個 m5 賬號為例:

useradd z3 添加新用戶 z3

passwd z3 賦予新用戶 z3 口令

說明:①新用戶只有被賦予口令後才能使用;

②Redhat Linux 中,adduser 是 useradd 的符號連接。

③useradd 命令常用的參數:

-u 設置用戶的 UID

-g 設置用戶的 GID

-d 設置用戶的主目錄

-G 使該用戶成為其他組的成員

-s 用戶的登錄 shell,默認為 /bin/bash

-c comment 用戶註釋

-p 同時設置口令,注意無空格。(Redhat 版支持)

添加新用戶的操作實際上是修改了/etc/passwd、/etc/shadow 文件,在/home 下為創建主目錄,並將/etc/skel 目錄內容拷入。

二、 /etc/passwd 文件

/etc/passwd 文件記錄用戶賬號信息,(權限:root.root 644)

該文件每行由 7 個域組成,之間由冒號分隔:

用戶名:口令:UID:GID:註釋:用戶主目錄:shell

<code>例如:root:x:0:0:root:/root:/bin/bash
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
z3:x:500:500:ZhangSan:/home/z3:/bin/bash
l4:x:501:501:LiSi:/home/l4:/bin/bash
w5:x:502:502:WangWu:/home/w5:/bin/bash
m6:x:503:503:MaLiu:/home/m6:/bin/bash
說明:
UID:用戶標識; GID:組標識; x :口令被加密
用戶名應該唯一,如不唯一則系統只認前面的一個。
UID 不必唯一。相同的 UID 具有完全相同的權限。
普通用戶的 UID≥500 只不過是個約定。但等於 0 則具有特別意義,即擁有 root 權限。其實獲得 UID=0 的特權就是網絡攻擊者的目標。/<code>

三、 /etc/shadow 文件 (權限:root.root 400)

/etc/shadow 文件主要用於記錄加密加密後的口令,其格式:

username: password: last:may: must: warn: expire: disable: reserved

last:上次更改口令日期,從 1970-1-1 起計算的天數;

從 may 至 nust 的期間,用戶才可以更改口令;

warn:在 must 前多少天提示用戶更改口令;

expire:在 must 後多少天使用戶賬號失效;

disable:只用來記錄賬號失效的天數;

reserved:保留,尚未使用。例:

root:$1$RE9bMMe8$4G3nQB7tiyYYHKLJMdY.m/:12770::99999::::

ftp:*:12734:0:99999:7:::

z3:$1$vqHltSd2$/Zv6HBjDXknqkY8MTiW.20:12763::99999::::

l4:$1$2eRrDN.g$fCtWeiIvonMyVW5NklRfI0:12763::99999::::

w5:$1$sTaNpD10$ho3C12iBGIaVD1kxfOaCj/:12763::99999::::

m6:$1$4zO8RY6k$cOTmCThcLfWL7plnWlBFt0:12772:0:0:0:0::

四、 用戶組

groupadd 命令用於創建用戶組

將一個已經存在的用戶加入組可使用 usermod –G 命令

例:

groupadd g1 創建用戶組 g1

usermod -G g1 z3 收 z3 為 g1 組成員

關於組的操作實際上是在修改/etc/group 文件。

字符界面下尚未發現有可用的命令用於對組成員的剔除,

此時,對於組管理的最有效手段是手工修改/etc/group 文件。

五、 /etc/group 文件 (權限:root.root 644)

/etc/group 文件記錄組信息,每行一組,格式:

組名:口令:GID:成員列表(成員之間用逗號隔開)

若需組口令可執行 gpasswd。加密的組口令存於/etc/gshadow。

六、 用戶的私有組與登錄組

useradd 在創建用戶的同時也創建了一個同名組。

新用戶默認屬於自己的組。這個組稱為用戶私有組。

其他用戶也可以成為這個私有組的成員並享受該組成員權利

(僅 root 有權操作)。

/etc/passwd 文件中的 GID 表示的是用戶的默認組。

usermod –g 命令可以改變用戶的默認組,也稱登錄組:

例:usermod –g z3 l4 修改 l4 的默認組屬於 z3

此後用戶創建的所有目錄與文件的組屬性屬於新的默認組。

七、 刪除用戶或組

userdel 刪除用戶。

例 userdel –r w5 刪除 w5(-r 表示同時刪除其主目錄)

groupdel 刪除組 例:groupdel g2

(注意:一些資料上說該命令不能刪除非空組,但實驗證實在 redhat Linux 中可以刪除非空組,而且該命令沒有確認機制,請慎用!)

八、 改變用戶設置

usermod 命令用於改變用戶的賬號設置,如 UID、GID、註釋、主目錄、shell。其參數分別是 -u、-g、-c、-d、-s。

chage 命令用於修改口令的有效期。

具體用法請參考系統幫助。

九、 禁止用戶賬號

修改用戶的 shell 為 nologin 或 false 可阻止其登錄系統。

例:usermod –s /sbin/nologin 或 usermod –s false

十、 用戶的身份轉換

su 命令可改變用戶身份,不僅省卻了註銷和重新登錄過程,而且在使用 root 身份無法登錄的 Telnet 網絡登錄的情況下更為有用。( su 是替代用戶(Substitute user)的意思,但常被理解為 super user)。

例:su root 在依提示輸入 root 口令後轉為 root 身份

但這種轉換並沒有相應地改換系統運行環境,提示符類似:

[root@localhost z3]#

用戶已是 root,但仍運行於 z3 的運行環境下。這會引起一些程序的運行結果不正常,與真實的 root 環境是大有區別的(比如就無法執行關機復位等操作)。要想同時獲得新用戶的環境,應在 su 與用戶名間加-號並空格,

即:su - root

這時系統提示符顯示:[root@localhost root]#

十一、 其它

① 執行“id 用戶名”命令可列出用戶的 UID、GID 和所有組

② 與 W2K 不同,Linux 的組不能吸納其它組為成員。


第六章 Linux 文件權限

一、 用戶分類與文件訪問權

• Linux 將用戶劃分為四類;

root ;或所有 UID=0 的用戶,具有至高權限;

owner :文件的所有者,默認即文件的創建者;

group ;所屬組,除 owner 外同組其他成員有同等權限;

world ;除上面三類外的其他普通用戶。

自然,Linux 的權限管理只針對 owner、group、world。

• 訪問權限有三種;讀、寫、執行,分別用 r、w、x 表示

ls –l 命令顯示的結果中第 1 列的 2-10 分別表示三類用戶對

此文件(或目錄)的三種訪問權限,“-”表示無此權限,例:

-rwxr-x- - - 2 z3 g1 737 oct 7 18:42 a.sh

表示 a.sh 文件為 z3 所有,屬於 g1 組,z3 具有全部權限,

g1 組內其他成員具有讀和執行權限,其他用戶無任何權限。

• 為便於記憶與交流,專業人員習慣以八進制描述權限,比如

上例文件的訪問權限可表示為 750。

二、 文件權限與目錄權限

文件與目錄的訪問權限都分為讀、寫和執行,但作用不同:

讀權限

寫權限

執行權限

文件

讀取文件內容 修改該文件

執行

目錄

列出其中的文件名

在其中創建或刪除文件

進入目錄注意:

⑴在 Linux 中一個文件是否是可執行文件與其擴展名無關。

其可否執行取決於兩個條件:用戶是否具有執行權限;該文件是否是可執行文件。 普通的文本文件(非腳本文件)即便被賦予執行權限也無法執行。File 命令可查看文件類型。

⑵Redhat Linux 9.0 上的實驗表明:若要對目錄中的文件名列表或在其中創建與刪除文件都必須要對該目錄擁有執行權限。這點與很多書籍上的說法存在出入。

三、 改變文件的所有者和所在組

① chown 命令:改變文件的所有者

例:chown l4 a.txt 改 a.txt 文件的所有者為 l4

chown l4 mydir 改 mydir 目錄的所有者為 l4

chown –R l4 mydir 將 mydir 目錄全部歸 l4 所有

說明:⑴ -R 參數表示遞歸操作,即把 mydir 及其下的所有

目錄與文件的所有者都改為 l4。

⑵ 只有 root 用戶有勸執行 chown 命令。

② chgrp 命令:改變文件的所屬組

例:chgrp g1 a.txt 改 a.txt 文件的所屬組為 g1

chgrp –R l4 mydir 遞歸改變 mydir 目錄所屬組

說明:普通用戶也可以執行 chgrp 命令,但前提條件是該

用戶必須同時具備兩組的成員身份。③同時改變所有者和所屬組

chown newuser.newgroup filename_or_directory

即用點連接新所有者和新組,執行 chown 命令。

例:chown l4.g1 mydir

四、 改變文件的訪問權限

• chmod 命令用於修改文件或目錄的訪問權限。命令格式:

chmod 權限 文件或目錄名

例:chmod 755 /home/l4 修改 l4 的主目錄訪問權限為 755

(注:如果需要,當然也可以使用遞歸操作參數-R)

• 還可以使用字符串取代八進制的權限表示:

u、g、o、a 分別表示 owner、group、world、all

r、w、x 分別表示 read、write、exec

+、- 分別表示增加、去除權限

例:chmod a+r g+x u+xw /home/l4

使/home/l4 對任何人可讀、組用戶可執行、擁有者可讀可執行

又例:chmod +x install.sh

使當前目錄下的 install.sh 文件對任何人可執行。這種用法常

用在改變下載文件的權限屬性以便其可執行。

注意:

⑴對硬連接的訪問權限修改會同時影響到所有相關的硬連接權限屬性。因為它們是同一個文件。

⑵對軟連接的訪問權限修改只改變了被連接文件的權限屬性,

連接文件自身的訪問權限並沒有被修改,仍是 777。

五、 用戶的默認訪問權限和 umask

用戶在創建新文件時,系統通常按默認值賦予其權限:

目錄

一般文件

root

755

644

普通用戶

775

664

影響用戶的權限默認值的是個與用戶相關的系統值 umask。

Root 的 umask=022,普通用戶的 umask=002

目錄的默認權限等於:777 與 umask 反碼;(777 減去 umask)

文件的默認權限等於:666 與 umask 反碼。(666 減去 umask)

不帶參數地執行 umask 將顯示當前用戶的 umask 值。

umask 新值 可改變當前用戶的 umask 值,

例:umask 222 令當前用戶 umask=222,任何人都不可寫

說明:

⑴umask 只與用戶有關,與當前在哪個目錄無關。

⑵只能改變自己的 umask,並且只對自己的本次登錄有效。

下次登錄 umask 還是原值。所以修改的意義似乎不大。

⑶注意:“減去 umask”的說法只是一些書籍上為不熟悉布

爾代數的初學者提供的一種權宜的助記方法,該說法其實很有問題,造成很多現象無法解釋。筆者認為準確的說法應該是:“默認的訪問權限等於權限基值與上‘umask 的反碼’,對於新建目錄和新建文件來說,其權限基值分別是 777 和 666;但對於由拷貝操作產生的新目錄和新文件來說,其權限基值就是源目錄(或源文件)的原有值”。也就是將權限基值上的那些與 umask 中置 1位相對應的權限位清零便可得到新文件的默認權限值。

六、 理解 SUID 和 SGID

先分析一個現象:

記錄用戶賬號信息的/etc/passwd 文件其權限是:root.root 644

記錄加密口令的/etc/shadow 文件其權限是: root.root 400

對於普通用戶 passwd 只能讀而不能改寫;shadow 連讀都不允許。可為什麼我們可以通過 passwd 命令改寫自己的口令?

查看一下命令程序 usr/bin/passwd 文件的屬性:

/usr/bin/passwd 文件其權限是:root.root -r-s- -x- -x

這個文件是允許普通用戶執行的。root 的執行位是 s,就是這個 s 使普通用戶執行 passwd 時具有了 root 身份從而獲得了對/etc/passwd 和/etc/shadow 的完全訪問權(root 什麼權沒有?)。

實際上表示 Linux 文件權限的是 12bit,前面的 3bit 是:

SUID:若文件可以執行,則按所有者身份運行;

SGID:若文件可以執行,則按組成員身份運行;

sticky:粘接位,結束後仍駐留內存。目前並不常用。在 ls –l 命令顯示中的表示方法:

SUID 置位:所有者的執行位的 x 被 s 取代;

SGID 置位:所屬組的執行位的 x 被 s 取代;

sticky 置位:其他人的執行位的 x 被 t 取代。

所以,-r-s- -x- -x 用值表示就是 4511。

注意,使用 SUID 和 SGID 位要特別小心。


分享到:


相關文章: