42687
Goto Top

Berechtigungen eines Freigegebenen Verzeichnisses mit cacls bearbeiten schlägt fehl

Hallo,

ich bin schon am Verzeifeln.

Ich habe folgenden Code-Ausschnitt:

Die Variablen sind alle gesetzt. (%pfad% entspricht z.B. \\server\SNW)
cacls %pfad% /e /c /P %domaene%\Admin:f SNW\Useradmin:c SNW\Lehrer:c /D SNW\schueler

Wenn ich aber das Verzeichnis \\server\SNW\test wähle geht es.
Was ist das Faul?
Danke für eure Hilfe...

Content-Key: 120836

Url: https://administrator.de/contentid/120836

Printed on: April 25, 2024 at 07:04 o'clock

Member: Destry
Destry Jul 20, 2009 at 10:05:06 (UTC)
Goto Top
Hi,

etwas mehr Code wäre nett.

Für's erste:
Wenn Du auf "\\server\SNW\test" Rechte setzen willst, sollte der Wert nicht auch in Deiner Variablen stehen?
Du schreibst dort steht nur "\\server\SNW".

Gruss,
Destry
Mitglied: 42687
42687 Jul 20, 2009 at 10:08:19 (UTC)
Goto Top
cacls %pfad% /e /c /P %domaene%\Admin:f SNW\Useradmin:c SNW\Lehrer:c /D SNW\schueler
cacls %pfad%\%lehrer% /e /c /P %domaene%\Admin:f %domaene%\Useradmin:c %domaene%\Lehrer:c /D %domaene%\schueler
So sieht das ungefähr aus nur wenn ich auf %pfad% die Berechtigungen setzten will, kommt die Meldung, das der Netzwerkpfad nicht gefunden werden kann, aber auf %pfad%\%Lehrer% geht es.
Member: Destry
Destry Jul 20, 2009 at 10:21:45 (UTC)
Goto Top
Nochmal:
Wenn Du nicht den Inhalt Deiner Variablen und wie sie zusammengebaut werden mitteilst wird es schwierig Dir zu helfen.
Wir können nicht hellsehen.

Gruss,
Destry
Mitglied: 42687
42687 Jul 20, 2009 at 10:25:36 (UTC)
Goto Top
Hallo, ich hab die komplette admincfg.bat mal auf meinen server geladen.
http://snw.bplaced.net/SNW/adminconfig.bat

Danke.
Member: Destry
Destry Jul 20, 2009 at 10:39:59 (UTC)
Goto Top
Hi,

die Pfade kommen über die Nutzereingabe rein. Existiert dort nur ein Leer- oder Sonderzeichen geht alles schief, da Du die meisten Zeilen nicht in Hochkommata gestellt hast.

Wenn es daran nicht liegt dann stell vor den cacls-Befehl ein echo und lass Dir anzeigen was tatsächlich dort drinsteht.

Gruss,
Destry
Mitglied: 42687
42687 Jul 20, 2009 at 10:53:41 (UTC)
Goto Top
Zitat von @Destry:
Hi,

die Pfade kommen über die Nutzereingabe rein. Existiert dort nur
ein Leer- oder Sonderzeichen geht alles schief, da Du die meisten
Zeilen nicht in Hochkommata gestellt hast.
Was ist Hochkommata???

Wenn es daran nicht liegt dann stell vor den cacls-Befehl ein echo
und lass Dir anzeigen was tatsächlich dort drinsteht.
Ok, aber es klappt ja auch nicht wenn ich den befehl manuell eingebe.
C:\Dokumente und Einstellungen\Willi>echo J | cacls \\iserver\SNW /e /c /P SNW\A
dmin:f SNW\Useradmin:c SNW\Lehrer:c /D SNW\schueler
Der Netzwerkpfad wurde nicht gefunden.

Gruss,
Destry

bb pete

Member: bstefan82
bstefan82 Jul 20, 2009 at 11:53:43 (UTC)
Goto Top
Du kannst dir auch mal icacls anschauen, das ab 2k3 sp2 dabei. ist etwas komfortabler. Soweit ich weiß, können (cacls und icacls) aber Probleme mit umlauten etc, auftreten.
Mitglied: 42687
42687 Jul 20, 2009 at 11:56:35 (UTC)
Goto Top
Zitat von @bstefan82:
Du kannst dir auch mal icacls anschauen, das ab 2k3 sp2 dabei. ist
etwas komfortabler. Soweit ich weiß, können (cacls und
icacls) aber Probleme mit umlauten etc, auftreten.

ok, mach ich, das Problem besteht nur wenn ich auf eine Freigabe auf einem Entfernten Rechner die Rechte ändern will.

Will ich aber auf ein Verzeichnis was unterhalb der eigendlichen Freigabe liegt die Rechte ändern, geht das.
Danke erstmal...
Member: Destry
Destry Jul 20, 2009 at 13:49:12 (UTC)
Goto Top
Hallo Peter,

das ist ein Hochkomma: "
Hochkommata sind mehrere Hochkomma. Also: " " " "

Du solltest das echo in Dein Script schreiben. Vor den cacls-Befehl.

Also statt:
cacls %pfad% /e /c /P %domaene%\Admin:f SNW\Useradmin:c SNW\Lehrer:c /D SNW\schueler

bitte:
echo cacls %pfad% /e /c /P %domaene%\Admin:f SNW\Useradmin:c SNW\Lehrer:c /D SNW\schueler

Wenn Du dann Dein Skript ausprobierst wird am Ende der cacls-Befehl nicht ausgeführt sondern nur angezeigt.
Bei dieser Anzeige werden auch alle Variablen aufgelöst und Du kannst sehen auf welchen Pfad der cacls-Befehl angewandt wird.
Das sollte Dir die Möglichkeit geben zu prüfen ob der Pfad tatsächlich existiert, bzw. richtig übermittelt wird.

Gruss,
Destry
Member: Destry
Destry Jul 20, 2009 at 13:54:34 (UTC)
Goto Top
Hi Peter,

mit cacls kannst Du nur die Rechte auf Verzeichnisse und Dateien verändern, nicht auf Freigaben.

Gruss,
Destry
Mitglied: 42687
42687 Jul 20, 2009 at 13:55:52 (UTC)
Goto Top
Aber eigendlich ist das doch auch nix anderes als ein Verzeichnis, nur eben Freigegeben.

Manuell kann ichs ja auch ändern....
Member: Destry
Destry Jul 20, 2009 at 14:01:08 (UTC)
Goto Top
Ja, aber woher soll der Befehl wissen was was ist.

Beispiel:

Du gibst das Verzeichnis C:\temp mit "temp" frei.
Jetzt ist "\\servername\temp" die Freigabe und nicht das Verzeichnis.
Aber "\\servername\c$\temp" ist das Verzeichnis und nicht die Freigabe.

Zumindest cacls unterscheidet hier.

Gruss,
Destry
Mitglied: 42687
42687 Jul 20, 2009 at 14:05:37 (UTC)
Goto Top
Wie kann ich es da machen? Nur über diese C$ Freigabe??
Member: Destry
Destry Jul 20, 2009 at 14:21:24 (UTC)
Goto Top
Ja.
Ich kenne keinen anderen Weg.

Besser wäre es Du lässt die Ebene der Freigabe in Ruhe und erstellst darunter Ordner auf denen Du dann die Rechte anpasst.
Also statt ändern auf "c:\temp". Ordner erstellen wie "c:\temp\temp1" und "c:\temp\temp2", usw.

Freigabe auf "c:\temp" setzen. Den Ordner "c:\temp" einmalig mit den richtigen Rechten versehen, z.B. "Jeder\lesen" und dann die Rechte auf den Unterordnern "..\temp1" und "temp2", usw. anpassen.

Gruss,
Destry
Mitglied: 42687
42687 Jul 20, 2009 at 14:24:32 (UTC)
Goto Top
Ok, danke. Aber kannst du mir Sagen wie ich aus C:\ ein C$ machen kann? Wie ich also den ersten Buchstaben nehme?
Member: Destry
Destry Jul 20, 2009 at 14:36:55 (UTC)
Goto Top
Ich glaube Du kennst die versteckten Standardfreigaben nicht.
Jeder Rechner hat normalerweise die Standardfreigaben "C$" und "Admin$. "C$" gibt es übrigens für jede Partition, also auch "D$", "E$", usw..
Probier mal auf Deiner Maschine auf der Kommandozeile ein: dir \\DEIN_RECHNERNAME\c$" aus. Dann verstehst Du vielleicht was ich meine.

Gruss,
Destry
Mitglied: 42687
42687 Jul 20, 2009 at 14:40:13 (UTC)
Goto Top
Zitat von @Destry:
Ich glaube Du kennst die versteckten Standardfreigaben nicht.
Jeder Rechner hat normalerweise die Standardfreigaben "C$"
und "Admin$. "C$" gibt es übrigens für jede
Partition, also auch "D$", "E$", usw..
Probier mal auf Deiner Maschine auf der Kommandozeile ein: dir
\\DEIN_RECHNERNAME\c$" aus. Dann verstehst Du vielleicht was ich
meine.

Gruss,
Destry

Ich weiß schon was du meinst
nur Mein Script weiß nur das der ORdner SNW den Pfad:
D:\Daten\test\SNW hat.

Der Pfad kann aber immer unterschiedlich sein. Der kann auch mal Z:\SNW sein
also brauche ich nur den ersten buchstaben und kann ich das mit ~machen?
Member: Destry
Destry Jul 20, 2009 at 14:58:28 (UTC)
Goto Top
Versuche den UNC-Pfad zu nehmen.
Hast Du hier mehrere Möglichkeiten musst Du diese wohl abfangen.
Ganz deutlich wird mir Dein Problem nicht.

Gruss,
Destry
Mitglied: 42687
42687 Jul 20, 2009 at 15:02:30 (UTC)
Goto Top
Zitat von @Destry:
Versuche den UNC-Pfad zu nehmen.
Hast Du hier mehrere Möglichkeiten musst Du diese wohl
abfangen.
Ganz deutlich wird mir Dein Problem nicht.

Gruss,
Destry

Das Problem ist, dass alles, wie ich schon öfters betonte VARIABEL sein muss. Also für verschiedene Nutzer, und auch auf verschiedenen Basisen laufen muss.

Wie du meinen Abfrage entnehmen kannst, frage ich nach der Freigabe auf dem Server
diese lautet im Normalfall (\\server\SNW)
Daraus ermittelt der Computer den lokalen Pfad auf dem Server.
Nun müsste ich nur den lokalen Pfad z.b. R:\test\SNW in \\%server%\r$\test\SNW ändern können. Danke.
Member: Destry
Destry Jul 20, 2009 at 15:25:47 (UTC)
Goto Top
Aha.
Nimm doch von "R:\test\SNW" den Teil nach dem Doppelpunkt, also "\test\SNW" und setze ihn mit der Serverfreigabe, also "\\%server%\c$", zusammen, also: "\\%server%\c$\test\SNW".

Sowas wie, je nach Laufwerksbuchstabe nehme ich die Serverfreigabe gibt es nicht.
Hast Du eine Freigabe auf dem PC unter dem Laufwerksbuchstaben R eingerichtet so bedeutet das doch nicht das die Freigabe auf dem Server unter R liegt. Normalerweise wird sie unter C liegen, oder vielleicht noch unter D. Je nachdem wieviel Partitionen Du hast.

Du stellst da einen Zusammenhang her, den es nicht gibt. Das eine sind die Partitionen und damit Laufwerke des Servers, das andere sind Laufwerksbuchstaben welche Du für die Clients benutzt um Netzlaufwerke zu verbinden.

Ich kann Deinen Wunsch nach maximaler Variabilität verstehen. Den haben wir alle.
Aber es allem und jedem Recht zu machen bedeutet erhöhten Programmieraufwand. Eventuell sind gruppen- oder personenabhängige Loginskripts das Richtige für Dich.

Gruss,
Destry
Mitglied: 42687
42687 Jul 20, 2009 at 15:34:20 (UTC)
Goto Top
Zitat von @Destry:
Aha.
Nimm doch von "R:\test\SNW" den Teil nach dem Doppelpunkt,
also "\test\SNW" und setze ihn mit der Serverfreigabe, also
"\\%server%\c$", zusammen, also:
"\\%server%\c$\test\SNW".

wie kommst du von R: auf C:?
Sowas wie, je nach Laufwerksbuchstabe nehme ich die Serverfreigabe
gibt es nicht.
Doch muss es doch geben, denn wenn einer den Splin hat und seine Partitionen ghi nennt, sind auch die Standardfreigaben h$, g$, und i$.
Hast Du eine Freigabe auf dem PC unter dem Laufwerksbuchstaben R
eingerichtet so bedeutet das doch nicht das die Freigabe auf dem
Server unter R liegt.
Warum?
Normalerweise wird sie unter C liegen, oder
vielleicht noch unter D. Je nachdem wieviel Partitionen Du hast.
Wieso???

Du stellst da einen Zusammenhang her, den es nicht gibt. Das eine
sind die Partitionen und damit Laufwerke des Servers, das andere sind
Laufwerksbuchstaben welche Du für die Clients benutzt um
Netzlaufwerke zu verbinden.
Doch.

Mir würde es reichen, wenn du mir sagen kannst, wie ich nur den ersten Buchstaben verwenden kann. Danke.

Ich kann Deinen Wunsch nach maximaler Variabilität verstehen.
Den haben wir alle.
Ja aber es sollen auch welche damit arbeiten, die nicht so viel Ahnung haben.
Eigendlich soll es so einfach wie möglich sein.
Aber es allem und jedem Recht zu machen bedeutet erhöhten
Programmieraufwand. Eventuell sind gruppen- oder
personenabhängige Loginskripts das Richtige für Dich.

Gruss,
Destry
Viele Grüße Pete

Mitglied: 42687
42687 Jul 20, 2009 at 15:44:20 (UTC)
Goto Top
So, habs jetzt gelöst,

%lbasis% sieht so aus C:\test\SNW
kann aber auch R:\SNW
F:\Test\neu\SNW sein
Also Variabel.
Wie gefordert....
rem  Pfad über Standardfreigabe zur Basis
set "A=%lbasis:~0,1%"  
set "B=%lbasis:~2%"  
set "sbasis=\\%a%$%B%  
rem Irgendwie hab ich das Gefühl du hast selber keine Ahnung. Berichtige mich, wenn ich falsch liege.