Linux用户账号与分组

用户账号

与用户账号相关的两个文件:

  • /etc/passwd
  • /etc/shadow
  1. /etc/passwd
root:x:0:0:root:/root:/bin/bash
fanyank:x:1000:1000:This is my username:/home/fanyank:/bin/bash
1       2   3    4             5               6          7
  • 1.账号名称
  • 2.密码,加密后的位于/etc/shadow中
  • 3.UID,0为root,1 ~ 500为系统账号,500 ~ 65535位其他登录账号
  • 4.GID,初始用户组的GID
  • 5.用户信息说明
  • 6.用户的主文件夹
  • 7.用户登录成功选择的shell版本
  1. /etc/shadow
root:$6$0OJo2FY.$3beQsSvVUsJ8kgLsMBGczwiKk5jo2HwgP714fgnDB4R0kevyepVfoVvD/dg9VfaVVev8rdONZPe2ZP81MEHDr0:17388:0:99999:7:::
fanyank:$6$yaE0qxKD$K6BycZBR5SpeG202tH6yVS5..QxAAgTEoMc5rcVLKI.pERh.1ogMphoyhE/t9ftsXfeDHjl86WW1NJH80ZbR91:17388:0:99999:7:::
    1                                                                     2                                   3  4   5   6 789
  • 1.账号名称
  • 2.加密后的密码(MD5加密)
  • 3.最近更改密码的日期
  • 4.密码不可变动的天数,0为可以随时变动
  • 5.密码需要重新更改的天数,999999为没有这个限制
  • 6.密码需要更改前提示的天数
  • 7.密码过期后的宽限时间
  • 8.账号失效日期
  • 9.保留

用户组

与用户组相关的两个文件:

  • /etc/group
  • /etc/gshadow
  1. /etc/group:
root:x:0:
fanyank:x:1000:
    1   2   3   4
  • 1.用户组名称
  • 2.用户组密码
  • 3.GID
  • 4.此用户组支持的账号名称

我们从上可以看出root和fanyank两个用户组并没有包含任何账号,但是实际上root确实属于root用户组,fanyank也是属于fanyank用户组的,这是因为 root和fanyank这两个账号的初始用户组为root和fanyank,初始用户组是不需要填入的

下面引出两个概念,初始用户组(initial group)有效用户组(effective group)

  • 初始用户组: 当用户登录系统,立刻拥有这个用户组的相关权限,在你新添加一个账号时,默认会新建一个同账号同名的用户组,该用户组也就是这个新建账号的初始用户组

  • 有效用户组: 新建文件或目录属于有效用户组,可以使用 groups 命令查看用户所属的全部分组,第一个即为该用户的有效用户组

  1. /etc/gshadow:
root:*::
fanyank:!::
    1   2 3 4
  • 1.用户组名
  • 2.密码,开头为!表示无合法密码,所以无用户组管理员(很少用到)
  • 3.用户组管理员的账号
  • 4.属于该组的账号,同/etc/group的4

使用newgrp切换有效用户组

newgrp 组名

账号管理

  1. 新增用户:
useradd [-u UID] [-g 初始用户组] [-G 次要用户组] [-mM] [-c 说明] [-d 主文件夹绝对路径] [-s shell] 用户名
  • [-M]: 不创建用户主文件夹
  • [-m]: 创建用户文件夹
  1. 修改密码:
passwd [--stdin]
  • [--stdin]: 来自前一个管道的数据,作为密码的输入
eg: echo "haha" | passwd --stdin fanyank
passwd [-lu] [-S] 账号
  • [-l]: 给账号上锁
  • [-u]: 给账号解锁
  • [-S]: 列出相关信息,即shadow中的大部分信息
  1. 修改账号设置:
usermod [-cdegGlsuLU] 账号
  • [-c]: 修改说明
  • [-d]: 修改主文件夹
  • [-g]: 修改初始用户组,GID
  • [-G]: 修改次要用户组
  • [-a]: 增加次要用户组(与-G一起使用)
eg: usermod -a -G fanyanks fanyank
  • [-l]: 修改账号名称
  • [-s]: 修改用户shell
  • [-u]: 修改用户UID
  • [-L]: 锁定账号
  • [-U]: 解锁账号
  1. 删除用户:
userdel [-r] username
  • [-r]: 删除用户主文件夹

用户组管理

添加用户组:

groupadd [-g gid] [-r] 用户组名

修改用户组:

groupmod [-g gid] [-n group-name] 用户组名

删除用户组

groupdel 用户组名

用户身份切换

su [-lm] [-c 命令] [username]
  • [-l]: 后接欲切换的账号
  • [-m]: 使用目前的环境配置
  • [-c]: 仅执行一次命令

单纯的使用su切换,读取变量方式为no-login shell,环境配置不会生效

sudo

sudo [-b] [-u 新用户账号]
  • [-b]: 将后续的命令让系统自动执行,不与目前的Shell产生影响
  • [-u]: 接欲切换的用户,无此项为root
eg: sudo -u fanyank touch /tmp/myfile
注意下例的写法,sh -c "一串命令"
eg: sudo -u fanyank sh -c "mkdir ~fanyank/www;cd ~fanyank/www;echo 'This is index.html file' > index.html"

你可能感兴趣的:(Linux用户账号与分组)