# find / -type f \( -perm -1000 -o -perm -2000 -o -perm -4000 \) -print
[工具] 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 & SLES 的 /etc/profile 配置文件里没有这些内容,所以如果是对 openSUSE & SLES 进行操作时则需要手动创建这些内容)
或者:
# 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 & SLES 没有 /etc/bashrc 配置文件,所以如果是对 openSUSE & SLES 进行操作时则需要手动创建此文件和这些内容)
或者:
# vim /etc/bashrc
添加以下内容:
......
umask 022
(补充:这里以将所有用户的全局 Umask 设置为 022 为例)
(注意: openSUSE & SLES 没有 /etc/bashrc 配置文件,所以如果是对 openSUSE & SLES 进行操作时则需要手动创建此文件)
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 个值时,会以最后一个值为准
)
[内容] Linux acl 权限
案例一:给某 1 个文件或目录添加 acl
1.1 给某 1 个文件或目录添加 1 个用户的 acl
# setfacl -m u:zhumingyu:r-x /var
(补充:这里以在 /var 目录上给 zhumingyu 用户设置读和执行的 acl 权限为例)
(注意:给一个文件或目录添加了 acl 权限以后,更改权限的命令 chmod 对此文件或目录的操作可能会失效)
1.2 给某 1 个文件或目录添加 1 个组的 acl
# setfacl -m g:zhumingyu:r-x /var
(补充:这里以在 /var 目录上给 zhumingyu 组设置读和执行的 acl 权限为例)
(注意:给一个文件或目录添加了 acl 权限以后,更改权限的命令 chmod 对此文件或目录的操作可能会失效)
1.3 递归给某 1 个目录和目录里的所有内容添加 1 个 acl
# setfacl -Rm u:zhumingyu:r-x /var
(补充:这里以在 /var 目录上递归给 zhumingyu 组设置读和执行的 acl 权限为例)
案例二:删除某 1 个文件或目录的 acl
2.1 删除某 1 个文件或目录 1 个用户的 acl
# setfacl -x u:zhumingyu /var
(补充:这里以在 /var 目录上删除 zhumingyu 用户的 acl 权限为例)
2.2 删除某 1 个文件或目录 1 个组的 acl
# setfacl -x g:zhumingyu /var
(补充:这里以在 /var 目录上删除 zhumingyu 组的 acl 权限为例)
2.3 删除某 1 个文件或目录的所有 acl
# setfacl -b /var
(补充:这里以在 /var 目录上删除所有 acl 权限为例)
2.4 递归删除某 1 个文件或目录的 acl
# setfacl -Rx u:zhumingyu:r-x /var
(补充:这里以在 /var 目录上递归删除 zhumingyu 用户的 acl 权限为例)
2.5 递归删除某 1 个文件或目录的所有 acl
# setfacl -Rb /var
(补充:这里以在 /var 目录上递归删除所有 acl 权限为例)
案例三:显示某 1 个文件或目录的 acl
# getfacl /var
(补充:这里以显示 /var 目录的 acl 权限为例)
案例四:备份和还原某个文件或目录的 acl
4.1 备份某 1 个文件或目录的 acl
# getfacl -R /var > /acl.backup
(补充:这里以备份 /var 目录的 acl 权限为例)
4.2 还原某 1 给文件或目录的 acl
# setfacl --restore /acl.backup
(补充:这里以还原 /var 目录的 acl 权限为例)
[步骤] sudo 提权的实现 (通过用户自己的密码实现 sudo 提权) (openSUSE & SLES)
步骤一:给用户添加相应的 sudo 权限
# vim /etc/sudoers
或者:
# visudo
添加以下内容:
……
zhumingyu ALL=(ALL) /usr/bin/mysql
(补充:这里以给用户 zhumingyu 添加 /usr/bin/mysql 命令为例)
步骤二:设置用户使用自己的密码实现 sudo 提权
# vim /etc/sudoers
或者:
# visudo
将以下内容:
......
#Defaults targetpw # ask for the password of the target user i.e. root
#ALL ALL=(ALL) ALL # WARNING! Only use this together with 'Defaults targetpw'!
......
修改为:
......
Defaults targetpw # ask for the password of the target user i.e. root
ALL ALL=(ALL) ALL # WARNING! Only use this together with 'Defaults targetpw'!
......