| GOCRYPTFS(1) | GOCRYPTFS(1) |
نام (NAME)
gocryptfs - ایجاد یا سوار کردن یک سامانه فایل رمزنگاریشده
خلاصه دستور (SYNOPSIS)
مقداردهی اولیه سامانه فایل رمزنگاریشده جدید
gocryptfs -init [OPTIONS] CIPHERDIR
سوار کردن (Mount)
gocryptfs [OPTIONS] CIPHERDIR MOUNTPOINT [-o COMMA-SEPARATED-OPTIONS]
پیاده کردن (Unmount)
fusermount -u MOUNTPOINT
تغییر گذرواژه
gocryptfs -passwd [OPTIONS] CIPHERDIR
بررسی یکپارچگی
gocryptfs -fsck [OPTIONS] CIPHERDIR
نمایش اطلاعات سامانه فایل
gocryptfs -info [OPTIONS] CIPHERDIR
توضیحات (DESCRIPTION)
دستور gocryptfs یک سامانه فایل لایهای (overlay) رمزنگاریشده است که با زبان Go نوشته شده است. فایلهای رمزنگاریشده در CIPHERDIR ذخیره میشوند و با سوار کردن سامانه فایل در نقطه اتصال MOUNTPOINT، نمایی با متن خام (plaintext) ارائه میگردد.
برنامه gocryptfs با الهام از encfs(1) طراحی شده است و میکوشد در عین ارائه کارایی و سرعت بالا، مشکلات امنیتی آن را برطرف کند.
پرچمهای عملیات (ACTION FLAGS)
در صورتی که هیچیک از پرچمهای عملیات زیر مشخص نشود، عملیات پیشفرض سوار کردن سامانه فایل خواهد بود (بخش خلاصه دستور را ببینید).
-fsck
بررسی یکپارچگی دایرکتوری CIPHERDIR. در صورت یافتن خرابی، کد خروج ۲۶ خواهد بود.
-h, -help
چاپ متن راهنمای کوتاه که گزینههای پرکاربردتر را نمایش میدهد.
-hh
نمایش متن راهنمای طولانی شامل تمامی گزینههای موجود.
-info
نمایش خوانا و ساختاریافته محتوای فایل پیکربندی موجود در CIPHERDIR برای کاربر، همراه با حذف دادههای حساس.
مثال:
-
$ gocryptfs -info my_cipherdir Creator: gocryptfs v2.0-beta2 FeatureFlags: GCMIV128 HKDF DirIV EMENames LongNames Raw64 EncryptedKey: 64B ScryptObject: Salt=32B N=65536 R=8 P=1 KeyLen=32
-init
مقداردهی اولیه دایرکتوری رمزنگاریشده.
-passwd
تغییر گذرواژه. ابتدا گذرواژه پیشین درخواست شده و صحت آن بررسی میشود، سپس گذرواژه جدید دریافت میگردد.
اگر گذرواژه را فراموش کردهاید اما کلید اصلی (master key) را دارید، میتوانید از این گزینه به همراه -masterkey استفاده کنید. توجه داشته باشید که بدون گذرواژه قدیمی، gocryptfs نمیتواند درستی کلید اصلی را تشخیص دهد و فایل پیکربندی قبلی را بدون درنگ بازنویسی خواهد کرد. با این وجود، یک نسخه پشتیبان از فایل پیکربندی قدیمی به نام gocryptfs.conf.bak ایجاد میکند. پس از حصول اطمینان از دسترسی به فایلها با گذرواژه جدید، میتوانید این فایل پشتیبان را حذف کنید.
-speed
اجرای آزمون سنجش سرعت رمزنگاری. آزمون سنجش کارایی الگوریتم توکار GCM در Go در برابر OpenSSL (در صورت وجود). کتابخانهای که در صورت تعیین «-openssl=auto» (حالت پیشفرض) انتخاب میشود، مشخص میگردد.
-version
چاپ اطلاعات نسخه و خروج. خروجی شامل سه فیلد است که با «;» از یکدیگر جدا شدهاند. مثال: «gocryptfs v1.1.1-5-g75b776c; go-fuse 6b801d3; 2016-11-01 go1.7.3». فیلد ۱ نسخه gocryptfs، فیلد ۲ نسخه کتابخانه go-fuse و فیلد ۳ تاریخ کامپایل و نسخه Go استفادهشده است.
گزینههای مقداردهی اولیه (INIT OPTIONS)
گزینههای موجود برای -init در زیر فهرست شدهاند. معمولاً به هیچکدام نیاز نخواهید داشت؛ مقادیر پیشفرض مناسب هستند.
-aessiv
استفاده از حالت رمزنگاری AES-SIV. این حالت کندتر از AES-GCM است اما با نانسهای قطعی مورد استفاده در حالت «-reverse» ایمن است.
دستور gocryptfs -speed را اجرا کنید تا از میزان تفاوت سرعت مطلع شوید.
-deterministic-names
غیرفعال کردن تصادفیسازی نام فایلها و ایجاد فایلهای gocryptfs.diriv. این گزینه میتواند از تداخل همگامسازی هنگام سنکرون کردن فایلها جلوگیری کند، اما اطلاعات مربوط به نامهای فایل یکسان را در دایرکتوریهای مختلف فاش میسازد (بخش «Identical names leak» را در https://nuetzlich.net/gocryptfs/comparison/#file-names ببینید).
در فایل gocryptfs.conf حاصل، ویژگی «DirIV» در «FeatureFlags» موجود نخواهد بود.
-devrandom
منسوخ شده و در gocryptfs نسخه 2.2 و بعد از آن نادیده گرفته میشود.
برای اطلاعات پیشزمینه به https://github.com/rfjakob/gocryptfs/commit/f3c777d5eaa682d878c638192311e52f9c204294 و https://github.com/rfjakob/gocryptfs/issues/596 مراجعه کنید.
-hkdf
استفاده از HKDF برای اشتقاق کلیدهای جداگانه محتوا و نام فایل از کلید اصلی. پیشفرض true است.
-longnamemax
-
integer value, allowed range 62...255
هش کردن نامهایی که طول آنها (در حالت رمزنگاریشده) از این مقدار فراتر میرود. مقدار پیشفرض ۲۵۵ است که با محدودیت معمول طول نام فایل در لینوکس همخوانی داشته و بهترین کارایی را فراهم میآورد.
با این وجود، سرویسهای ذخیرهسازی ابری ممکن است محدودیتهای کمتری روی طول نام فایل و/یا مسیر اعمال کنند. در این وضعیت، تنظیم -longnamemax روی مقداری کمتر میتواند راهگشا باشد.
هرچه مقدار کمتر باشد، فایلهای اضافی .name بیشتری باید ایجاد شوند که این امر فهرستگیری دایرکتوریها را کند میکند.
مقادیر کمتر از ۶۲ مجاز نیستند زیرا نام هششده طولانیتر از نام اصلی خواهد شد.
مثال:
-
-longnamemax 100
-plaintextnames
عدم رمزنگاری نام فایلها و مقصدهای پیوندهای نمادین.
-raw64
استفاده از کدگذاری بدون پدینگ base64 برای نام فایلها. این کار نویسههای انتهایی «==» را حذف میکند. سامانه فایل ایجادشده با این گزینه فقط توسط gocryptfs نسخه 1.2 و بالاتر قابل سوار کردن است. پیشفرض true است.
-reverse
حالت معکوس، نمایی فقطخواندنی و رمزنگاریشده از یک دایرکتوری با متن خام را ارائه میدهد. متضمن گزینه -aessiv است.
اگر میخواهید نمای رمزنگاریشده را با استفاده از -masterkey سوار کنید، باید گزینه -aessiv را مشخص نمایید.
-xchacha
استفاده از رمزنگاری محتوای فایل با XChaCha20-Poly1305. این حالت در پردازندههایی که فاقد شتاب سختافزاری AES هستند بسیار سریعتر از AES-GCM خواهد بود.
برای اطلاع از میزان تفاوت سرعت، دستور gocryptfs -speed را اجرا کنید.
گزینههای سوار کردن (MOUNT OPTIONS)
گزینههای موجود برای سوار کردن در زیر فهرست شدهاند. معمولاً به هیچیک نیازی نیست؛ مقادیر پیشفرض مناسب هستند.
-acl
فعالسازی اعمال کنترل دسترسی (ACL). هنگامی که میخواهید از ACL استفاده کنید، باید این گزینه را فعال کنید.
-allow_other
بهطور پیشفرض، هسته لینوکس از دسترسی هر کاربر دیگری (حتی root) به یک سامانه فایل FUSE متصل جلوگیری میکند. تنظیم این گزینه، امکان دسترسی دیگر کاربران را مشروط به بررسی مجوزهای فایل فراهم میسازد. تنها در صورتی کار میکند که user_allow_other در /etc/fuse.conf تنظیم شده باشد. این گزینه معادل «allow_other» بهعلاوه «default_permissions» توصیفشده در fuse(8) است.
-badname string
هنگامی که gocryptfs با نام فایل «نامعتبر» مواجه میشود (نامی که قابل رمزگشایی نیست یا پس از رمزگشایی به نویسههای نامفهوم تبدیل میشود)، هشداری ثبت شده و فایل از نمای متن خام پنهان میگردد.
با گزینه -badname، میتوانید نامهای نامعتبر را مشخص کنید تا به جای پنهان شدن، همچنان در نمای متن خام نمایش داده شوند. به انتهای نام چنین فایلهایی عبارت GOCRYPTFS_BAD_NAME افزوده خواهد شد.
الگوی انطباق سراسری (Glob). میتواند چندین بار برای الگوهای مختلف تکرار شود.
مثالها:
تداخلهای همگامسازی در Dropbox:
-
-badname '*conflicted copy*'
تداخلهای همگامسازی در Syncthing:
-
-badname '*.sync-conflict*'
نمایش تمام نامهای نامعتبر فایلها:
-
-badname '*'
-context string
تنظیم بافتار امنیتی SELinux. برای جزئیات به mount(8) مراجعه کنید.
این گزینه جهت سازگاری با آزمونهای xfstests افزوده شده است که این گزینه را با -o context="system_u:object_r:root_t:s0" تعیین میکند.
تنها هنگام سوار کردن به عنوان کاربر root کار میکند، در غیر این صورت این خطا را از fusermount3 دریافت خواهید کرد:
-
fusermount3: unknown option 'context="system_u:object_r:root_t:s0"'
-ctlsock string
ایجاد یک سوکت کنترلی در مسیر مشخصشده. از این سوکت میتوان برای رمزگشایی و رمزنگاری مسیرها در داخل سامانه فایل استفاده کرد. هنگام استفاده از این گزینه، مطمئن شوید که دایرکتوری حاوی سوکت برای همگان قابل دسترس نباشد. برای نمونه، مسیری مانند /run/user/UID/my.socket مناسب خواهد بود.
-dev, -nodev
فعالسازی (-dev) یا غیرفعالسازی (-nodev) فایلهای دستگاه در نقطه اتصال gocryptfs (پیشفرض: -nodev). در صورت تعیین هر دو، -nodev اولویت خواهد داشت. برای استفاده از -dev به مجوزهای کاربر ریشه (root) نیاز است.
-e PATH, -exclude PATH
تنها برای حالت معکوس: مستثنی کردن مسیر نسبی متن خام از نمای رمزنگاریشده، با تطبیق تنها از ریشه سامانه فایل سوارشده. میتواند چندین بار ارسال شود.
مثالی که دایرکتوریهای «Music» و «Movies» را از دایرکتوری ریشه مستثنی میکند:
-
gocryptfs -reverse -exclude Music -exclude Movies /home/user /mnt/user.encrypted
همچنین گزینههای -exclude-wildcard، -exclude-from و بخش «مستثنی کردن فایلها» را ببینید.
-ew GITIGNORE-PATTERN, -exclude-wildcard GITIGNORE-PATTERN
تنها برای حالت معکوس: مستثنی کردن مسیرها از نمای رمزنگاریشده مطابق با نحو gitignore(5)، با پشتیبانی از کاراکترهای عمومی. میتواند چندین بار برای تعیین چندین الگو مشخص شود.
مثال برای مستثنی کردن تمامی فایلهای .mp3 در هر دایرکتوری:
-
gocryptfs -reverse -exclude-wildcard '*.mp3' /home/user /mnt/user.encrypted
مثال برای مستثنی کردن همهچیز به جز دایرکتوری `important` در دایرکتوری ریشه:
-
gocryptfs -reverse -exclude-wildcard '*' -exclude-wildcard '!/important' /home/user /mnt/user.encrypted
همچنین گزینه -exclude-from و بخش «مستثنی کردن فایلها» را ببینید.
-exclude-from FILE
تنها برای حالت معکوس: خواندن الگوهای gitignore از یک فایل. میتواند چندین بار تکرار شود. مثال:
-
gocryptfs -reverse -exclude-from ~/crypt-exclusions /home/user /mnt/user.encrypted
همچنین گزینههای -exclude، -exclude-wildcard و بخش «مستثنی کردن فایلها» را ببینید.
-exec, -noexec
فعالسازی (-exec) یا غیرفعالسازی (-noexec) اجرای فایلهای اجرایی در سامانه فایل gocryptfs (پیشفرض: -exec). در صورت تعیین هر دو، -noexec اولویت دارد.
-fg, -f
ماندن در پیشزمینه به جای رفتن به پسزمینه (daemonize شدن). جهت سازگاری، «-f» نیز پذیرفته میشود، اما «-fg» ارجح است.
مگر در حالتی که -notifypid مشخص شده باشد، لاگها به جای syslog به stdout و stderr فرستاده میشوند.
-force_owner string
در صورت دریافت رشتهای به شکل «uid:gid» (که در آن «uid» و «gid» با اعداد صحیح مثبت جایگزین شدهاند)، مالکیت تمامی فایلها را بدون توجه به مالکیت واقعی آنها، به عنوان uid و gid مشخصشده نمایش میدهد. متضمن گزینه «allow_other» است.
این رفتار بهندرت مورد نیاز است: کاربر معمولاً باید gocryptfs را با همان کاربری اجرا کند که مالک فایلهای ذخیرهسازی پشتیبان است، که این حساب معمولاً باید با حساب کاربری که قصد دسترسی به محتوای رمزگشاییشده را دارد یکی باشد. نمونهای که این گزینه میتواند در آن سودمند باشد وضعیتی است که در آن محتوا روی سامانه فایلی ذخیره شده که از مالکیت و مجوزهای یونیکس بهدرستی پشتیبانی نمیکند.
-forcedecode
منسوخ شده و در gocryptfs نسخه 2.2 و بالاتر نادیده گرفته میشود.
برای اطلاع از اینکه این گزینه چه بود و چرا حذف شد به پیوند زیر مراجعه نمایید: https://github.com/rfjakob/gocryptfs/commit/d023cd6c95fcbc6b5056ba1f425d2ac3df4abc5a
-fsname string
بازنویسی نام سامانه فایل (ستون اول در df -T). میتواند به صورت «-o fsname=» نیز ارسال شود و معادل گزینهای با همین نام در libfuse است. بهطور پیشفرض از CIPHERDIR استفاده میشود.
-fusedebug
فعال کردن خروجی اشکالزدایی کتابخانه fuse.
-i duration, -idle duration
فقط برای حالت مستقیم: پیاده کردن خودکار سامانه فایل در صورتی که برای مدت مشخصشده بدون فعالیت (بیکار) بوده باشد. مدتزمان میتواند مانند «500s» یا «2h45m» مشخص شود. مقدار ۰ (پیشفرض) به معنای متصل ماندن دائمی است.
هنگامی که فرایندی فایلهای باز در نقطه اتصال داشته باشد یا دایرکتوری کاری آن در آنجا باشد، مانع از بیکار شدن سامانه فایل خواهد شد.
-kernel_cache
فعال کردن گزینه kernel_cache در سامانه فایل FUSE؛ برای جزئیات به fuse(8) مراجعه فرمایید.
-ko
ارسال گزینههای سوار کردن اضافی به هسته (فهرست جداشده با کاما). سامانههای فایل FUSE بهطور پیشفرض با «nodev,nosuid» متصل میشوند. اگر gocryptfs با کاربر root اجرا شود، میتوانید فایلهای دستگاه را با ارسال گزینه متضاد «dev» فعال کنید، و اگر میخواهید باینریهای دارای پرچم suid فعال باشند، «suid» را ارسال نمایید. گزینههای «ro» (معادل گزینه «-ro») و «noexec» نیز میتوانند مفید باشند. برای فهرست کامل، بخش FILESYSTEM-INDEPENDENT MOUNT OPTIONS را در mount(8) ببینید. در مکاواس (macOS)، گزینه «local» قابلیت سطل زباله مبتنی بر حجم را فعال میکند اگر پوشه .Trashes در ریشه حجم وجود داشته باشد (ممکن است نیاز به ساخت دستی باشد). توجه کنید که «local» در مستندات osxfuseبه عنوان «آزمایشی» علامت خورده است؛ همچنین گزینههای «noapplexattr» و «noappledouble» ممکن است سودمند باشند.
توجه کنید که برخلاف «-o»، گزینه «-ko» یک گزینه معمولی است و باید پیش از دایرکتوریها ارسال شود. مثال:
-
gocryptfs -ko noexec /tmp/foo /tmp/bar
-longnames
ذخیره نامهای طولانیتر از ۱۷۵ بایت در فایلهای اضافی (پیشفرض true).
این پرچم تنها هنگام بازیابی سامانههای فایل بسیار قدیمی gocryptfs (نسخه 0.8 و قبل از آن) با استفاده از «-masterkey» مفید است. در غیر این صورت نادیده گرفته میشود (روی پیشفرض میماند).
-nodev
به -dev, -nodev مراجعه کنید.
-noexec
به -exec, -noexec مراجعه کنید.
-nofail
قرار داشتن گزینه nofail در /etc/fstab به systemd اعلام میکند که حتی در صورت شکست عملیات سوار کردن، بوت سیستم بهطور عادی ادامه یابد (به man systemd.fstab مراجعه کنید).
این گزینه توسط خود gocryptfs نادیده گرفته میشود و خارج از /etc/fstab اثری ندارد.
-nonempty
اجازه اتصال روی دایرکتوریهای غیرخالی. سامانه FUSE بهطور پیشفرض برای جلوگیری از پنهانسازی تصادفی فایلها، این کار را مجاز نمیداند.
-noprealloc
غیرفعالسازی پیشتخصیص فضا پیش از نوشتن. بهطور پیشفرض، gocryptfs فضایی را که نوشتن بعدی اشغال میکند با استفاده از fallocate(2) در حالت FALLOC_FL_KEEP_SIZE پیشتخصیص میدهد. این کار تضمین میکند که در میانه نوشتن فضا کم نیاید؛ رخدادی که باعث خراب و غیرقابلخواندن شدن آخرین بلوک 4kB میشود.
در سامانه فایل ext4، پیشتخصیص سریع است و افت کارایی محسوسی ایجاد نمیکند. متأسفانه در Btrfs، پیشتخصیص بسیار کند است، بهویژه روی دیسکهای مغناطیسی چرخشی (HDD). گزینه «-noprealloc» این امکان را فراهم میکند که مقاومت در برابر خطاهای کمبود فضا با افزایش چشمگیر سرعت مبادله شود.
برای بنچمارکها و جزئیات بیشتر به پیوند زیر مراجعه کنید: https://github.com/rfjakob/gocryptfs/issues/63
-nosuid
به -suid, -nosuid مراجعه کنید.
-nosyslog
پیامهای عیبیابی معمولاً پس از رفتن gocryptfs به حالت پسزمینه (daemonize) به syslog فرستاده میشوند. این گزینه این تغییر مسیر را غیرفعال کرده و پیامها همچنان در stdout و stderr چاپ خواهند شد.
-notifypid int
ارسال سیگنال USR1 به فرایند مشخصشده پس از سوار کردن موفقیتآمیز. این گزینه بهطور داخلی برای رفتن فرایند به پسزمینه استفاده میشود.
-one-file-system
عدم عبور از مرزهای سامانههای فایل (مشابه گزینه --one-file-system در rsync). نقاط اتصال به صورت دایرکتوریهای خالی نمایش داده میشوند.
تنها در حالت معکوس کاربرد دارد.
محدودیت: تکفایلهای سوارشده پنهان نخواهند شد.
-rw, -ro
سوار کردن سامانه فایل به صورت خواندن/نوشتن (-rw، پیشفرض) یا فقطخواندنی (-ro). در صورت مشخص شدن هر دو، -ro اولویت دارد.
-reverse
به بخش -reverse در «گزینههای مقداردهی اولیه» مراجعه کنید. باید گزینه -reverse را هم در هنگام -init و هم هنگام سوار کردن مشخص کنید.
-serialize_reads
هسته معمولاً چندین درخواست خواندن همروند را برای پاسخگویی به درخواستهای فضای کاربری و خواندن پیشاپیش (readahead) ارسال میکند. برنامه gocryptfs به آنها بهصورت همروند و با ترتیب دلخواه پاسخ میدهد. روی فضاهای ذخیرهسازی که کارایی ضعیفی برای خواندنهای همروند یا نامنظم دارند (مانند Amazon Cloud Drive)، این رفتار میتواند موجب افت شدید سرعت خواندن شود.
گزینه -serialize_reads دو کار انجام میدهد: (۱) درخواستهای خواندن یکییکی (بدون همروندی) ارسال خواهند شد و (۲) gocryptfs تلاش میکند خواندنها را به ترتیب آفست فایل مرتب سازد.
این ترتیبدهی مستلزم آن است که gocryptfs پیش از ارسال خواندن، مدتزمان معینی درنگ کند. سریالیسازی قفلگذاری اضافی تحمیل میکند. این عوامل سرعت انتقال داده را به زیر 70MB/s محدود میسازند.
برای جزئیات بیشتر به پیوند زیر مراجعه کنید: https://github.com/rfjakob/gocryptfs/issues/92
-sharedstorage
فعالسازی سازوکارهای تطبیقی به منظور کارکرد بهتر gocryptfs زمانی که دایرکتوری پشتیبان بهطور همزمان توسط چندین نمونه از gocryptfs مورد دسترسی قرار میگیرد.
در حال حاضر، این گزینه دو کار انجام میدهد:
- 1.
- غیرفعالسازی کشگذاری stat() تا تغییرات در فضای ذخیرهسازی پشتیبان بلافاصله نمایان شوند.
- 2.
- غیرفعالسازی ردیابی پیوندهای سخت (hard links)، زیرا شمارههای inode روی ذخیرهساز پشتیبان در صورت حذف و ساخت مجدد فایلها در پشت صحنه پایدار نیستند. در غیر این صورت، این وضعیت خطاهای عجیب «file does not exist» و خطاهای دیگر را تولید میکرد.
هنگامی که «-sharedstorage» فعال باشد، کارایی کاهش یافته و پیوندهای سخت قابل ایجاد نخواهند بود.
حتی با فعال بودن این پرچم، ممکن است گهگاه با مشکلاتی روبرو شوید. اجرای gocryptfs روی فضای ذخیرهسازی مشترک به اندازه حالت کاربرد اختصاصی مورد آزمایش قرار نگرفته است. لطفاً حجم کاری خود را از قبل بیازمایید و هرگونه مشکلی را گزارش دهید.
اطلاعات بیشتر: https://github.com/rfjakob/gocryptfs/issues/156
-suid, -nosuid
فعالسازی (-suid) یا غیرفعالسازی (-nosuid) فایلهای اجرایی suid و sgid در نقطه اتصال gocryptfs (پیشفرض: -nosuid). در صورت تعیین هر دو، -nosuid اولویت خواهد داشت. برای استفاده از -suid به مجوزهای کاربر ریشه نیاز دارید.
-zerokey
استفاده از کلید اصلی ساختگی متشکل از تمام بایتهای صفر. این گزینه فقط برای آزمایشهای خودکار در نظر گرفته شده است زیرا هیچگونه امنیتی ارائه نمیدهد.
گزینههای عمومی (COMMON OPTIONS)
گزینههایی که برای بیش از یک عملیات کاربرد دارند در زیر آمدهاند. برای هر گزینه مشخص شده است که در چه مواردی کاربرد دارد. مجدداً، معمولاً به هیچیک از آنها نیازی نخواهید داشت.
-config string
استفاده از فایل پیکربندی مشخصشده به جای CIPHERDIR/gocryptfs.conf.
کاربرد: تمامی عملیاتی که از یک فایل پیکربندی استفاده میکنند: سوار کردن، -fsck، -passwd، -info و -init.
-cpuprofile string
نوشتن نمایه مصرف پردازنده (CPU profile) در فایل مشخصشده.
کاربرد: تمامی عملیاتها.
-d, -debug
فعال کردن خروجی اشکالزدایی.
کاربرد: تمامی عملیاتها.
-extpass CMD [-extpass ARG1 ...]
استفاده از یک برنامه خارجی (مانند ssh-askpass) برای اعلان دریافت گذرواژه. برنامه باید گذرواژه را در خروجی استاندارد ارائه دهد؛ خط جدید انتهایی توسط gocryptfs حذف میشود. اگر فقط میخواهید گذرواژه را از یک فایل بخوانید، گزینه -passfile را ببینید.
هنگامی که -extpass یک بار مشخص شود، آرگومان رشتهای بر اساس فاصلهها تفکیک میگردد. برای مثال، -extpass "md5sum my password.txt" به صورت "md5sum" "my" "password.txt" اجرا میشود که مسلماً خروجی مطلوب شما نیست.
گزینه -extpass را دو بار یا بیشتر مشخص کنید تا آرگومانهای رشتهای دستنخورده استفاده شوند. برای مثال، فراخوانی مطلوب به این شکل خواهد بود: -extpass "md5sum" -extpass "my password.txt".
اگر میخواهید از تفکیک بر اساس فاصله جلوگیری کنید اما نمیخواهید آرگومانی به برنامه ارسال نمایید، از "--" استفاده کنید که توسط اکثر برنامهها پذیرفته میشود: -extpass "my program" -extpass "--"
کاربرد: تمامی عملیاتی که گذرواژه درخواست میکنند.
اشکال: در حالت -extpass -X، مقدار -X به عنوان --X تفسیر خواهد شد. لطفاً برای جلوگیری از آن از -extpass=-X استفاده کنید. برای جزئیات به بخش تکرار خط تیره در بخش اشکالات (BUGS) مراجعه کنید.
-fido2 DEVICE_PATH
استفاده از توکن امنیتی FIDO2 برای مقداردهی اولیه و بازگشایی قفل سامانه فایل. از دستور fido2-token -L برای دریافت مسیر دستگاه توکن FIDO2 استفاده کنید. در لینوکس، بسته fido2-tools مورد نیاز است.
کاربرد: تمامی عملیاتی که گذرواژه درخواست میکنند.
-fido2-assert-option OPTION
گزینههای ارسالشده به fido2-assert همراه با گزینه -t. این گزینه میتواند چندین بار تکرار شود و هر بار دو آرگومان -t و OPTION را به fido2-assert اضافه میکند. برای بررسی گزینههای پشتیبانیشده به man fido2-assert مراجعه کنید.
مثالها:
ایجاد یک سامانه فایل بدون اعتبارسنجی پین (PIN):
-
gocryptfs -init -fido2 DEVICE_PATH -fido2-assert-option pin=false CIPHERDIR
ایجاد یک سامانه فایل با هر دو اعتبارسنجی کاربر و اعتبارسنجی پین:
-
gocryptfs -init -fido2 DEVICE_PATH -fido2-assert-option uv=true -fido2-assert-option pin=true CIPHERDIR
ایجاد یک سامانه فایل با هر دو حضور کاربر و اعتبارسنجی کاربر:
-
gocryptfs -init -fido2 DEVICE_PATH -fido2-assert-option up=true -fido2-assert-option uv=true CIPHERDIR
-masterkey string
استفاده از یک کلید اصلی صریح مشخصشده در خط فرمان یا اگر مقدار ویژه «stdin» به کار رود، خواندن کلید اصلی از stdin، به جای خواندن فایل پیکربندی و درخواست گذرواژه.
توجه داشته باشید که خط فرمان و در نتیجه کلید اصلی برای هر کاربری در سیستم که بتواند دستور «ps -auxwww» را اجرا کند قابل رؤیت است. برای اجتناب از این خطر از «-masterkey=stdin» استفاده کنید.
گزینه masterkey به عنوان گزینهای برای بازیابی در شرایط اضطراری در نظر گرفته شده است، مانند زمانی که گذرواژه را فراموش کرده یا فایل پیکربندی را از دست دادهاید.
حتی در صورت وجود فایل پیکربندی، از آن استفاده نخواهد شد. تمام تنظیمات غیرپیشفرض باید در خط فرمان ارسال شوند: -aessiv هنگام سوار کردن سامانه فایلی که با حالت معکوس ایجاد شده است، یا -plaintextnames برای سامانه فایلی که با آن گزینه ساخته شده است.
مثال ۱: سوار کردن سامانه فایلی که با گزینههای پیشفرض ایجاد شده است:
-
gocryptfs -masterkey=6f717d8b-6b5f8e8a-fd0aa206-778ec093-62c5669b-abd229cd-241e00cd-b4d6713d cipher mnt gocryptfs -masterkey=stdin cipher mnt
مثال ۲: سوار کردن سامانه فایل gocryptfs -reverse (توجه داشته باشید که باید گزینه -aessiv را مشخص کنید):
-
gocryptfs -masterkey=stdin -aessiv cipher mnt
کاربرد: تمامی عملیاتی که گذرواژه درخواست میکنند.
-memprofile string
نوشتن نمایه حافظه در فایل مشخصشده. این گزینه هنگام بررسی و اشکالزدایی مصرف حافظه gocryptfs سودمند است.
کاربرد: تمامی عملیاتها.
-o COMMA-SEPARATED-OPTIONS
جهت سازگاری با mount(1)، گزینهها به صورت «-o COMMA-SEPARATED-OPTIONS» در انتهای خط فرمان نیز پذیرفته میشوند. برای مثال، «-o q,zerokey» معادل با ارسال «-q -zerokey» است.
توجه داشته باشید که با «-o» تنها میتوانید گزینههایی را ارسال کنید که توسط gocryptfs شناخته میشوند. اگر میخواهید پرچمهای ویژهای به هسته بفرستید، باید از «-ko» (گزینه هسته) استفاده کنید. این موضوع با سامانههای فایل مبتنی بر libfuse تفاوت دارد که گزینههای ناشناخته «-o» را بهطور خودکار به هسته ارسال میکنند.
مثال:
-
gocryptfs /tmp/foo /tmp/bar -o q,zerokey
کاربرد: تمامی عملیاتها.
-openssl bool/“auto”
استفاده از OpenSSL به جای کتابخانه رمزنگاری توکار Go (پیشفرض «auto»). استفاده از کتابخانه توکار Go حدود ۴ برابر کندتر است، مگر اینکه پردازنده شما دستورالعملهای سختزاری AES داشته باشد و از نسخه Go 1.6 یا بالاتر استفاده کنید. در حالت «auto»، برنامه gocryptfs گزینه سریعتر را انتخاب میکند.
کاربرد: تمامی عملیاتها.
-passfile FILE [-passfile FILE2 ...]
خواندن گذرواژه از فایل متنی ساده مشخصشده. فایل باید دقیقاً شامل یک سطر باشد (از فایلهای دودویی استفاده نکنید!). در صورت وجود بیش از یک سطر، هشداری چاپ شده و تنها سطر اول استفاده میشود. وجود یک نویسه خط جدید انتهایی مجاز است و باعث هشدار نمیشود.
این گزینه را چندین بار ارسال کنید تا سطر اول از چند فایل خوانده شود. آنها برای تشکیل گذرواژه مؤثر به یکدیگر متصل میشوند.
مثال:
-
echo hello > hello.txt echo world > world.txt gocryptfs -passfile hello.txt -passfile world.txt
گذرواژه مؤثر «helloworld» خواهد بود.
کاربرد: تمامی عملیاتی که گذرواژه درخواست میکنند.
-q, -quiet
حالت بیصدا - عدم نمایش پیامهای اطلاعاتی.
کاربرد: تمامی عملیاتها.
-scryptn int
برنامه gocryptfs از الگوریتم scrypt برای درهمسازی (هش کردن) گذرواژه هنگام سوار کردن استفاده میکند که آن را در برابر حملات جستجوی فراگیر (brute-force) محافظت مینماید.
گزینه -scryptn پارامتر هزینه «N» در scrypt را کنترل میکند که به صورت scryptn=log2(N) بیان میشود. مقادیر مجاز از -scryptn=10 تا -scryptn=28 متغیر بوده و بیانگر N=2^10 تا N=2^28 است.
تنظیم این مقدار روی عددی کمتر سرعت سوار کردن را افزایش داده و مصرف حافظه را کاهش میدهد، اما گذرواژه را در برابر حملات جستجوی فراگیر آسیبپذیرتر میسازد. مقدار پیشفرض ۱۶ است.
میزان مصرف حافظه برای scrypt در حین سوار کردن به شرح زیر است:
-
scryptn Memory Usage ======= ============ 10 1 MiB 11 2 12 4 13 8 14 16 15 32 16 64 17 128 18 256 19 512 20 1 GiB 21 2 22 4 23 8 24 16 25 32 26 64 27 128 28 256
کاربرد: -init، -passwd
همچنین ببینید: بنچمارکهای موجود در کد منبع gocryptfs در پوشه internal/configfile.
-trace string
نوشتن ردگیری اجرا در فایل. ردگیری را با استفاده از دستور «go tool trace FILE» مشاهده کنید.
کاربرد: تمامی عملیاتها.
-wpanic
در صورت مواجهه با هرگونه هشدار، برنامه با وضعیت هراس (panic) بلافاصله خارج شود. این گزینه برای آزمونهای رگرسیون مناسب است.
کاربرد: تمامی عملیاتها.
--
پایان پردازش گزینهها. زمانی مفید است که نام دایرکتوری CIPHERDIR با خطتیره «-» آغاز شود.
کاربرد: تمامی عملیاتها.
مستثنی کردن فایلها (EXCLUDING FILES)
در حالت معکوس، امکان مستثنی کردن فایلها از نمای رمزنگاریشده با استفاده از گزینههای -exclude، -exclude-wildcard و -exclude-from وجود دارد.
گزینه -exclude مسیرهای کامل را تطبیق میدهد، بنابراین -exclude file.txt تنها فایلی به نام file.txt را در ریشه سامانه فایل سوارشده مستثنی میکند؛ فایلهایی به نام file.txt در زیردایرکتوریها همچنان قابل مشاهده خواهند بود. کاراکترهای عمومی پشتیبانی نمیشوند. این گزینه برای حفظ سازگاری با رفتار نسخههای تا 1.6.x حفظ شده است. کاربران جدید باید به جای آن از -exclude-wildcard استفاده کنند.
گزینه -exclude-wildcard از نحو gitignore استفاده میکند و فایلها را در هر مکانی تطبیق میدهد، بنابراین -exclude-wildcard file.txt فایلهایی به نام file.txt را در هر دایرکتوری مستثنی میسازد. اگر میخواهید مسیرهای کامل را تطبیق دهید، میتوانید نام فایل را با پیشوند / آغاز کنید: -exclude-wildcard /file.txt تنها file.txt را در ریشه سامانه فایل سوارشده مستثنی میکند.
اگر موارد استثنا زیاد باشند، میتوانید از -exclude-from برای خواندن الگوهای gitignore از یک فایل استفاده کنید. مشابه -exclude-wildcard، از یک / ابتدایی برای تطبیق مسیرهای کامل استفاده کنید.
قواعد مستثنیسازی همان قواعد مربوط به gitignore هستند. بهطور خلاصه:
- 1.
- یک سطر خالی با هیچ فایلی تطبیق پیدا نمیکند، بنابراین میتواند به عنوان فاصلهانداز برای خوانایی عمل کند.
- 2.
- سطری که با # آغاز شود به عنوان توضیح در نظر گرفته میشود. برای الگوهایی که با علامت شارپ آغاز میشوند، یک بکاسلش (\) جلوی شارپ نخست قرار دهید.
- 3.
- فاصلههای خالی انتهایی نادیده گرفته میشوند مگر آنکه با بکاسلش (\) نقلقول شوند.
- 4.
- یک پیشوند اختیاری ! الگو را نفی میکند؛ هر فایل مطابقی که با الگوی قبلی مستثنی شده بود، مجدداً مشمول خواهد شد. اگر دایرکتوری والد یک فایل مستثنی شده باشد، مشمول کردن مجدد آن فایل ممکن نیست. برای الگوهایی که با علامت واقعی ! شروع میشوند، یک بکاسلش (\) در ابتدای آن قرار دهید؛ برای مثال: \!important!.txt.
- 5.
- اگر الگو به یک اسلش ختم شود، برای اهداف توصیف زیر اسلش حذف میشود، اما تنها با دایرکتوریها مطابقت خواهد یافت. به عبارت دیگر، foo/ با دایرکتوری foo و مسیرهای زیر آن مطابقت دارد، اما با فایل عادی یا پیوند نمادین با نام foo مطابقت ندارد.
- 6.
- اگر الگو شامل اسلش / نباشد، به عنوان الگوی انطباق شل تلقی شده و برای تطبیق با مسیر نسبی نسبت به ریشه سامانه فایل سوارشده بررسی میشود.
- 7.
- در غیر این صورت، الگو به عنوان الگوی شل مناسب برای پردازش توسط fnmatch(3) با پرچم FNM_PATHNAME در نظر گرفته میشود: کاراکترهای عمومی در الگو با / در نام مسیر مطابقت نخواهند داشت. برای مثال، Documentation/*.html با Documentation/git.html تطبیق دارد اما با Documentation/ppc/ppc.html یا tools/perf/Documentation/perf.html مطابقت ندارد.
- 8.
- یک اسلش در ابتدای الگو با شروع نام مسیر مطابقت دارد. برای مثال، /*.c با cat-file.c تطبیق دارد اما با mozilla-sha1/sha1.c مطابقت ندارد.
- 9.
- دو ستاره متوالی (**) در الگوهایی که در برابر مسیر کامل مطابقت داده میشوند ممکن است معنای خاصی داشته باشند:
- i.
- یک ** ابتدایی که به دنبال آن یک اسلش آمده باشد به معنای تطبیق در تمامی دایرکتوریها است. برای مثال، **/foo با فایل یا دایرکتوری foo در هر مکانی تطبیق دارد، مشابه الگوی foo. الگوی **/foo/bar با فایل یا دایرکتوری bar در هر جایی که مستقیماً در زیر دایرکتوری foo باشد تطبیق مییابد.
- ii.
- یک /** انتهایی با تمام محتویات داخل آن تطبیق دارد. برای مثال، abc/** با تمام فایلهای داخل دایرکتوری abc با عمق نامحدود مطابقت پیدا میکند.
- iii.
- یک اسلش که به دنبال آن دو ستاره متوالی و سپس یک اسلش دیگر بیاید با صفر یا چند دایرکتوری تطبیق مییابد. برای مثال، a/**/b با a/b، a/x/b، a/x/y/b و نظایر آن مطابقت دارد.
- iv.
- سایر موارد ستارههای متوالی نامعتبر تلقی میشوند.
مثالها (EXAMPLES)
مقداردهی اولیه
ایجاد یک سامانه فایل رمزنگاریشده در دایرکتوری «mydir.crypt» و سوار کردن آن روی «mydir»:
-
mkdir mydir.crypt mydir gocryptfs -init mydir.crypt gocryptfs mydir.crypt mydir
سوار کردن
سوار کردن نمای رمزنگاریشده دایرکتوری خانه joe با استفاده از حالت معکوس:
-
mkdir /home/joe.crypt gocryptfs -init -reverse /home/joe gocryptfs -reverse /home/joe /home/joe.crypt
تنظیم در fstab
افزودن این سطر به /etc/fstab موجب میشود /tmp/cipher هنگام بالا آمدن سیستم در /tmp/plain با استفاده از گذرواژه موجود در /tmp/passfile سوار شود. از دستور sudo mount -av برای آزمایش این سطر بدون نیاز به راهاندازی مجدد استفاده کنید. مسیر gocryptfs را بر اساس خروجی دستور which gocryptfs تنظیم کنید. حتماً از گزینه nofail استفاده کنید تا در صورت بروز خطا در سوار کردن سامانه فایل gocryptfs، بوت سیستم مختل نشود (برای جزئیات به گزینه -nofail مراجعه کنید).
-
/tmp/cipher /tmp/plain fuse./usr/local/bin/gocryptfs nofail,allow_other,passfile=/tmp/password 0 0
متغیرهای محیطی (ENVIRONMENT VARIABLES)
NO_COLOR
در صورت تنظیم NO_COLOR (صرفنظر از مقدار آن)، خروجی رنگی غیرفعال میشود (به https://no-color.org مراجعه کنید).
کدهای خروج (EXIT CODES)
0: موفقیت
6: دایرکتوری CIPHERDIR خالی نیست (در «-init»)
10: نقطه اتصال MOUNTPOINT دایرکتوری خالی نیست
12: گذرواژه نادرست است
22: گذرواژه خالی است (در «-init»)
23: امکان خواندن gocryptfs.conf وجود نداشت
24: امکان نوشتن gocryptfs.conf وجود نداشت (در «-init» یا «-password»)
26: دستور fsck خطاهایی یافت
سایر موارد: لطفاً پیام خطا را بررسی کنید
همچنین ببینید: https://github.com/rfjakob/gocryptfs/blob/master/internal/exitcodes/exitcodes.go
اشکالات (BUGS)
تکرار خط تیره (Dash duplication)
برنامه gocryptfs در نسخه 2.1 برای تجزیه خط فرمان به کتابخانه pflag مهاجرت کرد تا از پرچمها و آرگومانهای مکانی با هر ترتیبی پشتیبانی کند. برای حفظ سازگاری با گزینههای بلند تکخطتیره مانند -extpass، خط فرمان پیشپردازش شده و تمامی گزینههای دارای تکخطتیره به دوخطتیره تبدیل میشوند.
متأسفانه این بدان معناست که در دستور:
-
gocryptfs -extpass myapp -extpass -X
برنامه gocryptfs گزینه -X را به --X تبدیل کرده و برنامه extpass را به صورت myapp --X فراخوانی میکند.
برای رفع این مشکل، لطفاً از فرمت زیر استفاده کنید:
-
gocryptfs -extpass myapp -extpass=-X
همچنین ببینید (SEE ALSO)
mount(2) fuse(8) fallocate(2) encfs(1) gitignore(5)
نویسندگان (AUTHORS)
github.com/rfjakob.
| Aug 2017 |