第三周

1、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录

ls -a /etc/[^[:alpha:]][[:alpha:]]*

2、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。

[root@centos7 ~]# mkdir /tmp/mytest1
[root@centos7 ~]# cp -a /etc/p*[^[:digit:]] /tmp/mytest1/
[root@centos7 ~]# ls /tmp/mytest1
pam.d      pbm2ppa.conf  pm            ppp             profile.d  python
papersize  pinforc       pnm2ppa.conf  prelink.conf.d  protocols
passwd     pki           popt.d        printcap        pulse
passwd-    plymouth      postfix       profile         purple

3、将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中

[root@centos7 ~]# cat /etc/issue
\S
Kernel \r on an \m
[root@centos7 ~]# cat /etc/issue | tr 'a-z' 'A-Z' > /tmp/issue.out
[root@centos7 ~]# cat /tmp/mytest1
\S
KERNEL \R ON AN \M

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

  • 用户管理命令

    • useradd

      useradd [options] LOGIN

      • -u UID

        # 创建user1用户,并指定uid为2000
        [root@centos7 ~]# useradd -u 2000 user1
        [root@centos7 ~]# id user1
        uid=2000(user1) gid=2000(user1) groups=2000(user1)
        
      • -o 配合-u 选项,不检查UID的唯一性

        # 创建一个uid为0的用户router,因为系统已经存在uid为0的用户root,所以不让创建
        [root@centos7 ~]# useradd -u 0 rooter
        useradd: UID 0 is not unique
        # 使用“-o”选项,不检查UID的唯一性,创建rooter成功
        [root@centos7 ~]# useradd -u 0 -o rooter
        [root@centos7 ~]# id rooter
        uid=0(root) gid=0(root) groups=0(root)
        
      • -g GID 指明用户所属基本组,可为组名,也可以GID

        # 创建一个组“admins”
        [root@centos7 ~]# groupadd admins
        
        # 创建一个新用户“alice”,可以看到如果不指定组,则会新创建一个“alice组”,“alice用户”也属于“alice组”
        [root@centos7 ~]# useradd alice
        [root@centos7 ~]# id alice
        uid=1004(alice) gid=1006(alice) groups=1006(alice)
        
        # 新添加一个用户“tom”,并指定主组为“admins”
        [root@centos7 ~]# useradd tom -g admins
        [root@centos7 ~]# id tom
        uid=1005(tom) gid=1005(admins) groups=1005(admins)
        
      • -c "COMMENT“ 用户的注释信息

        [root@centos7 ~]# useradd -c 'test' test
        [root@centos7 ~]# getent passwd test
        test:x:1010:1012:test:/home/test:/bin/bash
        
      • -d HOME_DIR 以指定的路径(不存在)为家目录

        # 新建用户jerry,并指定/data/jerryhome为家目录
        [root@centos7 ~]# useradd -d /data/jerryhome jerry
        [root@centos7 ~]# getent passwd jerry
        jerry:x:1008:1010::/data/jerryhome:/bin/bash
        
        [root@centos7 ~]# ll -d /data/jerryhome
        drwx------ 3 jerry jerry 78 May  2 12:19 /data/jerryhome
        
      • -s SHELL 指明用户的默认shell程序,可用列表在/etc/shells文件中

        # 创建“http”系统用户,并指定shell为/sbin/nologin
        [root@centos7 ~]# useradd -r -s /sbin/nologin http
        [root@centos7 ~]# getent passwd http
        http:x:987:981::/home/http:/sbin/nologin
        
      • -G GROUP1[,GROUP2,...] 为用户指明附加组,组须事先存在

        # 创建两个组“g1”,“g2”
        [root@centos7 ~]# groupadd g1
        [root@centos7 ~]# groupadd g2
        # 创建用户“jack”,并指定主组为“admins”,附加组为“g1”和“g2”组
        [root@centos7 ~]# useradd -g admins -G g1,g2 jack
        [root@centos7 ~]# id jack
        uid=1006(jack) gid=1005(admins) groups=1005(admins),1007(g1),1008(g2)
        
      • -N 不创建私用组做主组,使用users组做主组,users组系统默认存在,类似于windows的用法

        # 在创建“rose”用户时,不创建和用户同名的组,此时“rose”用户就属于“users”组
        [root@centos7 ~]# useradd rose -N
        [root@centos7 ~]# id rose
        uid=1007(rose) gid=100(users) groups=100(users)
        
      • -r 创建系统用户 CentOS 6: ID<500,CentOS 7: ID<1000,不会创建用户家目录

        # 创建系统账户dog,可以看到uid是985,小于1000,并且默认不会创建家目录
        [root@centos7 ~]# useradd -r dog
        [root@centos7 ~]# getent passwd dog
        dog:x:985:979::/home/dog:/bin/bash
        [root@centos7 ~]# ll -d /home/dog
        ls: cannot access /home/dog: No such file or directory
        
      • -m 创建家目录,用于系统用户

        # 创建系统账户默认不会创建家目录,使用-m参数强制创建
        [root@centos7 ~]# useradd -r -m kat
        [root@centos7 ~]# getent passwd kat
        kat:x:986:980::/home/kat:/bin/bash
        [root@centos7 ~]# ll -d /home/kat
        drwx------ 3 kat kat 78 May  2 12:25 /home/kat
        
      • -M 不创建家目录,用于非系统用户

        # 创建xiaoming用户,指定小明的家目录为/data/xiaoming,但是不实际创建家目录
        [root@centos7 ~]# useradd -d /data/xiaoming -M xiaoming
        
        # 可以看到passwd中xiaoming用户显示家目录为/data/xiaoming,但是并没有实际创建
        [root@centos7 ~]# getent passwd xiaoming
        xiaoming:x:1009:1011::/data/xiaoming:/bin/bash
        [root@centos7 ~]# ll -d /data/xiaoming
        ls: cannot access /data/xiaoming: No such file or directory
        
      • 默认值设定:/etc/default/useradd

        # 创建用户时的默认设置在/etc/default/useradd文件中
        [root@centos7 ~]# cat /etc/default/useradd 
        # useradd defaults file
        GROUP=100                 # 100就是users组,不创建用户组时默认属于users组
        HOME=/home                # 新用户家目录默认在/home目录下
        INACTIVE=-1               # 密码失效日,在shadow内的第7栏,-1代表永久不会失效
        EXPIRE=                   # 账号失效日,在shadow内的第8栏,默认为空代表永不过期
        SHELL=/bin/bash           # 新用户默认使用的shell类型是/bin/bash
        SKEL=/etc/skel            # 在新建用户时会把/etc/skel目录下的文件拷贝到新用户的家目录
        CREATE_MAIL_SPOOL=yes     # 是否在/var/spool/mail/目录下创建一个同名的邮件目录
        
      • 显示或更改默认设置

        • useradd -D
        • useradd –D -s SHELL
        • useradd –D –b BASE_DIR
        • useradd –D –g GROUP
        # 修改默认的shell为/sbin/nologin
        [root@centos7 ~]# useradd -D -s /sbin/nologin
        # 修改默认的家目录为/data
        [root@centos7 ~]# useradd -D -b /data
        # 修改默认用户组为1000
        [root@centos7 ~]# useradd -D -g 1000
        # 使用useradd -D查看所有默认的内容,文件/etc/default/useradd也已经被修改了
        [root@centos7 ~]# useradd -D
        GROUP=1000
        HOME=/data
        INACTIVE=-1
        EXPIRE=
        SHELL=/sbin/nologin
        SKEL=/etc/skel
        CREATE_MAIL_SPOOL=yes
        
    • usermod

      • usermod [OPTION] login

      • -u UID: 新UID

      • -g GID: 新主组

        # 修改jack用户的主组,从admins组,修改为wang组
        [root@centos7 ~]# id jack
        uid=1006(jack) gid=1005(admins) groups=1005(admins),1007(g1),1008(g2)
        [root@centos7 ~]# usermod -g wang jack
        [root@centos7 ~]# id jack
        uid=1006(jack) gid=2001(wang) groups=2001(wang),1007(g1),1008(g2)
        
      • -G GROUP1[,GROUP2,...[,GROUPN]]]:新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项

        [root@centos7 ~]# id jack
        uid=1006(jack) gid=2001(wang) groups=2001(wang),1007(g1),1008(g2)
        
        # 直接使用-G参数,是替换了原来的所有附加组
        [root@centos7 ~]# usermod -G root jack
        [root@centos7 ~]# id jack
        uid=1006(jack) gid=2001(wang) groups=2001(wang),0(root)
        
        # 使用-a参数配合G,在原有的基础上添加附加组
        [root@centos7 ~]# usermod -aG g1,g2 jack
        [root@centos7 ~]# id jack
        uid=1006(jack) gid=2001(wang) groups=2001(wang),0(root),1007(g1),1008(g2)
        
      • -s SHELL:新的默认SHELL

        # 把jack用户的shell更改为/sbin/nologin
        [root@centos7 ~]# getent passwd jack
        jack:x:1006:2001::/home/jack:/bin/bash
        [root@centos7 ~]# usermod -s /sbin/nologin jack
        [root@centos7 ~]# getent passwd jack
        jack:x:1006:2001::/home/jack:/sbin/nologin
        
      • -c 'COMMENT':新的注释信息

      • -d HOME: 新家目录不会自动创建;若要创建新家目录并移动原家数据,同时使用-m选项

        # 更改www用户的主目录为/data/www,并移动原家目录的数据
        # m必须写在d的前面
        [root@centos7 ~]# usermod -md  /data/www www
        [root@centos7 ~]# ll -d /data/www
        drwx------ 3 www www 78 May  2 17:45 /data/www
        [root@centos7 ~]# ll -d /home/www
        ls: cannot access /home/www: No such file or directory
        
      • -l login_name: 新的名字

      • -L: lock指定用户,在/etc/shadow 密码栏的增加 !

      • -U: unlock指定用户,将 /etc/shadow 密码栏的 ! 拿掉

        # 锁定mage用户,在shadow中查看mage,在密码前多了!,此时mage用户不能登录
        [root@centos7 ~]# usermod -L mage
        [root@centos7 ~]# getent shadow mage
        mage:!$6$0T9u5gTE$iRMx5y5F9SHODShIt8a.i4y3GpUEqW8Y12GgcxCNkhzWIQPMcOKiMtVonvWlqXg1CmWoG4AXB6fjM8ZoN/gEt.:18384:0:60:7:10:18555:
        
        # 解锁之后,可以看到密码前没有了!
        [root@centos7 ~]# usermod -U mage
        [root@centos7 ~]# getent shadow mage
        mage:$6$0T9u5gTE$iRMx5y5F9SHODShIt8a.i4y3GpUEqW8Y12GgcxCNkhzWIQPMcOKiMtVonvWlqXg1CmWoG4AXB6fjM8ZoN/gEt.:18384:0:60:7:10:18555:
        
      • -e YYYY-MM-DD: 指明用户账号过期日期

      • -f INACTIVE: 设定非活动期限

    • userdel

      • userdel [OPTION]... login
      • -r: 删除用户家目录
      # 使用userdel删除用户,只会删除用户和对应的组,但是家目录和邮箱目录等不会被删除
      [root@centos7 ~]# id test
      uid=1010(test) gid=1012(test) groups=1012(test)
      [root@centos7 ~]# userdel test
      [root@centos7 ~]# ll -d /home/test
      drwx------ 3 1010 1012 78 May  2 12:31 /home/test
      
      # 使用-r参数,可以把家目录和邮箱目录也一起删除
      [root@centos7 ~]# userdel -r alice
      [root@centos7 ~]# ll -d /home/alice
      ls: cannot access /home/alice: No such file or directory
      
    • passwd

      passwd [OPTIONS] UserName: 修改指定用户的密码

      常用选项:

      • -d:删除指定用户密码

        [root@centos7 ~]# passwd -d mage
        Removing password for user mage.z
        passwd: Success
        
      • -l:锁定指定用户

      • -u:解锁指定用户

      • -e:强制用户下次登录修改密码

      • -f:强制操作

      • -n mindays:指定最短使用期限

      • -x maxdays:最大使用期限

      • -w warndays:提前多少天开始警告

      • -i inactivedays:非活动期限

        # 设置mage用户60天内必须修改密码,密码有效期10天
        [root@centos7 ~]# passwd -x 60 -i 10 mage
        Adjusting aging data for user mage.
        passwd: Success
        [root@centos7 ~]# getent shadow mage
        mage::18384:0:60:7:10:18555:
        
      • --stdin:从标准输入接收用户密码

        [root@centos7 ~]# echo magedu | passwd --stdin mage
        Changing password for user mage.
        passwd: all authentication tokens updated successfully.
        
  • 组帐号维护命令

    • groupadd

      groupadd [OPTION]... group_name

      • -g GID 指明GID号;[GID_MIN, GID_MAX]

      • -r 创建系统组 CentOS 6: ID<500 CentOS 7: ID<1000

      # 创建普通组group1和系统组group2
      [root@centos7 ~]# groupadd group1
      [root@centos7 ~]# groupadd -r group2
      
      # group1的gid为2022,group2的gid为978
      [root@centos7 ~]# getent group group1 group2
      group1:x:2022:
      group2:x:978:
      
    • groupmod

      组属性修改:groupmod

      groupmod [OPTION]... group

      • -n group_name: 新名字

      • -g GID: 新的GID

      # 把group1改名为newgroup
      [root@centos7 ~]# groupmod -n newgroup group1
      
      [root@centos7 ~]# getent group newgroup group1
      newgroup:x:2022:
      
      
    • groupdel

      • groupdel GROUP

(1)、创建组distro,其GID为2019;

[root@centos7 ~]# groupadd -g 2019 distro 
[root@centos7 ~]# getent group distro
distro:x:2019:

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

[root@centos7 ~]# useradd -u 1005 -g distro mandriva
[root@centos7 ~]# id mandriva
uid=1005(mandriva) gid=2019(distro) groups=2019(distro)

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

[root@centos7 ~]# 
[root@centos7 ~]# useradd -u 1100 -d /home/linux mageia
[root@centos7 ~]# getent passwd mageia
mageia:x:1100:1100::/home/linux:/bin/bash

(4)、给用户mageia添加密码,密码为mageedu,并设置用户密码7天后过期

[root@centos7 ~]# echo mageedu | passwd mageia --stdin
[root@centos7 ~]# passwd -x 7 mageia 
[root@centos7 ~]# getent shadow mageia
mageia:$6$uvbwtHRv$I.Z9VrCCBzQCFlicGFhnPg0/ucUes7StUFe.to1gde38wROxY3SQ2AdoojCYt4/7ylT.DTFkd.ePX6OzRTACU0:18384:0:7:7:::

(5)、删除mandriva,但保留其家目录;

[root@centos7 ~]# userdel mandriva
[root@centos7 ~]# ll -d /home/mandriva
drwx------ 3 1005 distro 78 May  2 14:38 /home/mandriva

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

[root@centos7 ~]# groupadd peguin
[root@centos7 ~]# useradd -u 2002 -g distro -G peguin slackware
[root@centos7 ~]# id slackware
uid=2002(slackware) gid=2019(distro) groups=2019(distro),2020(peguin)

(7)、修改slackware的默认shell为/bin/tcsh;

[root@centos7 ~]# usermod -s /bin/tcsh slackware
[root@centos7 ~]# getent passwd slackware
slackware:x:2002:2019::/home/slackware:/bin/tcsh

(8)、为用户slackware新增附加组admins;

[root@centos7 ~]# groupadd admins
[root@centos7 ~]# usermod -aG admins slackware
[root@centos7 ~]# id slackware
uid=2002(slackware) gid=2019(distro) groups=2019(distro),2020(peguin),2021(admins)
上一篇:用户和用户组管理-用户管理命令-useradd


下一篇:linux创建新用户