久芯网

请教一下,stm32f103裸机移植letter-shell,怎么进行用户权限管理啊?

avatar fengdao 提问时间: 2023-08-01 21:46:10 / 未解决

如题,想设置一下用户管理权限,和管理者管理权限


如需获得 stm32f103 等器件的更多信息,请点击链接或 点击此处 联系在线客服!

3个回答
  • avatar STMWoodData
    回答时间: 2023-08-01 22:03:00

    权限系统说明 letter shell 3.x的权限管理同用户定义紧密相关,letter shell 3.x使用8个bit位表示命令权限,当用户和命令的权限按位与为真,或者命令权限为0时,表示该用户拥有此命令的权限,可以调用该命令

  • avatar fengdao
    回答时间: 2023-08-01 22:35:58
    STMWoodData 发表于 2022-4-22 11:28

    权限系统说明

    [md]我看到了这个,能说详细一点吗? SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0),,,) 只有SHELL_CMD_PERMISSION(0)命令权限为0时,该函数或功能才能用,而且这个0是常量,不知道怎么修改,SHELL_EXPORT_CMD()也不知道什么时候导入命令列表的,只知道输出时函数的位置, 如果库中#define不定义密码,就全部都能用,也就无法修改密码再登录了; 而且如果设置了密码,一开始初始化之后就要密码了,你没有密码什么都用不了,同样的问题,无法权限管理

  • avatar STMWoodData
    回答时间: 2023-08-01 23:01:25

    /** * @brief shell 检查命令权限 * * @param shell shell对象 * @param command ShellCommand * * @return signed char 0 当前用户具有该命令权限 * @return signec char -1 当前用户不具有该命令权限 */ signed char shellCheckPermission(Shell *shell, ShellCommand *command) { return ((!command->attr.attrs.permission || command->attr.attrs.type == SHELL_TYPE_USER || (command->attr.attrs.permission & shell->info.user->attr.attrs.permission)) && (shell->status.isChecked || command->attr.attrs.enableUnchecked)) ? 0 : -1; } 那个常数0可以改的,看上面权限检查可以知道命令的权限为0的时候,所有用户都可以执行有权限。假如权限由0改为0x01就表示当定义的用户权限也为0x01的有这个命令权限。定义的用户权限为0x02的不能执行0x01权限的命令。 /** * @brief shell 命令权限 * * @param permission 权限级别 */ #define SHELL_CMD_PERMISSION(permission) \ (permission & 0x000000FF)

会员中心 微信客服
客服
回到顶部