Μια πολύ χρήσιμη εντολή στα windows server 2003 είναι η takeown.exe
Όταν τυχαίνει να απωλέσουμε την πρόσβαση σε φακέλους και αρχεία στα οποία το ownership το έχει κάποιος χρήστης, και θέλουμε να την ανακτήσουμε είτε για να μεταφέρουμε αρχεία, είτε για να κάνουμε migration κάποια user profiles ή user shares και η αντιγραφή “κολλάει” διότι δεν έχουμε ούτε ownership, ούτε permissions, o sysadmin είναι αναγκασμένος να κάνει reset το ownership και τα permissions των αρχείων και των directories. Είναι όμως χρονοβόρο και επώδυνο να κάνεις reset πολλούς φακέλους και paths με τεράστιο όγκο αρχείων, και να περιμένεις να τελειώσει για να κάνεις το επόμενο, και το επόμενο κλπ.
Σε αυτή την περίπτωση υπάρχει η δυνατότητα να εκτελέσουμε την εργασία από command console με την εντολή takeown.exe και να τελειώνουμε μια ώρα νωρίτερα. Αν πρόκειται για πολλά paths μπορούμε να ενσωματώσουμε όλες τις takeown.exe εντολές σε ένα batch file και να γίνει όλη η δουλειά με μια κίνηση.
Η σύνταξη της εντολής έχει ως εξής:
takeown [/s Computer [/u [Domain\User [/p [Password]]]] /f FileName [/a] [/r] [/d {Y | N}]
Παραδείγματα:
1. Έστω ότι είμαι “τοπικά” συνδεδεμένος στο σύστημα και θέλω να κάνω reset το ownership σε έναν φάκελο που ονομάζεται D:\users\profiles
Η εντολή θα είναι:
takeown /f D:\users\profiles /a /r
με το /f δίνω το path του καταλόγου που θέλω να αλλάξω το ownership, με το /a δίνω το ownership στον administrator και με το /r εκτελώ την όλη διαδικασία recursively (επαναλαμαβανόμενα με τον ίδιο τρόπο). Η εντολή φυσικά και θα συμπεριλάβει όλους τους υποφακέλους και τα ανήκοντα σε αυτούς αρχεία.
2. Έστω ότι είμαι συνδεδεμένος στο σύστημά μου, και θέλω να αλλάξω έναν κατάλογο που βρίσκεται σε κάποιον server:
takeown /s fileserver1 /u YOURDOMAIN\Administrator /p adminpassword /f share1\folder1 /a /r
Εδώ λόγω του ότι εκτελώ το command remotely πρέπει να δηλώσω το σύστημα που απευθύνομαι και τα credentials με τα οποία θα “τρέξει” η εντολή: Με το /s δηλώνω το computer name ή την ip address του server, με το /u δηλώνω το όνομα του domain και το username του administrator και με το /p τον κωδικό πρόσβασης του administrator. Τα υπόλοιπα είναι τα ίδια με το προηγούμενο παράδειγμα.
Προσοχή: Όπως σε όλες τις εντολές που εμπλέκουν paths με ονόματα καταλόγων, αν σε κάποιο από αυτά υπάρχει ο κενός χαρακτήρας – space θα πρέπει να συμπεριλάβουμε όλο το path σε διπλά quotes. Δηλαδή το D:\User Profiles\Data θα γραφεί: “D:\User Profiles\Data”
Επίσης στο /f μπορούμε να χρησιμοποιήσουμε και sharename\filename και το * ως wildcard (χαρακτήρας μπαλαντέρ)
Πηγή: Takeown Command on Technet
“Η αρχή είναι το ήμισυ του παντός”, και στη συγκεκριμένη περίπτωση είναι αλήθεια. Η μισή δουλειά έγινε και πλεόν έχουμε ownership. Ας ασχοληθούμε λοιπόν και με το “άλλο ήμισυ”…
Θα πρέπει λοιπόν τώρα, να “ρυθμίσουμε” και τα permissions.
Αυτό θα γίνει με την εντολή xcacls (η οποία κατά την “θητεία” των windows 2000 αντικατέστησε την cacls) πάλι από command console ή χρησιμοποιώντας scripting:
xcacls /t D:\users\profiles /e Administrator:F
με το /t η εντολή θα εκτελεστεί στο users\profiles και όλους τους υποφακέλους και αρχεία, με το /e θα προσθέσει ACEs (access control entries) για τον Administrator, και το :F σημαίνει Full Control.
Αν αντί για /e δηλώσουμε /g τότε θα γίνει αντικατάσταση των permissions. Δηλαδή θα διαγραφούν όσα permissions υπάρχουν, και θα προστεθούν μόνο αυτά που δηλώνουμε για τον admin.
Αν υπάρχει σκέψη ότι η διαδικασία μπορεί να “σκαλώσει” σε κανένα Access Denied, τότε δεν έχουμε παρά να προσθέσουμε στο τέλος της εντολής το /c που σημαίνει να συνεχίσει (continue) σε Access Denied μυνήματα.
Αν πάλι θέλουμε να ανακαλέσουμε (revoke) τα δικαιώματα πρόσβασης κάποιου χρήστη, τότε χρησιμοποιούμε το /r user, όπου user το όνομα του χρήστη που θέλουμε να διαγραφεί.
H Xcacls είναι μια εντολή με “πλούσιο” ρεπερτόριο από switches τα οποία μπορείτε να βρείτε στο αντίστοιχο άρθρο του Microsoft Support KB 318754
Ωστόσο, προσωπικά θα σας πρότεινα να διαβάσετε και το KB 825751 το οποίο τιτλοφορείται “How to use xcacls.vbs to modify NTFS permissions”, και να “κατεβάσετε” το script για ακόμη πιό “σωστή δουλειά”…
Υ.Γ. Μια τελευταία “παρατηρησούλα”: Αν τύχει να εργαστείτε με τις παραπάνω εντολές (ή συγγενικές τους) από Windows Vista/Seven(7)/2008 Server, μη ξεχνάτε ότι εκεί θα χρειαστείτε elevated command prompt (λέγε με δεξί-κλικ run as administrator)…