Linux是多用户操作系统,即多个用户可以在自己的权限范围内执行对系统资源的使用,多个用户之间互不干扰。window系统从win7以后也是多用户操作系统,直观上来看win7好像只是单用户,但是切换到guest用户后执行关机发现提示其他用户正在使用,这就是多用户的直观感受。
用户和用户组概念
与windows一样,linux下登录系统需要用户和密码,一般有root超级用户和普通用户的区别,其中root用户拥有最高权限,并可以对普通用户的密码进行管理以及权限分配。用户组则是将不同用户的公共行为抽象出来形成一个组,只要是这个组内的成员,都可以访问用户组有拥有的资源。
用户和用户组的关系
用户和用户组的关系,类似数据库中表和表的关系,即存在一对一,一对多,和多对多的关系。
(1)一个用户对应一个用户组
(2)一个用户可以属于多个用户组,一个用户组可以有多个用户
在linux下,/etc/passwd,/etc/shadow和/etc/group三个文件保存了用户和用户组的信息,对这三个文件的操作,可以实现用户和用户组的创建、修改和删除,以及用户组对用户的管理。
用户和用户组操作
以下操作均基于centos6.5。
用户相关
(1)用户创建 useradd [选项] {用户名},常用选项如下
[root@node02 ~]]# useradd Usage: useradd [options] LOGIN
Options: -c, --comment COMMENT 指定一段描述 -d, --home-dir HOME_DIR 新用户的主目录,一般和-m配合使用 -g, --gid GROUP 指定新用户的主组,在/etc/group中不显示 -G, --groups GROUPS 指定新用户的附加组,在/etc/group中显示 -m, --create-home 如果没有目录则创建用户主目录 -r, --system 添加到系统变量,安装mysql时添加mysql用户时会用到 -s, --shell SHELL 指定用户的登录shell,默认是/bin/bash -u, --uid UID 指定用户的uid
不使用选项,会默认添加用户组,centos下用户创建用户uid默认从500开始,并且在/home目录下创建工作空间。
创建用户zhangshan,指定工作空间、主组、附加组和shell程序
创建伪用户,指定shell程序为/sbin/nologin,这样的用户将无法登陆。
可以给伪用户设置密码。
无法切换用户,提示用户被可用。
(2)用户修改 usermod [选项] {用户名},常用选项和上面添加用户类似,此外还有-aG的选项,代表为当前用户追加用户组。
修改lisi为正常用户
修改lisi追加附加组
(3)用户删除 userdel [选项] {用户名},常用选项为-r,如果不加则删除用户还保留用户家目录,如果加上-r选项则会删除用户的家目录。
删除lisi,并删除工作目录
(4)密码管理 passwd [选项] {用户名},常用选项为-l,-u和-d,分别代表锁定账户、解锁账户和删除用户密码,不加参数就是修改密码。
修改zhangsan密码
锁定zhangsan密码,不能远程登陆,除此之外,删除密码也不能远程登陆。
使用zhangsan远程登陆,失败
解除对zhangsan密码的锁定,重新远程连接登陆,ok
(5)用户切换 su {用户名}和su - {用户名},两者都可以切换,区别是前者切换依然在当前目录,而后者会切换到新用户的家目录
用户组相关
(1)用户组创建 groupadd [选项] {用户组名},主要选项如下 。
Usage: groupadd [options] GROUP Options: -g, --gid GID 指定新用户组的group id
-o, --non-unique 和-g配合使用,代表新用户组可以和系统已有group id重复
创建hadoop用户组,创建hdfs用户组,并且和hadoop使用同一个group id
查看/etc/group信息
(2)用户组修改 groupmod [选项] {用户组名},主要选项如下。
Usage: groupmod [options] GROUP Options: -g, --gid GID 修改新用户组的group id -n, --new-name NEW_GROUP 修改用户组名 -o, --non-unique 和-g配合使用,代表新用户组可以和系统已有group id重复
修改hdfs用户组名字为hive
(3)用户组删除 groupdel {用户组名},如果删除的用户组被用户指定为主组,则无法删除,如果只是用户的附加组则可以删除,并撤销和用户的关系。
删除hadoop组,hadoop组提前修改为zhangsan的主组
删除hive组,hive组提前修改为zhangsan的附加组
(4)用户组的切换 newgrp {用户组名},如果某用户属于多个用户组,如果想访问其他用户组的内容,需要切换组。
在zhangsan的家目录下创建两个文件,分别属于hadoop用户组和yangchaolin用户组,并且组权限设置为只读,由于zhangsan属于两个组,因此两个文件都能读到
但如果将hadoop组下的组权限设置为不可读,则切换到hadoop用户组下无法读取文件1,但是能读取文件2
passwd、shadow和group文件说明
passwd
以下是etc/passwd文件中root用户的信息,分为7段,使用冒号分开。
root:x:0:0:root:/root:/bin/bash
(1)root:用户名,不要使用: . - + /
(2)x:密码,这里是加密了。
(3)0:uid,root用户是0,其他根据系统版本有不同的区段划分
(4)0:group id,主组id
(5)root:账户描述信息,这里意思为root账户,一般自己加的如果添加账户不加-c选项则为空
(6)/root:家目录,用户登录后默认工作空间,默认只有root和当前用户可以访问
(7)/bin/bash:用户指定的shell解释器
group
以下是/etc/group下root组的信息,包含四段,用冒号隔开。
root:x:0:jerry
(1)root:用户组名,为root组
(2)x:用户组的密码,一般不设定
(3)0:组的group id,root组id是0
(4)jerry:组内成员列表,这里显示的是将root作为附加组的用户,主组不显示
shadow
以下是/etc/shadow下root的信息,包含8段,用冒号隔开。
root:$6$:18180:0:99999:7:::
(1)root:用户名
(2)$6$:用户密码,这里一般是MD5加密后的口令
(3)18180:代表密码创建至今的天数,从1970年1月1日开始
(4)0:上次和下次修改密码的时间间隔,0代表没有修改过
(5)99999:从密码创建时刻开始,最大有效的天数
(6)7:密码到期前的7天,提醒用户修改密码
(7)这里为空,如果有数字代表密码到期后允许N天之内依然可以登录
(8)这里为空,密码的存活期,是一个绝对天数,到期之后不允许登录
参考博文: