用户账号
与用户账号相关的两个文件:
- /etc/passwd
- /etc/shadow
- /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版本
- /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
- /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 命令查看用户所属的全部分组,第一个即为该用户的有效用户组
- /etc/gshadow:
root:*::
fanyank:!::
1 2 3 4
- 1.用户组名
- 2.密码,开头为!表示无合法密码,所以无用户组管理员(很少用到)
- 3.用户组管理员的账号
- 4.属于该组的账号,同/etc/group的4
使用newgrp切换有效用户组
newgrp 组名
账号管理
- 新增用户:
useradd [-u UID] [-g 初始用户组] [-G 次要用户组] [-mM] [-c 说明] [-d 主文件夹绝对路径] [-s shell] 用户名
- [-M]: 不创建用户主文件夹
- [-m]: 创建用户文件夹
- 修改密码:
passwd [--stdin]
- [--stdin]: 来自前一个管道的数据,作为密码的输入
eg: echo "haha" | passwd --stdin fanyank
passwd [-lu] [-S] 账号
- [-l]: 给账号上锁
- [-u]: 给账号解锁
- [-S]: 列出相关信息,即shadow中的大部分信息
- 修改账号设置:
usermod [-cdegGlsuLU] 账号
- [-c]: 修改说明
- [-d]: 修改主文件夹
- [-g]: 修改初始用户组,GID
- [-G]: 修改次要用户组
- [-a]: 增加次要用户组(与-G一起使用)
eg: usermod -a -G fanyanks fanyank
- [-l]: 修改账号名称
- [-s]: 修改用户shell
- [-u]: 修改用户UID
- [-L]: 锁定账号
- [-U]: 解锁账号
- 删除用户:
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"
网友评论