第四课用户和用户组

3.1用户配置文件和密码配置文件

(1)inux系统中,所有用户(包括系统管理员)的账号和密码都可以在/etc/passwd/etc/shadow这两个文件中找到,/etc/passwd只有系统管理员才可以修改的,其他用户可以查看,/etc/shadow其他用户看不了

(2)/etc/passwd

‘/etc/passwd’  ‘:’ 分割成7个字段,每个字段的具体含义是:

(3)用户名,代表用户账号的字符串。

(4)原先存放该账号的密码,现在密码都放在/etc/shadow中,所以这里显示x

(5)表示uid,代表用户标识号,系统识别用户身份是通过这个数字表示的,0就是root,通常uid的取值范围是0~65535(但实际上已经可以支持到4294967294)0是超级用户(root)的标识号,1~499由系统保留,作为管理账号,普通用户的标识号从500开始,如果我们自定义建立一个普通用户,你会看到该账户的标识号是大于或等于500的。

(6)表示gid,代表组标识号。

(7)关于账号的一些说明信息

(8)用户的家目录,即用户的起始工作目录,它是用户在登录到系统之后所处的目录。

(9)shell,用户登录后要启动一个进程,用来将用户下达的指令传给内核,这就是shell。查看/etc/passwd文件,该字段中除了/bin/bash外还有/sbin/nologin比较多,它表示不允许该账号登录。如果你想建立一个账号不让他登录,那么就可以把该字段改成/sbin/nologin,默认是/bin/bash.

 /etc/shadow


/etc/shadow这个文件,和/etc/passwd类似,用 ‘:’ 分割成9个字段。

(1)用户名

(2)加密后的用户密码(加密算法:SHA-512)

①如果为空,则对应用户没有口令,登录时不需要口令;

②星号代表帐号被锁定;

③双叹号表示这个密码已经过期了;

$6$开头的,表明是用SHA-512加密;

$1$表明是用MD5加密;

$2$ 是用Blowfish加密;

$5$ 是用 SHA-256加密;

(3)从某个时刻起,到用户最后一次修改口令时的天数,时间起点一般是197011日(格林乔治时间)。

(4)两次修改口令之间所需的最小天数,默认0,即不限制。

(5)口令保持有效的最大天数,默认是99999,可以理解为永远不需要改。

(6)“警告时间”字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。

(7)“不活动时间密码已经到期,然而用户并没有在到期前修改密码,那么再过3天,则这个账号就失效了,即锁定了

(8)“失效时间”,是按距离197011日多少天算的,账号在某个日期前可以使用,到期后账号作废。

(9)作为保留用的,没有什么意义。

3.2用户组管理

用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新

(1)用户组的添加

命令格式:groupadd 选项 用户组

选项:

-g GID 指定新用户组的组标识号(GID)

不加 “-g” 选项则按照系统默认的gid创建组,跟用户一样,gid也是从500开始的。

实例:
1.[root@localhost ~]# groupadd grptest1
[root@localhost ~]# tail -n1 /etc/group
grptest1:x:502:
 
2.[root@localhost ~]# groupadd -g 511 grptest2
[root@localhost ~]# tail -n2 /etc/group
grptest1:x:502:
grptest2:x:511:

(2)用户组的删除

命令格式:groupdel 用户组

实例:

[root@localhost ~]# groupdel grptest2
[root@localhost ~]# tail -n3 /etc/group
testgroup:x:500:
user1:x:501:
grptest1:x:502:

有一种情况不能删除组:

[root@localhost ~]# groupdel user1
groupdel: cannot remove the primary group of user 'user1'

这是因为user1组中包含user1账户,只有删除user1账户后才可以删除该组。

(3)用户组属性的修改

命令格式:groupmod 选项 用户组

选项:

-g GID 为用户组指定新的组标识号

-n新用户组 将用户组的名字改为新名字

实例1.

#groupmod -g 102 group2

此命令将组group2的组标识号修改为102

实例2.

#groupmod -g 1000 -n group3 group2

此命令将组group2的标识号改为1000,组名修改为group3

(4)如果一个用户同时属于多个用户组,那么用户可以切换到其他用户组,以便具有其他用户组的权限

命令:

#newgrp 用户组

 

3.3用户管理

用户账号的管理工作主要涉及到用户账号的添加、修改和删除。

(1)添加账号

命令格式:useradd 选项 用户名

选项:-u 自定义UID

-g 是新建的用户属于已经存在的某个组,后面可以跟组id,也可以跟组名

-d 自定义用户的家目录

-M  不建立家目录

-s 自定义shell

实例1.


不加任何选项直接跟用户名,则会创建一个跟用户名同样名字的组。

实例2.

[root@localhost ~]# useradd -u510 -g 513 -M -s /sbin/nologin user11

useradd: group '513' does not exist

[root@localhost ~]# useradd -u510 -g 502 -M -s /sbin/nologin user11

[root@localhost ~]# useradd -u511 -g grptest1 user12

[root@localhost ~]# tail -n2 /etc/passwd

user11:x:510:502::/home/user11:/sbin/nologin

user12:x:511:502::/home/user12:/bin/bash

[root@localhost ~]# tail -n2 /etc/group

grptest1:x:502:

test10:x:503:

‘-g’ 选项后面跟一个不存在的gid会报错,提示该组不存在。刚刚上面说过 ‘-M’ 选项加上后则不建立用户家目录,但是在/etc/passwd文件中仍然有这个字段。但是你使用ls /home/user11查看一下会提示该目录不存在。所以 ‘-M’ 选项的作用只是不创建那个目录()。

[root@localhost ~]# ls /home/user11
ls: 无法访问/home/user11: 没有那个文件或目录
(2)删除账号
命令:userdel -r username
‘-r’ 选项的作用只有一个,就是删除账户的时候连带账户的家目录一起删除。
 

 

 

3.4usermod命令

usermod命令用于修改用户的基本信息

特点:该命令不允许改变在线的账号名称,若要改变账号名称,必须确保这个账号在电脑上没执行任何程序。

命令格式:useradd 选项 参数

选项:

-e,修改账号的有效期限

-f,修改账号在密码过期后多少天,账号关闭

-g,修改账户所属群组

-G,增加用户的附加组,又叫扩展组(一个用户可以属于多个组,但是gid只有一个,除了gid之外的组叫扩展组。)

-l,修改用户账号名称

-L,锁定用户密码,使密码无效

-u,修改用户ID

-U,解除密码锁定

实例:将user1加入到root组

实例:修改用户名称

修改用户密码:--stdin只输入一次新密码。

例子:passwd –stdin 用户名

修改密码:echo –e “”|passwd 用户名

3.5用户密码管理

命令passwd,

更改root密码

[root@localhost ~]# passwd

更改用户 root 的密码 。

新的 密码:

更改其他用户密码:

[root@localhost ~]# passwd aming

更改用户 aming 的密码 。

新的 密码:

只有root可以更改其他用户的密码,普通用户只能修改自己的密码。

参数:-l,锁定用户密码

-u.解锁用户密码

命令:usermod –L/U 用户名,也能锁定和解锁用户密码

--stdin,设置密码写一遍即可,不需确认,以后写脚本经常用,如图所示。

 

3.6mkpasswd命令

命令mkpasswd用于生成密码,随机生成字符串,这字符串可以作为密码

首先安装一个expect软件包,安装命令:#yum install –y expect

安装完成后可以使用命令:#mkpasswd 产生随机字符串

[root@localhost /]# mkpasswd

m0Dirg#N1

1.可以通过参数指定生成字符串的个数:#mkpasswd –l “数字”

实例:[root@localhost /]# mkpasswd -l 12

IZrkxw80bbh<

2.也可以过参数指定生成字符串的特殊字符个数:#mkpasswd -s “数字”

实例:[root@localhost /]# mkpasswd -s 3

ps*0$:ME2

 

3.7su命令

作用:su命令用于切换用户

查看当前用户命令:#whoami

命令格式:su - username ,- 可跟可不跟。

普通用户下的su命令不加username时,就是切换到root用户。

1.如果不加-切换用户时,当前目录没有变化

实例:

[root@localhost /]# cd /tmp/test

[root@localhost test]# su

[root@localhost test]# su aming

[aming@localhost test]$ pwd

/tmp/test

加上-,当前目录则为主目录。表示彻底切换到用户下包括自己的配置和环境变量,就在自己的家目录。

2.指定用户执行命令

实例:

[root@localhost ~]# su - -c "touch /tmp/zanghao.11" aming

[root@localhost ~]# ls -lt /tmp/ |head

总用量 116

-rw-rw-r--  1 aming aming      0 5月  15 22:43 zanghao.1

 

3.8sudo命令

使用场景:使用前提,有一个堡垒机或跳板机,审计就是记录操作

1. 禁止远程直接登录root

2. NOPASSWD: /usr/bin/su    (sudo su - root不要输入密码)

作用:用来让普通用户临时以root用户身份执行指定命令。

默认情况下,只有root用户可以使用sudo命令,普通用户想要使用sudo,需要root预先设定。

要使用sudo命令,首先需要安装,命令:#yum install –y sudo

1. 打开sudo配置文件:使用#visudo会锁定到下图界面。

2.在root ALL=(All) All行下面加入aming All=(All) All,就可以让aming用户拥有sudo特权。aming这里是一个用户,用来指定这个用户有sudo特权。ALL=(All),左边All指的是所有主机(本机主机名),右边的All指的是获取哪个用户的身份。最后一个All设定可以使用sudo的命令有哪些(命令要写绝对路径)。

 

3.此时可以验证一下aming用户的权限了,方法如下:

[aming@localhost ~]$ ls /root/

ls: 无法打开目录/root/: 权限不够

[aming@localhost ~]$ sudo ls

[sudo] aming 的密码:

公共  模板  视频  图片  文档  下载  音乐  桌面

[aming@localhost ~]$ sudo /usr/bin/ls /root/

123  anaconda-ks.cfg   initial-setup-ks.cfg

234  anaconda-ks.cfg.1 sudo

当aming用户使用命令ls查看/root/时,提示权限不够,当使用命令sudo ls,然后输入aming账户密码时,就有权限了。再次使用将不再提示输入密码。

4.不需要输入密码执行sudo

如下图添加:

#user1   All=(ALL)       NOPASSWD: /usr/bin/ls,/usr/bin/mv,/usr/bin/cat

[root@localhost ~]# su - user1

上一次登录:四 5月 17 22:22:26 CST 2018pts/0 上

[user1@localhost ~]$ ls /root/

ls: 无法打开目录/root/: 权限不够

[user1@localhost ~]$ sudo ls /root/

123  anaconda-ks.cfg   initial-setup-ks.cfg

234  anaconda-ks.cfg.1 sudo

3.9限制root远程登录

输入命令:#vi /etc/ssh/sshd_config

把#PermitRootLogin yes 修改为PermitRootLogin no,改完保存退出。

改完配置文件重启sshd服务,

命令:#systemctl restart sshd.service

在重新连接则提示如下图:

打开putty连接,已aming用户登录,如下图所示:

使用sudo命令切换到root下,说明限制成功。

 

 


猜你喜欢

转载自blog.csdn.net/zanghaos/article/details/80385092