8/6 day10-用户管理

1.如何为用户设定密码,又如何修改密码(root才能执行)

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

管理员用户允许修改任何人的密码,无论密码长度多长或多短。

#①.使用passwd命令修改用户密码

passwd        #给当前用户修改密码

passwd root  #给root用户修改密码

passwd oldboy #给oldboy用户修改密码,普通用户只能自己修改自己

#②.验证如下几项指标

passwd                #root管理员用户登陆,修改root用户密码

passwd xuliangwei    #root用户登陆,修改其他用户的密码

$ passwd root          #普通用户修改root管理员密码

echo "123" | passwd --stdin xuliangwei    #非交互式修改密码

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

d09fe9b1xs

[root@bgx ~]# echo $(echo $RANDOM|md5sum |cut -c 5-14) |tee pass.txt| passwd --stdin xuliangwei

#④.mkpasswd生成随机字符串, -l设定密码长度,-d数子,-c小写字母,-C大写字母,-s特殊字符

[root@bgx ~]# yum install -y expect  //需要安装扩展包

[root@bgx ~]# mkpasswd -l 10 -d 2 -c 2 -C 2 -s 4

|K&13bR)i/

2.用户的创建流程

①.useradd创建用户时,系统会以/etc/login.defs、/etc/defaults/useradd两个配置文件作为参照物,如果在创建用户时指定了参数则会覆盖/etc/login.defs、/etc/defaults/useradd文件默认配置,如未指定则使用默认。

[root@bgx ~]# grep -Ev "^#|^$" /etc/login.defs

MAIL_DIR    /var/spool/mail        邮箱位置

PASS_MAX_DAYS  99999            最长时间

PASS_MIN_DAYS  0                      最短时间

PASS_MIN_LEN    5                      密码长度

PASS_WARN_AGE  7                    到期前警告

UID_MIN                  1000              uid 1000开始

UID_MAX                60000            60000结束

SYS_UID_MIN              201          系统用户的udi 201开始

SYS_UID_MAX              999          999结束

GID_MIN                  1000

GID_MAX                60000

SYS_GID_MIN              201

SYS_GID_MAX              999

CREATE_HOME yes                          创建家目录

UMASK          077

USERGROUPS_ENAB yes

ENCRYPT_METHOD SHA512

[root@bgx ~]# cat /etc/default/useradd

GROUP=100                 

   HOME=/home      #把用户的家目录建在/home中。

INACTIVE=-1    #是否启用账号过期停权,-1表示不启用。

EXPIRE=        #账号终止日期,不设置表示不启用。

SHELL=/bin/bash #新用户默认所有的shell类型。

SKEL=/etc/skel  #配置新用户家目录的默认文件存放路径。(环境变量)

CREATE_MAIL_SPOOL=yes  #创建mail文件。

3.用户组如何管理

①.什么是用户组?其实就是一种逻辑层面的定义,逻辑上将多个用户归纳至一个组,当我们对组操作,其实就相当于对组中的所有用户操作

②.对于用户来说,组有几种类别?基本组,用户只能有一个基本组,创建时可通过-g指定,如未指定则创建一个默认的组(与用户同名)附加组,基本组不能满足授权要求,创建附加组,将用户加入该组,用户可以属于多个附加组

3.那组的信息保存在哪呢?组账户信息保存在/etc/group和/etc/gshadow两个文件中。重点关注group

1./etc/group 配置文件解释如下图

2./etc/gshadow 配置文件解释如下图

使用groupadd命令新增组,groupadd [-g GID] groupname

#创建基本组, 不指定gid 

groupadd no_gid

检查tail -n1 /etc/group

#创建基本组, 指定gid为5555

groupadd -g 5555 yes_gid 

检查tail -n1 /etc/group

#创建系统组,gid从201-999 

groupadd -r sys_group 

检查ail -n1 /etc/group

使用groupmod命令新增组

#-g 修改组gid groupmod -g 1111 no_gid

检查  tail -1 /etc/group

#-n 修改组名称

groupmod -n active_group yes_gid

检查  tail -1 /etc/group

groupdel删除组,删除时需要注意,如果用户存在基本组则无法直接删除该组,如果删除用户则会移除默认的私有组,而不会移除基本组。

#删除组 groupdel active_group

#删除用户附加组 id xuliangwei

uid=1069(xuliangwei) gid=5005(xuliangwei) groups=5005(xuliangwei),5004(devops)groupdel devops

id xuliangweiu

id=1069(xuliangwei) gid=5005(xuliangwei) groups=5005(xuliangwei)

#无法删除用户基本组

 groupdel network_sa

groupdel: cannot remove the primary group of user 'bgx_xuliangwei'

#只有删除用户或者用户变更基本后,方可删除该组

4.普通用户无权限怎么办?切换身份or提权?

1.su切换用户,使用普通用户登录,然后使用su命令切换到root。优点:简单 缺点:需要知道root密码

2.sudo提权,当需要使用root权限时进行提权,而无需切换至root用户,优点:安全、方便 缺点:复杂

1.Linux Shell主要分为如下几类

交互式shell,需要不停地交互

非交互式shell,执行shell脚本, 脚本执行结束后shell自动退出

登陆shell,需要用户名和密码才能进入Shell

su -username

非登陆shell,不需要用户和密码就能进入Shell,比如运行bash会开启一个新的会话窗口

su  username

2.bash shell配置文件介绍(文件主要保存用户的工作环境)

个人配置文件:~/.bash_profile ~/.bashrc 。全局配置文件:/etc/profile /etc/profile.d/*.sh /etc/bashrc

profile类文件, 设定环境变量, 登陆前运行的脚本和命令。bashrc 类文件, 设定本地变量, 定义命令别名

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

3.登陆系统后,环境变量配置文件的应用顺序是?登录式shell配置文件执行顺序: /etc/profile->/etc/profile.d/*.sh->~/.bash_profile->~/.bashrc->/etc/bashrc

非登陆式shell配置文件执行顺序: ~/.bashrc->/etc/bashrc->/etc/profile.d/*.shPS: 验证使用echo在每行添加一个输出即可

4.说了这么多预备知识,那这些和su命令切换用户有什么关系?

su - username属于登陆式shell,su username属于非登陆式shell,区别在于加载的环境变量不一样。

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

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

2.sudo提权su命令在切换用户身份时,如果每个普通用户都能拿到root用户的密码,当其中某个用户不小心泄漏了root的密码,那系统会变得非常不安全。为了改进这个问题,从而产生了sudo这个命令。

其实sudo就相当于给某个普通用户埋下了浩克(hulk)的种子,当需要执行一些高级操作时,进行发怒,但正常情况下还是普通人,还是会受到限制。

①埋下hulk的种子

1.快速配置sudo方式[先睹为快]

usermod bgx -G wheelsudo tail -f /var/log/secure    #sudo审计日志

#2.一般正常配置sudo方式

visudo => vim /etc/sudoers

#1.用户名  2.主机名=(角色名)      4.命令名

bgx      ALL=(ALL)        /usr/bin/yum,/usr/sbin/useradd  #允许使用sudo执行命令

oldboy  ALL=(ALL)          NOPASSWD:/bin/cp, /bin/rm  #NOPASSWD不需要使用密码

②提权使用

#1.切换普通用户 su - xuliangwei

#2.检查普通用户能提权的命令 sudo -lUser xuliangwei may run the following commands on this host:    (ALL) ALL

#3.普通用户正常情况下是无法删除opt目录的 rm -rf /opt/rm: cannot remove `/opt: Permission denied

#4.使用sudo提权,需要输入普通用户的密码。 sudo rm -rf /opt

③.提升的权限太大,能否有办法限制仅开启某个命令的使用权限?其他命令不允许?

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

visudo  #也可以使用vi /etc/sudoers来配置

①.使用sudo定义分组,这个系统group没什么关系

User_Alias OPS = oldboy,alex

User_Alias DEV = bgx,py

②.定义可执行的命令组,便于后续调用

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

③.使用sudo开始分配权限

OPS  ALL=(ALL) NETWORKING,SOFTWARE,SERVICES,STORAGE,DELEGATING,PROCESSESDEV  ALL=(ALL) SOFTWARE,PROCESSES

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

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

#①.添加两个真实的系统组,  group_dev  group_op

groupadd group_dev

groupadd group_op

#②.添加两个用户,      group_dev(user_a  user_b)  group_op(user_c  user_d) 

useradd user_a -G group_dev

useradd user_b -G group_dev

 useradd user_c -G group_op

useradd user_d -G group_op

#③.记得添加密码 

echo "1" | passwd --stdin user_a 

echo "1" | passwd --stdin user_b

echo "1" | passwd --stdin user_c

echo "1" | passwd --stdin user_d

#④.在sudo中配置规则

[root@www ~]# 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

#⑤.检查sudo是否配置有错

[root@www ~]# visudo -c

#⑥.检查user_a,和user_d的sudo权限

sudo -l

*4.sudo命令的执行流程:

1) 普通用户执行sudo命令时, 会检查/var/db/sudo是否存在时间戳缓存

2) 如果存在则不需要输入密码, 否则需要输入用户与密码

3) 输入密码会检测是否该用户是否拥有该权限

4) 如果有则执行,否则报错退出

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342