web-dev-qa-db-fra.com

Comment faire un dossier en lecture seule sous Windows?

Je veux donc m'empêcher d'écrire dans certains fichiers dans le dossier. Je travaille toujours avec des dossiers Back_up dans lesquels je le comparent, transférer des données sur des projets cibles. Le problème est que parfois sur erreur, je modifie les fichiers de secours. Est-ce que je peux refuser la permission d'édition/écriture pour moi-même? Je ne veux pas que les fichiers soient renommés/supprimés. Réglage du dossier En lecture seule Drapeau est quelque chose qui ne fait absolument rien - après cela, je peux éditer/supprimer des fichiers sans problème sans problème (au moins dans la victoire 8.1). C'est très important pour moi - parce que pour le moment, j'ai corrompu de nombreux fichiers back_up de cette façon et cela me donne beaucoup de problèmes. Des idées?

Je cours la dernière version de Windows 8.1 X64.

7
Nemo759

C'est un seul dossier contenant les fichiers. Chaque fois que je fais un changement, je fais "Enregistrer comme" et incrémenter le numéro de version. Cependant, parfois, j'ai accidentellement frappé "Enregistrer" et écrasez mon fichier - Steven Vascellaro


Comment rendre les fichiers dans un dossier en lecture seule accessible

Vous pouvez utiliser ICACLS et refuser explicitement les attributs d'écriture autorisation à tous les fichiers Dans un dossier spécifique et prévenir vous-même (ou tout groupe de sécurité) d'écraser ou de modifier ces fichiers, mais permettez toujours de lire l'accès à les ouvrir.

Vous trouverez ci-dessous un script de lot avec environnement %userdomain%\%username% variables pour définir le domaine actuel (ou le nom de la machine locale) et le nom d'utilisateur signé sur la machine que vous exécutez le script de lot comme (c'est-à-dire <domain>\<username>) refuser l'accès au compte; Cela peut facilement être remplacé par tout nom de groupe de sécurité de domaine valide si nécessaire également (c'est-à-dire <domain>\<securitygroupname>).

Script de lot

remplacer la valeur du Folder= Variable d'être le chemin de dossier explicite complet (ou un chemin UNC) à l'emplacement dont vous avez besoin pour rendre les fichiers existants en lecture seule accessible.

@ECHO ON

SET Folder=C:\Users\User\Desktop\Test
SET Security=%userdomain%\%username%

ICACLS "%Folder%\*" /deny "%Security%":(OI)(WA)
EXIT

Si vous regardez les autorisations de fichier ACL, vous verrez les attributs d'écriture avec un refus explicite maintenant qui s'appliquait à Ce dossier et ces fichiers .

enter image description here

Voici un dossier avec des documents de test avec V1, V2, et ainsi de suite, ce qui a déjà eu lieu du script de lots.

enter image description here

Si vous essayez de sauvegarder le fichier, le numéro de dialogue Enregistrera, et si vous essayez de remplacer le fichier qui existe déjà avec le même nom de fichier, vous obtiendrez un message d'erreur Access refusé car ce fichier est en lecture seule accessible pour cela. Compte.

enter image description here

Vous faites simplement une sauvegarde comme, donnez au fichier un nom différent mais dans le même dossier que vous avez enfermé tous les fichiers à lire uniquement accessibles, et c'est là que vous incrempenserez votre numéro d'un ou autre.

Tous les fichiers nouvellement enregistrés dans ce dossier auront maintenant les attributs d'écriture refusé et donc ces restrictions d'autorisation sont appliquées à elle en vigueur immédiatement une fois le fichier avec le nouveau fichier Le nom est enregistré dans ce dossier.

enter image description here


En outre de lecture et de ressources

  • variables d'environnement

  • ICACLS

    /deny Sid:perm explicitly denies the specified user access rights.
        An explicit deny ACE is added for the stated permissions and
        the same permissions in any explicit grant are removed.
    
    WA - write attributes
    
    
        inheritance rights may precede either form and are applied
        only to directories:
    (OI) - object inherit
    
2
Pimp Juice IT

Réponse originale :

Si c'est NTFS, vous pouvez utiliser la fonction de sécurité du système de fichiers.

  1. Modifiez l'onglet "Security" du dossier, je suppose que vous ne les avez pas changés avant: supprimez "Utilisateurs authentifiés", il peut vous avertir de vous désactiver la désactivation d'une héritage en premier, faites-le dans l'option "Avancée".

  2. Assurez-vous que l'UAC est allumée.

Maintenant, lorsque vous essayez de modifier/ajoutez/supprimer/supprimer n'importe quoi à l'intérieur de ce dossier, l'UAC vous avertira, vous pouvez même la définir au niveau supérieur que vous devez entrer votre mot de passe à chaque fois.

éditer : La méthode ci-dessus est un guide facile à résister à la résistance, qui s'applique uniquement à Windows Vista + et nécessitent des droits d'administrateur, ainsi que les paramètres de sécurité des fichiers/dossiers incroyables pour commencer.

Toutefois, si vous comprenez le principe de derrière, vous pouvez le faire sur presque toutes les versions Windows avec NTFS, sur tout compte d'utilisateur.

Supposez que votre compte de travail normal est un et un autre compte "Safe" est B, vous pouvez définir le propriétaire du dossier sur B et donner un privilège complet à celui-ci (n'oubliez pas de vérifier "Remplacer toutes les autorisations d'objet enfant avec des autorisations héritables de cet objet. "), Ajoutez un compte A comme en lecture seule, et maintenant, vous ne pouvez écrire qu'avec le compte B, tout en le lisant/l'utiliser dans le compte quotidien A.

Sans droits d'administrateur, vous ne pouvez pas supprimer l'administrateur de la liste d'accès, ni changer le propriétaire s'il s'agissait d'administrateur. Mais la méthode doit également fonctionner, également si vous créez le dossier, le propriétaire doit vous être défaut.

Ps. Tout ce qui précède est basé sur mon expérience, bienvenue à des conseils si vous avez une meilleure méthode.

2
Sam