سؤال

لدي مجموعة من الملفات مع روابط متعددة لهم.

الملفات مملوكة للتحكم في مصدر TFS ولكن يتم صنع روابط أخرى لهم. كيف يمكنني حذف الروابط الإضافية دون مسح بت القراءة.

من الآمن افتراض:

  • تحتوي الملفات على أكثر من رابط واحد لهم
  • أنت لا تحذف الاسم الذي تملكه TFS
  • لا توجد ظروف سباق محتملة
  • لديك التحكم الكامل ACL للملفات
  • لن يفقد الجهاز الطاقة ، ولن يتم قتل برنامجك إلا إذا استغرق وقتًا طويلاً.

ليس من الآمن افتراض:

  • يتم تعيين بت القراءة (لا تضعه إذا لم يكن كذلك)
  • يمكنك ترك هذا القراءة واضحًا إذا واجهت خطأً وتم تعيينه في البداية

لا تهتر إلى Superuser - إذا تم ترحيلها هناك ، فإن الإجابة مستحيلة لأنه لا يمكن لأي أداة قياسية القيام بذلك.

على نظام افتراضي *nix يحتاج المرء فيه إلى إذن الكتابة على ملف لحذفه ، يوجد حل يتضمن FCHMOD (). ومع ذلك ، فإن النظام الذي يعرض هذا السلوك هو نظام Windows.

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

المحلول

هل حاولت تمكين spackupprivilege و serestoreprivilege ، والتي تسمح للمشرفين باسترخاء العديد من الفحوصات الأمنية؟

قد تجد موضوع مجموعة الأخبار هذا معاون، مساعد، مفيد، فاعل خير.

تحرير: للقيام بذلك دون امتيازات ، وبدون إنشاء حالة سباق ، ستحتاج إلى دعم NTFS المعاملات الموجود في Vista وما فوق. راجع للشغل ، يمكنك تعيين سمات باستخدام مقبض ، تم تمرير file_basic_info إلى setFileInformationByHandle, والتي يمكن التعامل معها ، انظر الملاحظات. أو يمكنك استخدام FindFirstFiLename للعثور على رابط صعب آخر لنفس الملف الذي لم يتم حذفه ، والتي يجب تعيينها للقراءة فقط.

نصائح أخرى

بفضل بن فويغت:

#include <windows.h>

int main(int argc, char **argv)
{
    while (*++argv) {
        HANDLE h;
        DWORD attrs;

        attrs = GetFileAttributes(*argv);
        SetFileAttributes(*argv, attrs & ~FILE_ATTRIBUTE_READONLY);
        h = CreateFile(*argv, GENERIC_READ|GENERIC_WRITE, 7, NULL, OPEN_EXISTING,
                    FILE_FLAG_DELETE_ON_CLOSE, NULL);
        SetFileAttributes(*argv, attrs);
        if (h != INVALID_HANDLE_VALUE) {
            CloseHandle(h);
        }
    }
}

هذا غير ممكن. الرابط الصعب هو مجرد اسم آخر لملف ؛ يمكنك الحصول على العديد من الروابط الصعبة ، ولكن لا يوجد سوى كائن ملف أساسي واحد (البيانات ، واصف الأمان ، والسمات ، وأوقات الملف ، إلخ). إذا كان كائن الملف يحتوي على مجموعة السمات القراءة فقط ، فستكون أي روابط صلبة بحلول التعريف هي أيضًا مجموعة السمات.

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