1. 程式人生 > >從零開始的Linux學習Ⅲ

從零開始的Linux學習Ⅲ

重命名 信息 storage centos7 pass ins mem cut 通用

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、使用隨機密碼;

2、最短長度不要低於8位;
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學習Ⅲ