美文网首页linux运维
linux用户管理命令使用及bash特性示例

linux用户管理命令使用及bash特性示例

作者: dabule | 来源:发表于2018-03-03 18:27 被阅读42次

    列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。

    who | tr -s “ “ | cut -d “ ” -f1 | sort -u
    ----------------------------------------
    [root@localhost tmp]# who | tr -s “ “ | cut -d" " -f1 | sort -u
    linuxprobe
    root
    ----------------------------------------
    

    取出最后登录到当前系统的用户的相关信息。

    who | grep -o "^[[:alnum:]]\+" | sort -u
    ----------------------------------------
    [root@localhost tmp]# who | grep -o "^[[:alnum:]]\+" | sort -u
    linuxprobe
    root
    ----------------------------------------
    

    取出当前系统上被用户当作其默认shell的最多的那个shell。

    sort -t: -k7 /etc/passwd | cut -d: -f7 | uniq -c | sort -n | tail -1 | cut -c 6-8
    ----------------------------------------
    [root@localhost ~]# sort -t: -k7 /etc/passwd | cut -d: -f7 | uniq -c | sort -n | tail -1 | cut -c 6-8
    34 
    ----------------------------------------
    

    将/etc/passwd中的第三个字段数值最大的后10个用户的信息全部改为大写后保存至/tmp/maxusers.txt文件中。

    sort -t: -k3 -n /etc/passwd | tail -10 | tr 'a-z' 'A-Z' | tee /tmp/maxusers.txt
    ----------------------------------------
    [root@localhost ~]# sort -t: -k3 -n /etc/passwd | tail -10 | tr 'a-z' 'A-Z' | tee /tmp/maxusers.txt
    COLORD:X:997:996:USER FOR COLORD:/VAR/LIB/COLORD:/SBIN/NOLOGIN
    UNBOUND:X:998:997:UNBOUND DNS RESOLVER:/ETC/UNBOUND:/SBIN/NOLOGIN
    POLKITD:X:999:998:USER FOR POLKITD:/:/SBIN/NOLOGIN
    LINUXPROBE:X:1000:1000:LINUXPROBE:/HOME/LINUXPROBE:/BIN/BASH
    HADOOP:X:2005:2005:HADOOP:/HOME/HADOOP:/BIN/BASH
    BASH:X:2006:2006::/HOME/BASH:/BIN/BASH
    TESTBASH:X:2007:2007::/HOME/TESTBASH:/BIN/BASH
    BASHER:X:2008:2008::/HOME/BASHER:/BIN/BASH
    NOLOGIN:X:2009:2009::/HOME/NOLOGIN:/SBIN/NOLOGIN
    NFSNOBODY:X:65534:65534:ANONYMOUS NFS USER:/VAR/LIB/NFS:/SBIN/NOLOGIN
    ----------------------------------------
    

    取出当前主机的IP地址,提示:对ifconfig命令的结果进行切分。

    ifconfig | grep -o 1[0-9][0-9].1[0-9][0-9].* | cut -d" " -f1
    ----------------------------------------
    [root@localhost ~]# ifconfig | grep -o 1[0-9][0-9].1[0-9][0-9].* | cut -d" " -f1
    192.168.109.128
    ----------------------------------------
    

    列出/etc目录下所有以.conf结尾的文件的文件名,并将其名字转换为大写后保存至/tmp/etc.conf文件中。

    ls /etc/*.conf | tr 'a-z' 'A-Z' | tee /tmp/etc.conf
    ----------------------------------------
    [root@localhost ~]# ls /etc/*.conf | tr 'a-z' 'A-Z' | tee /tmp/etc.conf
    /ETC/ASOUND.CONF
    /ETC/BRLTTY.CONF
    /ETC/CHRONY.CONF
    /ETC/COLORD.CONF
    /ETC/DNSMASQ.CONF
    /ETC/DRACUT.CONF
    /ETC/E2FSCK.CONF
    /ETC/FPRINTD.CONF
    /ETC/FUSE.CONF
    /ETC/HBA.CONF
    /ETC/HOST.CONF
    .....
    ----------------------------------------
    

    显示/var目录下一级子目录或文件的总个数。

    ls /var | wc -l
    ----------------------------------------
    [root@localhost ~]# ls /var | wc -l
    23
    ----------------------------------------
    

    取出/etc/group文件中第三个字段数值最小的10个组的名字。

     sort -t: -k3 -n /etc/group | head | cut -d: -f1
    ----------------------------------------
    [root@localhost ~]#  sort -t: -k3 -n /etc/group | head | cut -d: -f1
    root
    bin
    daemon
    sys
    adm
    tty
    disk
    lp
    mem
    kmem
    ----------------------------------------
    

    将/etc/fstab和/etc/issue文件的内容合并为同一个内容后保存至/tmp/etc.test文件中。

    cat /etc/fstab /etc/issue | tee /tmp/etc.test
    ----------------------------------------
    [root@localhost ~]# cat /etc/fstab /etc/issue | tee /tmp/etc.test
    
    #
    # /etc/fstab
    # Created by anaconda on Thu Jan 25 09:55:02 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/rhel-root   /                       xfs     defaults        1 1
    UUID=f15b48a3-314c-436c-a6a6-bcd1231f071d /boot                   xfs     defaults        1 2
    /dev/mapper/rhel-home   /home                   xfs     defaults        1 2
    /dev/mapper/rhel-swap   swap                    swap    defaults        0 0
    /dev/cdrom /mnt/media.repo iso9660 defaults 0 0
    \S
    Kernel \r on an \m
    
    ----------------------------------------
    

    请总结描述用户和组管理类命令的使用方法并完成以下练习:

    useradd [options] LOGIN: 用户创建命令

     -u: 指定用户的uid,在centos6中系统uid为1-499.在centos7中系统uid为1-999.普通用户自定义的uid最好不要占用系统的uid.
    
     -g: 指定用户基本组gid,必须存在的组,如果没有指明则用户uid与gid一样
    
     -c ” ”: 添加用户注释信息
    
     -d /path/ : 指定用户的家目录
    
     -s SHELL: 指定用户的shell,默认为/bin/bash,可用的shell在/etc/shells文件中
    
     -G GROUP1,GROUP2: 指定用户的附加组,可以有多个,用逗号隔开并且附加组必须存在
    
     -s: 修改用户的默认shell信息.
    
    [root@localhost ~]# useradd -s /sbin/nologin test
    

    id [options] USER : 查看用户id信息的命令

     -u: 查看用户的有效uid
    
     -g: 查看用户的有效gid
    
     -G: 查看所有组的gid
    
    [root@localhost ~]# id -u test
    2010
    

    passwd : 修改用户密码的命令

    非root用户只能修改自己的密码,root用户可以修改其他用户的密码格式为:

     -l, -u:锁定和解锁用户;
    
     -d:清除用户密码串;
    
     -e DATE: 指定用户密码的过期期限,日期;
    
     -i DAYS:指定用户密码的非活动期限;
    
     -n DAYS:指定用户密码的密码的最短使用期限;
    
     -x DAYS:指定用户密码的密码的最长使用期限;
    
     -w DAYS:指定用户密码的警告期限;
    
     --stdin:从标准输入去修改密码,可以是一个管道,格式如下:
    
       echo "PASSWORD" | passwd --stdin USERNAME
    
    [root@localhost ~]# passwd -l bash
    Locking password for user bash.
    passwd: Success
    

    userdel: 删除用户

     -r :将用户的家目录一并删除
    
    [root@localhost ~]# userdel -r test
    

    usermod: 修改用户属性

     -u uid : 修改用户的uid后面跟上新的UID;
    
     -g GROUP:修改用户所属的基本组;
    
     -G:GROUP1[,GROUP2,...[,GROUPN]]]:修改用户所属的附加组;原来的附加组会被覆盖;
    
     -a:为用户追加新的附加组;
    
     -c: COMMENT:修改注释信息;
    
     -d /path:修改用户的家目录;用户原有的文件不会被转移至新位置;
    
     -m /path:只能与-d选项一同使用,用于将原来的家目录移动为新的家目录;
    
     -s SHELL:修改用户的默认shell;
    
     -L:锁定用户密码;即在用户原来的密码字符串之前添加一个"!";
    
     -U:解锁用户的密码;
    
    [root@localhost ~]# id bash
    uid=2006(bash) gid=2006(bash) groups=2006(bash)
    [root@localhost ~]# usermod -l bash1 bash
    [root@localhost ~]# id bash1
    uid=2006(bash1) gid=2006(bash) groups=2006(bash)
    

    groupadd: 添加组命令

     -g:指定gid,默认是上一个组的gid+1,并且不为系统组gid
    
     -r: 创建系统组
    
    [root@localhost ~]# groupadd -g 2018 bash1
    

    groupmod: 修改组属性

     -g gid: 修改为新的gid
    
     -n NEW_NAME: 修改组名
    
    [root@localhost ~]# groupmod -g 2017 bash
    

    groupdel:删除组

    [root@localhost ~]# groupdel  bash1
    

    groupwd: 管理/etc/group和/etc/gshadow的命令

     -a USERNAME: 向组添加用户
    
     -d USERNAME: 从组中删除用户
    

    newgrp:临时切换指定的组为基本组

    -:模拟用户重新登录来实现重新初始化其工作环境
    
    [root@localhost ~]# newgrp bash
    

    su: 切换用户的命令

     su [-] USERNAME:
    
     su – USERNAME 或者 su –l USERNAME : 完全切换,登陆式切换,会读取目标用户的配置文件并初始化
    
     su USERNAME: 非完全切换,非登录式切换,不会读目标用户的配置文件进行初始化
    

    创建组distro,其GID为2016;

    groupadd -g 2016 distro
    ----------------------------------------
    [root@localhost ~]# groupadd -g 2016 distro
    ----------------------------------------
    校验: cat /etc/group | grep distro
    ----------------------------------------
    [root@localhost ~]# cat /etc/group | grep distro
    distro:x:2016:
    ----------------------------------------
    

    创建用户mandriva, 其ID号为1005;基本组为distro;

    useradd -u 1005 -g distro mandriva
    ----------------------------------------
    useradd -u 1005 -g distro mandriva
    ----------------------------------------
    校验: cat /etc/passwd | grep man
    ----------------------------------------
    [root@localhost ~]#  cat /etc/passwd | grep man
    mandriva:x:1005:2016::/home/mandriva:/bin/bash
    ----------------------------------------
    

    创建用户mageia,其ID号为1100,家目录为/home/linux;

    useradd -u 1100 -d /home/linux mageia
    ----------------------------------------
    [root@localhost ~]# useradd -u 1100 -d /home/linux mageia
    ----------------------------------------
    校验:cat /etc/passwd | grep mageia
    ----------------------------------------
    [root@localhost ~]# cat /etc/passwd | grep mageia
    mageia:x:1100:1100::/home/linux:/bin/bash
    ----------------------------------------
    

    给用户mageia添加密码,密码为mageedu;

    echo "mageedu" | passwd --stdin mageia
    ----------------------------------------
    [root@localhost ~]#  echo "mageedu" | passwd --stdin mageia
    Changing password for user mageia.
    passwd: all authentication tokens updated successfully
    ----------------------------------------
    校验:用另一个普通用户su到mageia输入密码看是否登陆成功
    

    删除mandriva,但保留其家目录;

    userdel mandriva
    ----------------------------------------
    [root@localhost ~]# userdel mandriva
    ----------------------------------------
    校验: file /home/mandriva/
    ----------------------------------------
    [root@localhost ~]# file /home/mandriva/
    /home/mandriva/: directory
    ----------------------------------------
    

    创建用户slackware,其ID号为2002,基本组为distro,附加组peguin;

    groupadd peguin
    useradd -u 2002 -g distro -G peguin slackware
    ----------------------------------------
    [root@localhost ~]# groupadd peguin
    [root@localhost ~]# useradd -u 2002 -g distro -G peguin slackware
    ----------------------------------------
    校验: id slackware
    ----------------------------------------
    [root@localhost ~]# id slackware
    uid=2002(slackware) gid=2016(distro) groups=2016(distro),2018(peguin)
    ----------------------------------------
    

    修改slackware的默认shell为/bin/tcsh;

    usermod -s /bin/tcsh slackware
    ----------------------------------------
    [root@localhost ~]# usermod -s /bin/tcsh slackware
    ----------------------------------------
    校验: cat /etc/passwd | grep slackware
    ----------------------------------------
    [root@localhost ~]# cat /etc/passwd | grep slackware
    slackware:x:2002:2016::/home/slackware:/bin/tcsh
    ----------------------------------------
    

    为用户slackware新增附加组admins;

    groupadd admins
    usermod -G admins slackware
    ----------------------------------------
    [root@localhost ~]# groupadd admins
    [root@localhost ~]# usermod -G admins slackware
    ----------------------------------------
    校验: id slackware
    ----------------------------------------
    [root@localhost ~]# id slackware
    uid=2002(slackware) gid=2016(distro) groups=2016(distro),2019(admins)
    ----------------------------------------
    

    相关文章

      网友评论

        本文标题:linux用户管理命令使用及bash特性示例

        本文链接:https://www.haomeiwen.com/subject/awiixftx.html