Vraag Wat is de letter "t" in de uitvoer van "ls -ld / tmp"?


Bij het uitvoeren van de opdrachtls -ld /tmp, de uitvoer zou zijn:

drwxrwxrwt 30 root root 20480 Mar 11 14:17 /tmp

Dus ik heb twee hoofdvragen:

  • Wat is de brief t na de permissies?
  • Voor zover ik weet /tmp wordt gebruikt om tijdelijke bestanden te maken met betrekking tot verschillende gebruikers in het systeem, dus hoe komt het dat het toestemming heeft rwxrwxrwx (777)?

Dit lijkt verkeerd voor mij. Ik heb je hulp nodig om te begrijpen wat hier gebeurt.


80
2018-03-11 12:33


oorsprong


Lees de Wikipedia-artikel, het is beter dan de antwoorden hier. - Gilles
Zie ook: unix.stackexchange.com/q/79395/4784 - Martin Thoma
OK Waarom wordt dan het plakkerige bit verwijderd wanneer ik een update of een nieuw rpm-pakket van / tmp installeer?


antwoorden:


Dus wat is het plakkerige bit?

Een sticky bit is een permission-bit die is ingesteld in een directory die alleen de eigenaar van het bestand in die map, de eigenaar van de map of de rootgebruiker toestaat om het bestand te verwijderen of de naam ervan te wijzigen. Geen andere gebruiker heeft de benodigde rechten om het bestand te verwijderen dat door een andere gebruiker is gemaakt.

Dit is een beveiligingsmaatregel om te voorkomen dat kritieke mappen en hun inhoud (submappen en bestanden) worden verwijderd, hoewel andere gebruikers volledige rechten hebben.

Waarom doet /tmp heb de t plakkerig bit?

De /tmp map kan door verschillende Linux-gebruikers worden gebruikt om tijdelijke bestanden te maken. Wat nu als een gebruiker een bestand verwijdert of hernoemt dat door een andere gebruiker in deze map is aangemaakt?

Om dit soort problemen te voorkomen, wordt het concept van het sticky-bit gebruikt. Dus voor dat een 777 wordt gegeven maar het behoud van het plakkerige bit is geen slecht idee.

Hoe kan ik het sticky-bit voor een directory instellen?

Ik plaats een plakkerig bit in een map met de naam test Op mijn computer.

Symbolische manier (t staat voor het plakkerige bit):

chmod o+t ~/Desktop/test

of

chmod +t ~/Desktop/test

Numerieke / octale weg (1, plakkerig bit als waarde 1 in de eerste positie)

chmod 1757 ~/Desktop/test

Laten we nu de resultaten testen:

ls -li ~/Desktop/test

1551793 drwxrwxrwt 45 hadi hadi 20485 Mar 11 14:35 ~/Desktop/test

Verwijderen / verwijderen van een plakkerig bit

chmod o-t ~/Desktop/test

Laten we nu de resultaten testen:

ls -li ~/Desktop/test

1551793 drwxrwxrwx 45 hadi hadi 20485 Mar 11 14:35 ~/Desktop/test

Bron: "Wat is een plakkerig bit en hoe het in Linux te zetten?" Op The Linux Juggernaut


101
2018-03-11 12:37



Dit gebruik van het plakbit is alleen van toepassing op mappen en niet op bestanden. In het verre verleden was de betekenis ervan voor uitvoerbare bestanden het opslaan van het tekstsegment van het programma dat moest worden verwisseld in plaats van het te verwijderen, zodat het opnieuw uitvoeren sneller zou zijn, maar tegenwoordig heeft het geen betekenis voor normale bestanden. - psusi
wat was het tekstsegment van een programma en hoe zou het houden ervan het sneller maken? - BluePython
@BluePython Het 'tekst'-segment van een uitvoerbaar bestand is het onderdeel dat alle machinecode omvat: het daadwerkelijke uitvoerbare bit. Veel voorkomende andere segmenten zijn 'gegevens' voor statische gegevens en 'bss' voor gegevens die allemaal nul zijn (en dus niet hoeven te worden opgeslagen in het uitvoerbare bestand). - Miles Rout


Een Sticky-bit is een toestemmingsbit die is ingesteld op een bestand of een map waarin alleen de eigenaar van het bestand / de map of de rootgebruiker het bestand kan verwijderen of hernoemen. Geen andere gebruiker krijgt rechten om het bestand te verwijderen dat door een andere gebruiker is gemaakt.

Soms gebeurt het dat je een Linux-map nodig hebt die door alle gebruikers van het Linux-systeem kan worden gebruikt voor het maken van bestanden. Gebruikers kunnen bestanden maken, verwijderen of hernoemen op basis van hun gemak in deze map.

Wat nu als een gebruiker per ongeluk of opzettelijk een bestand verwijdert of hernoemt dat door een andere gebruiker in deze map is aangemaakt?

Om dit soort problemen te voorkomen, wordt het concept van het sticky-bit gebruikt. Sinds / tmp wordt voor dit doel gebruikt. Dus om het bovenstaande scenario te vermijden, / tmp gebruik plakkerig bit.

Bijvoorbeeld:

mkdir demo
chmod 777 demo

Ik heb ook twee bestanden gemaakt met verschillende gebruikers in deze map met toestemming 777.

ls -ld demo
drwxrwxrwx 2 guru guru 4096 Mar 11 18:17 demo

ls -l demo
-rwxrwxrwx 1 abhi abhi    0 Mar 11 17:11 file1
-rwxrwxrwx 1 anshu anshu   0 Mar 11 18:15 file2

Zet nu het plakkerige bit hier op aan

 chmod +t demo/
 ls -ld demo
 drwxrwxrwt 2 guru guru 4096 Mar 11 18:17 demo

Wat gebeurt er als een gebruiker (abhi) de tweede gebruiker (anshu) wil hernoemen?

mv /home/guru/demo/file2  /home/guru/demo/file3
mv: cannot move '/home/guru/demo/file2' to  '/home/guru/demo/file3': Operation not   permitted  

De oorsprong van het plakkerige bit

Onder Linux heeft het sticky-bit alleen het hierboven beschreven gebruik in mappen. Historisch gezien werd het gebruikt voor iets compleet anders op normale bestanden, en hier komt de naam vandaan.

Wanneer een programma wordt uitgevoerd, duurt het enige tijd voordat het programma in het geheugen is geladen voordat de gebruiker het daadwerkelijk kan gebruiken. Als een programma, bijvoorbeeld een editor, vaak door gebruikers wordt gebruikt, was de opstarttijdvertraging toen een overhead.

Om deze tijdvertraging te verbeteren, werd het kleverige bit geïntroduceerd. Het besturingssysteem controleerde of het klevende bit in een uitvoerbaar bestand AAN was, waarna het tekstsegment van het uitvoerbare bestand in de swapruimte werd bewaard. Hierdoor kon het uitvoerbare bestand gemakkelijk in het RAM worden geladen toen het programma opnieuw werd uitgevoerd, waardoor de tijdvertraging werd geminimaliseerd.

Moderne systemen zoals Linux beheren hun cache van uitvoerbare bestanden en andere bestanden automatisch en hebben daarvoor niet het plakkerige bit nodig.

Bron: "Linux Sticky Bit Concept uitgelegd met voorbeelden" bij The Geek Stuff


22
2018-03-11 13:06





Een stickybit is een methode om dit probleem te omzeilen, zodat gedeelde mappen niet per ongeluk kunnen worden verwijderd. Wanneer een map een stickybit heeft, kan alleen de eigenaar of de root het verwijderen, zelfs als elke gebruiker de volledige andere machtigingen kan nemen.

/tmp is de meest gedeelde map tussen processen en gebruikers en daarvoor bevat het de stickybit om ervoor te zorgen dat geen enkele gebruiker de directory kan verwijderen, zelfs als de toestemming is 777 , en het moet zo zijn om de mogelijkheid aan de gebruikers en processen te geven om de directory te gebruiken zonder conflicten in toestemmingen.


2
2018-03-18 11:14