我认为我已经将自己锁定在 Synology DSM Web 访问之外。登录后,我删除了所有“默认授予”的权限,显然其中一个权限(桌面?)影响了我的管理帐户。现在,当我进入登录页面时,我成功填写了用户名、密码和第二次验证,然后出现“您未获得授权”错误(注意:我的 IP 未自动阻止)。我拥有所有密码,可以通过 访问设备,ssh
并通过 访问数据SMB
。
我所能研究的就是做一个软复位,但我不确定这是否也能修复权限,而且我不想破坏我当前的配置。
通过使用ssh
,是否有办法修复权限以添加自定义管理用户登录 DSM?我一直在探索一些文件,/etc
但没有取得太大成功。
答案1
感谢 Tonny 对桌面的确认,我能够解决这个问题,所以我会分享,因为如果这种情况发生在你身上,你会有点沮丧......
在 DSM 中成功输入密码后,出现如下错误: “您无权使用此服务。”
如果您意外地将自己锁定在 DSM Web 访问之外,请按照以下步骤解决问题:
- 您需要拥有
ssh
访问权限并使用管理员用户。如果没有,您可能需要进行软重置。 - (我使用的是Linux)执行:
ssh your_username@your_synology_ip
cd /etc
grep your_username /etc/passwd
(例如grep administrator /etc/passwd
)答案将是类似于administrator:x:1021:100::/var/services/homes/administrator:/bin/sh
您对您的 ID 感兴趣,例如:1021
- 备份数据库,以防万一:
cp synoappprivilege.db synoappprivilege.db.org
sudo sqlite3 synoappprivilege.db
它会要求您输入密码。输入您的用户名(与 使用的密码相同ssh
)。它将提示:SQLite version 3.10.2 2016-01-20 15:27:19 Enter ".help" for usage hints. sqlite>
检查表格(不是绝对必要的):
sqlite> .tables AppPrivRule
查询表(非严格必要):
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|| ...
我们无意中删除的权限
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','','');
确认一切正常...
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(保留原始文件的备份!!!)。
我不确定这个变化是否会自动生效,所以可能需要重新启动才能激活新设置。