这篇内容是linux用户基础,相关内容见 linux修改用户名和ubuntu修改用户名和主机名。
用户,组当我们使用linux时,需要以一个用户的身份登入,一个进程也需要以一个用户的身份运行,用户限制使用者或者进程可以或不可以使用哪些资源。
用户的实质就是用来限制资源的使用。
组用来方便管理组织管理用户。
每个用户都拥有一个UserID,操作系统实际使用的是用户ID,而非用户名
每个用户属于一个主组,属于一个或者多个附属组
每个组拥有一个GroupID
每个进程以一个用户身份运行,并受该用户可访问的资源限制
每个可登陆用户拥有一个指定的shell。
用户
用户ID为32位,从0开始,但是为了和老式系统兼容,用户ID限制在60000以下。
用户分为以下三种:
-root用户 (ID为0的用户为root用户)
-系统用户 (1-499) 专门为某些进程或者某些服务创建的,不拥有shell。
-普通用户 (500以上,也可能是1000以上)
系统中的文件都有一个所属用户以及所属组。
使用 id命令可以显示当前用户的信息
使用 passwd命令可以修改当前用户密码
相关文件
/etc/passwd 保存用户信息
/etc/shadow 保存用户密码(加密)
/etc/group 保存组信息
打开/etc/passwd
每一行代表一个用户的信息,每一行分为七个部分,每个部分使用冒号:隔开。
第一个部分 用户名
第二个部分 密码
第三个部分 用户的ID号UserID
第四个部分 组ID
第五个部分 用户的描述信息
第六个部分 用户的家目录
第七个部分 用户登陆的shell(普通用户是/bin/bash,系统用户即ID为500以下都为/sbin/nologin或者/bin/false)
打开/etc/shadow
每一行代表一个用户信息。
第一个部分 用户名
第二个部分 密码(只有当前用户有密码,系统用户没有密码,两个!!表示没有创建密码)
密码分为三个部分,使用$分开
第一个部分是6,代表密码的加密类型
第二个部分是盐salt,加点盐,是插入这部分到我们的密码,增加破解难度
第三个部分是加密后的密码
查看登陆的用户
命令whoami显示当前用户
命令who显示有哪些用户登陆上
命令w显示有哪些用户已经登陆并且在干什么
创建一个用户
命令useradd用以创建一个用户
怎样确定是否创建好呢?通过cat /etc/passwd发现会多了一个用户,UserID为当前用户ID+1
这个命令会执行一下操作:
1.在/etc/passwd中添加用户
2.如果使用passwd命令创建密码,则将加密以后的密码保存在/etc/shadow中
3.为用户建立一个新的家目录/home/houlu
4.将/etc/skel中的文件复制到用户的家目录中
5.建立一个与用户用户名相同的组,新建用户默认属于这个同名组
命令useradd支持以下参数
-d 家目录
-s 登陆shell
-u userid
-g 主组
-G 附属组
也可以通过直接修改/etc/passwd实现,不建议这样做。
修改用户信息
命令usermod用以修改用户,它支持以下参数
-l 新用户名
-u 新userid
-d 用户家目录位置
-g 用户所属主组
-G 用户所属附属组
-L 锁定用户使其不能登陆
-U 解除锁定
删除用户
命令userdel用以删除指定用户
userdel user 删除用户,但不删除家目录
userdel -r user 全部删除
组
几乎所有操作系统都有组的概念,通过组,我们可以更加方面的归类,管理用户。一般来讲,我们使用部门、职能或者地理区域的分类方式来创建使用组。
每一个组有一个组ID
组信息保存在/etc/group
每个用户有一个主组,同时最多有31个附属组
创建、修改、删除组
命令groupadd用以创建组
groupadd linuxcast
命令groupmod用以修改组
groupmod -n newname oldname 修改组名
groupmod -g newGid oldGid 修改组ID
命令groupdel用以删除组
groupdel linuxcast