![Linux 上的 pgp 信号量管理](https://linux22.com/image/1392697/Linux%20%E4%B8%8A%E7%9A%84%20pgp%20%E4%BF%A1%E5%8F%B7%E9%87%8F%E7%AE%A1%E7%90%86.png)
我对 pgp 信号量管理有一个问题。
据我所知,pgp(版本 6.5.8)在开始加密文件时创建了 4 个信号量,但最后只有 2 个被销毁。
为了重现我尝试过..
1)当前使用的信号量列表
> ipcs -s
------ Semaphore Arrays --------
key semid owner perms nsems
0x00000000 0 root 600 1
0x00000000 32769 root 600 1
0x00000000 98306 nobody 600 1
0x00000000 131075 nobody 600 1
0x00000000 163844 nobody 600 1
0x00000000 196613 nobody 600 1
0x00000000 229382 nobody 600 1
2 个信号量由“root”用户使用,4 个信号量由 nobody(apache webserver)用户使用。
2)然后如果我尝试创建并加密刚刚创建的文件,我会获得这样的输出:
> pgp -e /tmp/test.tmp 'ftp-vega <[email protected]>'
Pretty Good Privacy(tm) Version 6.5.8
(c) 1999 Network Associates Inc.
Uses the RSAREF(tm) Toolkit, which is copyright RSA Data Security, Inc.
Export of this software may be restricted by the U.S. government.
Recipients' public key(s) will be used to encrypt.
Key for user ID: ftp-vega <[email protected]>
2048-bit RSA key, Key ID 0x8AB0285F, created 2005/11/02
Key can sign.
Ciphertext file: /tmp/test.tmp.pgp
并且文件被正确加密(并且显然可以被解密),所以,根据我的理解,加密过程成功完成(显然)没有任何问题......
3)但是,如果我尝试再次列出使用的信号量,我会发现又有 2 个信号量被创建但未被清除:
> ipcs -s
------ Semaphore Arrays --------
key semid owner perms nsems
0x00000000 0 root 600 1
0x00000000 32769 root 600 1
0x00000000 98306 nobody 600 1
0x00000000 131075 nobody 600 1
0x00000000 163844 nobody 600 1
0x00000000 196613 nobody 600 1
0x00000000 229382 nobody 600 1
0x00000000 11599881 root 0 1
0x00000000 11632650 root 0 1
由于在这个系统上 pgp 每天运行几次(用于加密几个文件)几天前我列出了 1000 多个 perms = 0 的孤立信号量。
有没有人有同样的行为?我能做些什么来阻止它(而不是在创建任何孤立信号量时将其删除)?
谢谢任何人可以帮助我(抱歉我的英语不好)。
你好,斯蒂法诺 意大利,米兰
答案1
我终于发现了 Linux 机器下 pgp (Pretty Good Privacy(tm) Version 6.5.8 - (c) 1999 Network Associates Inc) 导致孤儿信号量的原因。PGP 使用信号量架构来加密数据……在加密过程中会创建 4 个信号量,但最后只有 2 个被销毁,对于要加密的几个文件,这可能会导致上述行为。