美文网首页
Linux用户管理day10

Linux用户管理day10

作者: 风铃科技 | 来源:发表于2019-08-06 18:56 被阅读0次
    一、设定密码与变更密码

    创建用户后,如使用该用户登陆系统则需要为用户设定密码,设定密码使用passwd命令。

    1.使用passwd命令修改用户密码
     passwd        给当前用户修改密码
     passwd root   给root用户修改密码
     passwd oldboy 给oldboy用户修改密码,普通用户只能自己修改自己密码
    

    注意事项
    1.普通用户只允许变更自己的密码,无法修改其他人密码,并且密码长度必须8位字符。
    2.管理员用户允许修改任何人的密码,无论密码长度多长或多短。

    2.验证
    passwd         root管理员用户登陆,修改root用户密码
    passwd jack     root用户登陆,修改其他用户的密码
    passwd root      普通用户修改root管理员密码
    echo "123" | passwd --stdin wangyongqiang    非交互式修改密码
    
    3.系统内置变量生成随机字符串
    [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 wangyongqiang
    
    4.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/
    
    

    3.用户组的管理

    1.什么是用户组?

    其实就是一种逻辑层面的定义,逻辑上将多个用户归纳至一个组,当我们对组操作,其实就相当于对组中的所有用户操作。
    
    2.对于用户来说,组有几种类别?
    a、基本组,用户只能有一个基本组,创建时可通过-g指定,如未指定则创建一个默认的组(与用户同名)
    b、附加组,基本组不能满足授权要求,创建附加组,将用户加入该组,用户可以属于多个附加组*
    
    3.那组的信息保存在哪呢?
    组账户信息保存在/etc/group和/etc/gshadow两个文件中。
    重点关注group
    
    
    1./etc/group 配置文件解释如下图
    [root@oldboy ~]# head -1 /etc/group
    root:x:0:user1
    
    root x 0 user1
    组的名称 组的密码 组的GID 显示附加组,不显示基本成员

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

    [root@oldboy ~]# head -1 /etc/gshadow
    root:::user1
    
    root: : : user1
    root组的名称 x组的密码 0组管理员 显示附加组成员,不显示基本组成员

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

    #创建基本组, 不指定gid
    [root@oldboy ~]   groupadd no_gid
    [root@oldboy ~]  tail -n1 /etc/group
    no_gid:x:1000:
    
    #创建基本组, 指定gid为5555
    [root@oldboy ~]  groupadd -g 5555 yes_gid
    [root@oldboy ~]  tail -n1 /etc/group
    yes_gid:x:5555:
    
    创建系统组,gid从201-999
    [root@oldboy ~]  groupadd -r sys_group
    [root@oldboy ~]  tail -n1 /etc/group
    sys_group:x:990:
    
    

    2.使用groupmod命令新增组

    -g 修改组gid
    [root@bgx ~]# groupmod -g 1111 no_gid
    [root@bgx ~]# tail -1 /etc/group
    no_gid:x:1111:
    
    -n 修改组名称
    [root@bgx ~]# groupmod -n active_group yes_gid
    [root@bgx ~]# tail -1 /etc/group
    active_group:x:5555:
    
    

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

    删除组
    [root@oldboy ~]# groupdel active_group
    
    删除用户附加组
    [root@oldboy ~]# id wyq
    uid=1069(wyq) gid=5005(wyq) groups=5005(wyq),5004(devops)
    [root@bgx ~]# groupdel devops
    [root@bgx ~]# id wyq
    uid=1069(wyq) gid=5005(wyq) groups=5005(wyq)
    
    无法删除用户基本组
    [root@oldboy ~]# groupdel network_sa
    groupdel: cannot remove the primary group of user 'bgx_wyq'
    只有删除用户或者用户变更基本后,方可删除该组
    
    

    4.使用gpasswd设置组密码

    [root@oldboy ~]# groupadd devops
    [root@oldboy ~]# gpasswd devops
    Changing the password for group devops
    New Password:
    Re-enter new password:
    
    

    5.使用newgrp命令切换基本组身份[扩展,可以不会

    1.检查账户信息
    [root@bgx ~]# useradd wangyongqiang
    [root@bgx ~]# id wangyongqiang
    uid=1069(wangyongqiang) gid=5005(wangyongqiang) groups=5005(wangyongqiang)
    
    2.切换普通用户
    [root@oldboy ~]# su - wangyongqiang
    
    #3.创建新文件,查看文件的属主和属组
    [wangyongqiang@oldboy ~]$ touch file_roots
    [wangyongqiang@oldboy ~]$ ll
    -rw-rw-r-- 1 xuliangwei xuliangwei 0 Jun 13 18:06 file_roots
    
    4.使用newgrp切换到devops组
    [wangyongqiang@oldboy ~]$ newgrp devops
    Password:
    
    #5.创建文件,检查属主和属组
    [wangyongqiang@oldboy ~]$ touch file_test
    [wangyongqiang@oldboy ~]$ ll
    -rw-rw-r-- 1 wangyongqiang wangyongqiang 0 Jun 13 10:06 file_roots
    -rw-r--r-- 1 wangyongqiang wangyongqiang     0 Jun 13 10:08 file_test
    
    

    4.用户如何提权
    公司的服务器对外都是禁止root用户直接登录,所以我们通常使用的都是普通用户。
    当我们使用普通用户执行/sbin目录下的命令时,会发现没有权限运行,这种情况下我们无法正常的管理服务器,那如何才能不使用root用户直接登录系统,同时又保证普通用户能完成日常工作.

    我们可以使用如下两种方式: su、sudo
    1.su切换用户,使用普通用户登录,然后使用su命令切换到root。
    优点:简单 缺点:需要知道root密码
    2.sudo提权,当需要使用root权限时进行提权,而无需切换至root用户。
    优点:安全、方便 缺点:复杂
    

    1.su身份切换

    shell分类、环境变量配置文件有哪些
    1.Linux Shell主要分为如下几类
    交互式shell,等待用户输入执行的命令(终端操作,需要不断提示)
    非交互式shell,执行shell脚本, 脚本执行结束后shell自动退出
    登陆shell,需要输入用户名和密码才能进入Shell,日常接触的最多的一种
    非登陆shell,不需要输入用户和密码就能进入Shell,比如运行bash会开启一个新的会话窗口
    

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

    个人配置文件:~/.bash_profile ~/.bashrc 。
    全局配置文件:/etc/profile /etc/profile.d/*.sh /etc/bashrc
    profile类文件, 设定环境变量, 登陆前运行的脚本和命令。bashrc 类文件, 设定本地变量, 定义命令别名
    如果全局配置和个人配置产生冲突,以个人配置为准。*
    

    3.登陆系统后,环境变量配置文件的应用顺序是什么

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

    4.这些和su命令切换用户有什么关系?

    su - username属于登陆式shell,su username属于非登陆式shell,区别在于加载的环境变量不一样。
    普通用户`su -`可以直接切换至root用户,但需要输入root用户的密码。
    超级管理员root用户使用`su - username`切换普通用户不需要输入任何密码。
    
    1.普通用户使用su切换root
    [wyq@oldboy ~]$ su
    密码:         #输入root的密码
    [root@oldboy wyq]# pwd
    /home/wyq
    
    2.普通用户使用su -切换到root,会加载root的环境变量
    [wyq@node1 ~]$ su -
    密码:
    [root@node1 ~]# pwd
    /root
    
    3.以某个用户的身份执行某个服务,使用命令su -c username
    [root@bgx ~]# su - wyq -c 'ifconfig'
    [root@bgx ~]# su - wyq -c 'ls ~'
    
    

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

    1.快速配置sudo方式
    [root@node1 ~]# usermod bgx -G wheel
    [root@node1 ~]$ sudo tail -f /var/log/secure    #sudo审计日志
    
    2.一般正常配置sudo方式
    [root@www ~]# #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.切换普通用户
    2.检查普通用户能提权的命令
    3.普通用户正常情况下是无法删除opt目录的
    4.使用sudo提权,需要输入普通用户的密码。
    

    3.提升的权限太大,能否有办法限制仅开启某个命令的使用权限?其他命令不允许?*
    第一种方式:使用sudo中自带的别名操作,将多个用户定义成一个组,这个组只有sudo认可*

    [root@bgx ~]# visudo  #也可以使用vi /etc/sudoers来配置
    1.使用sudo定义分组,这个系统group没什么关系
    User_Alias OPS = oldboy,alex
    User_Alias DEV = bgx,py
    
    2.定义可执行的命令组,便于后续调用
    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
    
    3.使用sudo开始分配权限
    OPS  ALL=(ALL) NETWORKING,SOFTWARE,SERVICES,STORAGE,DELEGATING,PROCESSES
    DEV  ALL=(ALL) SOFTWARE,PROCESSES
    
    4.登陆对应的用户使用 sudo -l 验证权限
    
    
    第二种方式:使用groupadd添加组,然后给组分配sudo的权限,如果有新用户加入,直接将用户添加到该组.
    1.添加两个真实的系统组,  group_dev group_op
    [root@www ~]# groupadd group_dev
    [root@www ~]# groupadd group_op
    
    2.添加两个用户,      group_dev(user_a  user_b)   group_op(user_c  user_d)
    [root@www ~]# useradd user_a -G group_dev
    [root@www ~]# useradd user_b -G group_dev
    [root@www ~]# useradd user_c -G group_op
    [root@www ~]# useradd user_d -G group_op
    
    3.记得添加密码
    [root@www ~]# echo "1" | passwd --stdin user_a
    [root@www ~]# echo "1" | passwd --stdin user_b
    [root@www ~]# echo "1" | passwd --stdin user_c
    [root@www ~]# echo "1" | passwd --stdin user_d
    
    4.在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
    
    5.检查sudo是否配置有错
    [root@www ~]# visudo -c
    /etc/sudoers: parsed OK
    
    6.检查user_a,和user_d的sudo权限
    [user_a@www.oldboyedu.com ~]$ sudo -l
    User user_a may run the following commands on www:
        (ALL) /bin/rpm, /usr/bin/yum
    
    [user_d@www.oldboyedu.com ~]$ sudo -l
    User user_d may run the following commands on www:
        (ALL) /bin/rpm, /usr/bin/yum, /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall
    
    

    4.sudo命令的执行流程

    1. 普通用户执行sudo命令时, 会检查/var/db/sudo是否存在时间缓存
    2. 如果存在则不需要输入密码, 否则需要输入用户与密码
    3. 输入密码会检测是否该用户是否拥有该权限
    4. 如果有则执行,否则报错退出*

    相关文章

      网友评论

          本文标题:Linux用户管理day10

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