一、用戶與UID
1.用戶(User)分為管理員與普通用戶
2.對于Linux系統而言,通過UID來界定某用戶是屬于哪個用戶,而不是用戶名
3.查看某用戶的UID可以通過id命令實現,Centos6.8與7.2系統上的UID部分起始數值有所不同
Centos7.2
[root@localhost home]# id root uid=0(root) gid=0(root) groups=0(root) [root@localhost home]# id admin uid=1000(admin) gid=1000(admin) groups=1000(admin),10(wheel) [root@localhost home]# id user1 uid=1004(user1) gid=1005(user1) groups=1005(user1) [root@localhost home]# id ftp uid=14(ftp) gid=50(ftp) groups=50(ftp)
Centos6.8
[root@localhost ~]# id root uid=0(root) gid=0(root) groups=0(root) [root@localhost ~]# id admin02 uid=501(admin02) gid=502(admin02) groups=502(admin02) [root@localhost ~]# id admin03 uid=502(admin03) gid=503(admin03) groups=503(admin03) [root@localhost ~]# id ftp uid=14(ftp) gid=50(ftp) groups=50(ftp)
4.無論Centos6.8還是7.2,管理員的UID都為0,普通用戶的UID編號為1-65535
5.普通用戶可以分為:
系統用戶:即系統本身存在的一些用戶,但仍然只是屬于普通用戶,用于支持系統進程及一些服務的啟用
UID:1-499(Centos6.8),1-999(Centos7.2)
登錄用戶:系統使用者后天創建的用戶,用于供系統使用者登錄,來與操作系統進行交互
UID:500開始(Cetnos6.8),1000開始(Centos7.2)
二、用戶與發起進程間的關系
通常我們把運行中的程序稱之為進程,某一項進程被用戶發起運行后,其所能夠訪問的資源的權限取決于進程的運行者的身份。
范例:以root用戶與admin用戶為例,對/etc/shadow文件進行操作。
root用戶通過nano命令對/etc/passwd文件進行查看
此時通過ps aux命令查看系統進程,可以發現此時nano程序的發起者為root
admin用戶通過nano命令對/etc/passwd文件進行查看
此時通過ps aux命令查看系統進程,可以發現此時nano程序的發起者為admin
由此可以發現,對于/etc/shadow這個文件而言,root與admin用戶能否對其進行訪問,取決于root與admin自身的身份,而與發起的進程并無關系。
三、組與GID
1.組(Group)分為管理員組與普通組
2.對于Linux系統而言,通過GID來判斷某用戶屬于哪個組,而不是組名
3.Linux中組的類別:
3.1主組(用戶的主要組)
3.1.1用戶必須屬于一個并且只能屬于一個主組
3.1.2新用戶在建立的時候,如果沒有指定主組的話,默認主組為私有組(即組名與用戶名相同的組),私有組有且只有一個用戶(即新用戶自身)
3.2輔助組(即用戶的附加組)
3.2.一個用戶可以不屬于輔助組,也可以屬于多個輔助組
4.普通用戶組可以分為:
系統用戶組:即系統用戶的所屬組,
GID:1-499(Centos6.8),1-999(Centos7.2)
登陸用戶組:即登錄用戶的所屬組,
GID:500開始(Cetnos6.8),1000開始(Centos7.2)
四、用戶和組的配置文件
用戶配置文件:/etc/passwd
用戶密碼配置文件:/etc/shadow
組配置文件:/etc/group
組密碼文件:/etc/gshadow
1.用戶配置文件:/etc/passwd中的字段信息如下:
[root@localhost ~]# cat /etc/passwd root:x:0:0:root:/root:/bin/bash
該字段由冒號(:)分隔,共7個字段,自左向右解釋如下:
用戶名:密碼:UID:GID:注釋;家目錄:默認Shell類型
2.用戶密碼配置文件:/etc/shadow中的字段信息如下:
[root@localhost ~]# cat /etc/shadow root:$6$xdjdqJdXTfOk30W3$3YfvEL9rzNK6c1qYKSAv0anQXQkt/glZw7mPqE3FyHnQH/nswRqMGFmXeVbO1OJ1xkyB8cwEabuvaDOWaYCH3/::0:99999:7:::
該字段由冒號(:)分隔,共8個字段,自左向右解釋如下:
登錄用戶:用戶密碼:密碼最近一次被更改的時間(從1970.1.1開始算起的天數):密碼再過幾天允許變更:密碼再過幾天必須更改:密碼到期前幾天提醒用戶:密碼過期幾天后帳號將被鎖定:帳號幾天后失效(從1970.1.1開始算起的天數)
3./etc/passwd中對于用戶的密碼,加密算法默認為sha512,可以被手動更改,命令為authconfig –passalgo=算法 –update
例如:更改默認的sha512加密算法為md5
[root@localhost ~]# authconfig --passalgo=md5 --update [root@localhost ~]# useradd user15 [root@localhost ~]# passwd user15 Changing password for user user15. New password: BAD PASSWORD: The password is shorter than 8 characters Retype new password: passwd: all authentication tokens updated successfully.
admin:$6$tQtyCgrqniIA7HIo$yaAYYO5FNueKteRV2o1csx4u.1gAY6pQuRAiwR63Ur0Q4.8/SuJ4TwKaorA/NRzS3eC4PwzRzGbALz1sUlnwG0:17001:0:99999:7::: gentoo:!!:14244:0:99999:7::: 111:!!:14245:0:99999:7::: 1111:!!:14245:0:99999:7::: user1:!!:17021:0:99999:7::: centos:!!:17021:0:99999:7::: user12:!!:17021:0:99999:7::: root1:!!:17021:0:99999:7::: centos1:!!:17021:0:99999:7::: user13:$1$XNtmO.u2$W/nMXJY8lNGWdREiEJjbY0:17021:0:99999:7::: user15:$1$s91Vy80O$aEtCQFYMRqMkZXEn3MdZW/:17021:0:99999:7:::
可以看到,用戶密碼的加密方式由sha512更改為md5,此時新建一個新用戶user15,為其設置密碼后,查看/etc/shadow文件,user15的密碼密文為$1開頭,并且密文長度大幅縮短,而更改密碼加密方式之前所創建的admin用戶的密碼密文為$6開頭,且密文長度較長。
4.組配置文件:/etc/group中的字段信息如下:
[root@localhost ~]# cat /etc/group root:x:0:gentoo
該字段由冒號(:)分隔,共4個字段,自左向右解釋如下:
組名稱:組密碼:GID:以當前組為輔助組的用戶列表(通過逗號隔開)
5.組密碼文件:/etc/gshadow中的字段信息如下:
[root@localhost ~]# cat /etc/gshadow root:::gentoo
該字段由冒號(:)分隔,共4個字段,自左向右解釋如下:
組名:組密碼:組管理員列表:以當前組為輔助組的用戶列表(分隔符為逗號)
五、用戶管理命令
1.useradd 新建用戶
選項:
-u 指定新建用戶的UID
-g 指定新建用戶的主組
-c 指定新建用戶的注釋信息
-d 指定新建用戶的家目錄
-s 指定新建用戶的默認shell
-G 指定新建用戶的輔助組
語法格式:useradd 選項 用戶名
示例:新建一個用戶,用戶名為user50,且uid為1050,主組為testgroup,注釋信息為testuser,家目錄為/home/user50,默認shell為/bin/bash,輔助組為root
[root@localhost ~]# useradd -u 1050 -g testgroup -c testuser -d /home/user50 -s /bin/bash -G root user50 [root@localhost ~]# id user50 uid=1050(user50) gid=1022(testgroup) groups=1022(testgroup),0(root) [root@localhost ~]# cat /etc/passwd user50:x:1050:1022:testuser:/home/user50:/bin/bash
-N 不創建與用戶名同名的私用組作為新建用戶的主組,而是用user組作為主組
示例:新建一個用戶user51,將user組作為其主組
[root@localhost ~]# useradd -N user51 [root@localhost ~]# id user51 uid=1051(user51) gid=100(users) groups=100(users)
-r 創建系統用戶(即UID小于500-Centos6,UID小于1000-Centos-7)
示例:新建一個用戶user52,將其創建為系統用戶
Centos7.2
[root@localhost ~]# useradd -r user52 [root@localhost ~]# id user52 uid=988(user52) gid=983(user52) groups=983(user52)
Centos6.8
[root@localhost ~]# useradd -r user52 [root@localhost ~]# id user52 uid=495(user52) gid=492(user52) groups=492(user52)
2.系統對于新創建用戶的各項設置有默認值設定,其存儲路徑為/etc/default/useradd文件
使用cat /etc/default/useradd 或useradd -D都可查看默認設置
[root@localhost ~]# cat /etc/default/useradd # useradd defaults file GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes [root@localhost ~]# useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes
修改默認設置如下:
范例:修改默認設置中的默認SHELL類型為/bin/csh
[root@localhost ~]# useradd -D -s /bin/csh [root@localhost ~]# useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/csh SKEL=/etc/skel CREATE_MAIL_SPOOL=yes
3.usermod 修改用戶
語法格式:usermod 選項 用戶名
選項:
-u 修改已經存在的用戶的UID
-g 修改已經存在的用戶的主組
-c 修改已經存在的用戶的注釋信息
-d 修改已經存在的用戶的家目錄
-s 修改已經存在的用戶的默認shell
-G 修改已經存在的用戶的輔助組
-l 修改已經存在的用戶的用戶名
范例:修改user52的用戶名為user53
[root@localhost ~]# usermod -l user53 user52 [root@localhost ~]# cat /etc/passwd user53:x:988:983::/home/user52:/bin/bash
-L 鎖定該用戶,在其/etc/shadow的對應條目上的密碼字段中增加!
范例:將用戶user51鎖定
[root@localhost ~]# usermod -L user51 [root@localhost ~]# cat /etc/shadow user51:!$1$rJvOIJUh$kX1vLz5NVLWcHcoOzK8xW0:17021:0:99999:7:::
-U 解鎖該用戶,在其/etc/shadow的對應條目上的密碼字段中減少!
范例:將用戶user51解鎖
[root@localhost ~]# usermod -U user51 [root@localhost ~]# cat /etc/shadow user51:$1$rJvOIJUh$kX1vLz5NVLWcHcoOzK8xW0:17021:0:99999:7:::
4.userdel 刪除用戶
語法格式:userdel 選項 用戶名
選項:
-f 強制刪除某用戶(即使目標用戶仍在登錄,也將被強制刪除,包括家目錄與郵箱目錄)
-r 移除某用戶(此操作將會導致家目錄和郵箱目錄等目標用戶的有關信息都被移除)
5.id命令 查看用戶相關ID信息
語法格式:id 選項 用戶名
選項:
-u 查看指定用戶的UID
-g 查看指定用戶的起作用的GID
-G 查看指定用戶的所有GID
-n 通常結合-G、-g來使用,輸出指定ID的名字
6.passwd命令 設置用戶密碼
語法格式:passwd 選項 用戶名
注意:
1.修改自身密碼,只需切換到目標用戶,直接執行passwd即可
2.修改其他用戶密碼,只有root用戶有權限,普通用戶沒有權限修改非自身的密碼
選項:
-l 鎖定指定用戶
范例:鎖定user51用戶
[root@localhost ~]# passwd -l user51 [root@localhost ~]# cat /etc/shadow user51:!!$1$rJvOIJUh$kX1vLz5NVLWcHcoOzK8xW0:17021:0:99999:7:::
-u 解鎖指定用戶
范例:解鎖user51用戶
[root@localhost ~]# passwd -u user51 [root@localhost ~]# cat /etc/shadow user51:$1$rJvOIJUh$kX1vLz5NVLWcHcoOzK8xW0:17021:0:99999:7:::
注意:鎖定的意思即為
-e 強制該用戶下次登陸時必須修改密碼
范例:指定admin用戶在下次登陸時必須修改密碼
[root@192 ~]# passwd -e admin Expiring password for user admin. passwd: Success WARNING! The remote SSH server rejected X11 forwarding request. You are required to change your password immediately (root enforced) Last failed login: Mon Aug 8 21:23:58 CST 2016 from 192.168.211.1 on ssh:notty There was 1 failed login attempt since the last successful login. Last login: Mon Aug 8 21:23:05 2016 WARNING: Your password has expired. You must change your password now and login again! Changing password for user admin. Changing password for admin. (current) UNIX password:
-n 指定某用戶密碼的最短使用期限
-x 指定某用戶密碼的最大使用期限
-w 指定某用戶的密碼過期前提前多少天進行警告
六、組管理命令
1.groupadd:創建新組
語法格式:groupadd 選項 組名
選項:
-g 指定GID
-r 創建系統組(即GID<500-Centos6,GID<1000-Centos7)
2.groupmod:修改已存在的組
語法格式:groupmod 選項 組名
選項:
-n 修改已存在組的名字
-g 修改已存在組的GID
3.groupdel:刪除組
語法格式:groupdel 選項 組名
4.gpasswd 更改組密碼
語法格式:gpasswd 選項 組名
選項:
-a 將指定用戶添加至指定組中
-d 從指定組中移除指定用戶
-A 將指定用戶加入到組管理員列表中
5.newgrp命令 臨時將指定組作為當前用戶的主組
語法格式:newgrp 組名
注意:如果用戶本不屬于此組,則需要輸入組密碼
6.groupmems 更改與查看組成員
語法格式:groupmems 選項 行為
選項:
-g 指定某組
行為:
-a 指定用戶加入某組
-d 從組中刪除指定用戶
-p 從組中清除所有成員
-l 顯示組成員列表
7.groups 用戶 該命令可以查看用戶所屬組的列表
七、用戶切換命令
通過su命令的兩種方式來實現
-
su 用戶名:非登陸式切換,不會讀取用戶的配置文件,不改變當前工作目錄
-
su – 用戶名:登錄式切換,讀取目標用戶的配置文件,并切換至家目錄,屬于完全切換
注意:su命令在使用時由root用戶切換至其他用戶無需密碼,普通用戶互相切換時需要密碼
原創文章,作者:Koinlers,如若轉載,請注明出處:http://www.www58058.com/31257