一、Linux 的安全性
Linux 安全系統(tǒng)的核心是用戶賬戶。
用戶權(quán)限是通過創(chuàng)建用戶時分配的用戶 ID( user ID, UID)來跟蹤的。 UID 是個數(shù)值,每個用戶都有一個唯一的 UID。
用戶在登錄系統(tǒng)時是使用登錄名( login name)來代替 UID 登錄的。
下面介紹 Linux 系統(tǒng)使用哪些 特定文件和工具 來跟蹤及管理系統(tǒng)的用戶賬戶。
1.1 /etc/passwd 文件
Linux 系統(tǒng)使用一個專門的文件
/etc/passwd
來匹配登錄名與對應的 UID 值,下面是我的Ubuntu系統(tǒng)的/etc/passwd
做了部分刪減的文件示例,$ cat /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin mail:x:8:8:mail:/var/mail:/usr/sbin/nologin sshd:x:116:65534::/var/run/sshd:/usr/sbin/nologin statd:x:117:65534::/var/lib/nfs:/bin/false wkd:x:1000:1000:,,,:/home/wkd:/bin/bash aaa:x:1001:1001::/var/www/html/aaa: tftp:x:118:125:tftp daemon,,,:/var/lib/tftpboot:/bin/false $
/etc/passwd 文件各個字段的含義如下:
- 登錄用戶名
- 用戶密碼
- 用戶賬戶的 UID(數(shù)字形式)
- 用戶賬戶的組 ID(數(shù)字形式)
- 用戶賬戶的文本描述(稱為備注字段)
- 用戶$HOME 目錄的位置
- 用戶的默認 shell
文件解析:
- root 用戶賬戶是 Linux 系統(tǒng)的管理員,為其固定分配的UID 是 0;
- Linux 系統(tǒng)會為各種各樣的功能創(chuàng)建 系統(tǒng)用戶,是系統(tǒng)中運行的各種服務進程訪問資源使用的特殊賬戶。例如,上面的daemon用戶、bin用戶。
- Linux 會為系統(tǒng)賬戶預留了UID,Ubuntu系統(tǒng)預留了1000個ID,所以創(chuàng)建普通用戶時使用的UID會從1000。例如,上面的wkd用戶。
- /etc/passwd 文件中的密碼字段都被設置為 x,并不是說所有的用戶賬戶都使用相同的密碼。而是因為絕大多數(shù) Linux 系統(tǒng)將用戶密碼保存在單獨的文件(稱為 shadow 文件,位于/etc/shadow)中。只有特定的程序(比如登錄程序)才能訪問該文件。
- /etc/passwd 是一個標準的文本文件,可直接使用文本編輯器修改內(nèi)容,但不建議修改,如果/etc/passwd 文件受損,系統(tǒng)無法讀取文件內(nèi)容,則會導致用戶(即便是 root 用戶)無法正常登錄
1.2 /etc/shadow 文件
/etc/shadow
文件對 Linux系統(tǒng)密碼管理提供了更多的控制。只有 root 用戶才能訪問/etc/shadow
文件,這使其與/etc/passwd
相比要安全許多。
下面是wkd用戶在 ``/etc/shadow` 文件的記錄:wkd:$1$jNrWJ3eQ$4ONPjdkvFngn5j7R09g90/:17704:0:99999:7:::
/etc/shadow
文件中的每條記錄共包含 9 個字段。
- 登錄名,對應于/etc/passwd 文件中的登錄名。
- 加密后的密碼。
- 自上次修改密碼后已經(jīng)過去的天數(shù)(從 1970 年 1 月 1 日開始計算)。
- 多少天后才能更改密碼。
- 多少天后必須更改密碼。
- 密碼過期前提前多少天提醒用戶更改密碼。
- 密碼過期后多少天禁用用戶賬戶。
- 用戶賬戶被禁用的日期(以從 1970 年 1 月 1 日到當時的天數(shù)表示)。
- 預留給以后使用的字段
有了 shadow 密碼系統(tǒng), Linux 系統(tǒng)就可以更好地控制用戶密碼了,比如控制用戶多久更改一次密碼,以及如果密碼未更新的話,什么時候禁用該賬戶。
1.3 添加新用戶 —— useradd
useradd
命令可以一次性輕松創(chuàng)建新用戶賬戶并設置用戶的$HOME 目錄結(jié)構(gòu)。
-D 選項,查看useradd 命令所使用的默認值:wkd@ubuntu:~$ useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/sh SKEL=/etc/skel CREATE_MAIL_SPOOL=no wkd@ubuntu:~$
上面默認值解析:
- 新用戶會被添加到 GID 為 100 的公共組。
- 新用戶的主目錄會位于
/home/登錄名
。- 新用戶賬戶密碼在過期后不會被禁用。
- 新用戶賬戶不設置過期日期。
- 新用戶賬戶將
/bin/sh
作為默認 shell。- 系統(tǒng)會將/etc/skel 目錄的內(nèi)容復制到用戶的$HOME 目錄。
- 系統(tǒng)不會為該用戶賬戶在 mail 目錄下創(chuàng)建一個用于接收郵件的文件。
在Ubuntu下,/etc/skel/ 目錄下有下面文件,創(chuàng)建新用戶時會被復制到新用戶的主目錄。
wkd@ubuntu:~$ ls /etc/skel/ -la total 40 drwxr-xr-x 2 root root 4096 Jun 14 18:50 . drwxr-xr-x 133 root root 12288 Jun 15 02:59 .. -rw-r--r-- 1 root root 220 Apr 9 2014 .bash_logout -rw-r--r-- 1 root root 3637 Apr 9 2014 .bashrc -rw-r--r-- 1 root root 8980 Oct 4 2013 examples.desktop -rw-r--r-- 1 root root 675 Jun 14 18:50 .profile wkd@ubuntu:~$
useradd 命令行選項:
選 項 描 述 -c comment 給新用戶添加備注 -d home_dir 為主目錄指定一個名字(如果不想用登錄名作為主目錄名的話) -e expire_date 用 YYYY-MM-DD 格式指定賬戶過期日期 -f inactive_days 指定賬戶密碼過期多少天后禁用該賬戶; 0 表示密碼一過期就立即禁用, -1 表示不使用這個功能 -g initial_group 指定用戶登錄組的 GID 或組名 -G group … 指定除登錄組之外用戶所屬的一個或多個附加組 -k 必須和-m 一起使用,將/etc/skel 目錄的內(nèi)容復制到用戶的$HOME 目錄 -m 創(chuàng)建用戶的$HOME 目錄 -M 不創(chuàng)建用戶的$HOME 目錄,即便默認設置里要求創(chuàng)建 -n 創(chuàng)建一個與用戶登錄名同名的新組 -r 創(chuàng)建系統(tǒng)賬戶 -p passwd 為用戶賬戶指定默認密碼 -s shell 指定默認的登錄 shell -u uid 為賬戶指定一個唯一的 UID useradd 修改系統(tǒng)默認新用戶設置值
選 項 描 述 -b default_home 修改用戶$HOME 目錄默認創(chuàng)建的位置 -e expiration_date 修改新賬戶的默認過期日期 -f inactive 修改從密碼過期到賬戶被禁用的默認天數(shù) -g group 修改默認的組名稱或 GID -s shell 修改默認的登錄 shell 例如:
useradd -D -s /bin/tsch
1.4 刪除用戶 —— userdel
在默認情況下, userdel 命令只刪除 /etc/passwd 和 /etc/shadow 文件中的用戶信息,屬于該賬戶的文件會被保留。
加入-r
選項,則 userdel 會刪除用戶的 $HOME 目錄以及郵件目錄。
1.5 修改用戶 —— usermod、passwd、chpasswd
usermod
修改用戶賬戶字段,還可以指定主要組( primary group)以及輔助組( secondary group)的所屬關(guān)系。
提供了修改 /etc/passwd 文件中大部分字段的相關(guān)選項,只需指定相應的選項即可。
- -c用于修改備注字段,
- -e 用于修改過期日期,
- -g 用于修改默認的登錄組
- -l:修改用戶賬戶的登錄名
- -L:鎖定賬戶,禁止用戶登錄。
- -p:修改賬戶密碼。
- -U:解除鎖定,恢復用戶登錄。
-L 選項尤為實用。該選項可以鎖定賬戶,使用戶無法登錄,無須刪除賬戶和用戶數(shù)據(jù)。要恢復賬戶,只需使用-U 選項即可。
passwd
命令可以方便地修改用戶密碼:passwd 用戶名
;-e
選項可以強制用戶下次登錄時修改密碼;
chpasswd
命令能從標準輸入自動讀取一系列以冒號分隔的登錄名和密碼對偶;
chsh
命令可以快速修改默認的用戶登錄 shell。使用時必須用 shell 的 全路徑名 作為參數(shù):chsh -s /bin/csh test
chage
命令可用于幫助管理用戶賬戶的有效期:
選 項 描 述 -d 設置自上次修改密碼后的天數(shù) -E 設置密碼過期日期 -I 設置密碼過期多少天后鎖定賬戶 -m 設置更改密碼的最小間隔天數(shù) -M 設置密碼的最大有效天數(shù) -W 設置密碼過期前多久開始出現(xiàn)提醒信息
二、使用 Linux 組
為了解決共享資源的一組用戶的安全性問題,Linux 系統(tǒng)采用了另一個安全概念——組。
組權(quán)限允許多個用戶對系統(tǒng)對象(比如文件、目錄或設備等)共享一組權(quán)限。
每個組都有唯一的 GID,和 UID 類似,該值在系統(tǒng)中是唯一的。除了 GID,每個組還有一個唯一的組名。
這節(jié)將介紹 Linux 系統(tǒng)中用于創(chuàng)建和管理組的 組工具。
2.1 /etc/group 文件
/etc/group
文件包含系統(tǒng)中每個組的信息,下面是/etc/group
的內(nèi)容,有刪減。wkd@ubuntu:~$ cat /etc/group root:x:0: daemon:x:1: bin:x:2: sys:x:3: adm:x:4:syslog,lu tty:x:5: disk:x:6: lp:x:7: mail:x:8: users:x:100: nogroup:x:65534: sambashare:x:124:lu wkd:x:1000: aaa:x:1001: tftp:x:125: wkd@ubuntu:~$
/etc/group 文件有 4 個字段。
- 組名
- 組密碼
- GID
- 屬于該組的用戶列表
組密碼允許非組內(nèi)成員使用密碼臨時性地成為該組成員。
2.2 創(chuàng)建新組 —— groupadd
groupadd
命令可用于創(chuàng)建新組:groupadd 組名
groupadd shared
在創(chuàng)建新組時,默認不為其分配任何用戶,groupadd 命令沒有提供向組中添加用戶的選項,但可以用 usermod 命令來解決,下面語句將用戶rich添加到shared組:
usermod -G shared rich
2.3 修改組 —— groupmod
groupmod 命令可以修改已有組的 GID(使用-g 選項)或組名(使用-n 選項):
groupmod -n sharing shared
語句將 shared 組改名為 sharing。
三、理解文件權(quán)限
3.1 文件權(quán)限解釋
使用
ls -l
命令時,第一列的符號就表示了文件權(quán)限,它由四部分組成:文件類型、屬主權(quán)限、屬組權(quán)限、其他用戶權(quán)限;wkd@ubuntu:~$ ls test.sh -l -rwxrw-r-- 1 wkd wkd 73 Jul 9 22:30 test.sh wkd@ubuntu:~$
例如上面這個文件的權(quán)限
-rwxrw-r--
,
①表示它是一個普通文件;
②它屬于的用戶擁有可讀、可寫、可執(zhí)行的權(quán)限;
③它所屬于的組的用戶擁有可讀、可寫權(quán)限、不可執(zhí)行;
④其他用戶可讀、不可寫、不可執(zhí)行。
其他文件類型:
- -代表文件
- d 代表目錄
- l 代表鏈接
- c 代表字符設備
- b 代表塊設備
- p 代表具名管道
- s 代表網(wǎng)絡套接字
3.2 默認文件權(quán)限
從上小節(jié)可知,文件權(quán)限由文件類型 和 三組權(quán)限值(rwx)組成,每組權(quán)限值可以看出是 3 bit 的二進制值,
r--
最高位為1(100
)表示可讀、-w-
次高位為1(010
)表示可寫、--x
最低位為1(001
)表示可執(zhí)行。每組總共有8種情況,如下表:
權(quán) 限 二進制值 八進制值 描 述 ---
000 0 沒有任何權(quán)限 --x
001 1 只有執(zhí)行權(quán)限 -w-
010 2 只有寫入權(quán)限 -wx
011 3 有寫入和執(zhí)行權(quán)限 r--
100 4 只有讀取權(quán)限 r-x
101 5 有讀取和執(zhí)行權(quán)限 rw-
110 6 有讀取和寫入權(quán)限 rwx
111 7 有全部權(quán)限(讀取、寫入和執(zhí)行) 以上小節(jié)的權(quán)限
-rwxrw-r--
為例,
①第一組權(quán)限rwx
的二進制就是111
,轉(zhuǎn)成八進制就是7
;
②第二組權(quán)限rw-
的二進制就是110
,轉(zhuǎn)成八進制就是6
;
③第三組權(quán)限rw-
的二進制就是100
,轉(zhuǎn)成八進制就是4
;
所以其文件權(quán)限是764;清楚了權(quán)限怎樣轉(zhuǎn)換成二進制值和八進制值之后,再來看看Linux系統(tǒng)怎樣設置文件默認權(quán)限。答案是通過
umask
命令,直接執(zhí)行umask
,就可以看到當前的掩碼:wkd@ubuntu:~$ umask 0022 wkd@ubuntu:~$
默認的文件權(quán)限就是:全權(quán)權(quán)限 減去 umask值。
對文件而言,全權(quán)權(quán)限是666
(所有用戶都有讀取和寫入的權(quán)限);
對目錄而言,全權(quán)限值是777
(所有用戶都有讀取、寫入和執(zhí)行權(quán)限)。wkd@ubuntu:~$ touch test_mask wkd@ubuntu:~$ mkdir dir_mask wkd@ubuntu:~$ ls -l drwxr-xr-x 2 wkd wkd 4096 Jul 11 20:06 dir_mask -rw-r--r-- 1 wkd wkd 0 Jul 11 20:01 test_mask
由以上輸出,dir_mask 目錄權(quán)限為 777-022=755,轉(zhuǎn)成二進制就是
111 101 101
,對應權(quán)限為rwx r-x r-x
;
test_mask 文件權(quán)限為 666-022=644,轉(zhuǎn)成二進制就是110 100 100
,對應權(quán)限為rw- r-- r--
;
四、更改安全設置
文章來源:http://www.zghlxwxcb.cn/news/detail-540080.html
五、共享文件
如果文章有幫助的話,點贊??、收藏?,支持一波,謝謝 ??????文章來源地址http://www.zghlxwxcb.cn/news/detail-540080.html
到了這里,關(guān)于【Linux | Shell】Linux 安全系統(tǒng) —— 用戶、組、文件權(quán)限 - 閱讀筆記的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!