无法登录 DSM (Synology NAS)

use*_*544 3 synology

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

我所能研究的只是进行一次软重置,但我不确定这是否也能修复特权,我不想破坏我当前的配置。

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

use*_*544 8

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

在 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 它会询问您的密码。插入your_username的密码(与您使用的密码相同ssh)。它会提示:

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

    sqlite> .tables
    AppPrivRule
    
    Run Code Online (Sandbox Code Playgroud)
  8. 查询表(不是绝对必要的):

     sqlite> select * from AppPrivRule;
    
    Run Code Online (Sandbox Code Playgroud)

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

     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||
    ...
    
    Run Code Online (Sandbox Code Playgroud)
  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','','');
    
    Run Code Online (Sandbox Code Playgroud)
  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||
    
    Run Code Online (Sandbox Code Playgroud)

完毕!您现在可以登录。

解决问题后,我在这里找到了相同的解决方案,但一开始就无法从搜索引擎获得。另外,请注意该insert链接中的一个小错误。

  • 完美的答案,立即修复。 (2认同)
  • 这也适用于 DSM 7.0beta,今天救了我。如果您有其他管理员帐户,软重置只会重置其他帐户的密码。(如果您使用管理员和空密码登录)。我还必须删除所有拒绝规则才能解决这个问题。`delete from AppPrivRule where App='SYNO.Desktop' and ID!='1021'`(也将 1021 替换为您的用户 ID) (2认同)