從零開始的Linux學習Ⅲ
今天我們來介紹Linux的用戶和組管理,在Linux系統上,用戶管理是基於用戶名和密碼的方式進行資源分配的。
- Linux上的用戶即Username/UID分為:
<1.>管理員:root , 0
<2.>普通用戶:1-65535
普通用戶又分為:
系統用戶:1-499(Centos6系統) 1-999(Centos7系統)對守護進程獲取資源進行權限分配;
為了能夠讓那後臺進程或服務類進程以非管理員的身份運行,通常需要為此創建多個普通用戶;這類用戶從不用登錄系統;
登錄用戶:500-60000(Centos6系統)1000-60000(Centos7系統)通過交互式方式登錄。
- Linux組即Groupname/GID分為
<1.>管理員組:root , 0
<2.>普通組:1-65535
普通組又分為:系統組和非系統組,我們通常就把非系統組叫做普通組
系統組:1-499(Centos6系統) 1-999(Centos7系統)
非系統組:500+(Centos6系統)1000+(Centos7系統)
對於一個用戶而言可以有多個不同的組,分別稱為用戶的基本組(主組)和附加組:基本組名與用戶名相同,且僅包含一個用戶,也叫私有組。基本組以外的組屬於用戶的附加組(或者額外組);
Linux用戶和組相關的配置文件
/etc/passwd,該文件記錄了用戶及其屬性信息(名稱、UID、基本組ID等等);
name:password:UID:GID:GECOS:directory:shell name: 用戶名 password:可以是加密的密碼,也可是占位符x; UID: GID:用戶所屬的主組的ID號; GECOS:註釋信息 directory:用戶的家目錄; shell:用戶的默認shell,登錄時默認shell程序;
/etc/group ,該文件記錄了組及其屬性信息;
group_name:password:GID:user_list
user_list:該組的用戶成員;以此組為附加組的用戶的用戶列表;
/etc/shadow ,該文件記錄了用戶密碼及其相關屬性;
用戶名:加密的密碼:最近一次修改密碼的時間:最短使用期限:最長使用期限:警告期段:過期期限:保留字段
/etc/gshadow ,該文件記錄了組密碼及其相關屬性;
密碼的使用策略:
為了保證密碼的安全性可靠性;
1、使用隨機密碼;
3、應該使用大寫字母、小寫字母、數字和標點符號四類字符中至少三類;
4、定期更換;
在Linux登錄認證過程中是通過比對事先存儲的,與登錄時提供的信息是否一致;
password:位於/etc/shadow 和 /etc/gshadow 兩個文件中
- 加密算法:
對稱加密:加密和解密使用同一個密碼;
非對稱加密:加密和解密使用的一對兒密鑰;
密鑰對兒:
公鑰:public key
私鑰: private key
單向加密:只能加密,不能解密;提取數據特征碼;
Linux用戶和組管理常用命令
groupadd命令:添加組
groupadd [選項] group_name
-g GID:指定GID;默認是上一個組的GID+1;
-r: 創建系統組;
groupmod命令:修改組屬性
groupmod [選項] GROUP
-g GID:修改GID;
-n new_name:修改組名;
groupdel命令:刪除組
groupdel [選項] GROUP
useradd命令:創建用戶
useradd [選項] 登錄名
-u, --uid UID:指定UID;
-g, --gid GROUP:指定基本組ID,此組得事先存在;
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:指明用戶所屬的附加組,多個組之間用逗號分隔;
-c, --comment COMMENT:指明註釋信息;
-d, --home HOME_DIR:以指定的路徑為用戶的家目錄;通過復制/etc/skel此目錄並重命名實現;指定的家目錄路徑如果事先存在,則不會為用戶復制環境配置文件;
-s, --shell SHELL:指定用戶的默認shell,可用的所有shell列表存儲在/etc/shells文件中;
-r, --system:創建系統用戶;
註意:創建用戶時的諸多默認設定配置文件為/etc/login.defs
useradd -D:顯示創建用戶的默認配置;
useradd -D 選項: 修改默認選項的值;
修改的結果保存於/etc/default/useradd文件中;
usermod命令:修改用戶屬性
usermod [選項] 登錄
-u, --uid UID:修改用戶的ID為此處指定的新UID;
-g, --gid GROUP:修改用戶所屬的基本組;
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改用戶所屬的附加組;原來的附加組會被覆蓋;
-a, --append:與-G一同使用,用於為用戶追加新的附加組;
-c, --comment COMMENT:修改註釋信息;
-d, --home HOME_DIR:修改用戶的家目錄;用戶原有的文件不會被轉移至新位置;
-m, --move-home:只能與-d選項一同使用,用於將原來的家目錄移動為新的家目錄;
-l, --login NEW_LOGIN:修改用戶名;
-s, --shell SHELL:修改用戶的默認shell;
-L, --lock:鎖定用戶密碼;即在用戶原來的密碼字符串之前添加一個"!";
-U, --unlock:解鎖用戶的密碼;
userdel命令:刪除用戶
userdel [選項] 登錄
-r:刪除用戶時一並刪除其家目錄;
練習
1、列出當前系統上所有已經登錄的用戶的用戶名,註意:同一個用戶登錄多次,則只顯示一次即可。
who | cut -d ‘ ‘ -f1 | sort -u
who:查看當前已經登陸的所有用戶的詳細信息
cut -d ‘ ‘ -f1:以空格為界顯示每行第一列
sort -u :在輸出行中去除重復行。
2、取出最後登錄到當前系統的用戶的相關信息。
who | cut -d‘ ‘ -f1 | tail -1 | xargs id
tail -1:查看最後一行
xargs :構造參數列表並運行命令。(將前面命令輸出的值作為參數)
who查看的登陸用戶默認是按時間排列的,所以只用顯示最後一行。
結果:
[root@pikachu3154 ~]# who | cut -d ‘ ‘ -f1 | sort -u
Pikachu
root
3、取出當前系統上被用戶當作其默認shell的最多的那個shell。
cut -d: -f7 /etc/passwd | uniq -c | sort -n | tail -1
結果:
[root@pikachu3154 ~]# cut -d: -f7 /etc/passwd | uniq -c | sort -n | tail -1
38 /sbin/nologin
4、將/etc/passwd中的第三個字段數值最大的後10個用戶的信息全部改為大寫後保存至/tmp/maxusers.txt文件中。
sort -t: -k3 -n /etc/passwd | tail | tr ‘a-z‘ ‘A-Z‘ > /tmp/maxuser.txt
結果:
[root@pikachu3154 ~]# sort -t: -k3 -n /etc/passwd | tail | tr ‘a-z‘ ‘A-Z‘ > /tmp/maxuser.txt
[root@pikachu3154 ~]# cat /tmp/maxuser.txt
CHRONY:X:992:987::/VAR/LIB/CHRONY:/SBIN/NOLOGIN
SETROUBLESHOOT:X:993:990::/VAR/LIB/SETROUBLESHOOT:/SBIN/NOLOGIN
SASLAUTH:X:994:76:SASLAUTHD USER:/RUN/SASLAUTHD:/SBIN/NOLOGIN
GLUSTER:X:995:992:GLUSTERFS DAEMONS:/VAR/RUN/GLUSTER:/SBIN/NOLOGIN
COLORD:X:996:993:USER FOR COLORD:/VAR/LIB/COLORD:/SBIN/NOLOGIN
LIBSTORAGEMGMT:X:997:994:DAEMON ACCOUNT FOR
LIBSTORAGEMGMT:/VAR/RUN/LSM:/SBIN/NOLOGIN
UNBOUND:X:998:995:UNBOUND DNS RESOLVER:/ETC/UNBOUND:/SBIN/NOLOGIN
POLKITD:X:999:998:USER FOR POLKITD:/:/SBIN/NOLOGIN
PIKACHU:X:1000:1000:PIKACHU:/HOME/PIKACHU:/BIN/BASH
NFSNOBODY:X:65534:65534:ANONYMOUS NFS USER:/VAR/LIB/NFS:/SBIN/NOLOGIN
5、取出當前主機的IP地址,提示:對ifconfig命令的結果進行切分。
ifconfig ens33 | grep ‘inet‘ | awk ‘{print$2}‘ | head -1
結果:
[root@pikachu3154 ~]# ifconfig ens33 | grep ‘inet‘ | awk ‘{print$2}‘ | head -1
192.168.160.128
6、列出/etc目錄下所有以.conf結尾的文件的文件名,並將其名字轉換為大寫後保存至/tmp/etc.conf文件中。
find /etc/ -name "*.conf" | tr ‘a-z‘ ‘A-Z‘ > /tmp/etc.conf
7、顯示/var目錄下一級子目錄或文件的總個數。
ls -d /var/* | wc -l
結果:
[root@pikachu3154 ~]# ls -d /var/* | wc -l
24
8、取出/etc/group文件中第三個字段數值最小的10個組的名字。
sort -t: -k3 -n /etc/group | cut -d: -f1 | head
結果:
[root@pikachu3154 ~]# sort -t: -k3 -n /etc/group | cut -d: -f1 | head
root
bin
daemon
sys
adm
tty
disk
lp
mem
kmem
9、將/etc/fstab和/etc/issue文件的內容合並為同一個內容後保存至/tmp/etc.test文件中。
cat /etc/fstab /etc/issue > /tmp/etc.test
結果:
[root@pikachu3154 ~]# cat /etc/fstab /etc/issue > /tmp/etc.test
[root@pikachu3154 ~]# cat /tmp/etc.test
#
# /etc/fstab
# Created by anaconda on Fri Aug 10 15:19:41 2018
#
# Accessible filesystems, by reference, are maintained under ‘/dev/disk‘
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=6e84d278-3f59-4ba0-8bd6-2ff0e6a22c12 /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
\S
Kernel \r on an \m
10、請總結描述用戶和組管理類命令的使用方法並完成以下練習:
(1)、創建組distro,其GID為2016;
groupadd distro -g 2016
(2)、創建用戶mandriva, 其ID號為1005;基本組為distro;
useradd mandriva -u 1005 -g distro
(3)、創建用戶mageia,其ID號為1100,家目錄為/home/linux;
useradd mageia -u 1100 -s /home/linux
(4)、給用戶mageia添加密碼,密碼為mageedu;
echo"mageedu"|passwd–stdin mageia
(5)、刪除mandriva,但保留其家目錄;
userdel mandriva
(6)、創建用戶slackware,其ID號為2002,基本組為distro,附加組peguin;
useradd slackware -u 2002 -g distro -G peguin
(7)、修改slackware的默認shell為/bin/tcsh;
usermod slackware -s /bin/tcsh
(8)、為用戶slackware新增附加組admins;
usermod slackware -a -G admins
從零開始的Linux學習Ⅲ