服务器之家:专注于服务器技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Linux - Linux 创建修改删除用户和组的方法

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

2022-02-28 17:20pursuer.chen Linux

这篇文章主要介绍了Linux 创建修改删除用户和组的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

介绍

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

用户信息

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

?
1
2
3
4
5
6
7
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

密码信息

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

?
1
2
[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年换算过来的数字

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

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

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

创建用户

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
-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

?
1
2
3
4
5
6
7
8
[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日进行换算)、指定用户的过期天数

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

3.创建系统用户old

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

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

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

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

 5.指定用户家目录

先创建用户家目录

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

创建用户并指定家目录

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

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

?
1
2
3
4
5
[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 ~]#

删除用户

?
1
userdel [options] login

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

1.不加参数删除用户

?
1
userdel testuser

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

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

?
1
userdel -r test

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

用户组

创建用户组

?
1
groupadd groupname

删除用户组

?
1
groupdel groupname

修改用户组

?
1
2
3
4
5
--修改用户组名
groupmod -h newname oldname
 
--修改用户组id
groupmod -g newgid oldgid

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

总结

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

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

原文链接:https://www.cnblogs.com/chenmh/p/5459359.html

延伸 · 阅读

精彩推荐
  • LinuxLinux常用的日志文件和常用命令

    Linux常用的日志文件和常用命令

    成功地管理任何系统的关键之一,是要知道系统中正在发生什么事。 Linux 中提供了异常日志,并且日志的细节是可配置的。Linux 日志都以明文形式存储,所...

    Linux教程网2632020-04-18
  • LinuxLinux上设置用户通过SFTP访问目录的权限的方法

    Linux上设置用户通过SFTP访问目录的权限的方法

    这篇文章主要介绍了Linux上设置用户通过SFTP访问目录的权限的方法,SFTP可以理解为使用SSH协议进行FTP传输的协议,因而同时要对OpenSSH进行相关设置,需要的朋...

    OSChina10022019-06-19
  • Linuxlinux中rmdir命令使用详解(删除空目录)

    linux中rmdir命令使用详解(删除空目录)

    今天学习一下linux中命令: rmdir命令。rmdir是常用的命令,该命令的功能是删除空目录,一个目录被删除之前必须是空的 ...

    linux命令大全5372019-11-19
  • Linux详解Linux系统下PXE服务器的部署过程

    详解Linux系统下PXE服务器的部署过程

    这篇文章主要介绍了Linux系统下PXE服务器的部署过程,包括对PXE的API架构作了一个基本的简介,需要的朋友可以参考下...

    运维之道9812019-07-04
  • Linux确保Linux系统安全的前提条件 漏洞防护

    确保Linux系统安全的前提条件 漏洞防护

    Linux 作为开放式的操作系统受到很多程序员的喜爱,很多高级程序员都喜欢编写Linux操作系统的相关软件。这使得Linux操作系统有着丰富的软件支持,还有无...

    Linux之家2642020-04-11
  • LinuxLinux中环境变量配置的步骤详解

    Linux中环境变量配置的步骤详解

    Linux中环境变量包括系统级和用户级,系统级的环境变量是每个登录到系统的用户都要读取的系统变量,而用户级的环境变量则是该用户使用系统时加载的...

    Myths7882022-02-10
  • LinuxLinux lnmp下无法使用mail发邮件的两种解决方法

    Linux lnmp下无法使用mail发邮件的两种解决方法

    在配置了lnmp环境后,出现了mail函数不能发送邮件的问题,其实有两种方法,一是使用sendmail组件,而是使用postfix。下面为大家一一介绍下 ...

    Linux之家4042019-09-17
  • Linux手把手教您在 Linux 上使用 GPG 加解密文件

    手把手教您在 Linux 上使用 GPG 加解密文件

    在本教程中,我将告诉你如何用 GPG 加密和解密文件。这是一个简单的教程,你可以在你的 Linux 系统上尝试所有的练习。这将帮助你练习 GPG 命令,并在你...

    Linux中国6962021-12-15