将密码加密存储供crontab使用

存档预览:正确创建密钥文件的步骤 1. 使用 sudo 创建目录 bash sudo mkdir -p /etc/ctp sudo chmod 700 /etc/ctp # 限制访问权限 2…(全文以下方原始文本完整保留)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
正确创建密钥文件的步骤
1. 使用 sudo 创建目录
bash
sudo mkdir -p /etc/ctp
sudo chmod 700 /etc/ctp # 限制访问权限
2. 生成密钥文件(两种方式任选)
方式一:直接生成到目标文件

bash
sudo sh -c 'openssl rand -hex 32 > /etc/ctp/key.bin'
方式二:分步操作

bash
# 先生成临时文件
openssl rand -hex 32 > /tmp/ctp_key.tmp

# 移动到目标位置
sudo mv /tmp/ctp_key.tmp /etc/ctp/key.bin
3. 设置严格权限
bash
sudo chmod 600 /etc/ctp/key.bin # 仅root可读写
sudo chown root:root /etc/ctp/key.bin # 归属root
验证密钥文件
bash
sudo ls -l /etc/ctp/key.bin
# 正确输出应类似:
# -rw------- 1 root root 65 Jun 1 12:00 /etc/ctp/key.bin

sudo cat /etc/ctp/key.bin | wc -c
# 应该返回65(32字节hex=64字符+换行符)
配套密码加密/解密流程
1. 加密密码(保存到文件)
bash
echo "your_password" | sudo openssl enc -aes-256-cbc \
-pbkdf2 \
-pass file:/etc/ctp/key.bin \
-out /etc/ctp/password.enc
2. 在脚本中使用(解密示例)
bash
#!/bin/bash

# 解密密码(sudo权限可省略取决于密钥文件权限)
PASSWORD=$(sudo openssl enc -d -aes-256-cbc \
-pbkdf2 \
-pass file:/etc/ctp/key.bin \
-in /etc/ctp/password.enc)

# 使用密码运行程序
./ctp_settlement ... "$PASSWORD"

# 立即清空内存中的密码
unset PASSWORD
自动化权限配置
1. 创建专用用户组
bash
sudo groupadd ctp_traders
sudo usermod -aG ctp_traders your_username
2. 调整目录权限
bash
sudo chown root:ctp_traders /etc/ctp
sudo chmod 750 /etc/ctp
sudo chown root:ctp_traders /etc/ctp/key.bin
sudo chmod 640 /etc/ctp/key.bin
3. 免sudo调用(需配置sudoers)
bash
sudo visudo
# 添加以下内容:
%ctp_traders ALL=(root) NOPASSWD: /usr/bin/openssl enc -d -aes-256-cbc -pbkdf2 -pass file\:/etc/ctp/key.bin -in /etc/ctp/password.enc
故障排查指南
1. 权限被拒绝
bash
# 检查SElinux状态(如有)
sudo sestatus
sudo setenforce 0 # 临时关闭测试

# 检查ACL权限
getfacl /etc/ctp/key.bin
2. 密钥文件损坏
bash
# 验证密钥文件格式
sudo file /etc/ctp/key.bin
# 应显示 "ASCII text"

# 检查长度
sudo wc -c /etc/ctp/key.bin
# 应该为65字节
3. 解密失败
bash
# 测试解密
echo "dummy" | sudo openssl enc -aes-256-cbc -pbkdf2 -pass file:/etc/ctp/key.bin | sudo openssl enc -d -aes-256-cbc -pbkdf2 -pass file:/etc/ctp/key.bin
安全增强建议
密钥轮换

bash
# 每月轮换密钥
sudo mv /etc/ctp/key.bin /etc/ctp/key.bin.old
sudo openssl rand -hex 32 > /etc/ctp/key.bin
sudo chmod 600 /etc/ctp/key.bin
审计跟踪

bash
sudo auditctl -w /etc/ctp/key.bin -p war -k ctp_crypto_key
备份方案

bash
sudo gpg --symmetric --cipher-algo AES256 /etc/ctp/key.bin
# 将生成的key.bin.gpg离线存储