سؤال

يعمل تطبيقي على الشبكة المحلية، ويقوم المسؤول بإنشاء المجلد لكل مستخدم في المجلد المشترك باستخدام هذا الرمز:على سبيل المثال، "me1" هو مستخدم على الشبكة المحلية.

DirectoryInfo d=new DirectoryInfo(@"\\server\Test");
DirectoryInfo di = new DirectoryInfo(@"\\server\Test\me1");
di.Create(d.GetAccessControl());
DirectorySecurity dSecurity = di.GetAccessControl();

dSecurity.AddAccessRule(new FileSystemAccessRule("everyone",
                                                 FileSystemRights.FullControl,
                                                 AccessControlType.Deny));
di.SetAccessControl(dSecurity);

الآن لا يستطيع كل مستخدم الوصول إلى المجلد الخاص به، أستخدم هذا الكود:

DirectoryInfo dInfo = new DirectoryInfo(@"\\Server\Test\me1");
DirectorySecurity dSecurity = dInfo.GetAccessControl();
dSecurity.AddAccessRule(new FileSystemAccessRule("everyone",
                                                 FileSystemRights.FullControl,
                                                 AccessControlType.Allow));
dInfo.SetAccessControl(dSecurity);

ولكن حدث خطأ "تم رفض الوصول".كيف يمكن تعيين إذن لمستخدم معين؟؟أعني هل يمكن للمسؤول إعطاء الإذن لمستخدم معين عند إنشاء الدليل؟؟شكرًا.

هل كانت مفيدة؟

المحلول

يتم التحقق من رفض قواعد التحكم في الوصول (ACE) أولاً، ويكون الجميع في Everyone مجموعة.وبالتالي فإن ACE الأول سيمنع الوصول للجميع، بما فيهم أنت الذي تحاول تغيير الأذونات.

بشكل عام، قواعد الرفض هي النهج الخاطئ.من الأفضل إضافة قواعد الوصول التي تمنح الوصول الذي تريد منحه فقط، إذا لم تكن هناك قواعد السماح التي تطابق هوية سيتم رفض الوصول إليها - فلن تحتاج إلى حظرها بشكل صريح.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top