OVH Cloud OVH Cloud

Interdire la modification d'un dossier

19 réponses
Avatar
sympatix
Bonjour !

Avant de me lancer dans un VBS de surveillance d'un dossier, je voudrais
savoir s'il existe une commande scriptable et native de windows (XP),
permettant d'interdire la modification d'un dossier.
J'entends par là:

1: Interdire l'ajout de fichiers et/ou sous-dossiers.
2: Interdire la suppression de fichiers et/ou sous-dossiers.
3: Mais permettre malgré tout l'accès à tous les fichiers, mais en lecture
seule.

En VBS, il existe bien la commande DateLastModified pour surveiller le
dossier (et l'attribut "lecture seule" pour les fichiers est paramétrable),
mais, celà ne me permettra pas par exemple d'interdire la suppression d'un
fichier. Je ne pourrai que le constater après coup, par le changement de
valeur de cette variable (DateLastModified). C'est mieux que rien, et je me
contenterai de ça si je ne trouve pas mieux, mais ça fait un peu
"bricolage", d'autant plus ( bon, ce n'est pas le pire) qu'il faut
instancier en permanence un script vbs, dédié à la surveillance du dossier.

Merci d'avance pour toutes infos, aide, et suggestions :-)

--
Cordialement
saint_path_x_arobase_t'es_laide_euh_point_fr

(Antispam: Ôter les "toto" dans l'adresse, pour me répondre)

10 réponses

1 2
Avatar
StephaneB
Bonjour !

Avant de me lancer dans un VBS de surveillance d'un dossier, je voudrais
savoir s'il existe une commande scriptable et native de windows (XP),
permettant d'interdire la modification d'un dossier.
J'entends par là:

1: Interdire l'ajout de fichiers et/ou sous-dossiers.
2: Interdire la suppression de fichiers et/ou sous-dossiers.
3: Mais permettre malgré tout l'accès à tous les fichiers, mais en lecture
seule.

En VBS, il existe bien la commande DateLastModified pour surveiller le
dossier (et l'attribut "lecture seule" pour les fichiers est paramétrable),
mais, celà ne me permettra pas par exemple d'interdire la suppression d'un
fichier. Je ne pourrai que le constater après coup, par le changement de
valeur de cette variable (DateLastModified). C'est mieux que rien, et je me
contenterai de ça si je ne trouve pas mieux, mais ça fait un peu
"bricolage", d'autant plus ( bon, ce n'est pas le pire) qu'il faut
instancier en permanence un script vbs, dédié à la surveillance du dossier.

Merci d'avance pour toutes infos, aide, et suggestions :-)

Bonjour,


je pense que cacls fera l'affaire:

cacls Chemin_du_dossier /p:"administrateurs":F "Toutle monde":r /T

Donne accès en controle total au groupe "administrateurs" et accès en
lecture seule au groupe "tout le monde", ceci au niveau du dossier et
objets qu'il contient




Avatar
sympatix
Bonjour StephaneB, dans le message
news:
tu nous disais:
Bonjour,

je pense que cacls fera l'affaire:

cacls Chemin_du_dossier /p:"administrateurs":F "Toutle monde":r /T

Donne accès en controle total au groupe "administrateurs" et accès en
lecture seule au groupe "tout le monde", ceci au niveau du dossier et
objets qu'il contient
Merci !

J'ai regardé l'aide de cacls, mais je n'ai pas tout compris !

Notament, la différence entre le commutateur P et G ?

J'ai quand même fait des tests avec une première fois, la ligne de cde
suivante:

cacls C:test /G "toto":R
puis, en remplaçant G par P:
cacls C:test /P "toto":R

Je n'ai pas remarqué de différence (ou alors, ça m'a échappé)
Sachant que "toto" est administrateur.
J'ai bien la demande de confirm, êtes-vous sûr (O/N) ? je fais O

Ensuite, j'essaye de rajouter un nouveau dossier dans C:test, et c'est
effectivement refusé, cool :-))
Par contre, je supprime un fichier sans problème. Re-parcontre, si je veux
le restaurer depuis la corbeille, c'est refusé (impossible de déplacer dc26,
accès refusé).
Et si je modifie un fichier, pas de problèmes, c'est accepté.
Visiblement, le dossier est protégé, mais uniquement pour empécher l'ajout
de nouveaux fichiers.

Peut-on avec cacls protéger également la modif et la suppression, si oui,
comment ?

Merci encore !
--
Cordialement
saint_path_x_arobase_t'es_laide_euh_point_fr

(Antispam: Ôter les "toto" dans l'adresse, pour me répondre)

Avatar
sympatix
Bonjour sympatix, dans le message
news:exX$
tu nous disais:

Peut-on avec cacls protéger également la modif et la suppression, si
oui, comment ?
Mais oui, on peut, mon p'ti sympatix, suffit de chercher un peu:

cacls C:test /P "toto":R /T

J'avais z'oublié le commutateur T. Maintenant, c'est Nickel !

Merci encore, StephaneB

--
Cordialement
saint_path_x_arobase_t'es_laide_euh_point_fr

(Antispam: Ôter les "toto" dans l'adresse, pour me répondre)

Avatar
sympatix
Et pour outrepasser la demande de conf (O/N ?), j'ai trouvé les 2 astuces
suivantes (où je n'ai réeussi qu'à faire marcher la 2):
Source:
http://support.microsoft.com/kb/135268/EN-US/

1: Soit, si le lancement se fait dans un batch, rajouter echo y| et le
symbole "pipe" (Alt Gr 6) devant la ligne:
echo y| cacls C:test /P "toto":R /T
=>Je n'ai pas réeussi à faire fonctionner cette astuce, ça rame quelques
secondes (avec beaucoup d'utilisation du CPU, puis, j'ai une erreur
"l'application n'a pas pu s'initialiser")

2: Soit (c'est mon cas) si c'est dans un vbs, passer par un fichier texte
tiers, le nommer par exemple oui.txt, et le rajouter dans la ligne de cdes
(testé, OK):
cacls C:test /P "toto":R /T < C:oui.txt

--
Cordialement
saint_path_x_arobase_t'es_laide_euh_point_fr

(Antispam: Ôter les "toto" dans l'adresse, pour me répondre)
Avatar
sympatix
Bonjour sympatix, dans le message
news:
tu nous disais:
2: Soit (c'est mon cas) si c'est dans un vbs, passer par un fichier
texte tiers, le nommer par exemple oui.txt, et le rajouter dans la
ligne de cdes (testé, OK):
cacls C:test /P "toto":R /T < C:oui.txt


J'ai parlé trop vite, ça marche pas dans mon vbs.
En fait, j'avais testé uniquement dans l'invite de commandes, et par
extrapolation, supposé que ça fonctionnerais avec un oShellRun dans un vbs.

J'ai fait les manips suivantes:

1: Création d'un fichier "oui.txt" contenant O (la lettre O), à la racine de
C

2: Lancement de la commande, dans l'invite de cde:
cacls C:test /P "toto":R /T < C:oui.txt"
=> ça roule, je n'ai plus la confirm (O/N ?), et le dossier ne peut plus
être modifé.

3: Création d'un vbs contenant ce qui suit:
-----------vbs-----------
cde = "cmd /cacls C:test /P ""toto"":F /T < C:oui.txt"
Set oShell = CreateObject("WScript.Shell")
oShell.Run cde
-----------vbs-----------
=> Normalement, et en invite de cde ça marche, le dossier devrais redevenir
modifiable.
Mais rien. Juste l'invite qui s'ouvre. J'ai bien essayé sans espaces, sans
slash, mais ça ne fonctionne pas.
Je dois mal m'y prendre.
Quelqu'un aurait-il la bonne syntaxe svp, merci :-)

--
Cordialement
saint_path_x_arobase_t'es_laide_euh_point_fr

(Antispam: Ôter les "toto" dans l'adresse, pour me répondre)

Avatar
moi

Hello,

Et pour outrepasser la demande de conf (O/N ?)


Pourquoi ne pas utiliser xcacls.exe ?
(en téléchargement chez MS)

Avatar
sympatix
Bonjour moi, dans le message
news:
tu nous disais:
Hello,
Salut !

Et pour outrepasser la demande de conf (O/N ?)
Pourquoi ne pas utiliser xcacls.exe ?

(en téléchargement chez MS)


Oui, j'ai vu cet outil, et merci de me l'indiquer, mais j'aurais aimé d'une
part n'utiliser que ce qui est dispo dans un windows de base, et d'autre
part, ça me frustre de ne pas comprendre pourquoi j'arrive à utiliser
correctement une syntaxe en invite de commandes (en l'occurence, celle-ci:
cacls C:test /P "toto":R /T < C:oui.txt), et pourquoi n'arrives-je pas à
la faire fonctionner dans un vbs ?)
--
Cordialement
saint_path_x_arobase_t'es_laide_euh_point_fr

(Antispam: Ôter les "toto" dans l'adresse, pour me répondre)


Avatar
Gilles LAURENT
"sympatix" a écrit dans le message de
news:

Bonjour,

| cde = "cmd /cacls C:test /P ""toto"":F /T < C:oui.txt"
| Set oShell = CreateObject("WScript.Shell")
| oShell.Run cde

cde = "%comspec% /c cacls C:test /P ""toto"":F /T < C:oui.txt"
Set oShell = CreateObject ("WScript.Shell")
oShell.Run cde, 0, True

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Avatar
sympatix
Bonjour Gilles LAURENT, dans le message
news:
tu nous disais:
Bonjour,
Bonjour,

cde = "%comspec% /c cacls C:test /P ""toto"":F /T < C:oui.txt"
Set oShell = CreateObject ("WScript.Shell")
oShell.Run cde, 0, True
Merci...mais...

ça n'a rien donné...pire, ça me lance la fenêtre de commandes et le script
en boucles infinies, tout les 1/10 de s. J'ai du redémarrer ma session, avec
bien du mal par Ctr Alt Supp.
Ouf !

Entre temps, j'ai refais des tests.
Quand je lance la commande ci-dessous, par l'invite de cdes, ça marche, je
n'ai pas de confirm, et les droits du dossiers sont bien modifés:
cacls C:test /P "toto":F /T < C:oui.txt

Puis, la même cde, mais par Démarrer, exécuter, je vois fugitivement une
fenêtre de cde, mais les droits du dossier ne sont pas modifés, donc, ça
coince.
Même comportement avec un oShell.Run dans un vbs.(je respecte bien sûr la
règle des doubles quotes, le problème ne vient pas de là)

Ensuite je refais 2 tests, le 1er dans démarrer, exécuter, le 2e avec un
oShell.Run, en supprimant < C:oui.txt de la ligne. Là, ça fonctionne dans
les 2 cas, mais avec la demande de confirm, bien sûr.

Je ne sais pas quoi en déduire, sinon, que les paramètres situés après T ne
sont compris que tapés directement dans l'invite de commandes.
J'éspère avoir fait avancer le schmilblick !
--
Cordialement
saint_path_x_arobase_t'es_laide_euh_point_fr

(Antispam: Ôter les "toto" dans l'adresse, pour me répondre)

Avatar
Fred
dans : news:%,
sympatix écrivait :

et d'autre part, ça me frustre de ne pas comprendre pourquoi j'arrive
à utiliser correctement une syntaxe en invite de commandes (en
l'occurence, celle-ci: cacls C:test /P "toto":R /T < C:oui.txt), et
pourquoi n'arrives-je pas à la faire fonctionner dans un vbs ?)


As-tu essayé avec l'objet WshScriptExec ?
C'est un objet retourné par la méthode Exec de l'objet WshShell et qui
te donne l'accès aux flux StdIn, StdOut et StdErr.
À partir de là, tu dois pouvoir faire un WriteLine de "O" dans le StdIn
et valider ainsi la commande ?
J'avoue que je n'ai pas eu le courage de tester avant de poster !
Nous avions eu une discussion il y a quelques temps à ce sujet.
http://groups.google.fr/group/microsoft.public.fr.scripting/browse_frm/thread/a3f962890ac2ae3e/862ad80fc3dc1fef?#862ad80fc3dc1fef



--
Fred
http://www.cerbermail.com/?3kA6ftaCvT

1 2