.ds Q" "" .de Vb .ft CW .nf .ne \\$1 .. .de Ve .ft R .fi .. .TH gpgwrap 1 "gpgwrap 0.04" .SH "نام (NAME)" gpgwrap \- پوشش‌دهنده‌ای کوچک برای gpg .SH "خلاصه دستور (SYNOPSIS)" .B gpgwrap \-V .B gpgwrap \-P [\-v] [\-i] [\-a] [\-p \fI\fR] .B gpgwrap \-F [\-v] [\-i] [\-a] [\-c] [\-p \fI\fR] [\-o \fI\fR] [\-\-] \fI\fR [\fI\fR ... ] .B gpgwrap [\-v] [\-i] [\-a] [\-p \fI\fR] [\-o \fI\fR] [\-\-] \fBgpg\fR [gpg options] .SH "توضیحات (DESCRIPTION)" .PP ابزار GNU Privacy Guard (\fBgpg\fR) گزینهٔ \-\-passphrase\-fd را ارائه می‌دهد. این گزینه به \fBgpg\fR دستور می‌دهد تا عبارت عبور را از توصیف‌گر فایل (file descriptor) داده‌شده بخواند. معمولاً این توصیف‌گر فایل پیش از اجرای \fBgpg\fR از طریق \fBexecvp(3)\fR باز می‌شود. این دقیقاً همان کاری است که \fBgpgwrap\fR انجام می‌دهد. عبارت عبور را می‌توان به ۴ روش به \fBgpgwrap\fR انتقال داد: .RS .IP * 2 به‌عنوان مسیر فایل، که در آن عبارت عبور به‌صورت متن ساده در فایل ذخیره شده است .IP * 2 از طریق پایپ شدن از برنامه‌ای دیگر به ورودی استاندارد (stdin) ابزار \fBgpgwrap\fR .IP * 2 از طریق متغیر محیطی \fBGPGWRAP_PASSPHRASE\fR .IP * 2 با اعلان (prompt) ابزار \fBgpgwrap\fR برای دریافت آن .RE بدون رعایت اقدامات احتیاطی، مورد اول زیرساخت امنیتی ارائه‌شده توسط \fBgpg\fR را تضعیف می‌کند. اما در محیط‌های کاملاً دسته‌ای (batch-oriented)، ممکن است این دقیقاً همان چیزی باشد که نیاز دارید. در غیر این صورت، اگر مایلید عبارت‌های عبور را یک بار وارد کرده و نمی‌خواهید آن‌ها به‌صورت متن ساده درون یک فایل ذخیره شوند، ابزار \fBgpg\-agent\fR همان چیزی است که به دنبال آن هستید. یکی دیگر از اشکالات امنیتی می‌تواند استفاده از متغیر محیطی \fBGPGWRAP_PASSPHRASE\fR باشد که حاوی عبارت عبور است و ممکن است توسط سایر فرایندهای همان کاربر خوانده شود. .SH "گزینه‌ها (OPTIONS)" .IP "\-V, \-\-version" 8 چاپ نگارش و خروج. .IP "\-P, \-\-print" 8 دریافت عبارت عبور و چاپ دستکاری‌شدهٔ (mangled) آن در stdout. .IP "\-F, \-\-file" 8 خواندن دستورهای \fBgpg\fR از فایل‌های داده‌شده. اگر \fI\fR برابر \- باشد، از stdin خوانده می‌شود. دقیقاً انتظار یک دستور در هر خط وجود دارد. با خط داده‌شده به روش زیر رفتار می‌شود: .RS .IP * 2 در مرحلهٔ نخست، عبارت عبور دستکاری می‌شود؛ بدین معنی که نویسه‌های نامتعارف با اعداد هشت‌هشتیِ (octal) فرار داده‌شده با بک‌اسلش جایگزین می‌شوند. .IP * 2 در مرحلهٔ دوم، عبارت عبور دستکاری‌شده در متغیر محیطی \fBGPGWRAP_PASSPHRASE\fR ذخیره می‌شود. .IP * 2 عبارت \*(Q"exec gpgwrap \-\- \*(Q" به ابتدای هر خط افزوده می‌شود، پیش از آن‌که نتیجه به‌عنوان آرگومان به \*(Q"sh \-c\*(Q" داده شود. .RE .IP "\-h, \-\-help" 8 چاپ اطلاعات نحوه استفاده. .IP "\-v, \-\-verbose" 8 افزایش سطح جزئیات خروجی (پُرگویی). .IP "\-i, \-\-interactive" 8 همیشه برای دریافت عبارت عبور اعلان می‌دهد (گزینهٔ \-p و متغیر محیطی را نادیده می‌گیرد). .IP "\-a, \-\-ask\-twice" 8 هنگام اعلان برای عبارت عبور، دو بار پرسیده شود. .IP "\-c, \-\-check\-exit\-code" 8 هنگام خواندن دستورهای gpg از یک فایل، \fBgpgwrap\fR به‌طور پیش‌فرض وضعیت خروج فرایندهای فرزند خود را نادیده می‌گیرد. این گزینه بررسی وضعیت خروج را فعال می‌کند. اگر یک فرزند به‌طور غیرعادی یا با وضعیتی غیر از ۰ خاتمه یابد، \fBgpgwrap\fR بلافاصله متوقف شده و با همان وضعیت خروج بازمی‌گردد. همچنین بخش \fBگزارش باگ‌ها (BUGS)\fR را ببینید. .IP "\-p \fI\fR, \-\-passphrase\-file \fI\fR" 8 خواندن عبارت عبور از \fI\fR. اگر \fI\fR برابر \- باشد، از stdin خوانده می‌شود. انتظار می‌رود عبارت عبور به‌صورت متن ساده باشد. اگر این گزینه مشخص نشده باشد، عبارت عبور یا از متغیر محیطی \fBGPGWRAP_PASSPHRASE\fR خوانده می‌شود یا در صورت تنظیم نبودن این متغیر محیطی، روی tty کنترل‌کننده اعلان داده خواهد شد. .IP "\-o \fI\fR, \-\-option\-name \fI\fR" 8 مشخص کردن نام گزینهٔ \*(Q"\-\-passphrase\-fd\*(Q" قابل فهم برای برنامه‌ای که قرار است اجرا شود. این قابلیت زمانی مفید است که می‌خواهید از \fBgpgwrap\fR در ترکیب با برنامه‌هایی غیر از \fBgpg\fR استفاده کنید. .SH "محدودیت‌ها (LIMITATIONS)" عبارت عبور داده‌شده بسته به روشی که به \fBgpgwrap\fR ارسال شده است، مشمول چند محدودیت می‌شود: .RS .IP * 2 محدودیت اندازه وجود دارد: عبارت عبور نباید بزرگ‌تر از چند کیلوبایت باشد (برای اطلاع از اندازهٔ دقیق، کد منبع را بررسی کنید). .IP * 2 ابزار \fBgpgwrap\fR به شما امکان می‌دهد از تمام نویسه‌ها حتی \\000 در عبارت عبور استفاده کنید، اما این بدان معنا نیست که \fBgpg\fR آن را خواهد پذیرفت. اگر عبارت عبور شامل نویسه‌هایی مانند \\012 (که در C با نام \\n نیز شناخته می‌شود) باشد، ممکن است \fBgpg\fR آن را رد کند یا تنها بخشی از آن را بخواند. .IP * 2 اگر متغیر محیطی \fBGPGWRAP_PASSPHRASE\fR را تنظیم می‌کنید، باید در مورد نویسهٔ بک‌اسلش دقت ویژه‌ای داشته باشید، زیرا \fBgpgwrap\fR از بک‌اسلش برای فرار (escape) دادن اعداد هشت‌هشتی استفاده می‌کند (گزینهٔ \-F را ببینید). بنابراین، خود بک‌اسلش را به‌صورت عدد هشت‌هشتی بنویسید: \\134. .RE .SH "مثال‌ها (EXAMPLES)" .IP "1." 8 .Vb \&\fBgpgwrap\fR \-p /path/to/a/secret/file \\ \&\fBgpg\fR \-c \-z 0 \-\-batch \-\-no\-tty \\ \& \-\-cipher\-algo blowfish < infile > outfile .Ve خواندن عبارت عبور از /path/to/a/secret/file و اجرای \fBgpg\fR برای انجام رمزگذاری متقارن روی infile و نوشتن آن در outfile. .IP "2." 8 .Vb \&\fBgpgwrap\fR \-i \-a \\ \&\fBgpg\fR \-c \-z 0 \-\-batch \-\-no\-tty \\ \& \-\-cipher\-algo blowfish < infile > outfile .Ve همانند بالا، با این تفاوت که \fBgpgwrap\fR دو بار برای دریافت عبارت عبور اعلان می‌دهد. .IP "3." 8 .Vb \&\fBgpgwrap\fR \-F \-i \- < \*(Q"$HOME/outfile1\*(Q" \&\fBgpg\fR \-\-decrypt \-\-batch \-\-no\-tty < \*(Q"$HOME/infile2\*(Q" > \*(Q"$HOME/outfile2\*(Q" \&\fBgpg\fR \-\-decrypt \-\-batch \-\-no\-tty < \*(Q"$HOME/infile3\*(Q" > \*(Q"$HOME/outfile3\*(Q" \&\fBgpg\fR \-\-decrypt \-\-batch \-\-no\-tty < \*(Q"$HOME/infile4\*(Q" > \*(Q"$HOME/outfile4\*(Q" \&EOL .Ve ابزار \fBgpgwrap\fR برای دریافت عبارت عبور اعلان می‌دهد و چهار نمونه از \fBgpg\fR را برای رمزگشایی فایل‌های داده‌شده اجرا می‌کند. .IP "4." 8 .Vb \&\fBGPGWRAP_PASSPHRASE\fR=\*(Q"mysecretpassphrase\*(Q" \&export \fBGPGWRAP_PASSPHRASE\fR \&\fBgpgwrap\fR \-F \-c \-v /tmp/cmdfile1 \- /tmp/cmdfile2 < \*(Q"$HOME/outfile1\*(Q" \&\fBgpg\fR \-\-decrypt \-\-batch \-\-no\-tty < \*(Q"$HOME/infile2\*(Q" > \*(Q"$HOME/outfile2\*(Q" \&\fBgpg\fR \-\-decrypt \-\-batch \-\-no\-tty < \*(Q"$HOME/infile3\*(Q" > \*(Q"$HOME/outfile3\*(Q" \&\fBgpg\fR \-\-decrypt \-\-batch \-\-no\-tty < \*(Q"$HOME/infile4\*(Q" > \*(Q"$HOME/outfile4\*(Q" \&EOL .Ve همانند بالا، با این تفاوت که \fBgpgwrap\fR عبارت عبور را از طریق متغیر محیطی دریافت می‌کند، دستورها را علاوه بر آن از فایل‌های دیگر نیز می‌خواند و وضعیت خروج هر نمونه از \fBgpg\fR را بررسی می‌کند. بدین معنا که اگر یک دستور \fBgpg\fR وضعیت خروجی غیر از صفر داشته باشد، هیچ دستور دیگری اجرا نخواهد شد. افزون بر این، \fBgpgwrap\fR خروجی پرجزئیات (verbose) تولید می‌کند. .IP "5." 8 .Vb \&\fBGPGWRAP_PASSPHRASE\fR=\*(Q"$(\fBgpgwrap\fR \-P \-i \-a)\*(Q" \&export \fBGPGWRAP_PASSPHRASE\fR \& \&\fBfind\fR . \-maxdepth 1 \-type f | \&while read FILE; do \& FILE2=\*(Q"$FILE.bz2.gpg\*(Q" \& \fBbzip2\fR \-c \*(Q"$FILE\*(Q" | \& \fBgpgwrap\fR \fBgpg\fR \-c \-z 0 \-\-batch \-\-no\-tty \\ \& \-\-cipher\-algo blowfish > \*(Q"$FILE2\*(Q" && \& \fBtouch\fR \-r \*(Q"$FILE\*(Q" \*(Q"$FILE2\*(Q" && \& \fBrm\fR \-f \*(Q"$FILE\*(Q" \&done .Ve خواندن عبارت عبور، فشرده‌سازی تمام فایل‌های دایرکتوری جاری، رمزگذاری آن‌ها و حفظ تاریخ فایل اصلی. .IP "6." 8 .Vb \&\fBfind\fR . \-maxdepth 1 \-type f \-name '*.bz2.gpg' | \&\fBawk\fR '{ \& printf(\*(Q"gpg \-\-decrypt \-\-batch \-\-no\-tty \-\-quiet \*(Q"); \& printf(\*(Q"\-\-no\-secmem\-warning < %s\\n\*(Q", $0); \& }' | \&\fBgpgwrap\fR \-F \-i \-c \- | \&\fBbzip2\fR \-d \-c \- | \&\fBgrep\fR \-i 'data' .Ve رمزگشایی تمام فایل‌های *.bz2.gpg در دایرکتوری جاری، خارج کردن آن‌ها از حالت فشرده و چاپ تمام رخدادهای عبارت data. اگر نتیجه را به \fBless\fR پایپ کنید دچار مشکل خواهید شد، زیرا \fBgpgwrap\fR و \fBless\fR هم‌زمان تلاش می‌کنند از TTY بخوانند. در چنین شرایطی بهتر است برای ارائهٔ عبارت عبور از متغیر محیطی استفاده شود (مثال بالا نحوهٔ انجام این کار را نشان می‌دهد). .IP "7." 8 .Vb \&\fBGPGWRAP_PASSPHRASE\fR=\*(Q"$(\fBgpgwrap\fR \-P \-i \-a)\*(Q" \&export \fBGPGWRAP_PASSPHRASE\fR \& \&\fBgpgwrap\fR \-P | \&\fBssh\fR \-C \-x \-P \-l user host \*(Q" \& \fBGPGWRAP_PASSPHRASE\fR=\\\*(Q"\\$(\fBcat\fR)\\\*(Q" \& ... \& \*(Q" .Ve دو بار درخواست برای عبارت عبور و نوشتن آن درون متغیر محیطی \fBGPGWRAP_PASSPHRASE\fR. .IP "8." 8 .Vb \&\fBecho\fR \-n \*(Q"Passphrase: \*(Q" \&\fBstty\fR \-echo \&read \fBGPGWRAP_PASSPHRASE\fR \&\fBecho\fR \&\fBstty\fR echo \&export \fBGPGWRAP_PASSPHRASE\fR .Ve روشی دیگر برای اعلان دستی عبارت عبور. این روش در نگارش‌های قدیمی‌تر \fBgpgwrap\fR لازم بود، زیرا آن‌ها از \-P پشتیبانی نمی‌کردند. توجه داشته باشید که در این روش، تبدیل خودکار به اعداد هشت‌هشتیِ فرار داده‌شده با بک‌اسلش انجام نمی‌گیرد. .IP "9." 8 .Vb \&\fBecho\fR \*(Q"mysecretpassphrase\*(Q" | \&\fBgpg\fR \-\-batch \-\-no\-tty \-\-passphrase\-fd 0 \\ \& \-\-output outfile \-\-decrypt infile .Ve روشی ساده برای انتقال عبارت عبور به \fBgpg\fR بدون استفاده از \fBgpgwrap\fR. توجه داشته باشید که نمی‌توانید از stdin برای فرستادن یک فایل به \fBgpg\fR استفاده کنید، زیرا stdin قبلاً برای عبارت عبور مصرف شده است. .IP "10." 8 .Vb \&\fBgpg\fR \-\-batch \-\-no\-tty \\ \& \-\-passphrase\-fd 3 3< /path/to/a/secret/file \\ \& < infile > outfile .Ve این روشی پیشرفته‌تر برای ارسال عبارت عبور است و معادل گزینهٔ \-p در \fBgpgwrap\fR می‌باشد. این مثال دست‌کم باید در bash کار کند. .IP "11." 8 .Vb \&\fBgpg\fR \-\-batch \-\-no\-tty \-\-passphrase\-fd 3 \\ \& 3< <(echo \*(Q"mysecretpassphrase\*(Q") \\ \& < infile > outfile .Ve همانند بالا، اما عبارت عبور به‌طور مستقیم داده شده است. این مثال دست‌کم باید در bash کار کند. .SH "گزارش باگ‌ها (BUGS)" در نگارش 0.02 ابزار \fBgpgwrap\fR، وضعیت خروج \fBgpg\fR تنها در صورتی بازگردانده می‌شد که \fBgpgwrap\fR عبارت عبور را از یک فایل خوانده باشد. از نگارش 0.03 به بعد، تنها گزینهٔ \-F بررسی وضعیت خروج را به‌طور پیش‌فرض نادیده می‌گیرد، که می‌توان آن را با \-c فعال کرد. .SH "همچنین ببینید (SEE ALSO)" \fBgpg\fR, \fBgpg\-agent\fR .SH "نویسندگان (AUTHORS)" Karsten Scheibler