2019-08-06用户修改密码,组的管理及su和sudo

1.如何为用户设定密码,有如何修改密码?

    passwd         #设置或修改用户密码
    passwd    用户名                         #设置密码
    echo "123" | passwd --stdin + 用户名     #passwd  --stdin  非交互式设定密码
批量创建用户并设置密码
    [root@zyt ~]#cat zyt.sh 
    for i in {1..100} 
    do    
    useradd zyt$i    
    echo "123456" | passwd --stdin zyt$i 
    done
如何设置出复杂密码
    [root@zyt ~]# echo $RANDOM | md5sum |cut -c 5-15 2c52fcc14cd
随机生成复杂密码
    [root@zyt ~]# yum install -y expect
    mkpasswd生成随机字符串, -l设定密码长度,-d数子,-c小写字母,-C大写字母,-s特殊字符
总结
  • 为新用户添加密码 只有root权限才可以
  • 为用户变更密码也只有root才可以
  • 普通用户只能修改自己的密码,无法修改其他人的密码
  • 密码的修改方式有两种,一种是交互式 非交互

2.用户的创建流程

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

/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最高到6万
    SYS_UID_MIN               201      系统用户uid从201开始
    SYS_UID_MAX               999      系统用户uid最大到999
    GID_MIN                  1000      gid从1000开始
    GID_MAX                 60000      gid最高到6万
    SYS_GID_MIN               201      系统gid从201开始
    SYS_GID_MAX               999      系统gid最高到999
    CREATE_HOME yes                    给系统创建家目录,默认在/home
    UMASK           077
    USERGROUPS_ENAB yes
    ENCRYPT_METHOD SHA512 

/etc/default/useradd 配置文件解释

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   创建邮箱

3.用户组如何管理

用户组分为私有组,基本组,附加组

  • 私有组:是创建用户时默认会创建一个与用户名同名的组
  • 基本组:-g 指定的一个基本组,前提基本组必须先存在
  • 附加组:-G指定 基本组或私有组无法满足需求时,添加一个附加组,继承改该组的权限

组信息的配置文件为/etc/group 和 /etc/gshadow

/etc/group 配置文件解释

    root : x : 0 :
    以:为分隔符共四列
    第一列  组的名称
    第二列  组的密码
    第三列  组GID
    第四列  显示附加组,不显示基本组

/etc/gshadow 配置文件解释

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

关于组的命令

groupadd   创建组
    -g   指定GID
    -r   创建系统组
groupmod   修改组
    -g    修改组gid
    -n    修改组名称
groupdel    删除组(如果删除基本组,必须先删除基本组中的用户才能删除该组)

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

su 切换用户

  • 加-属于登录时shell,不加-属于非登录式shell,区别是加载的环境变量不同,登录式shell加载全部的环境变量,非登录式shell加载部分环境变量

sudo 提权

  • 预先分配好权限
  • 再关联对应的用户

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

第一种方法

**1.使用命令visudo进入配置文件**
**2.使用sudo定义分组,这个系统group没什么关系**
    User_Alias OPS = oldboy,oldgirl 
    User_Alias DEV = zytt

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

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

4.使用sudo开始分配权限

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

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

第二种方法

1.添加两个真实的系统组, groupdev groupopt

     [root@zyt ~]#groupadd groupdev 
     [root@zyt ~]#groupadd groupopt

2.添加两个用户, group_dev group_op

 [root@zyt ~]#useradd usera -G groupdev 
 [root@zyt ~]# useradd userb -G groupopt 

3.记得添加密码

[root@zyt ~]# echo "123" | passwd --stdin usera 
[root@zyt ~]# echo "123" | passwd --stdin userb 

4.在sudo中配置规则

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

%groupdev ALL=(ALL) SOFTWARE    
%groupop ALL=(ALL) SOFTWARE,PROCESSES

5.检查sudo是否配置有错

[root@zyt ~]# visudo -c 
/etc/sudoers: parsed OK

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。