Linux 用户和用户组
1.从 /etc/passwd说起
在liunx系统中操作系统中的用户名和密码都存在了/etc/passwd中,这个文件内容如下:
他们的意思依次如下:
login name:登录用名(wang)
passwd:密码 (x)
UID:用户身份编号 (1000)
GID:登录默认所在组编号 (1000)
GECOS:用户全名或注释
home directory:用户主目录 (/home/wang)
shell:用户默认使用shell (/bin/bash)
2.Linux具有多用户,多任务的特性
在Linux系统中多个用户可以同时登入同一个系统执行各自不同作任务,而且各自不受影响;不同用户具有不同的权限,每个用户是在权限允许的范围内完成不同的任务,linux正是通过这种权限的划分与管理,实现了多用户多任务的运行机制。
3. 用户和用户组
用户:如果想要执行系统中的任务,就必须要有一个账户来登录系统,这个账户就是用户。
Linux用户:Username/UID
管理员:
root, 0
普通用户:1-65535
系统用户:
1-499, 1-999(CentOS7)
对守护进程获取资源进行权限分配
登录用户:500+, 1000+(CentOS7)
交互式登录
用户组:
用户组就是具有相同特征的用户的集合。一个组可以包含多个用户,每个用户也可以属于不同的组。
Linux组:Groupname/GID
管理员组:root, 0
系统组:
1-499, 1-999(CENTOS7)
普通组:
500+, 1000+(CENTOS7)
4.用户组的分类:
用户的主要组(primary group) :创建用户是会随用户创建一个与用户同名的组,这个组就是基本组;
用户必须属于一个且只有一个主组
组名同用户名,且仅包含一个用户,私有组
用户的附加组(supplementary group) :用户加入的基本组以外的组,称为用户的附加组;
一个用户可以属于零个或多个辅助组
5.useradd 命令:添加用户
Linux 中使用 useradd 命令添加一个用户。例如添加一个mike用户
在 /etc/passwd 的最后一行,有刚刚添加的用户,并且系统自动设置了用户的一些属性,比如UID,GID,HOME DIR等。我们也可以手动指定新增用户的信息:
useradd -u UID:指定 UID,这个 UID 必须是大于等于500,并没有其他用户占用的 UID
useradd -g GID/GROUPNAME:指定默认组,可以是 GID 或者 GROUPNAME,同样也必须真实存在
useradd -G GROUPS:指定额外组
useradd -c COMMENT:指定用户的注释信息
useradd -d PATH:指定用户的家目录
useradd -s SHELL:指定用户的默认 shell,最好是在 /etc/shells 中存在的路径
useradd -s /sbin/nologin:该用户不能登录,我们可以看到系统用户的 shell 字段也是 /sbin/nologin
echo $SHELL :查看当前用户的 shell 类型
useradd -M USERNAME:创建用户但不创建家目录
useradd -mk USERNAME:创建用户的同时创建家目录,并复制 /etc/skel 中的内容到家目录中。◦如果用户没有家目录,那么不能切换到该用户
6.userdel 命令:删除用户
userdel USERNAME:删除用户
userdel -r USERNAME:删除用户的同时删除用户家目录
7.id 命令:显示账号属性信息
id -g USERNAME:显示默认组ID
◦d -G USERNAME:显示附加组ID
id -u USERNAME:显示UID
id -n -g/-G/-U:显示默认组/附加组/用户的名称
8.finger 命令:检索用户信息,比使用 id 命令更加友好
9.usermod 命令:修改用户信息
基本用法和 useradd 相似,这里列出需要注意的点
usermod -G GROUPS USERNAME:改变用户的附加组,会完全替换原有的附加组
usermod -G -a GROUPS USERNAME:在原有附加组的基础上追加附加组
usermod -d PATH USERNAME:修改家目录。修改后原先家目录中的文件不能访问了,因为在当前的家目录中并不存在这些文件。
usermod -l NEWNAME USERNAME:改变用户名
usermod -e USERNAME:指定该用户的过期时间
usermod -L USERNAME:锁定用户
usermod -U USERNAME:解锁用户
10.快捷命令
chsh SHELL USERNAME:改变默认 shell
chfn USERNAME:修改注释信息,用来增加用户的详细信息,如公司,地址等。可以由 finger 查看相应的改变。
11.passwd
passwd --stdio:标准输入读取密码passwd -l:锁定用户账号(root only) ◾echo "newpassword" | passwd --stdio MIKE
passwd -u:解锁用户账号(root only)
passwd -d:删除用户密码。用户密码删除后不能登录。
12.pwch(password check):检查密码文件的完整性,可获取一些警告信息
13.groupadd 命令:添加组
groupadd -g GID GROUPNAME:指定GIDgroupadd -r GROUPNAME:添加一个系统用户组(-r 也适用于 useradd) ◾groupadd -r apache
14groupmod 命令:修改组
groupmod -g NEWGID GROUPNAME:修改GID
groupmod -n NEWGROUPNAME GROUPNAME:修改组名
15.groupdel 命令:删除组
groupdel GROUPNAM
16.gpasswd 命令:给组加密码
gpasswd GROUPNAME