![]() |
|
|
google unix.com
|
|||||||
| Forums | Registreer | Forum Regels | Links | Albums | Veelgestelde vragen | Ledenlijst | Kalender | Zoeken | Today's Posts | Markeer forums als gelezen |
| Tips en Tutorials Nuttige artikelen van onze gebruikers. |
Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
|
||||
| Draad | Thread Starter | Forum | Antwoorden | Last Post |
| Om de "unzip" machtigingen & "creëren" bestandspermissies | Mike1234 | HP-UX | 3 | 03-02-2008 05:34 PM |
| Unix permissies | mobershaw | SUN Solaris | 0 | 01-24-2006 06:06 PM |
| UNIX File Permissions | jerardfjay | UNIX for Advanced & Expert Gebruikers | 3 | 03-15-2005 12:25 |
| Unix permissies | moukoko | UNIX voor Dummies Questions & Answers | 2 | 03-11-2004 08:12 |
|
|
LinkBack | Thread Tools | Zoeken in deze Thread |
Waardering:
|
Display Modes |
|
|||||
|
Unix File Permissions
Inleiding Ik heb een aantal verkeerde informatie met betrekking tot Unix bestandspermissies. Ik zal proberen te zetten. Neem een kijkje in dit voorbeeld van een output van ls: Code:
$ ls -ld /usr/bin /usr/bin/cat drwxrwxr-x 3 root bin 8704 Sep 23 2004 /usr/bin -r-xr-xr-x 1 bin bin 9388 Jul 16 1997 /usr/bin/cat $ Op de eerste regel, dat de "root", zegt dat de map is in handen van de gebruiker genaamd "root". En dat "bin" is de groep van de directory. U moet begrijpen gebruikers en groepen, en ik neem aan dat je doet. Mijn doel is om uit te leggen dat "drwxrwxr-x" en "-r-xr-xr-x" stuff. Dit veld is een combinatie van het bestandstype en de toegang toestemming. Collectief, deze informatie is soms de bestand modus. En soms is het wel de machtigingen. Een goede plaats om te starten is door middel van een snelle blik op hoe deze informatie wordt opgeslagen op de schijf. De manier waarop het is opgeslagen, treft een aantal van de besluiten die zijn gemaakt in de loop der jaren. Hoe het "File Mode" is opgeslagen. Op de schijf, informatie over een bestand wordt opgeslagen in de structuur noemen we een "inode". Elk bestand krijgt een eigen inode. Een gegeven in een inode heet de "mode" en het ziet er als volgt uit: Code:
|------file mode------|
| |
|
| |----full-----|
|
|-type| | |--basic--|
| | | | |
oo0 000 000 000 000 000
... ... ... ... ... ...
| | | | |
| | | | |---- rwx for other
| | | |
| | | |-------- rwx for group
| | |
| | |------------ rwx for user
| |
| |---------------- set uid, set gid, sticky bit
|
|---------------------- file type: regular (-)
directory (d)
character special (c)
block special (b)
fifo (p)
symbolic link (l)
socket (s)
Ik denk dat de "mode" echt betekent alleen de machtigingen en dat het bestand type werd in schuiven om ruimte te besparen. Maar de auteur van het LS-programma is de behandeling van de mode als een enkel object. Dat is de reden waarom het bestandstype dat is het eerste teken van de toestemming string in het "ls-l" output. Het bestandstype wordt gewoonlijk een van de zeven soorten die ik hierboven. Sommige versies van Unix zal nog een paar meer. De enige andere iets op te merken uit de lay-out is dat er geen ruimte is om meer toe te voegen toestemming bits. Vertegenwoordigen van de machtigingen in octaal De ls programma kan weergeven, zeg, "rwxrwxrwx" voor de machtigingen voor een bestand. Het is ook zeer vaak gebruik te maken van een octaal nummer om de machtigingen voor een bestand. En zoals u hierboven ziet, dit is hoe ze zijn opgeslagen. Je mag iemand horen zeggen dat sommige heeft 777 machtigingen. Dit is hetzelfde als "rwxrwxrwx" en veel gemakkelijker om uit te spreken. Dus je moet weten hoe om te zetten. Drie binaire cijfers of bits komt overeen met een octaal cijfer: Code:
421 rwx Dus de "lees wat waard is 4, het schrijven van bits is de moeite waard 2 en de bit is de moeite waard 1. Je voegt deze tot je een octaal cijfer. Dus"-rwxrwxrwx "is 777. En"-rwxr-x -- - "is 750. Als u nog niet kunt zien hoe je van" rx "tot en met 5, misschien deze tabel zullen helpen: Code:
--- = 0 --x = 1 -w- = 2 -wx = 3 r-- = 4 r-x = 5 rw- = 6 rwx = 7 Opmerking moeten we 4 octaal cijfers uitdrukken al de toestemming bits. De eerste drie bits zijn bijzondere en vaak nul. En je bijna altijd meer te weten over de volgnullen 9 bits eerste. Sommige mensen stoppen daar en nooit leren de eerste drie bits. Maar er zijn 12 bits toestemming, niet alleen 9. Dat gezegd hebbende, laten we nu kijken naar de volgnullen 9 bits. De Basic Toestemming Bits We hebben 3 triples: een driedubbele voor de gebruiker, een triple voor de groep, en een triple voor andere. Soms is de "gebruiker" is de eigenaar. En soms ook "andere" heet "wereld". Ik zal gebruik maken van "gebruiker" en "andere", omdat het chmod commando gebruikt de letters ug en o te verwijzen naar deze driepersoonskamers. Welke Set van Bits op u van toepassing is? Bij Unix beslist wat u kunt doen, maar geen gebruik maakt van alle 9 bits. Unix trilhamers de eerste triple dat op u van toepassing is. Beschouw dit: Code:
----rwxrwx 1 joe users 29 Mar 22 19:39 somefile Hoewel Joe bezit dit bestand, kan hij niet openen. (Aangezien Joe is de eigenaar van het bestand, kan hij zich toegang geven. Meer daarover later.) Ook root is speciaal. root is verleend rwx voor alle mappen en RW tot alle bestanden. Op een bestand, indien een van de 3 x bits set, wortel heeft uitvoeren toestemming. Deze speciale toestemming wordt vaak uitgeschakeld op het netwerk gemonteerd bestandssystemen. Wat doen rw en x echt betekenen voor een bestand? Voor een bestand, "lezen" en "schrijven" zijn redelijk intuïtief. De x voor "uitvoeren" betekent dat de kernel proberen te lopen van het bestand. Om dat te werken, wordt het bestand moet een uitvoerbaar (output van een compiler) of een shell script met een "#!" eerste lijn. Voor een directory dingen zijn een beetje complexer. Met een gids, "schrijven" toestemming betekent dat u kunt nieuwe bestanden in de map of verwijderen van oude bestanden. Soms verbaast de mensen die u kunt verwijderen van een bestand dat u niet kunt lezen. De Unix-rm commando test voor dat en geeft een waarschuwing, maar je kunt onderdrukken dat de waarschuwing met-f. En waarschuwing of nee, als u wilt verwijderen een onleesbaar bestand uit een map schrijfbaar, u mei Rmdir en zal niet lastig te controleren zijn. Wat doen rw en x echt betekenen voor een directory? Een directory is een bestand ook, en "lezen" toestemming betekent dat u kunt lezen. Maar je kan niet heel erg veel x zonder toestemming ook. Met mappen kunt meestal hebben beide lezen en uitvoeren toestemming of niet. Op een map, dat x officieel genaamd "zoek toestemming". U moet x gebruik te maken van een map in een padnaam. Dus als je 'cat / etc / passwd ", moet je x op / en / enz. Je moet ook x op cd in een map. Stel, u hebt gelezen, maar niet zoeken (x) toestemming op een map. Wat kunt u doen? Niet veel. U kunt gebruik maken van "ls" om de bestandsnamen. Zelfs "ls-l" zal niet werken. Lees toegang zoeken zonder toestemming is niet erg nuttig. Toch is dat beter dan met alleen toestemming schrijven op een map ... dat is volkomen nutteloos. Ik heb niet gezien alle andere documentatie die stelt dit expliciet, dus laat ik herhaal het: schrijven, maar geen toestemming te voeren op een map subsidies niets all.Suppose u zoeken (x) toestemming, maar geen toestemming te lezen op een map. Nu kunt u bestanden openen in de map als u weet het bestand de naam. U kunt de cd naar de directory. En dat is het. Je kunt niet eens een nieuw bestand. Het toevoegen van schrijven toestemming kunt u bestanden maken. En u kunt dan bestanden verwijderen als je weet hun naam. Symbolic Links Zijn bijzondere De toestemming instellingen op een symbolische link zijn een beetje speciaal zijn. Ze zijn volledig genegeerd. Vele versies van Unix hebben geen enkele wijze te veranderen. De setuid en de setgid Bits Neem een kijkje op dit: Code:
$ ls -l /etc/passwd /etc/shadow /usr/bin/passwd -r--r--r-- 1 root sys 14006 Jan 14 11:17 /etc/passwd -r-------- 1 root sys 8281 Jan 14 11:18 /etc/shadow -r-sr-sr-x 3 root sys 96244 Sep 5 2001 /usr/bin/passwd Het passwd bestand schrijfbaar alleen door root (Remember, root is bijzonder. Het kan een bestand dat heeft geen schrijfrechten instellen). De schaduw-bestand, dat is waar wachtwoorden zijn opgeslagen, zelfs niet kan gelezen worden door gewone gebruikers. Maar joe z'n wachtwoord wil veranderen. Hij kan dat doen door het uitvoeren van / usr / bin / passwd. Mededeling die rs machtigingen. Het passwd programma heeft de SUID en SGID bits ingesteld. Dit schakelt de X in s's. In octaal, zou 6555. Het passwd programma is eigendom van root. Toen Joe loopt, het wordt niet uitgevoerd als "Joe". In plaats daarvan draait als hij eigenaar is root. Dus het passwd programma kunt Joe's wachtwoord voor hem. De SGID bits werkt op dezelfde manier, behalve dat de oorzaken passwd programma te draaien met de groep sys plaats van Joe's groep. De SUID en SGID niet krijgen van hun eigen positie in de ls. Wanneer de SUID-bit is ingesteld, ls weergegeven als in plaats van ax voor de eigenaar uitvoeren toestemming. Wat als het SUID-bit is ingesteld, maar de eigenaar bit is uitgeschakeld? ls verschijnt een hoofdletter S in het geval is. De SGID bits wordt weergegeven op een vergelijkbare manier, behalve dat het een wisselwerking met de groep uitvoeren toestemming. (De set uid concept werd uitgevonden door Dennis Ritchie als hij was de ontwikkeling van Unix.) Uit te breiden op dingen een beetje, terwijl Joe draait de suid-to-root passwd programma, "Joe" is de UID en "root" is de effectieve UID. Het passwd programma kan krijgen beide id's als zij wil. Dit is hoe het passwd programma weet om Joe te veranderen alleen Joe's wachtwoord. De Sticky Bit De Posix norm zegt dat als de sticky bit is ingesteld op een directory, louter schrijven toestemming op de directory is niet langer genoeg om de bestanden te worden verwijderd. U moet bovendien eigenaar van het bestand of de eigenaar van de map. root verder te kunnen verwijderen van een map, ongeacht de machtigingen. Vroeger was dit iets betekend een ander doel. Op sommige OS is het nog steeds doet. Ik zal uitwerken in een bijlage hieronder. De kleverige beetje invloed op de "andere" execute bits in de ls tonen. Behalve dat het niet gebruikt en T in plaats van s en S. Bijvoorbeeld: Code:
drwxrwxrwt 5 root root 1024 Feb 11 20:43 /tmp In dat / tmp directory aangehaald, iedereen kan het creëren van nieuwe bestanden. Maar omwille van de sticky bit, een gebruiker kan niet verwijderen van een andere gebruiker de bestanden. Beperking bestandspermissies met umask Als bestanden worden gemaakt van het programma dat schept kunt de eerste toestemming instelling. U kunt dat met umask. De umask is een set van een verbod bits. Er is een umask commando dat u kunt bekijken en wijzigen van de umask. Bijvoorbeeld, "umask 022" verbiedt groep schrijven en ander schrijven op nieuw aangemaakte bestanden. Of "umask 027" verbiedt groep schrijven en verbiedt andere lezen, schrijven of uitvoeren. Je kan een "umask 0" van het programma te laten doen wat hij wil als hij creëert's. Maar je kunt niet verder. U kunt niet dwingen een programma om een beetje op. De umask instelling is van invloed op bestanden, directories, named pipes (alias FIFOs) en speciale bestanden. Het kan al dan niet van invloed op symbolische links. Het beïnvloedt ook Somes vormen van Inter Process Communication, maar dat valt buiten het bestek van dit artikel. En geloof het of niet, de naam stopcontacten zijn vrijgesteld van umask. Deze vrijstelling is verplicht door Posix. Veranderende bestandspermissies met chmod Alleen de eigenaar van een bestand of root kan de machtigingen voor een bestand. Deze operatie is niet invloed op alle door de umask instelling. Als u machtigingen voor een symbolische link, de link wordt gevolgd en je verandert het doelbestand. Het is mogelijk dat alleen de root zal de bevoegdheid hebben om een bestand van de sticky bit. Als een voorbeeld, "chmod 700 eenbestand" wil laten de eigenaar lezen, schrijven en uitvoeren van het bestand, terwijl disallowing alle toegang tot alle andere gebruikers. Met behulp van Symbolische modus met chmod en umask Posix een nieuwe syntax voor het chmod commando. Het idee was dat de nieuwe syntaxis komt in de plaats van het gebruik van een octal constant met het chmod commando. De octale constante is nog steeds toegestaan en ik denk dat het hier om te blijven. Maar de nieuwe symbolische syntaxis kunt u het wijzigen van een paar bits zonder te weten wat de anderen zijn. Bijvoorbeeld, laten we zeggen dat ik wil maken van een bestand ontoegankelijk voor anderen, maar ik niet wat te veranderen acess voor de gebruiker of de groep. Ik zou moeten doen: ls-l bestand Kijk naar bestand en figuur uit de huidige instellingen. chmod 750 bestand Ik had om te bepalen dat de eerste twee cijfers zijn stromingen 7 en 5 voordat ik kon doen mijn chmod commando. Met de nieuwe syntaxis, ik kan gewoon doen: chmod o \u003d bestand het uitschakelen van de laatste 3 bits. Een ander voorbeeld: "chmod u + x file" zal de gebruiker voor de uitvoering van het bestand. Aan de andere kant, zijn deze twee commando's gelijkwaardig zijn: chmod 750 bestand chmod u \u003d rwx, g \u003d rx, o \u003d bestand en ik liever de eerste syntaxis. De symbolische functie kan een komma gescheiden lijst van specificaties. Elke specificatie heeft drie onderdelen: <who> <operation> <bitlist> Code:
The who part can be: u (user) g (group) o (other) a (all) (whatever is allowed by umask (subset of all)) The operator can be = or - or + = (set bits to bitlist) - (subtract bitlist from current bit + (add bitllist to current bits) The bitlist can be one of the following letters: r (read permission) w (write permission) x (execute permision) X (conditional execute permision) u (current permissions for user) g (current permissions for group) o (current permissions for others) s (set uid or set gid) t (sticky bit) De X is hetzelfde als x, tenzij het bestand is een nondirectory en heeft momenteel geen x bits ingesteld. De s (set of uid gid) kan alleen worden opgegeven voor de gebruiker of groep permissies. De t kan alleen worden opgegeven voor de gebruiker machtigingen. Een paar voorbeelden met hulp. Boven zagen we / usr / bin / passwd was 6555 (-r-sr-sr-x in ls). Hier zijn enkele manieren die kunnen worden bereikt: chmod 6555 / usr / bin / passwd chmod u \u003d rxs, g \u003d rxs, o \u003d rx / usr / bin / passwd chmod ug \u003d rxs, o \u003d rx / usr / bin / passwd chmod a \u003d rx, ug + s / usr / bin / passwd En er zijn veel andere manieren om dit te doen. Voor het grootste deel chmod is immuun voor umask in dat wat zij wil bit in te stellen krijgt niet gewijzigd door de umask. Maar onder een voorwaarde, het chmod commando zal de huidige instelling van umask om te bepalen welke bits zou willen stellen. Dit gebeurt bij het verlaten van het "wie" veld leeg. Zoals: chmod \u003d w eenbestand Het verschil tussen een "\u003d w" en "\u003d w" is subtiel. Hier is een voorbeeld dat kan helpen. Veel programma's proberen te maken bestand met 666 (-rw-rw-rw-) machtigingen. Maar dit wordt gewijzigd door de umask. Stel het je wilt een bestand op de 666, maar zoals gewijzigd door de huidige umask. We kunnen uitschakelen alle bits, sla dan op lezen en schrijven van bits die zijn toegestaan door de huidige umask: chmod a \u003d, \u003d RW eenbestand En spreken van umask, kunt u gebruik symbolische argumenten met het umask commando als goed. Echter, PosixIn hun wijsheid besloten dat in dit geval aan logica zou worden teruggedraaid. Dus als het gebruik umask met een octaal argument kun je de bits moeten worden verboden. Maar als je gebruik umask met een symbolische argument kun je de bits toe te staan. Dit zijn dus gelijk aan: umask 022 umask u \u003d rwx, go \u003d rx Samenvatting Op dit punt heb je genoeg informatie te begrijpen die meestal toestemming 12 bits. Er zijn een aantal zeer bijzondere gevallen, dat heb ik genegeerd of glossed voorbij. In afzonderlijke posten hieronder zal ik deze. De informatie in deze eerste post is vrijwel universeel. Een Posix conforme OS moet dit spul. Dat omvat bijna alle versies van Unix die in de afgelopen 10 jaar. De volgende artikelen bespreken functies die mogelijk niet universeel. |
| Bladwijzers |
| Labels |
| chmod, bestandspermissies, Linux commando's, sticky bit, suid, umask |
| Thread Tools | Zoeken in deze Thread |
| Display Modes | Beoordeel deze draad |
|
|