加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 设置LTO加密时会出现什么“感觉错误”?

发布时间:2020-12-14 02:58:30 所属栏目:Linux 来源:网络整理
导读:我正在尝试在 Linux下的LTO-4驱动器上设置加密密钥.我成功地做了一次,电源循环驱动器,现在我无法让驱动器再次接受密钥. 我使用的命令是这样的: $stenc -f /dev/nst0 -a 1 -e on -k test.keyProvided key length is 256 bits.Key checksum is 7a43.Turning o
我正在尝试在 Linux下的LTO-4驱动器上设置加密密钥.我成功地做了一次,电源循环驱动器,现在我无法让驱动器再次接受密钥.

我使用的命令是这样的:

$stenc -f /dev/nst0 -a 1 -e on -k test.key
Provided key length is 256 bits.
Key checksum is 7a43.
Turning on encryption on device '/dev/nst0'...
Sense Code:              Illegal Request (0x05)
 ASC:                    0x26
 ASCQ:                   0x00
 Additional data:        0x00000000000000000000000000000000
Error: Turning encryption on for '/dev/nst0' failed!
Usage: stenc --version | -g <length> -k <file> [-kd <description>] | -f <device> [--detail] [-e <on/mixed/rawread/off> [-k <file>] [-kd <description>] [-a <index>] [--protect | --unprotect] [--ckod] ]
Type 'man stenc' for more information.

驱动器是HP所以我需要使用-a 1但是不同的值不会改变结果.使用/ dev / sg1会有相同的问题.

磁带是LTO-4,因此支持加密:

$mt-st -f /dev/nst0 status
SCSI 2 tape drive:
File number=0,block number=0,partition=0.
Tape block size 0 bytes. Density code 0x46 (LTO-4).
Soft error count since last status=0
General status bits on (41010000):
 BOT ONLINE IM_REP_EN

我跑了HP Tape&库工具并使用相同的磁带进行加密测试并通过,因此驱动器似乎能够设置密钥,而不是由于某种原因通过stenc程序.

我发现一个SCSI手册,说ASC 0x26是“参数列表中的无效字段”,这并没有真正解释.

有没有其他人看到此错误或有任何想法如何让驱动器接受密钥?

解决方法

像往常一样,数小时的故障排除意味着什么,但在公共论坛上发布问题会立即显示问题.

stenc 1.0.7中存在一个错误,如果在空白磁带上使用–detail,则会导致崩溃.我试图联系作者修复但无法抓住他.

似乎这次崩溃使驱动器处于不一致的状态,它拒绝接受更多的密钥.修复错误然后运行stenc –detail没有崩溃似乎已经解决了问题.我现在可以设置任意次数的任何键,并且没有其他问题.

如果其他人遇到同样的问题,在第176行的stenc-1.0.7 / sec / scsiencrypt.cpp中它表示删除状态;.您需要在此下方添加一个新行,其中读取status = NULL;.这修复了导致崩溃的双重错误.

--- a/src/scsiencrypt.cpp
+++ b/src/scsiencrypt.cpp
@@ -174,6 +174,7 @@ SSP_NBES* SSPGetNBES(string tapeDevice,bool retry){
            if(status->nbes.encryptionStatus!=0x01)break;
            if(moves>=MAX_TAPE_READ_BLOCKS)break;
            delete status;
+           status=NULL; //double free bug fix
            if(!moveTape(tapeDevice,1,true))break;
            moves++;
            status=SSPGetNBES(tapeDevice,false);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读