Veröffentlicht am :
Verwaltung CREATION_INTERNE

Chmod (Berechtigungsverwaltung)

Dieser Code ist auch verfügbar auf: English Español Français
Attention : Dieser Code erfordert Administratorrechte.
Dieses SAS©-Makro namens `chmod` ermöglicht das Ändern von Datei- und Verzeichnisberechtigungen auf einem UNIX-System. Es ist dafür konzipiert, lokal auf dem UNIX-System oder über eine Remote-Einreichung (`rsubmit`) ausgeführt zu werden. Das Makro stellt sicher, dass die Gruppe vollständigen Zugriff (Lesen, Schreiben, Ausführen) auf die Dateien und Verzeichnisse einer angegebenen SAS©-Bibliothek sowie auf deren übergeordnetes Verzeichnis hat.
Änderungsverlauf:
  • 1. März 2004 (pm): Unterstützung für SAS©-Views und Kataloge hinzugefügt.
  • 2. März 2004 (pm): Unterstützung für komprimierte Dateien (Z) hinzugefügt.
  • 2. März 2004 (pm): Geändert, um alle Dateien und Verzeichnisse zu verarbeiten und eine Ebene nach oben zu gehen, um sicherzustellen, dass das enthaltende Verzeichnis berücksichtigt wird.
Eingabeparameter:
  • `path`: Libref der Bibliothek, für die die Berechtigungen geändert werden sollen (Standard 'inprd').
  • `local`: Wenn '1', lokal auf UNIX ausführen; andernfalls erfolgt die Einreichung remote vom Client an den Server.
Datenanalyse

Type : CREATION_INTERNE


Das Skript nimmt keine externen Daten zur Verarbeitung auf. Es verwendet einen 'null' DATA STEP für interne Operationen wie die Auflösung eines SAS-Libref-Pfades (`pathname`) und die Ausführung von Systembefehlen (`call system`, `x`).

1 Codeblock
MACRO DEFINITION
Erklärung :
Dieser Block definiert das Makro `chmod` mit zwei Parametern: `path` (Libref, Standard 'inprd') und `local` (Indikator für die lokale Ausführung). Der Code enthält einen bedingten Block (`%if`), der, falls `local` nicht angegeben ist, `%syslput` verwendet, um den Wert von `path` zu übertragen und den folgenden Code über `rsubmit` an einen entfernten SAS-Server sendet.
Kopiert!
1%macro chmod(path=inprd,local=) ;
2%put NOTE-USED: {};
3%IF &local= %THEN
4 %DO ;
5 %syslput path=&path;
6 rsubmit ;
7 %END ;
2 Codeblock
DATA STEP
Erklärung :
Dieser Block führt einen DATA STEP `_null_` aus, der keinen Datensatz erstellt. Er wird verwendet, um:
1. Den physischen Pfad des SAS-Librefs (`&path`) mit der Funktion `pathname()` aufzulösen.
2. Diesen Pfad im Log anzuzeigen (`put path=`).
3. Den Systembefehl `cd` auszuführen, um das aktuelle Verzeichnis in den aufgelösten Pfad zu ändern.
Anschließend werden zwei `x`-Befehle verwendet, um den UNIX-Befehl `chmod g=rxw *` auszuführen, zuerst im Verzeichnis des Librefs, um der Gruppe Lese-, Schreib- und Ausführungsberechtigungen zu geben, und dann im übergeordneten Verzeichnis (`cd ..`), um dieselben Berechtigungen auf das enthaltende Verzeichnis anzuwenden.
Kopiert!
1 * Fix authorities so group has full access to datasets & indexes created ;
2 * use a datastep to force pathname to resolve on UNIX, rather than windows ;
3 DATA _null_ ;
4 LENGTH path $ 256 ;
5 path=pathname("&path") ;
6 put path= ;
7 call system('cd '||trim(path)) ;
8 RUN ;
9 x "chmod g=rxw *" ;
10 * go up a level to fix the directory ;
11 x "cd .." ;
12 x "chmod g=rxw *" ;
3 Codeblock
MACRO END
Erklärung :
Dieser Block markiert das Ende des Makros. Wenn der Code zu Beginn des Makros über `rsubmit` übermittelt wurde (Bedingung `&local=` wahr), wird `endrsubmit` ausgeführt, um die Remote-Übermittlungssitzung zu beenden.
Kopiert!
1%IF &local= %THEN
2 endrsubmit ; ;
3%mend chmod ;
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.
Urheberrechtsinformationen : Program Macro Name : chmod (version#007) Date : 19feb2004 Written By : phil mason