从零开始的Linux学习Ⅲ

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

猜你喜欢

转载自blog.51cto.com/13975143/2300096