پوشه هایی با دسترسی محدود و گسترده را مدیریت کنید

یک کاربر صاحب یک پوشه My Drive است. پوشه ممکن است حاوی چندین کاربر با دسترسی به فایل های مختلف باشد. این مدل دسترسی محدود به این معنی است که کاربران مختلف می توانند لیست های مختلفی از موارد را در یک پوشه ببینند. کاربری که به پوشه والد My Drive دسترسی دارد اما به موردی در آن پوشه دسترسی ندارد، «دسترسی محدود» دارد. شرایطی را ایجاد می کند که در آن تشخیص اینکه چه کسی در سلسله مراتب دسترسی دارد دشوار است.

برعکس، فایل‌های درایو مشترک متعلق به درایو مشترک است. درایوهای مشترک دارای یک مدل گسترده هستند، بنابراین هر کاربر لیست یکسانی از موارد در یک پوشه دارد.

معرفی پوشه‌هایی با دسترسی محدود، مدل دسترسی گسترده را از درایوهای مشترک به My Drive تکرار می‌کند. با این تغییر، پوشه‌های با دسترسی محدود تنها استثنایی هستند که امکان محدود کردن دسترسی به یک زیرپوشه خاص را در My Drive و درایوهای مشترک فراهم می‌کنند.

این راهنما توضیح می دهد که چگونه می توانید پوشه هایی را با دسترسی محدود و دسترسی گسترده در Google Drive مدیریت کنید.

درباره پوشه هایی با دسترسی محدود

پوشه ها را به کاربران خاص محدود کنید.

پوشه های با دسترسی محدود به شما امکان می دهند پوشه ها را به کاربران خاصی محدود کنید. فقط کاربرانی که مستقیماً به مجوزهای پوشه اضافه می کنید می توانند آن را باز کرده و به محتوای آن دسترسی داشته باشند. کاربران با دسترسی ارثی به پوشه مشترک My Drive یا پوشه درایو مشترک (از طریق دسترسی از یک پوشه والد) می توانند پوشه محدود شده را در Drive ببینند اما نمی توانند آن را باز کنند. این ویژگی رفتار اشتراک‌گذاری موارد را در My Drive و درایوهای مشترک بهتر تراز می‌کند و به شما امکان می‌دهد پوشه‌های دارای محتوای حساس را در کنار محتوای به اشتراک‌گذاشته‌شده‌تر سازماندهی کنید.

پوشه‌های با دسترسی محدود هم در My Drive و هم در درایوهای مشترک در دسترس هستند. نقش owner در My Drive و نقش organizer در درایوهای مشترک همیشه می‌توانند به پوشه‌هایی با دسترسی محدود دسترسی داشته باشند. برای تغییر لیست کاربران پوشه، هیچ مجوز خاصی لازم نیست. نقش هایی که می توانند پوشه ها را به اشتراک بگذارند می توانند لیست اعضا را به روز کنند. برای کسب اطلاعات بیشتر درباره نقش‌ها و مجوزها، به نمای کلی نقش‌ها و مجوزها و درایوهای مشترک مراجعه کنید.

توجه داشته باشید که اگرچه پوشه‌ها نوعی فایل هستند، دسترسی محدودی برای فایل‌ها در دسترس نیست.

دسترسی محدود را روی یک پوشه تنظیم کنید

در حالی که کاربران با مجوزهای پوشه مستقیم می توانند به پوشه ای با دسترسی محدود دسترسی داشته باشند، فقط نقش owner در My Drive و نقش organizer در درایوهای مشترک می توانند دسترسی محدود را فعال یا غیرفعال کنند.

علاوه بر این، اگر کاربری با نقش writer در My Drive فیلد بولی writersCanShare در منبع files روی true تنظیم شده باشد، می‌تواند این ویژگی را نیز روشن یا خاموش کند.

برای محدود کردن دسترسی به یک پوشه، فیلد بولین inheritedPermissionsDisabled در منبع files را روی true تنظیم کنید. وقتی true ، فقط نقش owner ، نقش organizer و کاربرانی که مجوزهای پوشه مستقیم دارند می‌توانند به آن دسترسی داشته باشند.

برای فعال کردن مجدد مجوزهای ارثی، inheritedPermissionsDisabled را روی false تنظیم کنید.

مجوز محدود کردن دسترسی به یک پوشه را تأیید کنید

برای بررسی اینکه آیا می‌توانید دسترسی به یک پوشه را محدود کنید یا خیر، مقادیر بولی فیلدهای capabilities.canDisableInheritedPermissions and capabilities.canEnableInheritedPermissions را در منبع files بررسی کنید. این تنظیمات تأیید می کنند که آیا شما مجوز محدود کردن دسترسی به یک پوشه را از طریق فیلد inheritedPermissionsDisabled دارید.

برای اطلاعات بیشتر در مورد capabilities ، به درک قابلیت های فایل مراجعه کنید.

فرزندان یک پوشه با دسترسی محدود را فهرست کنید

برای بررسی اینکه آیا می‌توانید فرزندان یک پوشه را فهرست کنید، از فیلد بولی capabilities.canListChildren استفاده کنید.

زمانی که مورد یک پوشه نیست یا اگر دسترسی درخواست کننده به محتویات پوشه با تنظیم inheritedPermissionsDisabled روی false حذف شده باشد، مقدار بازگشتی همیشه false است.

اگر دسترسی شما به محتویات پوشه حذف شد، همچنان می توانید با متدهای files.get() و files.list() به فراداده پوشه دسترسی داشته باشید. برای تأیید اینکه دسترسی محدود است، بدنه پاسخ را بررسی کنید تا ببینید آیا مورد یک پوشه با نوع MIME application/vnd.google-apps.folder است و فیلد capabilities.canListChildren روی نادرست تنظیم شده است. اگر بخواهید فرزندان چنین پوشه ای را لیست کنید، نتیجه همیشه خالی است.

دسترسی به پوشه با فراداده دسترسی محدود

پوشه‌های با دسترسی محدود به شما امکان می‌دهند اگر به محتویات پوشه دسترسی ندارید، ابرداده‌های پوشه را مشاهده کنید.

هنگام استفاده از منبع permissions برای تعیین دسترسی کاربر، هم پوشه My Drive و هم پوشه درایو مشترک که فقط به ابرداده دسترسی دارند حاوی مقادیر زیر در بدنه پاسخ هستند: inheritedPermissionsDisabled=true و view=metadata . نقش همیشه به reader تنظیم شده است. قسمت view فقط برای مجوزهایی پر می شود که به یک view تعلق دارند. برای اطلاعات بیشتر، مشاهده ها را ببینید.

تمام ورودی‌های فیلد permissionDetails دارای فیلد inherited روی true تنظیم شده‌اند تا نشان دهد که مجوز به ارث رسیده است و دسترسی مستقیم به محتوای پوشه داده نشده است.

برای اعطای دسترسی به محتوای پوشه و ابرداده، قسمت inheritedPermissionsDisabled را روی false تنظیم کنید یا نقش را به reader یا بالاتر به‌روزرسانی کنید.

در نهایت، اگر مجوز ابتدا با خاموش کردن وراثت در یک پوشه محدود شود ( inheritedPermissionsDisabled=true )، و سپس مجوز مستقیماً به پوشه اضافه شود، مقادیر موجود در بدنه پاسخ به inheritedPermissionsDisabled=true تبدیل می‌شوند و فیلد view به صورت تنظیم نشده است. اگر پوشه در یک درایو مشترک است، لیست permissionDetails دارای ورودی است که فیلد inherited را روی false تنظیم کرده است تا نشان دهد مجوز به ارث نمی رسد. این مجوز مانند هر مجوز دیگری به هر دو محتوای پوشه و ابرداده دسترسی می دهد.

پوشه های با دسترسی محدود را حذف کنید

می توانید پوشه هایی با دسترسی محدود را با استفاده از روش files.delete() در منبع files حذف کنید.

در My Drive، فقط مالک مورد می‌تواند سلسله مراتب پوشه را حذف کند. اگر کاربری سلسله مراتبی را با پوشه‌هایی که دسترسی محدودی دارند و متعلق به دیگران است حذف کند، این پوشه‌ها به My Drive مالک منتقل می‌شوند.

اگر کاربر نقش owner را داشته باشد، کل سلسله مراتب حذف می شود.

در درایوهای مشترک، نقش organizer می‌تواند سلسله مراتب‌ها را حذف کند، حتی اگر حاوی پوشه‌هایی با دسترسی محدود باشند. اگر نقش fileOrganizer سلسله مراتبی را که شامل پوشه‌هایی با دسترسی محدود است حذف کند، نتیجه بستگی به این دارد که آیا آنها به عنوان fileOrganizer در پوشه‌هایی با دسترسی محدود اضافه شده باشند. اگر آنها بودند، کل سلسله مراتب حذف می شود. در غیر این صورت، پوشه‌های با دسترسی محدود به پوشه اصلی درایو مشترک منتقل می‌شوند.

درباره دسترسی گسترده

معرفی پوشه‌هایی با دسترسی محدود، مدل دسترسی گسترده را از درایوهای مشترک به My Drive گسترش می‌دهد. هنگامی که مدل دسترسی منتشر شد، دسترسی به یک پوشه به معنای حداقل همان سطح دسترسی به همه چیز در سلسله مراتب آن پوشه است. پوشه‌های با دسترسی محدود تنها استثنایی هستند که امکان محدود کردن دسترسی به یک زیرپوشه خاص در My Drive و درایوهای مشترک را فراهم می‌کنند. این همچنین به این معنی است که مگر اینکه پوشه شما دسترسی محدودی داشته باشد، دیگر نمی توانید دسترسی هایی را که از پوشه والد به ارث رسیده است حذف کنید. انجام این کار به این معنی است که Drive API یک پاسخ خطا برمی گرداند. برای تعریف کنترل دسترسی گرانول بیشتر در یک سلسله مراتب، می توانید دسترسی محدودی را روی پوشه تنظیم کنید .

با دسترسی گسترده سازگار شوید

برای تسهیل سازگاری توسعه دهندگان با دسترسی گسترده، چندین پیشرفت در Google Drive API انجام شد:

  1. فیلد permissionDetails[] در منبع permissions اکنون برای موارد در My Drive پر شده است. قبلاً، فیلدها تنظیم نشده بودند یا در صورت لزوم از قسمت teamDrivePermissionDetails تکرار می شدند. فقط permissionType و فیلدهای inherited در My Drive پر شده است.

    فیلد permissionDetails[].inherited نشان می‌دهد که آیا مجوز از والد مورد به ارث رسیده است یا خیر. این به شما امکان می‌دهد تشخیص دهید که آیا نقش‌های خاصی (مانند reader ) از والدین به ارث رسیده‌اند یا خیر، و آیا نقش بالاتر (مانند writer ) مستقیماً به آن مورد داده شده است.

    هنگام مشاهده مجوزهای یک مورد، قسمت permissionDetails[] ممکن است حاوی چندین ورودی باشد. در صورت وجود، یک ورودی برای مجوز مستقیماً در مورد آن محدوده، و سپس ورودی برای مجوزهای ارثی یا عضو در مورد وجود دارد.

  2. توسعه‌دهندگان می‌توانند پیش از هر گونه اجرای اجباری آینده، رفتار API دسترسی گسترده در My Drive را انتخاب کنند. می توانید پارامتر درخواست enforceExpansiveAccess را روی true تنظیم کنید تا تغییرات بعدی در دسترسی گسترده بر برنامه شما تأثیری نداشته باشد.

    انتخاب کردن اکنون به این معنی است که API برای موارد موجود در My Drive به همان صورت عمل می‌کند که قبلاً برای موارد در درایوهای مشترک انجام می‌شود. برای مثال، هر تلاشی برای محدود کردن دسترسی به زیر نقش ارثی هنگام فراخوانی permissions.update() با شکست مواجه می‌شود. به طور مشابه، در صورتی که مجوز به ارث برده شود، فراخوانی به permissions.delete() با شکست مواجه می شود.

شناسایی و جلوگیری از دسترسی محدود

برنامه شما ممکن است هنگام استفاده از روش‌های permissions.update() یا permissions.delete() دسترسی محدودی را در پوشه My Drive ایجاد کند (که در آن کاربر به پوشه My Drive والد دسترسی دارد اما به فایلی در آن پوشه دسترسی ندارد).

هنگام استفاده از این روش‌ها، می‌توانید فیلدهای موجود در منبع permissions را بررسی کنید تا ببینید یک درخواست در کجا ممکن است دسترسی محدود ایجاد کند و از ارسال چنین درخواست‌هایی اجتناب کنید. برای تشخیص این وضعیت، از فیلد enforceExpansiveAccess در درخواست خود استفاده کنید.

علاوه بر این، اگر برنامه شما قبلاً دسترسی محدود به پوشه های شما ایجاد کرده است، می توانید مراحل زیر را انجام دهید:

  1. برای حذف دسترسی محدود، سلسله مراتب پوشه را طی کنید. به جای آن، باید دسترسی محدود به پوشه را تنظیم کنید .

  2. اگر موردی که می‌خواهید اشتراک‌گذاری را لغو کنید یک فایل است، می‌توانید یک پوشه میانی ایجاد کنید، دسترسی محدودی به آن تنظیم کنید و فایل را به داخل پوشه جدید منتقل کنید.

  3. اگر نمی‌خواهید از پوشه‌های دسترسی محدود استفاده کنید، اما باید برخی از دسترسی‌ها را حذف کنید، می‌توانید فایل را به یک پوشه خصوصی (مانند پوشه ریشه My Drive) منتقل کنید. سپس می توانید یک میانبر برای مکان اصلی مورد ایجاد کنید تا کاربران همچنان بتوانند از آن استفاده کنند.