系统环境:
该博文以CentOS6.8_x86_64和CentOS7.2_x86_64系统为基础,Xshell5远程登录CentOS6.8和CentOS7.2系统,分别以root身份和sjsir用户身份登录系统。
学习的重要问题:
一、为什么要学习用户和组?
首先Linux区别于其他的系统的最重要的特性就是多用户,多任务的特性。这也是Linux重要的知识之一,多用户就是可以在系统上面建立多个用户,多个用户可以在同一时间内登录同一个系统执行各自不同的人,而且每个用户之间都是直接对于系统的访问,两个用户之间的操作不受影响。不同用户都会拥有不同的权限,每个用户在自己指定的范围之内完成属于自己的任务,Linux应用这种思想,实现了多用户和多任务的特性。
二、linux系统中的用户有哪些分类?
a.超级用户:拥有系统中的最高的权限,默认是root用户,区分用户是不是超级用户的重点是该用户的UID是否为0。
b.普通用户:对于自己的目录下的文件可以任意的访问和修改,但是自己权限外面的文件操作时会显示:Permission denied(权限被拒绝。),例如自己建立的sjsir用户,系统默认的第一个用户的UID:CentOS6的UID为500,CentOS7的UID为1000。
c.虚拟用户:该用户的bash为/sbin/nologin,最大的特点就是不能登录系统,他们存在的原因就是为了方便系统管理,满足相对应的系统进程对于文件属性的要求。
三、用户和组的重要概念
a.用户:我们要想使用Linux系统,就必须向系统管理员去申请一个账号,通过每个用户唯一的用户名和用户口令,只有用户输入正确的账户名和用户口令,才允许进入系统和用户的家目录下。我们通过建立不同属性的用户(超级用户,普通用户,虚拟用户),利用用户组的知识,去构建不同的用户组,通过权限的区分,达到用户分类的目的。
b.组:用户组是多个相同特征用户的组合(相当于公司中的一个单独的部门),假设我们有一个文件需要一个组的用户都去访问,若没有用户组的这个概念,这些用户都必须一遍又一遍的服务文件的权限,然后才能让这些用户去访问,但是,若系统中有用户组的概念,只需将用户添加到组之后,然后给于文件一个组的访问权限,所有被添加到用户组的都会获得这个组的权限,即可实现多用户访问该文件。通过去定义用户组,在工作程度上面大大简化了管理工作。
四、用户和组之间的关系:
用户和用户组之间的对应的关系:一对一、一对多、多对一、多对多。
a.一对一:一个用户可以存在一个组中,也是组中的唯一的成员。(该用户存在主组中)
b.一对多:一个用户可以存在多个组中,该用户拥有多个组中共同的权限。(但每个用户,主组只有一个(primary group),辅助组(secondary group)有多个)
c.多对一:多个用户存在一个组中,这些用户拥有和组相同的权限。
d.多对多:多个用户可以存在多个组中,相当于上面的关系的一种扩展。
五、相关密码的一些知识点:
1.shadow的文件格式:(man 5 shadow)
login name:登录用名;
encrypted password:用户密码: 一般用sha512 加密(加密算法后面介绍);
date of last password change:从1970 年1 月1 日起到密码最近一次被更改的时间;
minimum password age:密码再过几天可以被变更(0 表示随时可被变更);
maximum password age:密码再过几天必须被变更(99999 表示永不过期);
password warning period:密码过期前几天系统提醒用户(默认为一周);
password inactivity period:密码过期几天后帐号会被锁定;
account expiration date:从1970 年1 月1 日算起,多少天后帐号失效;
reserved field:保留字段,以后未来可能使用;
2.密码加密的知识:
a.密码加密的机制:
加密:明文–> 密文
解密:密文–> 明文
单向加密:哈希算法,原文不同,密文必不同;相同算法定长输出,获得密文不可逆推出原始数据
雪崩效应:初始条件的微小改变,引起结果的巨大改变
b.加密算法的几种主要的类型:
md5: message digest, 128bits
sha1: secure hash algorithm, 160bits
sha224: 224bits
sha224相比sha256,sha224算法的哈希值大小为256位。
sha256: 256bits
sha384: 384bits
sha384相比sha256,sha384算法的哈希值大小为384位
sha512: 512bits
※Linux系统中更改加密算法 authconfig –passalgo=sha256 — update(将默认的算法更改为sha256)
因为我们以后不会是密码研究的人员,只可知道加密算法的原理即可,无需知道加密算法是如何进行和完成的,所以,我们就去了解一些hash加密算法即可,学会使用authconfig去切换不同的加密算法即可。
3.密码的复杂性策略
a.使用数字、大写字母、小写字母及特殊字符中至少3种
b.足够长(一般为8-20位)
c.使用随机密码(无规律的密码)
d.定期更换,不要是使用原来使用过的密码
学习的重要的命令:
一、用户管理命令:
a.创建用户:useradd [options] LOGIN
-u UID : [UID_MIN, UID_MAX] 定义在/etc/login.defs(为用户指定特定的uid默认为上一个用户的UID+1,CentOs6普通用户的UID从500开始一直到60000结束,CentOs7普通用户的UID默认从1000开始一直到60000结束。) 创建用户peter,指定peter用户的uid为1001.
-o 配合-u 选项,不检查UID 的唯一性
使用-o选项不去检查UID为1001的用户是否存在,直接创建UID为1001的用户tom,通过倒序查看/etc/passwd文件可以发现刚才创建的peter用户和刚创建的用户tom的UID相同,所以加上 -o之后不会检查UID的唯一性;
-g GID :指明用户所属基本组,可为组名,也可以GID
-G GROUP1[,GROUP2,…] :为用户指明附加组,组必须事先存在
关于组创建的两个命令一起说,-g是指定用户所属的基本组的,基本组必须事先存在,用户必须要有基本组,若不使用-g特殊指明,用户创建时默认的创建于用户同名的组,基本组在用户创建时必须创建(为上面说的情况的用户和组的对应关系为一对一)。-G是指定用户的附加组,可以同时为一个用户指定多个用户附加组,也不为用户指明用户组,但是为用户指明基本组的时候,基本组必须实现存在,要不无法指明。
创建用户jerry 为jerry用户创建基本组为sjsir,创建附加组为 bin,root
-c "COMMENT" :用户的注释信息
创建用户可以直接给用户添加注释信息,可以方便以后对用户进行管理,例,创建hello用户,添加hello的用户的注释信息为“i am hello.”
-d HOME_DIR: 以指定的路径( 不存在) 为家目录
创建用户时为用户指定特定的家目录,一般的用户的家目录为/home/xxx,我特意将hi用户的家目录创建到/bin/xixi,可以发现,用户的目录并非一定存在/home下,可以随意指定,但是用户的默认的家目录设置的配置文件在/etc/default/useradd,修改配置文件后,即可实现将用户的家目录更改到任意位置。
-s SHELL : 指明用户的默认shell 程序,可用列表在/etc/shells 文件中
添加用户xixi并指明xixi使用的shell类型为 /bin/csh
系统中可以使用的shell的类型;
-N 不创建私用组做主组,使用users 组做主组
添加用户hadoop,不创建私有组,使用users(GID=100)组作为主组
useradd hadoop -N :创建之后我们可以发现,hadoop的主组为GID100的users组
-r: 创建系统用户 CentOS 6: ID<500 ,CentOS 7: ID<1000
b.修改用户属性usermod
usermod [OPTION] login
-u UID:给已经存在的用户指定一个新的UID
-g GID:给已经存在的用户变更一个新的GID
-G GROUP1[,GROUP2,…[,GROUPN]]] :新附加组,原来的附加组将会被覆盖;
若保留原有,则要同时使用-a 选项,表示append;
-s SHELL :变更用户现在使用shell类型;具体的shell类型参考/etc/shells
-c 'COMMENT' :新的注释信息;
-d HOME: 新家目录不会自动创建,原家目录中的文件不会同时移动至新的家目录;
若要创建新家目录并移动原家数据,同时使用-m 选项
-l login_name: 新的名字;
-L: lock 指定用户, 在/etc/shadow 密码栏的增加!
-U: unlock 指定用户,将 /etc/shadow 密码栏的!拿掉
-e YYYY-MM-DD: 指明用户账号过期日期;
-f INACTIVE: 设定非活动期限;
对于部分选项的解释:
①由于该命令和useradd的部分命令是相同的,对于-u -g -G -s -c -d 的使用方法就简单以一种表现方式给出: usermod gentoo -u 502 -g xixi -G harry -s /bin/csh -c "i am gentoo." -d /home/hello
表示为gentoo用户的uid更改为502,基本组改为xixi,附加组改为harry,脚本的shell改为了/bin/csh,注释信息更改为“i am gentoo.”,家目录改为/home/hello.
②usermod -i newname:将已经存在的用户的名更改新的,下面的是将gentoo更改为hello,但是可以发现uid gid 等还是原来的。
③用户密码相关:
-L: lock 指定用户, 在/etc/shadow 密码栏的增加!
-U: unlock 指定用户,将 /etc/shadow 密码栏的!拿掉
说明:默认直接添加用户时,用户是没有的,在密码的位置取代的是!!默认的无法直接登录,但是早期CentOS5.x系列可以直接使用usermod -U username两次的时候,可以清空密码,让用户无密码直接登录,这样是不安全的,但是现在的6 7系列就已经修改了这种模式,取消两次的时候就会报错。
usermod -L username:系统认为!已经挺安全的了,所以以后给用户添锁还是只能添加一个!
c.删除用户 userdel
userdel [OPTION]… login
-r:递归删除用户,连同用户的家目录和用户的邮箱,包括所创建的组都会删除,但是注意,当他所在的组的中间还有别的用户存在时,不会全部都删除,仅仅会删除单用户,不会删除用户组。
d.查看用户的id相关的信息:
id [OPTION]… [USER]
-u: UID 独立查看用户的UID号(超级用户的默认UID号为0)
-g: GID 独立查看用户的GID号(hello用户的GID为506)
-G: Groups 独立查看用户所属的组(hello为504 506)
-n: Name 上面的命令是显示的是用户的GID UID号,加上-n之后,显示的是用户的名称和组的名称,需要配合-ugG使用。
id username:直接使用id username 的时候,会直接的显示上述的所有信息
e.切换用户或以其他用户身份执行命令
su [options…] [-] [user [args…]]
切换用户的两种方式:
su UserName :非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录
su – UserName :登录式切换,会读取目标用户的配置文件,切换至家目录,完全切换
注意:root su 至其他用户无须密码;非root 用户切换时需要密码
二、密码相关命令
a.设置密码
passwd [OPTIONS] UserName: 修改指定用户的密码,只有超级用户root(UID为0)才能修改其它指定用户的密码,其余用户只能修改自己的密码,无权去修改其他用户的密码;
利用root用户身份,去修改sjsir用户的密码:(因为给sjsir用户一个基于字典的密码,所以系统会提示密码太简单了,但是root身份强大,无论什么密码都可以被设置。)
passwd: 修改自己的密码;
常用选项:
-l: 锁定指定用户(锁定hadoop用户,passwd -l hadoop)
-u: 解锁指定用户(解锁hadoop用户,passwd -u hadoop,但是因hadoop用户之前没有被赋予密码,所以显示一个警告)
-e: 强制用户下次登录修改密码(强制系统中的sjsir用户在下次登录的时候修改密码)
sjsir用户终端显示的内容:(提示用户先输入原来的密码,然后让用户去输入两边新的密码,密码的强度在前面已经说过了,修改之后,系统会强制用户下线,然后让用户重新登录系统。)
-n mindays: 指定最短使用期限(指定hadoop用户的最短使用期限为42天,默认为0天)
-x maxdays :最大使用期限(hadoop用户密码最长的使用期限为1000天,过了这个期限必须修改密码,默认为99999天)
-w warndays :提前多少天开始警告(提前3天告诉hadoop用户需要修改密码,默认的提醒时间为7天。)
-i inactivedays :非活动期限;到什么时候用户禁用(设置hadoop用户可以使用1200天)
–stdin :从标准输入接收用户密码;
echo " PASSWORD " | passwd –stdin USERNAME
echo "centos" | passwd –stdin hadoop
给hadoop用户创建密码,密码为标准输入进的字符,设置为centos;
※:-n -x -w -i 的执行结果显示:(hadoop用户)
b.修改用户密码策略
chage [OPTION]… LOGIN
-d LAST_DAY :设置密码最后一次修改的时间距离1970年1月1日的天数,当last_day设置为0时,用户下次登录时必须修改密码。
root终端:执行chage -d 0 hadoop命令
hadoop终端显示的内容:
-E, –expiredate EXPIRE_DATE:设置用户被禁止登录的时间,时间采取的是距离1970年1月1日的时间,也可以使用YYYY-MM-DD这个格式,账户被禁止后只有联系管理员接触禁止后才能登录,当设置chage -E -1 username时,取消设置用户禁止登录时间。
chage -E 2017-10-10 hadoop
-I, –inactive INACTIVE:设置在用户被锁定之前,密码过期之后设置的还能使用的天数,被锁定后需和管理员联系进行解锁。
chage -I 10 hadoop
-m, –mindays MIN_DAYS:更改用户密码的最短使用期限
chage -m 10 hadoop
-M, –maxdays MAX_DAYS:更改用户密码的最长使用期限
chage -M 1000 hadoop
-W, –warndays WARN_DAYS:更改用户密码的提醒时间啊
chage -W 4 hadoop
–l ,显示密码策略,下一次登录强制重设密码
三、组管理的命令(组的管理命令和用户的管理命令差不多,所以不做过多的介绍,直讲重要的配置文件。)
a.创建组
groupadd [OPTION]… group_name
-g GID: 指明GID号;默认的组的GID号为500-60000(6),1000-60000(7)
-r: 创建系统组;组的GID默认小于CentOS 6: ID<500 CentOS 7: ID<1000
b.修改和删除组
组属性修改:groupmod
groupmod [OPTION]… group
-n group_name: 新名字
-g GID: 新的GID
组删除:groupdel
groupdel GROUP
c.更改组密码
组密码:gpasswd
gpasswd [OPTION] GROUP
-a user: 将user 添加至指定组中;
-d user: 从指定组中移除用户user
-A user1,user2,…: 设置有管理权限的用户列表
newgrp 命令:临时切换基本组;如果用户本不属于此组,则需要组密码
d.更改和查看组成员
groupmems [options] [action]
options:
-g, –group groupname 组 更改为指定组 ( 只有root)
Actions:
-a, –add username 指定用户加入组
-d, –delete username 从组中删除用户
-p, –purge 从组中清除所有成员
-l, –list 显示组成员列表
groups [OPTION].[USERNAME]… 查看用户所属组列表
原创文章,作者:sjsir,如若转载,请注明出处:http://www.178linux.com/27142