Linux用户
1.用户和组
使用Linux时需要以一个用户的身份登入;
一个进程也需要以一个用户的身份运行;
用户的作用:限制使用者或进程可以使用和不能使用某些资源;
组的作用:用来管理用户;
关于用户和组:
每个用户拥有一个UserID,操作系统实际使用的是用户id,而不是用户名;
每个用户属于一个主组,属于一个或多个附属组;
每个用户拥有一个GroupID;
每个进程以一个用户的身份运行,并受该用户可访问资源的限制;
每个可登录用户拥有一个指定的shell;
2.用户
每个用户有一个用户id;
用户id 为32位(也就是2的32次方);从0开始;
为了和老式系统兼容,一般将用户id限制在60000以下;因为老的系统并没有32位,也就到不了那么高的数字;
用户分为3种:
root用户 ->id为0的用户,也可以叫别的名字;
系统用户 ->id在 1-499 之间;没有登录shell;用来给进程使用的;
普通用户 ->id在 500及以上;
系统中每个文件都有一个所属用户及所属组;
命令 id 可显示当前用户的信息;
命令 passwd 可修改当前用户的密码;
3.保存用户信息的相关文件
/ect/passwd ->保存用户信息;
/ect/shadow ->保存加密后的用户密码;该文件只有管理员有权限查看;
/ect/group ->保存组信息;
1)查看用户信息
cat /ect/passwd
每一行代表一个用户的信息;
每一行分为多个部分;用冒号“:”隔开;
以root为例:
用户名;root;
x表示密码是保存在/ect/shadow中的;x;
用户的id号;0;
组id;0;
用户的描述信息;可能没有;root;
用户的家目录;/root;
用户登录的shell; /bin/bash;也就是命令窗口; 而系统用户很多都是/usr/sbin/nologin;也就是不需要登录,没有shell;
2)查看密码
cat /etc/shadow
每一行代表一个用户信息;
用冒号隔开;
每个部分:
用户名;
密码;
比如有些是感叹号 ! 表示没有密码;
密码是加密处理过的;分为3个部分;用$隔开;
分为加密方式、盐(也就是加密前插入的额外内容,增加破解难度)、加密后的密码;
3)查看组信息
cat /etc/group
包括:组名、组密码、组id;
4.查看登录用户
Linux中一般命令越长,显示出来的信息越少;
显示当前用户:
whoami
哪些用户已经登录系统:
who
哪些用户正在登录,并在干什么:
w
5.创建用户
命令 useradd 用来创建用户;
比如:useradd 用户名
useradd liusir
这个命令会执行以下操作:
在/ect/passwd 目录下添加新用户信息;
如果用 passwd 命令创建密码,则保存在 /ect/shadow 中; 命令:passwd 用户名;然后按提示输入密码即可;
为用户建立一个新的家目录;比如:/home/liusir;
将 /etc/skel 中的文件复制到用户的家目录中;通常是一些初始化的说明文档之类的;
建立一个与用户的用户名相同的组;新建用户默认属于这个组;
useradd的参数:
-d ->家目录;
-s ->登录shell;
-u ->userid;
-g ->主组;
-G ->附属组;最多31个用逗号“,”隔开
也可以通过修改/etc/passwd的方式来实现,但是不建议这么做;
6.修改用户信息
命令 usermod 用来修改用户信息;
usermod 参数 username
usermod -l newname liusir
支持参数:
-l ->新用户名;
-u ->新userid;
-d ->用户家目录;
-g ->用户组;
-G ->附属组;
-L ->锁定用户使其不能登录;
-U ->解除锁定;
7.删除用户
命令 userdel 用来删除用户;
保留家目录:userdel 用户名:
uerdel liusir
删除用户的同时删除其家目录:userdel -r 用户名:
userdel -r liusir
8.关于组
几乎所有的操作系统都有组这个概念;
通过组可以来管理用户;
每个组有一个组id;
组信息保存在 /etc/group中;
每个用户都有一个组,同时最多可有31个附属组;
组的操作:
1)创建组
groupadd 组名
groupadd liu
2)命令 groupmod 修改组信息;
groupmod -n newname oldname 修改组名;
groupmod -n new liusir
groupmod -g newGid oldGid 修改组id;
groupmod -g 666 1000
3)命令 groupdel 删除组;
groupdel 组名:
groupdel liusir
4)分组管理用户的示例