和Windows一样,当我们使用Linux时,也需要以一个用户的身份登录,一个进程也需要以一个用户的身份运行,用户限制使用者或进程可以使用,不可以使用哪些资源。
在我们使用Linux时,都是用一个用户名来进入系统的,而实际上在Linux中,每一个用户都拥有一个UserID,操作系统实际使用的是用户的ID来区分用户,而不是我们登录系统用的用户名。
在Linux中,每个用户都属于一个主组,属于一个或多个附属组。主组默认是和用户名相同的,也就是说创建用户的时候会默认创建一个同名的组。
同用户一样,每个组也有一个GroupID。
在Linux中,每个进程都是以一个用户的身份运行,并且该进程的访问权限受该用户的权限的限制。
Linux系统中的文件都有一个所属用户及所属组
用户ID:
Linux中的用户ID为32位,从0开始。
用户ID分为三种,分别是:
root用户: ID为0的用户
系统用户: ID为1-499
普通用户: ID为500以上
为了和老式的系统兼容,用户ID通常被限制在60000以下
保存用户和组相关的文件:
/etc/passwd 这个文件保存用户信息
/etc/shadow 这个文件保存用户密码(当然是加密过的)
/etc/group 这个文件保存组信息
/etc/passwd文件结构:
/etc/passwd文件为纯文本文件,一行保存一个用户信息,各信息用“:”分隔。
第一个参数: 用户名
第二个参数: 通常为x,意思是密码保存在/etc/shadow中
第三个参数: 用户ID
第四个参数: 组ID
第五个参数: 用户描述信息,这个没有什么规定,可以任意输入文本
第六个参数: 用户的家目录
第七个参数: 用户登录shell,普通用户通常为/bin/bash
/etc/shadow文件结构:
这个文件的结构和/etc/passwd是相同的,只是有一点,两个感叹号“!!”表示此用户没有创建密码
/etc/group文件结构:
组名:组密码:组ID:用户
创建用户:
useradd <用户名>
参数:
-d 家目录
-g 主族
-s 登录shell
-G 附属组(最多31个,用“,”分割)
-u userId
当执行useradd这个命令时,实际上系统会进行以下这些操作(在CentOS,RedHat是这样的,Ubuntu好像稍有差别)
1. 在/etc/passwd中添加用户信息
2. 如果使用passwd命令创建密码,则将密码保存在/etc/shadow中
3. 为用户在/home下建立一个新的家目录,目录名为用户名
4. 将/etc/skel目录中的文件复制到用户目录中。这里面有Documents,Download以及桌面等
5. 建立一个与用户名相同的组,即新建用户的主组
修改用户:
usermod <参数> <用户名>
参数:
-l 新用户名
-u 新userId
-d 新的家目录位置
-g 修改用户附属组
-L 锁定用户使其无法登录
-U 解除锁定
删除用户:
userdel <用户名> 只删除用户,保留用户的家目录
userdel -r <用户名> 删除用户的同时删除用户的家目录
创建组:
groupadd <组名>
修改组:
groupmod -n <新组名> <旧组名> 修改组名
groupmod -g <新组ID> <旧组ID> 修改组ID
删除组:
groupdel <组名>
与用户相关的一些命令:
id 显示当前用户的信息
passwd <用户> 修改用户的密码,如果不加用户就是修改当前用户自己的密码
whoami 显示当前用户
who 显示有哪些用户已经登录了系统
w 显示有哪些用户已经登录并且在干什么
原文:http://blog.csdn.net/redstarofsleep/article/details/45271577