找回密码
 立即注册
首页 NAS(网络存储) 嘿群晖 [技巧] 开启群晖 root 权限的脚本,任务计划执行一次,重 ...

玩机/晒机 [技巧] 开启群晖 root 权限的脚本,任务计划执行一次,重启...

2023-6-27 14:21:22 评论(0)
脚本根据公开的开启root权限方法编写,用群晖的任务计划执行一次,重启后即已开启root权限。
操作步骤:
  • 将脚本文本粘贴到群晖文本编辑器保存;
  • 新建任务计划,输入 bash <脚本文件路径和文件名> -p <root用户密码> ;
  • 执行脚本,重启群晖,确认执行成功后删除该任务计划。

注:
  • 脚本文件名不要用中文;
  • 保存脚本的完整路径可在 File Station 的脚本文件属性中查看;
  • 建议先查看执行结果,如果成功再重启群晖,查看方法:在任务计划设置中开启“保存输出结果”并设置保存路径,运行脚本后即可查看。

    1. #! /bin/ash

    2. # 使用群晖计划任务以 root 身份执行一次该脚本
    3. # 脚本参数 -p <password>
    4. #          -f 强制修改密码
    5. #          -r 自动重启设备(注意保存工作进度),建议手动重启群晖,不使用该参数
    6. # *** 脚本执行后请重新启动设备 ***
    7. # 2023-2-28 limpo

    8. function EchoErr
    9. {
    10.     ExitCode=$?
    11.     if [ $ExitCode -ge $1 ]
    12.     then
    13.         echo $2
    14.         exit $ExitCode
    15.     fi
    16.     return 0
    17. }

    18. ForceChangePassword='no'
    19. reboot='no'
    20. sshconf='/etc/ssh/sshd_config'

    21. while getopts "p:frh" arg
    22. do
    23.     case $arg in
    24.         p)
    25.             password=$OPTARG
    26.             ;;
    27.         f)
    28.             ForceChangePassword='yes'
    29.             ;;
    30.         r)
    31.             reboot='yes'
    32.             ;;
    33.         h|?)
    34.             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"
    35.             exit 0
    36.                       ;;
    37.     esac
    38. done

    39. if [ "$password" = "" ]; then
    40.         echo Password must be specified.
    41.         exit 1
    42. fi

    43. if [ ${#password} -le 4 ]; then
    44.         echo Password too short.
    45.         exit 1
    46. fi

    47. printf  "`date`\tDetermine the root identity.\t"
    48. if [[ $(whoami) != 'root' ]]
    49. then
    50.     echo Not root identity.
    51.     exit 1
    52. fi
    53. echo 'OK.'

    54. printf  "`date`\tGet NAS root login permission.\t"
    55. isroot=`grep -c '^PermitRootLogin yes' $sshconf`
    56. EchoErr 2 "Failed."
    57. echo OK.

    58. if [ $isroot -ge 1 ]
    59. then
    60.     printf "`date`\tThe root login permission has been enabled.\n"
    61.     if [ $ForceChangePassword != 'yes' ]
    62.     then
    63.             exit 0
    64.     fi
    65. else
    66.         printf "`date`\tModify $sshconf ...\t"
    67.         sed -i "/#PermitRootLogin prohibit-password/a# -- The follow line added by $0\n#    @`date`\nPermitRootLogin yes\n# -- End adding." $sshconf
    68.         EchoErr 1 "Failed."
    69.         echo "OK."
    70. fi

    71. printf "`date`\tChange root passoword ...\t"
    72. synouser --setpw root $password
    73. EchoErr 1 "Failed."
    74. echo "OK."

    75. if [ "$reboot" = "yes" ]
    76. then
    77.         printf "`date`\tReboot this device ...\t"
    78.         reboot
    79.         EchoErr 1 "Failed."
    80.         echo "OK."
    81. fi
    复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册
楼主
admin

关注0

粉丝0

帖子39

最新动态