.TH git-annex-shell 1 .SH "نام (NAME)" git-annex\-shell \- پوسته ورود محدودشده برای دسترسی SSH مختص git-annex .PP .SH "خلاصه دستور (SYNOPSIS)" git-annex\-shell [\-c] command [params ...] .PP .SH "توضیحات (DESCRIPTION)" دستور \fBgit-annex\-shell\fP یک پوسته محدودشده (restricted shell) مشابه \fBgit\-shell\fP است که می‌تواند به عنوان پوسته ورود (login shell) برای حساب‌های SSH استفاده شود. .PP از آنجا که نحو آن دقیقاً با نحو \fBgit\-shell\fP یکسان است، می‌تواند در هر کجا که \fBgit\-shell\fP استفاده می‌شود به عنوان جایگزین مستقیم به کار رود. به عنوان مثال می‌تواند به عنوان پوسته ورود محدودشده کاربر تنظیم گردد. .PP .SH "دستورها (COMMANDS)" هر دستوری که در زیر فهرست نشده باشد، مستقیماً به \fBgit\-shell\fP فرستاده می‌شود. .PP توجه داشته باشید که آرگومان پوشه (directory) باید یک مسیر مطلق باشد، در غیر این صورت نسبت به پوشه خانگی کاربر در نظر گرفته می‌شود. همچنین اولین «/~» یا «/~user/» به پوشه خانگی مشخص‌شده بسط داده می‌شود. .PP .IP "configlist directory" بخشی از پیکربندی گیت را به همان قالب \fBgit config \-\-list\fP چاپ می‌کند. از این خروجی برای دریافت annex.uuid مخزن دوردست (remote repository) استفاده می‌شود. .IP هنگامی که در مخزنی اجرا شود که هنوز annex.uuid ندارد، تا زمانی که یک شاخه git-annex قبلاً به آن push شده باشد، یا اگر فلگ autoinit=1 برای نشان دادن لزوم مقداردهی اولیه استفاده شده باشد، این شناسه ایجاد خواهد شد. .IP .IP "p2pstdio directory uuid" باعث می‌شود \fBgit-annex\-shell\fP با استفاده از پروتکل همتا-به-همتای (P2P) گیت-ضمیمه روی stdio ارتباط برقرار کند. .IP شناسه uuid همان شناسه‌ای است که به مخزن در حال ارتباط با \fBgit-annex\-shell\fP تعلق دارد. .IP .IP "notifychanges directory" توسط \fBgit-annex remotedaemon\fP برای اطلاع از تغییرات refها در مخزن دوردست استفاده می‌شود. .IP .IP "gcryptsetup directory gcryptid" مخزن را به عنوان یک مخزن gcrypt راه‌اندازی می‌کند. .IP .IP "inannex directory [key ...]" بررسی می‌کند که آیا همه کلیدهای مشخص‌شده در ضمیمه وجود دارند یا خیر، و در صورت موجود بودن با کد صفر خارج می‌شود. .IP اگر کلید مطمئناً در ضمیمه موجود نباشد با کد ۱ خارج می‌شود. اگر نتواند وضعیت را مشخص کند (مثلاً کلید در حال حذف از ضمیمه باشد) با کد ۱۰۰ خارج می‌شود. .IP تنها توسط ریموت اختصاصی gcrypt استفاده می‌شود. .IP .IP "recvkey directory key" دستور rsync را در حالت سرور اجرا می‌کند تا محتوای یک کلید را دریافت کرده و در ضمیمه ذخیره نماید. .IP تنها توسط ریموت اختصاصی gcrypt استفاده می‌شود. .IP .IP "sendkey directory key" دستور rsync را در حالت سرور اجرا می‌کند تا محتوای یک کلید را به بیرون ارسال کند. .IP تنها توسط ریموت اختصاصی gcrypt استفاده می‌شود. .IP .IP "dropkey directory [key ...]" داده‌های ضمیمه‌شده برای کلیدهای مشخص‌شده را حذف می‌کند. .IP تنها توسط ریموت اختصاصی gcrypt استفاده می‌شود. .IP .SH "گزینه‌ها (OPTIONS)" .IP "\-\-uuid=UUID" .IP دستور git-annex از این گزینه برای تعیین UUID مخزنی که انتظار داشت \fBgit-annex\-shell\fP به آن دسترسی داشته باشد استفاده می‌کند. این کار هم یک بررسی سلامت (sanity check) است و هم در صورت پیکربندی توسط git-annex\-update\-proxy، به git-annex-shell امکان می‌دهد به عنوان پراکسی دسترسی به ریموت‌ها عمل کند. .IP .IP "همچنین می‌توان از گزینه‌های \fBgit-annex\-common\-options\fP(1) نیز استفاده کرد." .IP "\-\- fields=val fields=val.. \-\-" فیلدهای اضافی را می‌توان به این صورت تعیین کرد تا سازگاری با نسخه‌های پیشین \fBgit-annex\-shell\fP (که این موارد را نادیده می‌گیرند اما در مواجهه با گزینه‌های خط‌تیره‌دار جدید به خطا می‌خورند) حفظ شود. .IP فیلدهایی که در حال حاضر استفاده می‌شوند عبارتند از autoinit= و remoteuuid= .IP .SH "قلاب (HOOK)" پس از اینکه داده‌ای توسط \fBgit-annex\-shell\fP از مخزن دریافت یا حذف شود، قلاب \fB.git/hooks/annex\-content\fP (یا در مخزن‌های bare قلاب \fBhooks/annex\-content\fP) اجرا می‌گردد. در حال حاضر هیچ اطلاعاتی درباره موارد تغییریافته به این قلاب ارسال نمی‌شود. .PP .SH "محیط (ENVIRONMENT)" .IP "GIT_ANNEX_SHELL_READONLY" .IP در صورت تنظیم، از هرگونه عملیاتی که منجر به تغییر مخزن git-annex شود جلوگیری می‌کند. .IP توجه داشته باشید که این متغیر مانع از فرستادن دستورات به \fBgit\-shell\fP نمی‌شود. برای آن منظور، به گزینه زیر نیز نیاز دارید... .IP .IP "GIT_ANNEX_SHELL_LIMITED" در صورت تنظیم، اجرای \fBgit\-shell\fP برای مدیریت دستورات ناشناخته را غیرمجاز می‌کند. .IP .IP "GIT_ANNEX_SHELL_APPENDONLY" در صورت تنظیم، اجازه نوشتن داده‌ها در مخزن git-annex داده می‌شود، اما اجازه حذف داده‌ها از آن داده نخواهد شد. .IP توجه داشته باشید که این متغیر مانع از فرستادن دستورات به \fBgit\-shell\fP نمی‌شود؛ بنابراین باید گیت را به‌طور جداگانه پیکربندی کنید تا پوش‌هایی را که شاخه‌ها را بازنویسی می‌کنند یا افزایشی نیستند رد کند. قلاب pre\-receive در گیت ممکن است برای این منظور کارآمد باشد. .IP در مخزنی که با این روش پیکربندی شده است، فعال کردن annex.securehashesonly پیشنهاد می‌شود. .IP .IP "GIT_ANNEX_SHELL_DIRECTORY" در صورت تنظیم، \fBgit-annex\-shell\fP از اجرای دستوراتی که روی پوشه مشخص‌شده عمل نمی‌کنند خودداری خواهد کرد. .IP .SH "مثال‌ها (EXAMPLES)" برای ساخت فایل \fB~/.ssh/authorized_keys\fP به طوری که تنها اجازه اجرای \fBgit-annex\-shell\fP داده شود و نه دستورات دیگر، دستور اصلی را به گزینه \-c ارسال کنید: .PP command="git-annex\-shell \-c \\"$SSH_ORIGINAL_COMMAND\\"",no\-agent\-forwarding,no\-port\-forwarding,no\-X11\-forwarding ssh\-rsa AAAAB3NzaC1y[...] user@example.com .PP برای محدودسازی بیشتر \fBgit-annex\-shell\fP به یک مخزن خاص و قفل کردن کامل آن در حالت فقط‌خواندنی: .PP command="GIT_ANNEX_SHELL_DIRECTORY=/srv/annex GIT_ANNEX_SHELL_LIMITED=true GIT_ANNEX_SHELL_READONLY=true git-annex\-shell \-c \\"$SSH_ORIGINAL_COMMAND\\"",restrict ssh\-rsa AAAAB3NzaC1y[...] user@example.com .PP طبیعتاً عبارت \fBssh\-rsa AAAAB3NzaC1y[...] user@example.com\fP باید با کلید SSH شما جایگزین شود. همچنین نمونه بالا فرض می‌کند که \fBgit-annex\-shell\fP در \fB$PATH\fP شما در دسترس است؛ در غیر این صورت از یک مسیر مطلق استفاده کنید. به علاوه توجه فرمایید که مثال بالا به جای فهرست صریحی از عملکردهای نامجاز، از گزینه \fBrestrict\fP استفاده کرده است. این قابلیت تنها در نگارش‌های مشخصی از OpenSSH، از نسخه 7.1p2 به بعد کار می‌کند. .PP برای مجاز دانستن صرفاً افزودن اشیاء جدید به مخزن، متغیر \fBGIT_ANNEX_SHELL_APPENDONLY\fP نیز می‌تواند به کار رود: .PP command="GIT_ANNEX_SHELL_DIRECTORY=/srv/annex GIT_ANNEX_SHELL_APPENDONLY=true git-annex\-shell \-c \\"$SSH_ORIGINAL_COMMAND\\"",restrict ssh\-rsa AAAAB3NzaC1y[...] user@example.com .PP همان‌گونه که در بالا توضیح داده شد، این پیکربندی مانع از نابودی تاریخچه گیت توسط یک مهاجم نخواهد شد. برای مقابله با این موضوع شاید بخواهید با گزینه‌هایی از \fBgit\-config\fP(1)، برخی عملیات‌ها مانند حذف شاخه و ارسال اجباری (force-push) را غیرمجاز کنید. به عنوان نمونه: .PP git config receive.denyDeletes true git config receive.denyNonFastForwards true .PP با این پیکربندی، کامیت‌های گیت همچنان می‌توانند فایل‌ها را حذف کنند، اما این فایل‌ها در تاریخچه گیت در دسترس باقی می‌مانند و git-annex محتوای آن‌ها را حفظ خواهد کرد. با این حال، اعمال تغییرات در شاخه \fBgit-annex\fP می‌تواند روی اطلاعات ردیابی مکان متعلق به git-annex اثر منفی بگذارد و حتی داده‌ها از دست بروند. برای غلبه بر این مشکل قلاب‌های پیچیده‌تری نیاز است؛ به عنوان نمونه قلاب \fBupdate\-paranoid\fP را در توزیع سورس گیت ببینید. .PP .SH "همچنین ببینید (SEE ALSO)" git-annex(1) .PP git\-shell(1) .PP .SH "نویسنده (AUTHOR)" Joey Hess .PP .PP