Linux系統的用戶和用戶組管理
1、用戶(user)的概念
Linux 是典型的多用戶操作系統,我們可以建若幹用戶(user),用於系統服務的運行和權限管理,不同的用戶登陸系統,按照設定的權限去操作系統,提高了安全性。在Linux系統中有一些用戶是用來完成特定任務的,比如nobody和ftp 等;有的是為了權限安全,比如限制root直接登陸系統,創建一個sshusr用戶,登陸sshusr後,再su到root下。可以通過查看/etc/passwd了解Linux系統有哪些帳號。
2、用戶組(group)的概念
用戶組(group)就是具有相同特征的用戶(user)的集合體;比如有時我們要讓多個用戶具有相同的權限,比如查看、修改某一文件或執行某個命令,這時我們需要用戶組,我們把用戶都定義到同一用戶組,我們通過修改文件或目錄的權限,讓用戶組具有一定的操作權限,這樣用戶組下的用戶對該文件或目錄都具有相同的權限。
3、用戶和用戶組的對應關系
一對一:某個用戶可以是某個組的唯一成員;
多對一:多個用戶可以是某個唯一的組的成員;
一對多:某個用戶可以是多個用戶組的成員,有附加組;
多對多:多個用戶對應多個用戶組,並且幾個用戶可以是歸屬相同的組。
二、用戶(user)和用戶組(group)相關的配置文件、命令或目錄
1、與用戶和用戶組相關的配置文件;
1)與用戶相關的配置文件;
/etc/passwd 註:用戶的配置文件;
/etc/shadow 註:用戶影子口令(密碼)文件;
2)與用戶組相關的配置文件;
/etc/group 註:用戶組配置文件;
/etc/gshadow 註:用戶組的影子口令文件;
2、管理用戶和用戶組的相關工具或命令;
useradd :添加用戶
adduser :添加用戶
userdel :刪除用戶
passwd :為用戶設置密碼
usermod :修改用戶命令,可以通過usermod 來修改登錄名、用戶的家目錄等等;
pwcov :同步用戶從/etc/passwd 到/etc/shadow
pwck :pwck是校驗用戶配置文件/etc/passwd 和/etc/shadow 文件內容是否合法或完整;
pwunconv :是pwcov 的立逆向操作,是從/etc/shadow和 /etc/passwd 創建/etc/passwd ,然後會刪除 /etc/shadow 文件;
id :查看用戶的UID、GID及所歸屬的用戶組
chfn :更改用戶信息工具
su :用戶切換工具
sudo :sudo 是通過另一個用戶來執行命令(execute a command as another user),su 是用來切換用戶,然後通過切換到的用戶來完成相應的任務,但sudo 能後面直接執行命令,比如sudo 不需要root 密碼就可以執行root 賦與的執行只有root才能執行相應的命令;但得通過visudo 來編輯/etc/sudoers來實現;
visudo :visodo 是編輯 /etc/sudoers 的命令;也可以不用這個命令,直接用vi 來編輯 /etc/sudoers 的效果是一樣的;
sudoedit :和sudo 功能差不多;
2)管理用戶組的工具或命令;
groupadd :添加用戶組;
groupdel :刪除用戶組;
groupmod :修改用戶組信息
groups :顯示用戶所屬的用戶組
grpck :用於驗證組文件的完整性
grpconv :通過/etc/group和/etc/gshadow 的文件內容來同步或創建/etc/gshadow ,如果/etc/gshadow 不存在則創建;
grpunconv 註:通過/etc/group 和/etc/gshadow 文件內容來同步或創建/etc/group ,然後刪除gshadow文件;
3、/etc/skel 目錄
/etc/skel目錄一般是存放用戶啟動文件的目錄,這個目錄是由root權限控制,當我們添加用戶時,這個目錄下的文件自動復制到新添加的用戶的家目錄下;/etc/skel 目錄下的文件都是隱藏文件,也就是類似.file格式的;我們可通過修改、添加、刪除/etc/skel目錄下的文件,來為用戶提供一個統一、標準的、默認的用戶環境;
[root@localhost beinan]# ls -la /etc/skel/
總用量 92
drwxr-xr-x 3 root root 4096 8月 11 23:32 .
drwxr-xr-x 115 root root 12288 10月 14 13:44 ..
-rw-r--r-- 1 root root 24 5月 11 00:15 .bash_logout
-rw-r--r-- 1 root root 191 5月 11 00:15 .bash_profile
-rw-r--r-- 1 root root 124 5月 11 00:15 .bashrc
-rw-r--r-- 1 root root 5619 2005-03-08 .canna
-rw-r--r-- 1 root root 438 5月 18 15:23 .emacs
-rw-r--r-- 1 root root 120 5月 23 05:18 .gtkrc
drwxr-xr-x 3 root root 4096 8月 11 23:16 .kde
-rw-r--r-- 1 root root 658 2005-01-17 .zshrc
/etc/skel 目錄下的文件,一般是我們用useradd 和adduser 命令添加用戶(user)時,系統自動復制到新添加用戶(user)的家目錄下;如果我們通過修改 /etc/passwd 來添加用戶時,我們可以自己創建用戶的家目錄,然後把/etc/skel 下的文件復制到用戶的家目錄下,然後要用chown 來改變新用戶家目錄的屬主;
4、/etc/login.defs 配置文件
/etc/login.defs 文件是當創建用戶時的一些規劃,比如創建用戶時,是否需要家目錄,UID和GID的範圍;用戶的期限等等,這個文件是可以通過root來定義的;
比如Fedora 的 /etc/logins.defs 文件內容;
# *REQUIRED*
# Directory where mailboxes reside, _or_ name of file, relative to the
# home directory. If you _do_ define both, MAIL_DIR takes precedence.
# QMAIL_DIR is for Qmail
#
#QMAIL_DIR Maildir
MAIL_DIR /var/spool/mail 註:創建用戶時,要在目錄/var/spool/mail中創建一個用戶mail文件;
#MAIL_FILE .mail
# Password aging controls:
#
# PASS_MAX_DAYS Maximum number of days a password may be used.
# PASS_MIN_DAYS Minimum number of days allowed between password changes.
# PASS_MIN_LEN Minimum acceptable password length.
# PASS_WARN_AGE Number of days warning given before a password expires.
#
PASS_MAX_DAYS 99999 註:用戶的密碼最長過期天數;
PASS_MIN_DAYS 5 註:密碼最小過期天數;
PASS_MIN_LEN 5 註:密碼最小長度;
PASS_WARN_AGE 7 註:密碼過期警告天數
#
# Min/max values for automatic uid selection in useradd
#
UID_MIN 500 註:最小UID為500 ,也就是說添加用戶時,UID 是從500開始的;
UID_MAX 60000 註:最大UID為60000;
#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN 500 註:GID 是從500開始;
GID_MAX 60000
#
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD /usr/sbin/userdel_local
#
# If useradd should create home directories for users by default
# On RH systems, we do. This option is ORed with the -m flag on
# useradd command line.
#
CREATE_HOME yes 註:是否創用戶家目錄,要求創建;
# The permission mask is initialized to this value. If not specified,
# the permission mask will be initialized to 022.
UMASK 077
# Use SHA512 to encrypt password.
ENCRYPT_METHOD SHA512
5、/etc/default/useradd 文件
通過useradd 添加用戶時的規則文件;
# useradd defaults file
GROUP=100
HOME=/home 註:把用戶的家目錄建在/home中;
INACTIVE=-1 註:是否啟用帳號過期停權,-1表示不啟用;
EXPIRE= 註:帳號終止日期,不設置表示不啟用;
SHELL=/bin/bash 註:所用SHELL的類型;
SKEL=/etc/skel 註: 默認添加用戶的目錄默認文件存放位置;也就是說,當我們用adduser添加用戶時,用戶家目錄下的文件,都是從這個目錄中復制過去的;
三、用戶組的管理
1、創建一個用戶組
命令格式:
groupadd [選項] [用戶組]
選項:
-g :GID 指定新用戶組的組標識號(GID)。
-o :一般與-g選項同時使用,表示新用戶組的GID可以與系統已有用戶組的GID相同。
例1:創建group1,GID會自動在系統已創建的基礎上增加1# groupadd group1
例2:創建一個新組group2,同時指定新組的組標識號是101。#groupadd -g 101 group2
2、刪除一個用戶組
命令格式:
groupdel [用戶組]
例:此命令從系統中刪除組group1。#groupdel group1
3、修改用戶組的屬性
命令格式:
groupmod [選項] [用戶組]
選項:
-g :GID 為用戶組指定新的組標識號。
-o :與-g選項同時使用,用戶組的新GID可以與系統已有用戶組的GID相同。
-n :新用戶組 將用戶組的名字改為新名字
例:此命令將組group2的組標識號修改為102。# groupmod -g 102 group2
例:此命令將組group2的標識號改為10000,組名修改為group3。# groupmod –g 10000 -n group3 group2
4、用戶切換用戶組
如果一個用戶同時屬於多個用戶組,那麽用戶可以在用戶組之間切換,以便具有其他用戶組的權限。用戶可以在登錄後,使用命令newgrp切換到其他用戶組,這個命令的參數就是目的用戶組。
例如:
$ newgrp root
這條命令將當前用戶切換到root用戶組,前提條件是root用戶組確實是該用戶的主組或附加組。類似於用戶賬號的管理,用戶組的管理也可以通過集成的系統管理工具來完成。
四、用戶管理
(一),添加用戶
1.命令
useradd或adduser命令用來建立用戶帳號和創建用戶的起始目錄,使用權限是超級用戶。
2.命令格式
useradd [-d home] [-s shell] [-c comment] [-m [-k template]] [-f inactive] [-e expire ] [-p passwd] [-r] name
3.主要參數
-c:加上備註文字,備註文字保存在passwd的備註欄中。
-d:指定用戶登入時的主目錄,替換系統默認值/home/<用戶名>
-D:變更預設值。
-e:指定賬號的失效日期,日期格式為MM/DD/YY,例如06/30/12。缺省表示永久有效。
-f:指定在密碼過期後多少天即關閉該賬號。如果為0賬號立即被停用;如果為-1則賬號一直可用。默認值為-1.
-g:指定用戶所屬的群組。值可以使組名也可以是GID。用戶組必須已經存在的,期默認值為100,即users。
-G:指定用戶所屬的附加群組。
-m:自動建立用戶的登入目錄。
-M:不要自動建立用戶的登入目錄。
-n:取消建立以用戶名稱為名的群組。
-r:建立系統賬號。
-s:指定用戶登入後所使用的shell。默認值為/bin/bash。
-u:指定用戶ID號。該值在系統中必須是唯一的。0~499默認是保留給系統用戶賬號使用的,所以該值必須大於499。
例:創建用戶tom,沒有登陸權限# useradd -s /sbin/nologin tom
4.說明
useradd可用來建立用戶賬號,它和adduser命令是相同的。賬號建好之後,再用passwd設定賬號的密碼。使用useradd命令所建立的賬號,實際上是保存在/etc/passwd文本文件中。
(二)用戶的刪除
命令格式:
userdel [用戶名] #只是刪除用戶名,用戶目錄和郵件賬戶目錄還在
userdel -r [用戶名] #清除用戶的家目錄和郵件目錄
(三)設置用戶密碼
root用戶登陸時執行,如果是當前用戶登陸,passwd回車後按提示設置密碼即可。
1,命令格式:
echo [密碼] | passwd --stdin [用戶名]
例如:新建用戶test,密碼test,另外添加usertest組
#useradd test
#echo "test" | passwd --stdin test
#groupadd usertest
2,用戶的密碼文件
用戶修改的密碼信息存在/etc/shadow中,
# sed -n ‘$p‘ /etc/shado`w`
nalex:$6$QCsCA/7/$jsBzKSSoEOFW/.TsFlkJi.nZndkZz3EZ2nOMtpjDk9UInBxY6g76HnuTMgl9GqC0E0WNe.oznUKANMYrZG2FI.:17551:0:99999:7:0:17897:
--用戶名
--密碼
--從1970年1月1日起到上次修改密碼所經過的天數
--密碼再過幾天可以被變更(0表示隨時可以改變)
--密碼再過幾天必須被變更(99999表示永不過期)
--密碼過期前幾天提醒用戶(默認為一周)
--密碼過期幾天後帳號被禁用
--從1970年1月1日算起,多少天後賬號失效
(四)修改用戶屬性
1.用usermod修改用戶屬性
語 法:usermod [參數選項] [用戶帳號]
補充說明:usermod可用來修改用戶帳號的各項設定。
選 項:
-a|--append ##把用戶追加到某些組中,僅與-G選項一起使用
-c|--comment ##修改/etc/passwd文件第五段comment
-d|--home ##修改用戶的家目錄通常和-m選項一起使用
-e|--expiredate ##指定用戶帳號禁用的日期,格式YY-MM-DD
-f|--inactive ##用戶密碼過期多少天後采用就禁用該帳號,0表示密碼一過期就禁用帳號,-1表示禁用此功能,默認值是-1
-g|--gid ##修改用戶的gid,改組一定存在
-G|--groups ##把用戶追加到某些組中,僅與-a選項一起使用
-l|--login ##修改用戶的登錄名稱
-L|--lock ##鎖定用戶的密碼
-m|--move-home ##修改用戶的家目錄通常和-d選項一起使用
-s|--shell ##修改用戶的shell
-u|--uid ##修改用戶的uid,該uid必須唯一
-U|--unlock ##解鎖用戶的密碼
2.示例
1).新建用戶alex,密碼alex,另外添加galex組
#useradd alex
#echo "alex" | passwd --stdin alex
#groupadd galex
2).把alex用戶加入galex組#usermod -aG galex alex #多個組之間用空格隔開
# id alex
uid=1005(alex) gid=1006(alex) 組=1006(alex),1007(galex)
3).修改alex用戶的家目錄為galex
# usermod -md /home/galex alex
# cat /etc/passwd|grep "alex"
alex:x:1005:1006::/home/galex:/bin/bash
4).修改用戶名
# usermod -l nalex alex
# cat /etc/passwd|grep "alex"
nalex:x:1005:1006::/home/galex:/bin/bash
5).鎖定nalex的密碼
# sed -n ‘$p‘ /etc/shadow
nalex:$6$QCsCA/7/$jsBzKSSoEOFW/.TsFlkJi.nZndkZz3EZ2nOMtpjDk9UInBxY6g76HnuTMgl9GqC0E0WNe.oznUKANMYrZG2FI
.:17551:0:99999:7:::
#usermod -L nalex
# sed -n ‘$p‘ /etc/shadow
nalex:!$6$QCsCA/7/$jsBzKSSoEOFW/.TsFlkJi.nZndkZz3EZ2nOMtpjDk9UInBxY6g76HnuTMgl9GqC0E0WNe.oznUKANMYrZG2FI
.:17551:0:99999:7:::
鎖定後用戶冒號後面會多一個感嘆號“!”
6).解鎖nalex的密碼#usermod -U nalex
去除用戶後面的感嘆號
7).修改用戶的shell
#sed ‘$!d‘ /etc/passwd
nalex:x:500:500::/home/usertest:/bin/bash
#usermod -s /bin/sh nalex
#sed -n ‘$p‘ /etc/passwd
nalex:x:500:500::/home/galex:/bin/sh
8)指定帳號過期日期
# sed -n ‘$p‘ /etc/shadow
nalex:$6$QCsCA/7/$jsBzKSSoEOFW/.TsFlkJi.nZndkZz3EZ2nOMtpjDk9UInBxY6g76HnuTMgl9GqC0E0WNe.oznUKANMYrZG2FI
.:17551:0:99999:7:::
# usermod -e 2019-01-01 nalex
]# sed -n ‘$p‘ /etc/shadow
nalex:$6$QCsCA/7/$jsBzKSSoEOFW/.TsFlkJi.nZndkZz3EZ2nOMtpjDk9UInBxY6g76HnuTMgl9GqC0E0WNe.oznUKANMYrZG2FI
.:17551:0:99999:7::17897:
多了時間限制
9).指定用戶帳號密碼過期多少天後,禁用該帳號
# usermod -f 0 nalex
# sed -n ‘$p‘ /etc/shadow
nalex:$6$QCsCA/7/$jsBzKSSoEOFW/.TsFlkJi.nZndkZz3EZ2nOMtpjDk9UInBxY6g76HnuTMgl9GqC0E0WNe.oznUKANMYrZG2FI
.:17551:0:99999:7:0:17897:
Linux系統的用戶和用戶組管理