Linux用户管理

发布时间:2024年01月16日

1.用户相关文件

1.1/etc/passwd? 用户信息文件

第一列: 用户名

第二列: 密码位

第三列: 用户ID?

  • 0: 超级用户UID, 如果用户UID为0, 代表这个账号时管理员账号. 那么linux中如何把普通用户升级为管理员呢? 就是把其他用户的UID修改成0即可, 这点和Windows不同. 但是不建议建立多个管理员账号
  • 1-499: 系统用户(伪用户)UID. 这些UID账号是系统用户的UID, 也就是说UID是1-499范围内的用户是不能登录系统的, 而是用来运行系统或服务的. 其中1-99是系统保留的账号, 系统自动创建. 100-499是与预留给用户创建系统账号的
  • 500-60000: 普通用户UID. 建立的普通用户UID从500开始, 最大到60000. 这些用户足够使用了, 但是如果不够也不用害怕, 2.6.x内核以后的Linux系统用户UID已经支持2的32次方这么多了

第四列: 组ID, GID添加用户时, 如果不指定用户所属组的初始组, 那么会建立和用户名相同的组

第五列: 用户说明

第六列: 用户家目录

第七列: 登录shell? ? ?/bin/bash

如何把普通用户变为超级用户: 把用户UID改为0

1.2/etc/shadow? ?影子文件

第一列: 用户名

第二列: 加密密码(我们可以在密码前人为的加入"!"或者"*"改变加密值让密码暂时失效, 使用这个用户无法登录, 达到暂时禁止用户登录的效果)(注意所有的伪用户的密码是"!!"或"*", 代表没有密码是不能登录的. 当然新建的用户如果不设定密码, 它的密码想也是"!!", 代表这个用户名没有密码, 不能登录

?第三列: 密码最近更改的时间, 1970年1月1日作为标准时间

第四列: 两次密码修改的时间间隔

第五列: 密码的有效期

第六列: 密码修改到期前的警告天数

第七列: 密码过期后的宽限天数

第八列: 密码失效时间

第九列: 保留

1.3/etc/group? 组信息文件

第一列: 组名

第二列: 组密码位

第三列: GID

第四列: 词组中支持的其他用户, 附加组是此组的用户

初始组: 每个用户初始组只有一个, 初始组只能有一个, 一般都是和用户名相同的组作为初始组

附加组: 每个用户属于多个附加组. 要把用户加入组, 都是加入附加组

1.4组密码文件 /etc/gshadow

如果我给用户组设定了组管理员, 并给该用户设定了组密码, 组密码就保存在这个文件当中. 组管理员就可以利用这个密码管理这个用户组了

1.5用户邮箱目录

这个邮箱在/var/spool/mail目录当中, 例如user1用户的邮箱就是/var/spool/mail/user1文件

2.用户管理命令

2.1添加用户

2.1.1手工删除用户

手工删除用户实验: 手工删除, 如果可以正常建立用户, 证明用户删除干净

/etc/passwd
/etc/shadow

/etc/group

/etc/gshadow

/home/user1

/var/spool/mail/user1

这些目录中与此用户相关的内容需要删除干净才行

2.1.2useradd

useradd [选项] 用户名

选项:
? ? ? ? -u 数字: 指定UID
? ? ? ? -g 组名: 指定初始组,?不要手工指定, 需要事先创建初始组
? ? ? ? -G 组名: 指定附加组, 把用户加入组, 使用附加组
? ? ? ? -c 说明: 添加说明
? ? ? ? -d 目录: 手工指定家目录, 目录不需要事先建立
? ??? ? -s shell: /bin/bash

2.1.3useradd默认值

useradd添加用户时参考的默认值文件主要有两个, 分别是/etc/default/useradd 和 /etc/login.defs

1)/etc/default/useradd

  • GROUP=100
    这个选项是建立用户的默认组, 也就是添加每个用户时, 用户的初始组就是GID为100的这个用户组. 目前我们采用的机制私有用户组机制
  • HOME=/home
    这是选项时用户的家目录的默认位置, 所以所有新建用户的家目录默认都在/home/下
  • INACTIVE=-1
    这个选项就是密码过期天数的宽限天数, 如果是0代表密码过期后立即失效; 如果是-1, 则代表所有新建的用户密码都会不失效
  • EXPORE=
    这个选项是密码的失效时间, 也是/etc/shadow文件的第八个字段. 也就是说用户到达这个日期后就会直接失效. 当然这里也是使用时间戳来表示日期的. 默认值是空, 索引所有新建用户没有失效时间, 永久有效
  • SHELL=/bin/bash
    这个选项是用户的默认shell的. /bin/bash是Linux的标志, 所以所有新建立的用户默认都具有shell赋予的权限
  • SKEL=/etc/skel
    这个权限就是定义用户的模板目录的位置, /etc/skel/目录中的文件都会复制到新建用户的家目录
  • CREATE_MAIL_SPOOL=yes
    这个选项定义是否给新建用户建立邮箱, 默认是创建

2)/etc/login.defs

  • MAIL_DIR? ? ?/var/spool/mail
    这行指定了新建用户的默认邮箱位置.
  • PASS_MAX_DAYS 99999
    这行指定的是密码的有效期
  • PASS_MIN_DAYS 0
    这行指定的两次密码修改的时间间隔
  • PASS_MIN_LEN 5
    这行代表密码的最小长度, 默认不小于5位. 但是我们现在用户登录校验已经被PAM模块取代, 所以这个选项并不生效
  • PASS_WARN_AGE 7
    这行代表密码修改到期前的警告天数
  • UID_MIN 500
  • UID_MAX 60000
    这两行代表创建用户时, 最小UID和最大的UID的范围
  • GID_MIN 500
  • GID_MAX 60000
    这两行制定了GID的最小值和最大值之间的范围
  • CREATE_HOME yes
    这行指定创建用户时是否自动创建用户的家目录, 默认时创建用户的家目录
  • UMASK 077
    ?这行指定的时创建的用户家目录的默认权限, 因为umask的值是077, 所以创建的用户家目录的权限是700
  • USERGROUPS_ENAB yes
    这行指定的是使用命令userdel删除用户时, 是否删除用户的初始组, 默认是删除
  • ENCRYPT_METHOD SHA512
    这样指定Linux用户的密码使用SHA512散列模式加密, 这是新的密码加密模式, 原来的Linux只能用DES或MD5加密方式

2.2设定密码

passwd [选项] 用户名

选项:

? ? ? ? -l: 暂时锁定用户. 仅root用户可用

? ? ? ? -u: 解锁用户. 仅root用户可用

? ? ? ? --stdin: 可以将通过管道符输出的数据作为用户的密码. 主要在批量添加用户时使用

2.3用户信息改正

usermod [选项] 用户名

选项:????????

? ? ? ? -u UID: 修改用户UID

? ? ? ? -d 家目录: 修改用户的家目录, 这里必须绝对路径

? ? ? ? -c 用户说明: 修改用户说明信息, 就是/etc/passwd文件的第五个字段

? ? ? ? -g 组名: 修改用户的初始组, 就是/etc/passwd文件的第四个字段

? ? ? ? -G 组名: 修改文件文件的附加组, 就是把用户加入其他用户组

? ? ? ? -s shell: 修改用户的登录shell. 默认是/bin/bash

? ? ? ? -e 日期: 修改用户的失效日期, 格式为"YYYY-MM-DD", 也就是/etc/shadow文件的第八个字段

? ? ? ? -L: 暂时锁定用户

? ? ? ? -U: 解锁用户

????????-l 新名 旧名: 修改用户名

? ? ? ?

2.4删除用户

userdel [-r] 用户名

选项:

? ? ? ? -r: 在删除用户的同时删除用户的家目录(注意一定要有-r, 否则家目录还要手动删除)

2.5切换用户身份

su命令可以切换不同的用户身份

su [选项] 用户名

选项:?????????

? ? ? ? -: 表示连带用户的环境变量一起切换

? ? ? ? -c 命令: 仅执行一次命令, 而不切换用户身份

3.组管理命令

3.1添加用户组

groupadd [选项] 组名

选项:?????????

? ? ? ? -g GID: 指定组ID

3.2删除用户组: groupdel

groupdel 组名

注意: 要删除的组不能是其他用户的初始组,? 如果组中有附加用户删除组时不受影响

3.4把用户添加进组或从组中删除: gpasswd

其实gpasswd命令时用来设定组密码并指定组管理员的, 不过组密码和组管理员功能很少使用. 而且完全被sudo命令却带, 所以gpasswd命令现在主要用于把用户添加到组中或从组中删除

gpasswd [选项] 组名

选项:?

? ? ? ? -a 用户名: 把用户加入组

? ? ? ? -d 用户名: 把用户从组中删除

3.5改变有效组: newgrp

我们说过, 每个用户可以属于一个初始组(用户时这个组的初始用户), 也可以属于多个附加组. 既然用户可以属于这么多用户组, 那么用户创建文件后, 默认生效的组身份是哪一个呢? 当然是初始用户组的组身份生效了, 因为初始组是用户一旦登录就直接获得的组身份. 也就是说, 用户在创建文件后, 文件的属组是用户的初始组. 既然用户属于多个用户组, 那么能不能改变用户的有效组呢? 使用命令newgrp就可以切换用户的有效组了

newgrp 组名

文章来源:https://blog.csdn.net/fengxia110/article/details/135583008
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。