Linux 创建修改删除用户和组的方法

介绍

在日常的维护过程中创建用户操作用的相对会多一些,但是在这个过程中涉及到的知识点就不单单就是useradd了,接下来就来详细了解账号管理的相关信息。

用户信息

先从用户信息开始分析,可以通过查询/etc/password文件,每一行代表一个用户信息

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

mysql:x:496:501::/home/mysql:/bin/bash

每个冒号分隔一部分,整行总共分为7个部分。

1.用户名

2.用户密码,早期版本的账号密码是直接存在这里,为了兼容所以也保留下了这部分,用X代替。

3.UID:所属的用户ID,每个文件的前面都有该文件所属的用户和组,其实存的是UID只不过是通过UID再去etc/password、/etc/shadow中找到对应的UID和GID的名称。

超级用户的uid=0

系统用户(1-499):其中1-99是系统创建的,100-499是用户创建的系统账户,系统用户不能登入但是可以执行系统的一些命令,这个跟最后指定的shell有关;有一个特殊的shell是/sbin/nologin

普通用户(500-65535)

4.GID:账号所属的用户组ID,和/etc/group组文件有关联

5.用户描述

6.用户的家目录:创建用户的家目录默认是在/home/用户/,在创建用户的时候可以指定用户的家目录,系统用户的家目录比较特殊,比如root用户的家目录是/root

7.shell:shell是终端和kernel(内核)沟通的桥梁、内核再和低层的硬件交互(包括CPU、主板、硬盘、显卡、光驱等),linux默认的shell是/bin/bash

密码信息

用户密码文件中每一行记录一个用户的密码信息,总共有九个部分

[root@localhost ~]# cat /etc/shadow
root:$1$4/CBv0UU$GZ1mEvqxy6/9UaTGI9YUT0:16862:0:99999:7:::

1.用户名:对应/etc/password文件中的用户信息

2.密码:密码存的是密文

3.最近更改密码的日期:linux将1970年1月1日作为1,所以上面的16862是累加的,具体就不去算了

4.密码不可被更改的天数:0代表密码随时可以被更改,通常可以用来设置某个用户在多少天密码不能被更改

5.密码需要重新更改的天数:99999为273年,改时间是在第3部分的基础上再相加的。

6.密码需要修改前的警告天数:改天数是在第5的基础上计算的,这里默认是7天也就是密码在需要更改前的第7天开始就发出警告。

7.密码过期后账号宽限的天数:当密码超过了需要更改的天数后,如果用户依然没有更改密码,那么该密码就过期了,在过期的这几天里密码依旧可以登入当用户在宽限的时间内登入系统系统会强制用户修改密码,如果用户在宽限的天内还未修改密码那么密码就永久过期无法再登入,只有账户超出了密码过期的天数之后账户才失效,所以一个账户总的有效时间是3+6+7。

8.用户失效的日期:改日期同第3部分一样都是从1970年1月1日开始计算出来的数字,超过这个日期之后无论用户密码是否过期用户都失效不能再使用,改日期通常会用在规定一个用户在规定的日期之后就用户就不能使用的收费系统中。

9.保留部分

计算当前日期通过1970年换算过来的数字

[root@localhost ~]# echo $(($(date +'%s')/86400+1))
16927

计算指定日期通过1970年换算过来的数字

[root@localhost ~]# echo $(($(date --date="2016-01-01" +'%s')/86400+1))
16802

创建用户

明白了上面的概念之后就可以来创建用户了,创建用户的命令是useradd,接下来看几个主要的参数。

useradd [-u UID] [-g 初始群组] [-G 次要群组] [-m\M] [-c 说明] [-d 家目录绝对路径] [-s shell] 账号名

 -c, --comment COMMENT     用户说明
 -d, --home-dir HOME_DIR    用户的家目录
 -D, --defaults        默认的用户配置
 -e, --expiredate EXPIRE_DATE 用户的失效日期,这里需要指定的是从1970年1月1日开始计算出来的数字,比如16925代表2016年5月4日过期,对应密码文件的第8部分
 -f, --inactive INACTIVE    指定密码过期的时间,这里指定的是数字,比如10代表密码在过期的10天内还可以登入但是登入后需要强制修改密码, 对应密码文件的第7部分
 -g, --gid GROUP        用户的GID
 -G, --groups GROUPS      列出用户还能加人的组、次要组
 -h, --help          帮助信息
 -k, --skel SKEL_DIR      use this alternative skeleton directory
 -K, --key KEY=VALUE      override /etc/login.defs defaults
 -l, --no-log-init       do not add the user to the lastlog and
                faillog databases
 -m, --create-home       强制需要创建家目录
 -M, --no-create-home     强制不创建家目录
 -N, --no-user-group      不创建用户的组名和用户名一样
 -o, --non-unique       允许创建的用户uid相同,默认情况下用户的UID是唯一的,加上-o参数可以创建相同UID的不用用户
 -p, --password PASSWORD    指定创建用户的密码,这里的密码存储的是密文,所以还需要知道密文对应的明文密码是多少
 -r, --system         创建一个系统用户
 -s, --shell SHELL       指定用户的shell
 -u, --uid UID         指定用户的uid
 -U, --user-group       创建的用户组名同用户名,这是默认的
 -Z, --selinux-user SEUSER   use a specific SEUSER for the SELinux user mapping

1.创建用户test

创建用户不加参数默认会创建一个同名的用户组、密码为空,用户的UID和GID都是500之后在现有的UID和GID的基础上往后自动添加、默认会创建一个同名的家目录家目录的默认权限是700

[root@localhost ~]# useradd test
[root@localhost ~]# grep test /etc/passwd /etc/shadow /etc/group
/etc/passwd:test:x:501:502::/home/test:/bin/bash
/etc/shadow:test:!!:16925:0:99999:7:::
/etc/group:test:x:502:

 [root@localhost ~]# ll -d /home/test
 drwx------. 4 test test 4096 May 4 16:25 /home/test

2.创建用户new备注用户为test,指定用户UID为600,用户的组初始组为test、用户的次要组为mysql,指定用户的失效日期(注意这里的失效日期也是需要通过1970年1月1日进行换算)、指定用户的过期天数

3.创建系统用户old

创建的系统用户虽然在用户文件中有指定家目录,但是实际上在home目录下并不会创建对应用户的目录,且不会创建用户邮件通知目录。

4.创建不允许登入的用户

5.指定用户家目录

先创建用户家目录

[root@localhost ~]# mkdir -p /test/home
[root@localhost ~]# mkdir /test/home/testuser

创建用户并指定家目录

[root@localhost ~]# useradd -d /test/home/testuser testuser
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.

注意:这里的家目录是绝对路径,也就是你指定了那个目录家目录就是哪个目录不会在你指定的目录下再创建目录,这里会有警告说用户不能拷贝文件到家目录,因为家目录的权限还是之前创建目录用户的权限,这个时候需要给家目录赋予用户拥有者。

[root@localhost ~]# chown testuser:testuser /test/home/testuser
[root@localhost ~]# ll /test/home
total 4
drwxr-xr-x. 2 testuser testuser 4096 May 5 06:22 testuser
[root@localhost ~]# 

删除用户

userdel [options] LOGIN

-f, --force                   强制删除用户,不管该用户是否在使用                            
  -h, --help                    帮助信息
  -r, --remove                  删除用户和组并且删除用户的家目录和邮件通知目录
  -Z, --selinux-user            删除SELinux用户

1.不加参数删除用户

userdel testuser

不加参数删除只会删除用户、密码、用户组,不会删除用户的家目录和用户的邮件目录

2.删除用户同时删除用户的家目录和邮件通知目录

userdel -r test

使用-r参数删除用户会同时删除用户的家目录和用户的邮件通知目录,如果用户的用户组是使用其它用户的用户组,其它用户组不会被删除。

用户组

创建用户组

groupadd groupname

删除用户组

groupdel groupname

修改用户组

--修改用户组名
groupmod -h newname oldname

--修改用户组ID
groupmod -g newgid oldgid

单独对用户组的操作用的不会很多,这里只需要了解一下就好。

总结

修改用户这里就不做详细的解释,跟创建用户的语法相差不大,

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • linux 用户和组命令整理及详细介绍

    1.列出当前系统上所有已经登录的用户名,注意:同一个用户登录多次,则只显示一次即可. [root@node2 ~]# who root pts/0 2016-10-08 13:28 (10.106.64.41) root pts/1 2016-10-08 13:44 (10.106.64.41) root pts/2 2016-10-08 14:22 (10.106.65.82) root pts/3 2016-10-08 14:22 (10.106.65.82) root pts/4 2016

  • 详解Linux添加/删除用户和用户组

    本文总结了Linux添加或者删除用户和用户组时常用的一些命令和参数.废话不多说,下面我们来看一下. 1.建用户: adduser phpq                             //新建phpq用户 passwd phpq                               //给phpq用户设置密码 2.建工作组 groupadd test                          //新建test工作组 3.新建用户同时增加工作组 useradd -g te

  • linux查看所有用户和查看用户组的方法(修改用户组)

    1.linux里查看所有用户 (1)在终端里.其实只需要查看 /etc/passwd文件就行了.(2)看第三个参数:500以上的,就是后面建的用户了.其它则为系统的用户. 或者用cat /etc/passwd |cut -f 1 -d : 2.用户管理命令 useradd 注:添加用户adduser 注:添加用户passwd 注:为用户设置密码usermod 注:修改用户命令,可以通过usermod 来修改登录名.用户的家目录等等:pwcov 注:同步用户从/etc/passwd 到/etc/s

  • 在Linux上如何检查用户所属组详解

    前言 将用户添加到现有组是 Linux 管理员的常规活动之一.这是一些在大环境中工作的管理员的日常活动. 甚至我会因为业务需求而在我的环境中每天都在进行这样的活动.它是帮助你识别环境中现有组的重要命令之一. 此外,这些命令还可以帮助你识别用户所属的组.所有用户都列在 /etc/passwd 中,组列在 /etc/group 中. 无论我们使用什么命令,都将从这些文件中获取信息.此外,每个命令都有其独特的功能,可帮助用户单独获取所需的信息. 什么是 /etc/passwd? /etc/passwd

  • Linux操作系统下关于用户和组的配置管理指南

    用户管理,主要的工作就是建立一个合法的用户帐户.设置和管理用户的密码.修改用户帐户的属性以及在必要时删除已经废弃的用户帐号. 1. 增加一个新用户 在Linux系统中,只有root用户才能够创建一个新用户,如下的命令将新建一个登录名user1的用户. # useradd user1 但是,这个用户还不能够登录,因为还没给它设置初始密码,而没有密码的用户是不能够登录系统的.在默认情况下,将会在/home目录下新建一个与用户名相同的用户主目录.如果需要另外指定用户主目录的话,那么可以使用如下命令:

  • Linux中把用户添加到组的4个方法总结

    前言 Linux 组是用于管理 Linux 中用户帐户的组织单位.对于 Linux 系统中的每一个用户和组,它都有惟一的数字标识号.它被称为 用户 ID(UID)和组 ID(GID).组的主要目的是为组的成员定义一组特权.它们都可以执行特定的操作,但不能执行其他操作. Linux 中有两种类型的默认组.每个用户应该只有一个 主要组 primary group  和任意数量的 次要组 secondary group  . • 主要组: 创建用户帐户时,已将主要组添加到用户.它通常是用户的名称.在执

  • linux 查找过滤及用户和组管理命令的一些实例

    1.列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可. ~]# who | cut -d' ' -f1 | sort | uniq 2.列出最后登录到当前系统的用户的相关信息. ~]# last | head -1 3.列出当前系统上被用户当作其默认shell的最多的那个shell. ~]# cut -d: -f7 /etc/passwd | uniq -c | sort -n | tail -1 4.将/etc/passwd中的第三个字段数值最大的后10个用

  • Linux 无法使用userdel 删除用户和组的解决方案

    Linux 无法使用userdel 删除用户和组的解决方案 简述: 今天在看书的时候,看到有个实例,手痒痒的跟着做了起来...但是,出现问题了..测试的用户和组不能删除.. 情况: 一般我们移除,都是先把用户从组中删除,再依次把组干掉的...但是问题出现了.. root@crper-Aspire-5755G:/home/crper# userdel -r test1 userdel: user test1 is currently used by process 1 root@crper-Asp

  • Linux基础之正则表达式,用户、组管理命令介绍

    通配符(Globbing) 通配符与元字符类似,通配符主要用于文件名的匹配,而元字符则主要用在字符串的匹配上: 下面介绍几种常用的通配符: * 表示匹配任意位数的任意字符 ? 表示匹配一位任意字符 ^ 表示取反,不包含的意思 [] 表示此区间内的任意一个字符 {} 表示一种集合 \ 转义字符,使具有特殊意义的字符失去原有意义 | 表示'或',匹配一组可选的字符 元字符 元字符是用来描述字符的特殊字符. 常用的元字符及意义如下: * 重复前面的字符0次或者多次 . 匹配任意字符一次 \+ 匹配前面

  • Linux 创建修改删除用户和组的方法

    介绍 在日常的维护过程中创建用户操作用的相对会多一些,但是在这个过程中涉及到的知识点就不单单就是useradd了,接下来就来详细了解账号管理的相关信息. 用户信息 先从用户信息开始分析,可以通过查询/etc/password文件,每一行代表一个用户信息 root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin mysql:x:496:501::/

  • Linux下完全删除用户的两种方法

    Linux操作 实验环境:Centos7虚拟机 首先创建一个普通用户 gubeiqing . [root@localhost ~]# useradd gubeiqing [root@localhost ~]# passwd gubeiqing Changing password for user gubeiqing. New password: BAD PASSWORD: The password is a palindrome Retype new password: passwd: all

  • mysql8创建、删除用户以及授权、消权操作详解

    目录 1.登录mysql 2.先查询都有哪些用户 3.删掉用户: 4.创建用户 5.修改密码 6.授权 7.刷新权限 8.查看用户授权 9.撤销用户授权(销权) 补充:mysql8.0 创建用户和授权用户遇到的坑 总结 1.登录mysql mysql -uroot -p 2.先查询都有哪些用户 select host,user from mysql.user; 红色箭头是主管理员,黄色箭头是mysql系统自带的,不要动它.蓝色箭头是子用户,这个是我以前匹配的,现在删掉,我们重新来. 3.删掉用户

  • Linux下Oracle删除用户和表空间的方法

    本文实例讲述了Linux下Oracle删除用户和表空间的方法.分享给大家供大家参考,具体如下: 1.删除某个用户 SQL> conn /as sysdba Connected. SQL> drop user userName cascade; 用户已删除 如果用户无法删除,并报错: ERROR at line 1: ORA-01940: cannot drop a user that is currently connected 通过查看用户的进行,并kill用户进程,然后删除用户. SQL&

  • 在Linux下修改和重置root密码的方法(超简单)

    刚开始接触Linux的人,忘记了root密码可能会不知所措.想找回自己的root密码,但是又不知道方法.其实,只需要简单的几步就可以重置自己的root密码了(找回密码我也不会) 1.开机之后在内核上敲击e,然后编辑选项 2.在linux16这一行,将红框内的内容改成rw rd.break 根据提示,使用组合键CTRL+X进入密码修改 3.进入到系统的紧急求援模式 4.依次输入以下的命令 # chroot /sysroot //进入系统的根目录 # passwd //重置密码 # touch /.

  • 浅谈Linux下修改/设置环境变量JAVA_HOME的方法

    1. 永久修改,对所有用户有效 # vi /etc/profile //按键盘[Shift + g], 在profile文件最后添加下面的内容: JAVA_HOME=/usr/local/java/jdk1.7.0_25 JRE_HOME=$JAVA_HOME/jre CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar PATH=$JAVA_HOME/bin:$PATH export PATH JAVA_HOME JRE_HOME C

  • Linux下修改Oracle监听地址的方法

    lisenter.ora 目录在 /opt/oracle/11g/network/admin LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.111.123)(PORT = 1521)) ) ) ADR_BASE_LISTENER = /opt/oracle tnsnames.o

  • linux下批量删除utf8 bom的实现方法

    低版本的gcc编译包含bom的文件会报错 xxx.cpp:1: error: stray '\357' in program xxx.cpp:1: error: stray '\273' in program xxx.cpp:1: error: stray '\277' in program 批量删除之 grep -rIlo $'^\xEF\xBB\xBF' . | xargs sed --in-place -e 's/\xef\xbb\xbf//' 在文件末尾增加空白行 find . -nam

  • Laravel中基于Artisan View扩展包创建及删除应用视图文件的方法

    本文实例讲述了Laravel中基于Artisan View扩展包创建及删除应用视图文件的方法.分享给大家供大家参考,具体如下: 1.简介 本扩展包添加了两个视图相关的Artisan命令到Laravel应用,以便我们通过Artisan命令即可创建和管理视图文件,可谓是进一步解放了生产力. 2.安装 还是通过Composer安装: composer require sven/artisan-view 安装完成后到config/app.php中注册服务提供者ArtisanViewServiceProv

随机推荐