无法登录 DSM(Synology NAS)

无法登录 DSM(Synology NAS)

我认为我已经将自己锁定在 Synology DSM Web 访问之外。登录后,我删除了所有“默认授予”的权限,显然其中一个权限(桌面?)影响了我的管理帐户。现在,当我进入登录页面时,我成功填写了用户名、密码和第二次验证,然后出现“您未获得授权”错误(注意:我的 IP 未自动阻止)。我拥有所有密码,可以通过 访问设备,ssh并通过 访问数据SMB

我所能研究的就是做一个软复位,但我不确定这是否也能修复权限,而且我不想破坏我当前的配置。

通过使用ssh,是否有办法修复权限以添加自定义管理用户登录 DSM?我一直在探索一些文件,/etc但没有取得太大成功。

答案1

感谢 Tonny 对桌面的确认,我能够解决这个问题,所以我会分享,因为如果这种情况发生在你身上,你会有点沮丧......

在 DSM 中成功输入密码后,出现如下错误: 您无权使用此服务。 “您无权使用此服务。”

如果您意外地将自己锁定在 DSM Web 访问之外,请按照以下步骤解决问题:

  1. 您需要拥有ssh访问权限并使用管理员用户。如果没有,您可能需要进行软重置
  2. (我使用的是Linux)执行:ssh your_username@your_synology_ip
  3. cd /etc
  4. grep your_username /etc/passwd(例如grep administrator /etc/passwd)答案将是类似于 administrator:x:1021:100::/var/services/homes/administrator:/bin/sh 您对您的 ID 感兴趣,例如:1021
  5. 备份数据库,以防万一:cp synoappprivilege.db synoappprivilege.db.org
  6. sudo sqlite3 synoappprivilege.db 它会要求您输入密码。输入您的用户名(与 使用的密码相同ssh)。它将提示:

    SQLite version 3.10.2 2016-01-20 15:27:19
    Enter ".help" for usage hints.
    sqlite>
    
  7. 检查表格(不是绝对必要的):

    sqlite> .tables
    AppPrivRule
    
  8. 查询表(非严格必要):

     sqlite> select * from AppPrivRule;
    

    这将转储表的内容,类似于以下内容:

     2|0|SYNO.SDS.WebDAVServer.Instance|0.0.0.0|0000:0000:0000:0000:0000:FFFF:0000:0000||
     2|0|SYNO.SDS.MailServer.Instance|0.0.0.0|0000:0000:0000:0000:0000:FFFF:0000:0000||
     2|0|SYNO.SDS.BackupService.Instance|0.0.0.0|0000:0000:0000:0000:0000:FFFF:0000:0000||
     2|0|SYNO.SDS.MailPlusServer.Instance|0.0.0.0|0000:0000:0000:0000:0000:FFFF:0000:0000||
    ...
    
  9. 我们无意中删除的权限SYNO.Desktop可能不会在上一个命令中列出。因此我们需要将其插入(笔记:使用之前通过 grep 获取的用户 ID(在我的情况下为1021):

    sqlite> insert into AppPrivRule VALUES(0,1021,'SYNO.Desktop','0.0.0.0','0000:0000:0000:0000:0000:FFFF:0000:0000','','');
    
  10. 确认一切正常...

    sqlite> select * from AppPrivRule;
    
    2|0|SYNO.SDS.WebDAVServer.Instance|0.0.0.0|0000:0000:0000:0000:0000:FFFF:0000:0000||
    ...
    0|1021|SYNO.Desktop|0.0.0.0|0000:0000:0000:0000:0000:FFFF:0000:0000||
    

完成!您现在可以登录了。

修复问题后,我发现了相同的解决方案这里,但第一次从搜索引擎上无法找到。另外,请注意insert该链接中的 有一个小错误。

答案2

有趣的问题。我在自己的 Syno 上进行了一些研究,得出了以下结论:

通过 ssh 查看 /etc/group。应该有一行类似以下内容的内容:

administrators:x:101:john,admin,plex

(仅当您安装了 Plex 包时才会出现“plex”。)

将您的管理员帐户添加到该行。据我所知,这是进入 DSM 网络管理所需的唯一操作。对于普通的网络服务器访问(个性化主页),还必须将用户添加到同一文件中的“http”行。

接下来是将文件 /etc/synoappprivilege.db 拉到计算机(小心,这是一个二进制文件。不要以文本模式复制。)
这是一个包含实际权限的 SQLite 数据库。
在 HEX 编辑器中加载此文件并查找桌面部分。
它应该看起来像:

YNO.Desktop0.0.0.00000:0000:0000:0000:0000:FFFF:0000:000MW

YNO 和 MW 可以有不同的值。重要的是数字。这些数字应该与上面显示的相同。
使用 HEX 编辑器更改此值,并将修改后的文件放回 Syno(保留原始文件的备份!!!)。

我不确定这个变化是否会自动生效,所以可能需要重新启动才能激活新设置。

相关内容