Ubuntu: шифрование и расшифровка PDF с помощью qpdf

Зашифровать PDF паролем и снять защиту в Ubuntu можно без Adobe Acrobat: для этого удобен qpdf. Ниже установка, рабочие команды шифрования и расшифровки, проверка статуса и типичные права (печать, копирование, изменение). Документация: PDF Encryption и Running qpdf.

Зачем шифровать PDF

  • ограничить открытие файла user-паролем;
  • задать owner-пароль и права: печать, копирование текста, правка;
  • передать документ так, чтобы без пароля его нельзя было просто открыть в просмотрщике.

PDF-шифрование это защита на уровне формата, а не «военная» криптография для любых сценариев. Слабые пароли и 40-битный RC4 надёжными не считаются. Для новых файлов берите AES и 256 бит: в актуальном qpdf 256 всегда означает AES.

Установка в Ubuntu

sudo apt-get update
sudo apt-get install qpdf
qpdf --version

Пакет есть и в других дистрибутивах; на Fedora: dnf install qpdf. В Ubuntu 24.04 (Noble) в репозитории сейчас qpdf 11.9. Исходники и свежие релизы: на GitHub уже ветка 12.x.

Шифрование PDF

С qpdf 11.7 удобнее именованный синтаксис: пароли и длина ключа задаются флагами, блок опций шифрования обязательно закрывается разделителем --, затем входной и выходной файл:

qpdf --encrypt \
  --user-password=USER_PASS \
  --owner-password=OWNER_PASS \
  --bits=256 \
  --print=none --modify=none --extract=n -- \
  input.pdf output-encrypted.pdf

Коротко по полям:

  • --user-password: пароль для открытия документа;
  • --owner-password: пароль владельца (снятие ограничений в совместимых ридерах);
  • --bits=256: AES; варианты 40 и 128 без AES считаются слабыми, для них нужен --allow-weak-crypto;
  • --print, --modify, --extract: ограничивают печать, правку и извлечение текста.

Старый позиционный вид тоже ещё принимают:

qpdf --encrypt USER_PASS OWNER_PASS 256 -- input.pdf out.pdf

Не ставьте один и тот же простой пароль на user и owner, если ограничения прав для вас важны: часть просмотрщиков обходит permissions при известном owner-пароле или через сторонние утилиты. Пустой owner при 256-bit qpdf считает небезопасным и требует --allow-insecure.

Проверка и расшифровка

Посмотреть алгоритм, наличие паролей и права:

qpdf --show-encryption output-encrypted.pdf

Снять защиту (нужен корректный пароль):

qpdf --password=USER_PASS --decrypt \
  input-encrypted.pdf output-plain.pdf

Если у файла есть только owner-пароль (открывается без пароля, но запрещены печать или копирование), --decrypt снимает ограничения и без ввода пароля:

Если пароль неверный, команда завершится с ошибкой. После успешного decrypt файл открывается без запроса пароля. Пароли в истории shell остаются в ~/.bash_history: для чувствительных документов лучше --password-file.

В итоге для новых PDF берите --bits=256, разные user/owner пароли и проверку через --show-encryption. qpdf умеет ещё линейную оптимизацию, разбор и починку битых файлов; шифрование это только одна ветка CLI.

Источники и ссылки


Комментарии загружаются…