Linux下有三类用户
-
超级用户:root 具有操作系统的一切权限 UID 值为0
-
普通用户:普通用户具有操作系统有限的权限,UID值 500 - 6000
-
伪用户:是为了方便系统管理,满足相应的系统进程文件属主的要求,伪用户不能登录系统,UID值 1 – 499
用户管理
用户添加与信息
用户管理文件:cat /etc/passwd,在此文件中,只定义帐号,不定义口令。
文件中每行定义一个用户,分七个部分:
- 帐号名称:root
- 用户密码:x
- 用户标识码(用户ID):0
- 组标识码(用户组ID):0
- 用户描述信息:admin
- 用户家目录:/root
- 用户环境:/bin/bash
用户信息查看id
id username
查看一个用户的UID, GID以及组信息
参数:g 只显示GID,G 只显示所有组,u 只显示UID
查看用户相关信息finger
finger username
查看用户的相关信息,包括用户的主目录,启动shell,用户名等
参数:l 显示帐号信息,m 忽略真实姓名,p 显示帐号信息,但是不显示计划文件和方案文件内容,s 显示帐号信息(不同格式)
用户口令管理
用户口令文件:cat /etc/shadow
此文件只有root用户能访问,分九个部分:
- 用户名:root
- 口令:存放加密口令,如果第一个字符是
!,表示该用户不能登录 - 最后一次修改时间:
- 最大时间间隔:0 可以随时改变
- 最小时间间隔:99999 表示永远不过期
- 警告时间:1周
- 不活动时间:
- 失效时间:
- 保留:最后一个字段是保留的,看以后有没有新功能加入。
创建用户命令useradd或者adduser
useradd 或者 adduser(man useradd)
参数:-u -g -G -d -s -c -e -k -m -M -r
-b, --base-dir BASE_DIR #新账户的主目录的基目录
-c, --comment COMMENT #新账户的 GECOS 字段
-d, --home-dir HOME_DIR #新账户的主目录
-D, --defaults #显示或更改默认的 useradd 配置
-e, --expiredate EXPIRE_DATE #新账户的过期日期
-f, --inactive INACTIVE #新账户的密码不活动期
-g, --gid GROUP #新账户主组的名称或 ID
-G, --groups GROUPS #新账户的附加组列表
-h, --help #显示此帮助信息并推出
-k, --skel SKEL_DIR #使用此目录作为骨架目录
-K, --key KEY=VALUE #不使用 /etc/login.defs 中的默认值
-l, --no-log-init #不要将此用户添加到最近登录和登录失败数据库
-m, --create-home #创建用户的主目录
-M, --no-create-home #不创建用户的主目录
-N, --no-user-group #不创建同名的组
-o, --non-unique #允许使用重复的 UID 创建用户
-p, --password PASSWORD #加密后的新账户密码
-r, --system #创建一个系统账户
-R, --root CHROOT_DIR #chroot 到的目录
-s, --shell SHELL #新账户的登录 shell
-u, --uid UID #新账户的用户 ID
-U, --user-group #创建与用户同名的组
-Z, --selinux-user SEUSER #为 SELinux 用户映射使用指定 SEUSER
也可以通过手动方式添加一个用户,需要以下四个步骤:
- 在/etc/passwd中添加一条记录
- 创建用户主目录
- 在用户主目录中设置默认的配置文件
- 设置用户初始口令
用户帐号的维护(删改)
passwd username #设置用户密码(注意:没有设置密码的用户不能登录)
userdel username #删除用户
usermod -l newName username #新的登录名称
usermod -L username #锁定用户
usermod -U username #解锁用户
usermod -R, --root CHROOT_DIR #更改用户的家目录directory to chroot into
usermod -s, --shell SHELL #更改用户使用的shell,比如改为/sbin/nologin则禁止该用户ssh接入
passwd -l username #锁定用户的密码(只有根用户才能进行此操作)
passwd -u username #解锁用户的密码(只有根用户才能进行此操作)
passwd -d username #删除已命名帐号的密码(只有根用户才能进行此操作)
变化用户身份
su userName
说明:从管理员到普通用户不用使用密码;从普通用户到其他用户需要使用密码
这样,至改变用户身份,环境变量不变;
su -userName
完全转变,包括身份和环境变量
只允许root用户登录
可以在/etc/目录下建立一个名为nologin的文件
touch /etc/nologin
解除方法,删除nologin文件即可
rm -rf /etc/nologin
用户组管理
用户组分两类:
- 私有组:当在创建一个新用户user时,若没有指定他所属于的组,Linux就建立一个和该用户同名的私有组
- 标准组:标准组可以容纳多个用户,若使用标准组,在创建一个新用户时,就应该指定该用户所属于的组
用户组的管理文件位置:/etc/group
分为四个部分:
- 组名:用户登录时所在的组名
- 组口令:一般不使用
- 组标识码(GID)
- 组内用户列表:属于改组的所有用户列表
添加用户组
两种方法:
useradd username这种方法会建立一个和usernmae同名的私有组groupdadd groupname正统的方法,建立一个组
useradd username #默认建立username用户组
groupadd groupname #添加一个用户组
修改组名
groupmod -n newName groupName
删除组帐号
groupdel 组帐号名称 #注意:删除的帐号必须存在,且不能是某个用户的私有组
添加用户到组
gpasswd -a userName groupName #a是添加的意思
从组中删除用户
gpasswd -d userName groupName #d是删除的意思
查看某个用户属于哪个组
groups userName
查看某个组有哪些用户
tail 5 /etc/group #显示最后5个组
tail /etc/group #默认显示最后10行