[工具] Shell 批量修改多个远程服务器某个用户的过期密码

介绍

基本信息

作者:朱明宇
名称:批量修改多个远程服务器某个用户的过期密码
作用:批量修改多个远程服务器某个用户的过期密码

使用方法

1. 将此脚本和清单 $list 文件放在同一目录下
2. 清单 $list 里每个远程服务器名或 IP 地址占用 1 行
3. 在此脚本的分割线内写入相应的内容
4. 在执行此脚本的系统上安装 expect
5. 给此脚本添加执行权限
6. 执行此脚本

脚本分割线里的变量

1. oldpassword=123 #原密码
2. newpassword=abc #新密码
3. user=root #要修改密码的用户
4. list=servers.txt #指定服务器清单

脚本

#!/bin/bash

####################### Separator ########################

oldpassword=123
newpassword=abc
user=root
list=servers.txt

####################### Separator ########################

set timeout 5

for i in `cat $list`
do
        echo $i
        ssh $i "whoami"

        if [ $? -eq 0 ];then
                continue
        fi

        expect << EOF
        spawn ssh $user@$i
        expect "Current password:"    {send "$oldpassword\r"}
        expect "New password:"        {send "$newpassword\r"}
        expect "Retype new password:" {send "$newpassword\r"}
        expect ">"                    {send "\r"}
        EOF

       echo

done

[内容] Linux Umask 的设置

内容一:Umask 值的含义

如果 Umask 的值是 0022:
创建的新目录的默认权限是:777 – 022 = 755
创建的新文件的默认权限是:666 – 022 = 644

内容二:临时设置 Umask

2.1 查看当前 Umask 值

# umask
0022

2.2 临时设置 Umask 值

2.2.1 方法一:使用权限数字设置默认权限值
# umask 0002
2.2.2 方法二:使用权限标志设置默认权限值
# umask -S u=rwx,g=rwx,o=rw

内容三:永久设置 umask

3.1 给某个用户单独永久设置 Umask

3.1.1 切换到要永久设置 Umask 的用户
# su - root

(补充:这里以切换到 root 用户为例)

3.1.2 给某个用户单独添加 Umask 参数
# vim ~/.bashrc 

添加以下内容:

......
umask 022

(补充:这里以将 Umask 设置为 022 为例)

3.1.3 让 Umask 设置生效
# source ~/.bashrc

3.2 全局永久设置 Umask 的方法

3.2.1 在 /etc/login.defs 配置文件里设置默认 Umask 参数
# vim /etc/login.defs

将以下内容:

UMASK ......

修改为:

UMASK           022

(补充:这里以将 Umask 的默认值设置为 022 为例)

3.2.2 在 /etc/profile 配置文件里设置全局 Umask 参数
# vim /etc/profile

将以下内容:

......
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
    umask ......
else
    umask ......
fi
......

修改为:

......
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
    umask 002
else
    umask 022
fi
......

(补充:这里以将 UID 小于 199 的用户 Umask 设置为 002,UID 大于等于 199 的用户 Umask 设置为 022 为例)

(注意:openSUSE & SLE 的 /etc/profile 配置文件里没有这些内容,所以如果是对 openSUSE & SLE 进行操作时则需要手动创建这些内容)

或者:

# vim /etc/profile

添加以下内容:

......
umask 022

(补充:这里以将所有用户的全局 Umask 设置为 022 为例)

3.2.3 在 /etc/bashrc 配置文件里设置全局 Umask 参数
# vim /etc/bashrc

将以下内容:

......
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
    umask ......
else
    umask ......
fi
......

修改为:

......
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
    umask 002
else
    umask 022
fi
......

(补充:这里以将 UID 小于 199 的用户 Umask 设置为 002,UID 大于等于 199 的用户 Umask 设置为 022 为例)

(注意: openSUSE & SLE 没有 /etc/bashrc 配置文件,所以如果是对 openSUSE & SLE 进行操作时则需要手动创建此文件和这些内容)

或者:

# vim /etc/bashrc

添加以下内容:

......
umask 022

(补充:这里以将所有用户的全局 Umask 设置为 022 为例)

(注意: openSUSE & SLE 没有 /etc/bashrc 配置文件,所以如果是对 openSUSE & SLE 进行操作时则需要手动创建此文件)

3.2.4 让永久设置的 Umask 设置生效
# source /etc/bashrc ; source /etc/profile


注意:
1) 当永久设置的 Umask 生效后,用户必须要重新登录后才会刷新 Umask
2) 当 /etc/login.defs 配置文件、/etc/bashrc 配置文件和 /etc/profile 配置文件里设置的 Umask 值不一致时,会以 /etc/profile 文件里设置的为准
3) 当同一个文件里设置了多个 Umask 个值时,会以最后一个值为准