热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux:基础——用户

文章目录账户及组的概念**用户:**创建账户及组useraddgroupaddid删除账户及组userdelgroupdel修改账户及组passwdgpasswdne

文章目录

    • 账户及组的概念
    • **用户:**
    • 创建账户及组
        • useradd
        • groupadd
        • id
    • 删除账户及组
        • userdel
        • groupdel
    • 修改账户及组
        • passwd
        • gpasswd
        • newgrp
        • usermod
        • groupmod
    • 用户身份切换
        • su
        • sudo
    • 账户与组文件解析
        • 账户信息文件
        • 账户密码文件
        • 组账户信息文件
        • 组账户密码文件


账户及组的概念


  • Linux系统对账户与组的管理是通过ID号来实现的,我们在登陆系统时,输入用户名与对应的密码,后台系统会将用户名转化为ID号后在判断该账户是否存在,并对比密码是否匹配

  • Linux中,用户ID号被称为UID,组ID称为GID

  • 1~499之间的ID号系统会预留下来,这样我们创建的普通用户ID号会从500开始算起

  • Linux的组有基本组与附加组之分,一个用户只可以加入一个基本组中,但可以同时加入多个附加组,创建用户时,系统默认会自动创建同名的组,并设置用户加入该基本组中


用户:

超级用户:UID为0,GID也为0;root用户

系统用户:UID为201-999;用来管理和运行服务,系统用户的shell为/sbin/nologin,不让该用户登录

**一般用户:**UID为1000-60000;添加一般用户时,系统默认为该用户创建主目录和邮箱(/home/用户名)(/var/mail/用户名)

创建账户及组


useradd


  • 描述:创建新的linux账户

  • 语法:useradd [选项] 用户名称


useradd[选项]用户名说明
-c设置账户描述信息,一般为账户全称
-d设置账户家目录,默认为/home/用户名
-e设置账户的失效日期,格式为 YYYY-MM-DD
-g设置账户的基本组
-G设置账户的附加组,多个附加组中间用逗号隔开
-M不创建账户家目录,一般与-s结合使用
-s设置账户的登陆Shell,默认为bash
-u UID指定账户UID

#创建普通账户redhat
[root@rhel8-3 ~]# useradd redhat#创建无法登陆系统且没有家目录的用户zhangsan
[root@rhel8-3 ~]# useradd -s /sbin/nologin -M zhangsan#创建系统账户名称为admin,全名为 administrator,账户家目录为/home/admin ,账户失效日期为 2020年9月15日,账户基本组为root ,附加组为 bin,adm,mail
[root@rhel8-3 ~]# useradd -c administrator -d /home/admin -e 2020-09-15 -g root -G bin,adm,mail admin

groupadd


  • 描述:创建组账户

  • 用法:groupadd [选项] 组名称


groupadd[选项]组号说明
-g设置组ID号

[root@rhel8-3 ~]# groupadd tom #创建tom组
[root@rhel8-3 ~]# groupadd -g 1001 jerry #创建GID为1001的组jerry

id


  • 描述:显示账户及组信息

  • 语法:id 用户名

[root@rhel8-3 ~]# id redhat
uid=1000(redhat) gid=1000(redhat)=1000(redhat)[root@rhel8-3 ~]# id root
uid=0(root) gid=0(root)=0(root)

删除账户及组


userdel

描述:删除账户及相关文件

语法:userdel [选项] 账户名称

选项:

-r 删除账户及相关文件(家目录)

[root@rhel8-3 ~]# userdel tom #删除账户tom,但是账户的文件不删除
[root@rhel8-3 ~]# userdel -r tom #删除账户tom,并删除相应的家目录

groupdel


  • 描述:删除组账户

  • 语法:groupdel 组名

[root@rhel8-3 ~]# groupdel jerry #删除组jerry

修改账户及组


passwd


  • 描述:更新账户认证信息

  • 用法:passwd [选项] [账户名称]


passwd[选项][账户名称]说明
修改当前用户的密码
用户修改用户密码
-d用户快速清空账户密码,仅root可以使用此选项
-l用户锁定账户,仅root可以使用此选项
-u用户解锁账户
--stdin从文件或管道读取密码

[root@rhel8-3 ~]# passwd #修改当前账户密码
[root@rhel8-3 ~]# passwd tom #修改tom的密码
[root@rhel8-3 ~]# passwd -I tom #锁定账户tom
[root@rhel8-3 ~]# passwd -u tom #解锁账户tom
[root@rhel8-3 ~]# passwd -d tom #清空账户tom的密码 (无密码可登陆系统)
[root@rhel8-3 ~]# echo "123456" | passwd --stdin tom #设置tom的密码为123456

gpasswd


  • 描述:修改组密码

  • 用法:gpasswd [选项] [组名]


gpasswd[选项]组名说明
组名给组添加密码
-r组名删除组密码
-a组名添加用户到组
-d组名将指定用户移出本组(从附加组移除)
-M组名设置组成员列表
-A组名指定组管理员为哪个用户

newgrp


  • 描述:登陆一个新组

  • 用法:newgrp [组名]

  • 退出登录的组:exit


usermod


  • 描述:修改账户信息

  • 语法:usermod [选项] 账户名称


usermod[选项]用户名描述
-d用户名修改账户家目录
-e用户名修改账户失效日期
-g用户名修改账户所属基本组
-G用户名修改账户所属附加组
-s用户名修改账户登陆shell
-u用户名修改账户UID

[root@rhel8-3 ~]# usermod -d /home/tomcat tom #修改tom的家目录,/home/tomcat目录必须存在
[root@rhel8-3 ~]# usermod -s /bin/bash zhangsan #修改zhangsan登陆shell为bash
[root@rhel8-3 ~]# usermod -s /bin/nolongin zhangsan #修改zhangsan为不可登陆
[root@rhel8-3 ~]# usermod -u 1004 tom #修改tom的UID为1004

groupmod


  • 描述:修改组信息

  • 语法:groupmod -n 新组名 -g gid 原组名

选项:

-n 指定新组名

-g 修改gid信息

用户身份切换


su


  • **描述:**切换用户身份的命令。

  • **语法:**su [选项] [-c 命令] [username]


su[选项]说明
切换用户后,使用的是root的环境变量
不加用户,代表切换到root
-切换用户后,使用的是root的环境变量
不加用户,代表切换到root
-l-类似,也是login-shell的方式
不加用户,代表切换到root
-m-m与-p是一样的,表示使用目前的环境变量设置,而不读取新用户的配置文件
-c仅进行一次命令,所以-c后面可以加上命令

#切换到m用户
[root@localhost ~]# su m#切换到m用户
[root@localhost ~]# su - m[m@bogon root]$ su root -c ls /root

su命令的缺点

  • 普通用户必须知道root密码才可以切换到root,这样root密码就泄露了
  • 使用su命令切换身份,无法对切换后的身份做精细的控制

sudo


  • 通过sudo命令,可以将超级管理员的命令授权给普通用户

  • sudo命令相对于su命令来说,在系统用户的分权管理方面进步了很多,从而使系统的安全性方面加强了很多。

$ vim /etc/sudoers## Next comes the main part: which users can run what software on## which machines (the sudoers file can be shared between multiple## systems).## Syntax:#### user MACHINE=COMMANDS#### The COMMANDS section may have other options added to it.#### Allow root to run any commands anywhere#root代表的用户 ALL代表主机=(ALL)以什么身份运行 要执行的命令 root ALL=(ALL) ALL redhat ALL=(ALL) /usr/sbin/useradd xiaohong ALL=(ALL) /usr/sbin/userdel # %用户组 机器=(授权使用哪个角色的权限) ALL %redhat ALL=(ALL) /usr/sbin/userdel

sodu useradd xiaobai

参数代表含义:

1、用户账号:系统哪个账号可以使用sudo这个命令。默认为root用户。

2、登录者的来源主机名:这个账号由哪台主机连接到本地Linux主机。默认值root可来自任何一台网络主机。

3、可切换的身份:这个账号可以切换成什么身份来执行后续的命令。默认root可以切换成任何人。

4、可执行的命令:这个命令最好使用绝对路径编写。默认root可以切换任何身份且进行任何命令。

ALL是关键字,代表任何身份、主机或命令。

账户与组文件解析


账户信息文件

账户信息被保存在/etc/passwd文件中,通过命令 cat /etc/passwd 查看文件内容如下:

[root@rhel8-3 ~]# cat /etc/passwdroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologin...省略...sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

文件以冒号为分隔符

第一列 root 为账户名称,第二列为密码占位符

第二列 x 表示该账户需要密码才可以登陆,为空时,账户无需密码即可登陆

第三列 0 为账户UID

第四列 0 为GID

第五列 root 为账户附加基本信息,一般存储账户名全称、联系方式等信息

第六列 /root 为账户家目录位置

第七列 /bin/bash 为账户登陆shell,/bin/bash为可登陆系统shell,/sbin/nologin表示账户无法登陆系统

账户密码文件

账户密码信息被保存在 /etc/shadow文件中,通过命令cat /etc/shadow 查看文件内容如下:

[root@rhel8-3 ~]# cat /etc/shadowroot:$6$y47BIosYvWJMDneR$/TFwVTqJkJvYAYvaPlS2.x0g9KLeMH36Ql25sPO0NMLy5yHXmG5gRn7yLgVKsdXfy09e3rH/xmgZ0Re5XzkoS.:18519:0:99999:7:::bin:*:17784:0:99999:7:::...中间部分省略...apache:!!:18508::::::saslauth:!!:18508::::::redhat:!!:18519:0:99999:7:::admin:!!:18519:0:99999:7::18520:[root@rhel8-3 ~]#

文件以冒号为分隔符

第一列 账户名称

第二列 为密码(账户未设置密码时为 !!,设置密码后加密显示)

第三列 为上次修改密码的时间距离1970年1月1日有多少天

第四列 为密码最短有效天数(密码至少使用多少天,0代表无限制)

第五列 为密码最长有效天数(默认99999可以理解为用不过期)

第六列 为过期前的告警天数(默认过期前提前7天警告,但进去告警日期后仍可以使用旧密码登陆系统)

第七列 为密码过期后的宽限天数(密码过期后,预留几天给账户修改密码,此时已经无法使用旧密码登陆系统)

第八列 为账户失效日期(从1970年01月01日起多少天后账户失效)

第九列 暂时保留未使用

组账户信息文件

组账户信息被保存在/etc/group 文件中,通过命令cat /etc/group 查看文件内容如下:

[root@rhel8-3 ~]# cat /etc/group
root:x:0:
bin:x:1:admin
daemon:x:2:
sys:x:3:
games:x:20:
...内容省略...
apache:x:48:
saslauth:x:76:
redhat:x:1000:

文件以冒号为分隔符

第一列 组账户名称

第二列 为密码占位符

第三列 为GID

第四列 为组成员信息(注意,这个仅显示附加,基本成员不显示)

组账户密码文件

组账户密码信息被保存在/etc/gshadow 文件中,通过命令 cat /etc/gshadow 查看内容如下

[root@rhel8-3 ~]# cat /etc/gshadow
root:::
bin:::admin
daemon:::
sys:::
...省略中间内容...
saslauth:!::
redhat:!::

文件以冒号为分隔符

第一列 为组账户名称

第二列 为组密码(一般为组管理员密码)

第三列 为组管理员

第四列 为组成员(与/etc/group 第四列相同)

通过的方式可以为组设置密码,通过 可以为组添加管理员

[root@rhel8-3 ~]# gpasswd admin #设置组密码[root@rhel8-3 ~]# gpasswd -A admin admin #将admin账户设置为组admin的管理员


推荐阅读
  • 本文介绍了在MacOS系统上安装MySQL的步骤,并详细说明了如何设置MySQL服务的开机启动和如何修改MySQL的密码。通过下载MySQL的macos版本并按照提示一步一步安装,在系统偏好设置中可以找到MySQL的图标进行设置。同时,还介绍了通过终端命令来修改MySQL的密码的具体操作步骤。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 标题: ... [详细]
  • 如何在文本中运行Java程序
    本文介绍了在文本中运行Java程序的步骤,包括创建文本文档、修改后缀、打开DOS命令窗口、编译和运行程序。通过这些步骤,可以在文本中成功运行Java程序并输出结果。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • iOS Swift中如何实现自动登录?
    本文介绍了在iOS Swift中如何实现自动登录的方法,包括使用故事板、SWRevealViewController等技术,以及解决用户注销后重新登录自动跳转到主页的问题。 ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • 开发笔记:spring boot项目打成war包部署到服务器的步骤与注意事项
    本文介绍了将spring boot项目打成war包并部署到服务器的步骤与注意事项。通过本文的学习,读者可以了解到如何将spring boot项目打包成war包,并成功地部署到服务器上。 ... [详细]
  • 本文讨论了在shiro java配置中加入Shiro listener后启动失败的问题。作者引入了一系列jar包,并在web.xml中配置了相关内容,但启动后却无法正常运行。文章提供了具体引入的jar包和web.xml的配置内容,并指出可能的错误原因。该问题可能与jar包版本不兼容、web.xml配置错误等有关。 ... [详细]
  • PHP组合工具以及开发所需的工具
    本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
  • 本文介绍了解决java开源项目apache commons email简单使用报错的方法,包括使用正确的JAR包和正确的代码配置,以及相关参数的设置。详细介绍了如何使用apache commons email发送邮件。 ... [详细]
  • 本文介绍了在RHEL 7中的系统日志管理和网络管理。系统日志管理包括rsyslog和systemd-journal两种日志服务,分别介绍了它们的特点、配置文件和日志查询方式。网络管理主要介绍了使用nmcli命令查看和配置网络接口的方法,包括查看网卡信息、添加、修改和删除配置文件等操作。 ... [详细]
  • 项目运行环境配置及可行性分析
    本文介绍了项目运行环境配置的要求,包括Jdk1.8、Tomcat7.0、Mysql、HBuilderX等工具的使用。同时对项目的技术可行性、操作可行性、经济可行性、时间可行性和法律可行性进行了分析。通过对数据库的设计和功能模块的设计,确保系统的完整性和安全性。在系统登录、系统功能模块、管理员功能模块等方面进行了详细的介绍和展示。最后提供了JAVA毕设帮助、指导、源码分享和调试部署的服务。 ... [详细]
  • Tomcat安装与配置教程及常见问题解决方法
    本文介绍了Tomcat的安装与配置教程,包括jdk版本的选择、域名解析、war文件的部署和访问、常见问题的解决方法等。其中涉及到的问题包括403问题、数据库连接问题、1130错误、2003错误、Java Runtime版本不兼容问题以及502错误等。最后还提到了项目的前后端连接代码的配置。通过本文的指导,读者可以顺利完成Tomcat的安装与配置,并解决常见的问题。 ... [详细]
  • Linux下部署Symfoy2对app/cache和app/logs目录的权限设置,symfoy2logs
    php教程|php手册xml文件php教程-php手册Linux下部署Symfoy2对appcache和applogs目录的权限设置,symfoy2logs黑色记事本源码,vsco ... [详细]
author-avatar
泛傲海
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有