美文网首页LinuxLinux学习之路我用 Linux
day10-Linux学习 用户与组(下)

day10-Linux学习 用户与组(下)

作者: 云运维之道 | 来源:发表于2019-08-06 18:50 被阅读5次

一、为用户添加或修改密码密码

1、添加密码

passwd命令

只有root才可以添加

密码要复杂 [0-9] [a-z] [A-Z] [!@#$%^&*.]

#交互式添加密码
[root@oldboy ~]# passwd Jgb   
Changing password for user Jgb.
New password:                #输入新密码
BAD PASSWORD: The password is a palindrome
Retype new password:         #再次输入新密码
passwd: all authentication tokens updated successfully.

#非交互式设定密码
[root@oldboy ~]# echo "123" | passwd --stdin Jgb   

#批量创建用户,并设定固定密码
[root@oldboy ~]# cat a.sh
for i in {1..100}
do
    useradd test$i
    echo "123456" | passwd --stdin test$i
done

2、修改密码

1)普通用户只允许变更自己的密码,无法修改其他人密码,并且密码长度必须8位字符。 直接passwd

2)超级管理员用户允许修改任何人的密码,无论密码长度多长或多短。passwd + 用户名

3、复杂密码设置

#系统内置生成随机字符串
[root@oldboy ~]# echo $RANDOM|md5sum|cut -c 1-10

#mkpasswd生成随机字符串
选项:-l设定密码长度,-d数子,-c小写字母,-C大写字母,-s特殊字符
[root@oldboy ~]# yum install -y expect   //需要安装扩展包
[root@oldboy ~]# mkpasswd -l 10 -d 2 -c 3 -C 3 -s 2

二、用户的创建流程? [扩展了解]

在用户创建的过程需要参考 /etc/login.defs 和/etc/default/useradd 这两个文件,默认参考。

如果在创建用户时指定了参数,则会覆盖 (默认 /etc/login.defs和/etc/default/useradd)

[root@oldboyedu ~]# grep "^[a-Z]" /etc/login.defs
MAIL_DIR /var/spool/mail                #创建的邮箱所在的位置
PASS_MAX_DAYS 99999                     #密码最长使用的天数
PASS_MIN_DAYS 0                         #密码最短时间的天数
PASS_MIN_LEN 5                          #密码的长度
PASS_WARN_AGE 7                         #密码到期前7天警告
UID_MIN 1000                            #uid最小值为1000
UID_MAX 60000                           #uid最大值为60000
SYS_UID_MIN 201                         #系统用户的uid最小值为201
SYS_UID_MAX 999                         #系统用户的uid最大值为999
GID_MIN 1000                            #gid最小值为1000
GID_MAX 60000                           #gid最大值为60000
SYS_GID_MIN 201                         #系统用户的gid最小值为201
SYS_GID_MAX 999                         #系统用户的gid最大值为999
CREATE_HOME yes                         #给用户创建家目录,创建在/home
UMASK 077
USERGROUPS_ENAB yes                     #如果设置为 yes,如果组中没有成员了, userdel 将移除此用                                           户组, useradd 创建用户时,也会创建一个同名的默认组。
ENCRYPT_METHOD SHA512

[root@oldboyedu ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=100                 #当用户创建用户时不指定组,并且/etc/login.defs中USERGROUPS_ENAB为no时, 
                              用户默认创建给分配一个gid为100的组.
HOME=/home                #用户默认的家目录
INACTIVE=-1               #用户不失效
EXPIRE=                   #过期时间
SHELL=/bin/bash           #默认登录shell
SKEL=/etc/skel            #默认用户复制的环境变量
CREATE_MAIL_SPOOL=yes     #创建邮箱

三、用户组管理

1、组的介绍

私有组:不加任何参数,默认创建一个与用户同名的组。

基本组:-g 参数指定。 基本组必须先存在。

附加组:-G 参数指定。 基本组与私有组无法满足需求时,添加一个附加组,继承改组的权限。

2、组的配置文件

1)/etc/group 存放信息

[root@oldboy ~]# head -1 /etc/group
root:x:0:

#以:为分隔符,总共分为4列
#第一列  组的名称
#第二列  组的密码
#第三列  组GID
#第四列  显示附加组不显示基本成员

2)/etc/gshadow 存放密码

[root@oldboy ~]# head -1 /etc/gshadow
root:::

#以:为分隔符,总共分为4列
#第一列  组的名称
#第二列  组的密码
#第三列  组管理员
#第四列  显示附加组不显示基本成员

3、组的相关命令

1)创建组

groupadd 命令

#-g  指定创建组的gid
[root@oldboy ~]# groupadd -g 666 aa

#-r  创建系统组
[root@oldboy ~]# groupadd -r maomao

2)修改组

groupmod 命令

#-g  修改组的gid
[root@oldboy ~]# groupmod -g 777 aa

#-n  修改组的名称
[root@oldboy ~]# groupmod aa(旧组名) -n bb(新组名)

3)删除组

groupdel 命令

要先删除基本组中的用户才可以删除基本组。

[root@oldboy ~]# groupdel aa
图1.png
[root@oldboy ~]# groupadd dawang
[root@oldboy ~]# groupadd laowang
[root@oldboy ~]# useradd xiaowang
[root@oldboy ~]# useradd gb -g laowang
[root@oldboy ~]# usermod xiaowang -G laowang,dawang
[root@oldboy ~]# userdel -r xiaowang
[root@oldboy ~]# groupdel dawang
[root@oldboy ~]# groupdel laowang
groupdel: cannot remove the primary group of user 'gb'
[root@oldboy ~]# userdel -r gb
[root@oldboy ~]# groupdel laowang

四、普通用户提权

su 切换用户 如果切换用户,需要知道用户的密码,不是很安全

图2.png

sudo 提权( root事先分配好权限 -–> 关联用户 ) 安全 方便 但是复杂

1、shell分类

1)交互式 不停的交互,比如面试时一问一答

2)非交互式 面试时一下子回答完所有的问题,不被打断

3)登录式shell

需要用户名以及密码开启bash窗口

su - 用户名

会加载全部的环境变量

4)非登录式shell

不需要用户名和密码即可开启bash窗口

su 用户名

会加载部分环境变量(会出现错误清空)

#登录式shell 与 非登录式shell 的区别是 加载的环境变量不同

[root@oldboy ~]# su - root
Last login: Tue Aug  6 17:18:37 CST 2019 from 10.0.0.1 on pts/1
/etc/profile!
/etc/profile.d/1.sh!
~/.bash_profile!
~/.bashrc!
/etc/bashrc!

[root@oldboy ~]# su root
~/.bashrc!
/etc/bashrc!
/etc/profile.d/1.sh!

2、bash shell配置文件

文件主要保存用户的工作环境

1)个人配置文件:

​ ~/.bash_profile

​ ~/.bashrc

2)全局配置文件:

​ /etc/profile

​ /etc/profile.d/*.sh

​ /etc/bashrc

如果全局配置和个人配置产生冲突,以个人配置为准

#显示环境变量

在每个文件中添加一行输出 echo

[root@oldboy ~]# vim /etc/profile
[root@oldboy ~]# vim /etc/profile.d/1.sh
[root@oldboy ~]# vim /etc/bashrc
[root@oldboy ~]# vim ~/.bash_profile
[root@oldboy ~]# vim ~/.bashrc
图3.png 图4.png 图5.png 图6.png 图7.png

3、su命令

普通用户 su - 可以直接切换至root用户,但需要输入root用户的密码。

超级管理员root用户使用 su - username 切换普通用户不需要输入任何密码。

4、sudo提权

第一种方式:使用sudo中自带的别名操作,将多个用户定义成一个组,这个组只有sudo认可。

[root@oldboy ~]# visudo  #也可以使用vim /etc/sudoers来配置
图8.png
#登陆对应的用户使用 sudo -l 验证权限

第二种方式:使用groupadd添加组,然后给组分配sudo的权限,如果有新用户加入,直接将用户添加到该组。

#1.添加两个系统组
[root@oldboy ~]# groupadd group_dev
[root@oldboy ~]# groupadd group_op

#2.分别为组添加两个用户
[root@oldboy ~]# useradd user_a -G group_dev
[root@oldboy ~]# useradd user_b -G group_dev
[root@oldboy ~]# useradd user_c -G group_op
[root@oldboy ~]# useradd user_d -G group_op

#3.添加密码
[root@oldboy ~]# echo "1" | passwd --stdin user_a
[root@oldboy ~]# echo "1" | passwd --stdin user_b
[root@oldboy ~]# echo "1" | passwd --stdin user_c
[root@oldboy ~]# echo "1" | passwd --stdin user_d

#4.在sudo中配置规则
[root@oldboy ~]# visudo
    Cmnd_Alias NETWORKING = /sbin/ifconfig, /bin/ping
    Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/yum
    Cmnd_Alias SERVICES = /sbin/service, /usr/bin/systemctl start
    Cmnd_Alias STORAGE = /bin/mount, /bin/umount
    Cmnd_Alias DELEGATING = /bin/chown, /bin/chmod, /bin/chgrp
    Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall

    %group_dev ALL=(ALL) SOFTWARE
    %group_op ALL=(ALL) SOFTWARE,PROCESSES

#5.检查sudo是否配置有错
[root@oldboy ~]# visudo -c

#6.登陆对应的用户使用 sudo -l 验证权限

相关文章

网友评论

    本文标题:day10-Linux学习 用户与组(下)

    本文链接:https://www.haomeiwen.com/subject/auowdctx.html