Linux基礎知識--4.LInux用戶和用戶組以及權限管理
一.Linux用戶和用戶組
Linux操作系統是一個多用戶、多任務的操作系統。有時可能多個用戶在linux系統上操作一個任務,有時可能完成多個任務。用戶的主要作用就是完成用戶本身要完成的任務,不同用戶所具有的權限也不同,所以能完成的任務也是有不盡相同。組:個人理解就是將用戶和權限關聯在一起的“容器”,我們可以把執行相同任務的用戶加入同一個組內。
當登錄linux系統時要輸入linux用戶賬號,但是linux主機不會是認識你的“賬號名稱”,它只會識別用戶的ID號,每個登錄系統的用戶至少要包括兩個ID,一個是用戶ID(UID),另一個是組ID(GID)。
1. 在linux系統中用戶可分爲三類:根用戶(管理員用戶),系統用戶和普通用戶。
根用戶root用戶:可以操作系統任何文件和資源,擁有最高權限。
root:UID爲0 GID爲0
系統用戶:這類用戶不具有登錄系統的能力,但是系統運行不可缺少的用戶,比如bin、daemon、ftp、mail等。這類用戶都是系統自身擁有的,而非後來添加。當然後續添加也行。
系統用戶的UID:1-499 但是在CentOS7上UID是:1-999
GID:1-499 CentOS7上GID爲:1-999
普通用戶:這類用戶是用來登錄系統,有自己的家目錄,但是權限有限。
普通用戶的UID爲500+ 在CentOS7上UID爲:1000+
GID:500+ CentOS7上GID爲:1000+
2.Linux用戶組:
linux組的分類:基本組,私有組和附加組(也稱額外組)
基本組:linux在創建用戶的時候會同時創建和用戶名相同的組,這個組就是基本組,不能把用戶從這個組刪除。
附加組:附加組也稱額外組,是除基本組之外用戶所在的其他組。用戶可以從附加組中刪除。
私有組:私有組就是一個linux用戶的基本組在沒有其他用戶添加到此組,就稱基本組屬於這個用戶的私有組。
3.linux中和用戶、組相關的配置文件及文件內容的意義:
/etc/passwd:用戶及其屬性信息
/etc/shadow:用戶密碼及其相關信息
/etc/group:組及其屬性信息
/etc/gshadow:組密碼及其相關信息
1./etc/passwd文件中各字段含義:
用戶名:密碼:UID:GID:用戶註釋信息:用戶家目錄:默認shell
apache:x:48:48:Apache:/var/www:/sbin/nologin
2./etc/shadow文件中個字段的含義:
bin:*:15980:0:99999:7:::
用戶名:加密之後的密碼:最近一次更改密碼的日期:密碼的最小使用期限:最大密碼使用期 限:密碼警告時間段:密碼過期恕限時間:賬戶過期時間:保留字段
注意:最近一次更改密碼的日期:是從1970年1月1日到最近一個修改密碼的天數。
密碼最小使用期限:便是兩次修改密碼之間所需的最小天數,0表示沒有。
密碼最大使用期限:指的是密碼保持有效的天數。
密碼警告時間段:表示從系統警告用戶到用戶密碼正式失效的天數。
密碼過期恕限時間:如果用戶過了警告時間仍沒有從新設定密碼,致使密碼失效。用戶仍然可以使用這個失效的密碼在n天內登陸系統,若在這個期間人沒有更改密碼,則賬號失效。
3./etc/group文件中各字段的含義:
bin:x:1:bin,daemon
組名:組密碼:GID:以當前組爲附加組的用戶列表(分隔符爲逗號)
4./etc/gshadow文件中各字段的含義:
bin:::bin,daemon
組名:組密碼:組管理者:組成員
4.linux 用戶和組相關的管理命令:
(1)用戶創建:useradd
useradd [options] LOGIN
常用選項:
-u UID:指定UID
-g GID:指定GID
-c "COMMENT":用戶註釋信息
-d directory:指定用戶的家目錄
-s SHELL:指定用戶的shell
-G group1,group2,...:指定用戶的附加組,組事先要存在
-r:創建系統用戶
和用戶創建相關的一些文件和目錄:
/etc/login.defs /etc/shells /etc/skel /etc/default/useradd
/etc/login.defs:此文件是創建用戶時的一些限制,比如可以配置密碼的最大過期天數,密碼 最大長度等。該文件對root用戶無效。
/etc/shells:該文件存在當前系統支持的shell
/etc/skel:該目錄下存放了一些隱藏文件和目錄。在建立用戶時,用戶初始化用戶根目錄。系 統會將此目錄下的所有文件和目錄都複製到新建用戶的根目錄,並且將用戶的屬主與用戶組調整爲與此根目錄相同。
/etc/default/useradd:通過useradd添加用戶時的規則文件。
(2)刪除用戶:userdel
useradd [options] login
useradd -r UserName:連同用戶的家目錄一併刪除
(3)用戶屬性的修改:usermod
usermod [OPTION] login
常用選項:
-u UID:修改UID
-g GID:修改GID
-G group1,group,..:新附加組,原來的附加組將覆蓋,如果不想覆蓋使用-a選項,表append
-s shell:指定新的shell
-c "COMMENT":新的註釋信息
-d HOME:修改家目錄,一般和-m選項連用。表示將原有家目錄的內容一直新的家目錄中
-l Login_name:修改用戶名
-L:鎖定用戶
-U:解鎖用戶
-e YYYY-MM-DD:指明用戶賬號過期日期
-f INACTIVE:設定非活動期限
(4)給用戶添加密碼:passwd
passwd [OPTIONS] UserName:修改指定用戶的密碼,僅root用戶權限
passwd :修改當前登錄系統用戶的密碼
常用選項
-l:鎖定指定用戶
-u:解鎖指定用戶
-n mindays:指定密碼最短使用期限
-x maxdays:指定密碼最大使用期限
-w warndays:指定提前多少天開始警告
-i inactivedays:非活動期限
--stdin:從標準輸入接收用戶密碼:
eg:echo "PASSWORD" | passwd --stdin USERNAME
(5)組創建:groupadd
groupadd [OPTION]... group_name
常用選項:
-g GID:指明組ID
-r:創建系統組
(6)刪除組:groupdel
groupdel GroupName
eg: groupdel admingroup
(7)組屬性修改:groupmod
groupmod [OPTION].. group
常用選項:
-n group_name:修改組名
-g GID:修改組ID
(8)組密碼創建:gpasswd
讓某個用戶組具有一個管理員,這個用戶組管理員能夠管理那些賬號可以加入/移除該用戶組。
gpasswd [option] group
常用選項:
-a user:將user添加至指定組中
-d user:刪除用戶user的以當前組爲組的附加組
-A user1,user2,...:設置有管理權限的用戶列表
其中newgrp命令是臨時切換到一個加密組中,如果用戶本不屬於此組,則需要組密碼
(9)修改用戶屬性:chage
chage [OPTION]... LOGIN
常用格式:
-l:列出用戶密碼的相關信息:
-m mindays:修改密碼的最小天數
-M maxdays:修改密碼的最大天數
-I:密碼過期後,鎖定賬號的天數
-d:指定密碼最後修改的日期
-E:有效期,0表示立即過期,-1表示永不過期
-W:密碼過期前,開始警告的天數。
(10)還有其他命令:chsh,finger,chfn。
chsh:修改用戶的shell
chfn:change your finger information
finger:finger - user information lookup program
# finger zkc
Login: zkc Name: Personal
Directory: /home/zkc Shell: /bin/bash
Never logged in.
No mail.
No Plan.
二.Linux 權限管理
Linux的文件權限主要針對三類對象:屬主(u),屬組(g),其他(o)
每個文件針對每類訪問者都定義了三類權限:讀r,寫w,執行x
我們可以使用ls -la查看某個文件的屬性和文件名。如:
[root@localhost ~]# ls -la total 64 dr-xr-xr-x. 21 root root 4096 Aug 15 22:37 .. -rw-------. 1 root root 1201 Aug 14 21:19 anaconda-ks.cfg -rw-------. 1 root root 2138 Aug 15 22:36 .bash_history -rw-r--r--. 1 root root 18 May 20 2009 .bash_logout -rw-r--r--. 1 root root 176 May 20 2009 .bash_profile -rw-r--r--. 1 root root 276 Aug 14 21:51 .bashrc
分別表示文件的類型和文件的權限,連接數,屬主,屬組,文件大小,文件最後被修改的時間,文件名。
1.文件的類型有一下幾種:
-:普通文件。
d:目錄文件。
l:連接文件
b:塊設備文件.
c:字符設備文件
s:套接字文件
p:管道文件
2.文件對應屬主,屬組和其他的屬性:rwx
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
目錄和文件的權限意義:
1.權限對文件的意義:
r:可讀取文件的內容,可以用文件查看類工具獲取其內容
w:可以編輯,新增或者修改文件內容(但不包含刪除)
x:該文件具有可執行的權限。可以把此文件提請內核啓動爲一個進程。
2.權限對目錄的意義:
r:表示具有讀取目錄結構列表的權限。可以使用ls命令查看目錄下的文件列表
w:這個可寫入的權限對目錄來說很強大。表示具有更改該目錄結構列表的權限,包括:
新建新的文件與目錄
刪除已經存在的文件或目錄(不論該文件的權限爲何)
將已經存在的文件或目錄進行重命名
轉移該目錄內的文件,目錄位置
x:可以使用ls 命令查看目錄下的文件列表,以及可以用cd轉換到此目錄下。
修改文件和目錄權限:chmod
chmod [OPTION]... MODE FILE
-R:可遞歸修改權限
修改一類用戶的所有權限:如:
a=rwx,u=rwx,g=rwx,o=rwx
uo=rw...
此類修改權限之後將會把以前的權限覆蓋
eg:
修改一類用戶的某些位的權限:
u+rwx u-rwx o+x a+x 等。。
eg:
[root@localhost ~]# ll a.txt -r-xr--r-x. 1 root root 6 Aug 16 03:04 a.txt [root@localhost ~]# chmod a+w a.txt [root@localhost ~]# ll a.txt -rwxrw-rwx. 1 root root 6 Aug 16 03:04 a.txt
chmod [OPTION]... --reference=Rfile File...
查看Rfile文件的權限,將File文件的權限修改爲同Rfile.
eg:
[root@localhost ~]# ll a.txt -rwxrw-rwx. 1 root root 6 Aug 16 03:04 a.txt [root@localhost ~]# vim b.txt [root@localhost ~]# ls -l b.txt -rw-r--r--. 1 root root 6 Aug 16 03:34 b.txt [root@localhost ~]# chmod --reference=a.txt b.txt [root@localhost ~]# ls -l b.txt -rwxrw-rwx. 1 root root 6 Aug 16 03:34 b.txt
修改文件和目錄的屬主和屬組:chown(僅root用戶)
chown [OPTION]... [OWNER][:[GROUP]] FILE...
-R:可遞歸修改權限
用法:chown owner file
chown owner:group file
chown :group file
chown [OPTION]... --reference=RFile File...
修改文件File的屬主屬組同Rfile的屬主屬組
eg:
[root@localhost ~]# chown zkc.zkc a.txt [root@localhost ~]# ll a.txt -rwxrw-rwx. 1 zkc zkc 6 Aug 16 03:04 a.txt [root@localhost ~]# chown --reference=b.txt a.txt root@localhost ~]# ll a.txt -rwxrw-rwx. 1 root root 6 Aug 16 03:04 a.txt
修改文件的屬組:chgrp
chgrp [OPTION]... GROUP File
chgrp [OPTION]... --reference=Rfile File...
eg:
[root@localhost ~]# chgrp zkc a.txt [root@localhost ~]# ll a.txt -rwxrw-rwx. 1 root zkc 6 Aug 16 03:04 a.txt [root@localhost ~]# chgrp --reference=b.txt a.txt [root@localhost ~]# ll a.txt -rwxrw-rwx. 1 root root 6 Aug 16 03:04 a.txt
文件或目錄創建時的遮罩碼:umask
對文件:創建文件時的權利:666-umask
如果某類用戶的權限減得結果中存在x權限,將其權限加1.
相對目錄:777-umask
Linux文件系統上的特殊權限:SUID,SGID,Sticky
1.通過前面學習Linux文件系統有普通權限:r,w,x
2.Linux中的安全上下文:
前提:進程必須有屬主和屬組。也就是文件有屬主和屬組
a.任何一個可執行程序文件是否能能夠執行,成爲進程,取決於對這個文件發起者對這個文件是否擁有執行的權限。
b.啓動爲程序之後,其進程的屬主爲發起者,進程的屬組爲發起者所屬的組
c.進程訪問文件時的權限,取決於進程的發起者。
1.進程的發起者屬於文件的屬主;則使用文件屬主的權限
2.進程的發起者屬於文件的屬組;則使用文件屬組的權限
3.有文件'其他'的權限
3.SUID:
任何一個可執行程序文件是否能啓動爲進程,取決於一個程序文件是否擁有執行的權限。
可執行程序文件啓動爲進程之後,其進程的屬主爲源文件的屬主(而不再屬於發起者)
權限設置:
chmod u+s File..
chmod u-s File..
s這個標誌出現在文件所有者的x權限上的。
SUID權限只對二進制程序有效
執行者對已該程序需要具有x的執行權限
本權限僅在執行程序的過程中有效。
eg:命令chmod只能root用戶才能使用,雖然chmod的二進制文件的權限爲:-rwxr-xr-x;
但是普通用戶還是不能執行此命令!!如:
[root@localhost tmp]# ls -l /bin/chmod -rwxr-xr-x. 1 root root 50048 Nov 22 2013 /bin/chmod [zkc@localhost tmp]$ whoami zkc [zkc@localhost tmp]$ chmod a+w test.sh chmod: changing permissions of `test.sh': Operation not permitted
爲此二進制文件添加s權限,再次執行以下,結果如下:
[root@localhost tmp]# chmod u+s /bin/chmod [root@localhost tmp]# ls -l /bin/chmod -rwsr-xr-x. 1 root root 50048 Nov 22 2013 /bin/chmod 切換到普通用戶: [zkc@localhost tmp]$ chmod a+w test.sh [zkc@localhost tmp]$ ls -l test.sh -rwxrw-rw-. 1 root root 40 Aug 16 04:49 test.sh
/bin/chmod添加s權限後,普通用戶能夠執行命令chmod,這只是普通用戶"暫時"擁有root的權限。
4.SGID:
常用功能:
a.設置在目錄上:
1.默認情況下,用戶創建文件時,其屬組爲此用戶所屬的基本組;一旦某目錄被設定了SGID的權限,則對此目錄有寫權限的用戶,在此目錄中所創建文件的屬組就爲此目錄所屬的屬組!! 2.如果用戶對此目錄有r和x權限,用戶還可以進入此目錄中。
b.針對文件進行設置:SGID對二進制程序有用,二進制文件的執行者需要有x權限。當執行者執行此二進制程序文件時,執行具有該程序用戶組的權限:
權限設定:
chmod g+s File/DIR
chmod g-s File/DIR
eg:在/tmp目錄下創建一個目錄kk。在沒有向kk目錄設置g+s權限時,普通用戶(此普通用戶對此目錄有寫權限)在此目錄下創建的文件的屬組還是普通用戶所屬的組:如:
[root@localhost tmp]# ls -ld kk drwxrxrwx. 2 root root 4096 Aug 16 06:30 kk [zkc@localhost kk]$ ls -l a -rw-rw-r--. 1 zkc zkc 0 Aug 16 06:35 a
向目錄kk添加g+s權限,添加權限之後,所創建的文件是目錄所屬的屬組
[root@localhost tmp]# chmod g+s kk [root@localhost tmp]# ls -ld kk drwxr-srwx. 2 root root 4096 Aug 16 06:36 kk [zkc@localhost kk]$ touch zkc [zkc@localhost kk]$ ls -l total 0 -rw-rw-r--. 1 zkc zkc 0 Aug 16 06:35 a -rw-rw-r--. 1 zkc root 0 Aug 16 06:38 zkc
當其他用戶在有SGID權限的目錄下創建文件時,文件的屬組都爲目錄所屬的組,因此,用戶之間可以相互刪除對方的文件,這樣做是不安全的。所以就出現了第三種特殊權限Sticky。
5.Sticky:
這個特殊權限只對目錄有效,對文件無效。對目錄的作用有:
1.當用戶對此目錄有w,x權限時,既具有寫入的權限
2.當用戶在此目錄下創建文件或目錄時,僅自己或root纔有權限刪除此文件
權限設定:
chmod o+t DIR...
chmod o-t DIR...
eg:在一個目錄下,此目錄對其他用戶有w權限。先以不同用戶創建文件,查看是否能相互刪除文件,然後在設置Sticky權限之後,在此查看能否相互刪除文件。
a.在不設定Sticky權限的情況下
[root@localhost tmp]# ls -ld test drwxr-xr-x. 2 root root 4096 Aug 16 06:59 test [root@localhost tmp]# chmod o+w test [root@localhost tmp]# ls -ld test drwxr-xrwx. 2 root root 4096 Aug 16 06:59 test
轉到普通用戶:
[zkc@localhost test]$ touch zkc [zkc@localhost test]$ ls -l total 0 -rw-rw-r--. 1 zkc zkc 0 Aug 16 07:05 zkc [kk@localhost test]$ touch kk [kk@localhost test]$ ls -l total 0 -rw-rw-r--. 1 kk kk 0 Aug 16 07:05 kk -rw-rw-r--. 1 zkc zkc 0 Aug 16 07:05 zkc
查看是否能刪除對方文件:
[zkc@localhost test]$ rm -rf kk [zkc@localhost test]$ ls zkc
發現能刪除對方文件
b.設定Sticky權限:
[root@localhost tmp]# chmod o+t test [root@localhost tmp]# ls -ld test drwxr-xrwt. 2 root root 4096 Aug 16 07:06 test
在kk用戶下刪除zkc用戶創建的文件zkc:
kk@localhost test]$ rm -rf zkc rm: cannot remove `zkc': Operation not permitted [kk@localhost test]$ ls -l total 0 -rw-rw-r--. 1 zkc zkc 0 Aug 16 07:05 zkc
設定Sticky權限之後,雖然目錄test的其他(o)權限有w權限,但是不能刪除其他用戶所創建的文件!
特殊權限的權限位:
SUID :4 SGID:2 Sticky:1
SUID:user,佔據屬主的執行權限位:
s:屬主擁有x權限
S:屬主沒有x權限
GUID:group,佔據屬組的執行權限位:
s:屬組擁有x權限
S:屬組沒有x權限
Sticky:other,佔據other的執行權限位:
t:other擁有x權限
T:other沒有x權限
到此Linux基礎中的用戶,組,權限和特殊權限基本知識點介紹結束。。