Linux用户和用户组的操作

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)这里为空,密码的存活期,是一个绝对天数,到期之后不允许登录

参考博文:

(1)https://www.cnblogs.com/lemaden/p/10188848.html

猜你喜欢

转载自www.cnblogs.com/youngchaolin/p/11680157.html