[技巧] 开启群晖 root 权限的脚本,任务计划执行一次,重启...
脚本根据公开的开启root权限方法编写,用群晖的任务计划执行一次,重启后即已开启root权限。操作步骤:
[*]将脚本文本粘贴到群晖文本编辑器保存;
[*]新建任务计划,输入 bash <脚本文件路径和文件名> -p <root用户密码> ;
[*]执行脚本,重启群晖,确认执行成功后删除该任务计划。
注:
[*]脚本文件名不要用中文;
[*]保存脚本的完整路径可在 File Station 的脚本文件属性中查看;
[*]建议先查看执行结果,如果成功再重启群晖,查看方法:在任务计划设置中开启“保存输出结果”并设置保存路径,运行脚本后即可查看。
[*]
#! /bin/ash
# 使用群晖计划任务以 root 身份执行一次该脚本
# 脚本参数 -p <password>
# -f 强制修改密码
# -r 自动重启设备(注意保存工作进度),建议手动重启群晖,不使用该参数
# *** 脚本执行后请重新启动设备 ***
# 2023-2-28 limpo
function EchoErr
{
ExitCode=$?
if [ $ExitCode -ge $1 ]
then
echo $2
exit $ExitCode
fi
return 0
}
ForceChangePassword='no'
reboot='no'
sshconf='/etc/ssh/sshd_config'
while getopts "p:frh" arg
do
case $arg in
p)
password=$OPTARG
;;
f)
ForceChangePassword='yes'
;;
r)
reboot='yes'
;;
h|?)
printf "Usage: $0 -p <pssword> [-f] [-r]\n\t-p:\tPassword of root\n\t-f:\tforce modify password of root\n\t-r:\tforce reboot this device\n"
exit 0
;;
esac
done
if [ "$password" = "" ]; then
echo Password must be specified.
exit 1
fi
if [ ${#password} -le 4 ]; then
echo Password too short.
exit 1
fi
printf"`date`\tDetermine the root identity.\t"
if [[ $(whoami) != 'root' ]]
then
echo Not root identity.
exit 1
fi
echo 'OK.'
printf"`date`\tGet NAS root login permission.\t"
isroot=`grep -c '^PermitRootLogin yes' $sshconf`
EchoErr 2 "Failed."
echo OK.
if [ $isroot -ge 1 ]
then
printf "`date`\tThe root login permission has been enabled.\n"
if [ $ForceChangePassword != 'yes' ]
then
exit 0
fi
else
printf "`date`\tModify $sshconf ...\t"
sed -i "/#PermitRootLogin prohibit-password/a# -- The follow line added by $0\n# @`date`\nPermitRootLogin yes\n# -- End adding." $sshconf
EchoErr 1 "Failed."
echo "OK."
fi
printf "`date`\tChange root passoword ...\t"
synouser --setpw root $password
EchoErr 1 "Failed."
echo "OK."
if [ "$reboot" = "yes" ]
then
printf "`date`\tReboot this device ...\t"
reboot
EchoErr 1 "Failed."
echo "OK."
fi
页:
[1]