Verberg uw processen voor andere gebruikers in Linux
Alle moderne multi-tasking besturingssystemen, inclusief Linux, voeren een reeks processen uit voor elk van de taken die worden uitgevoerd. Een kladbloktoepassing is een proces, een terminalvenster is een proces, de SSH-server is een proces, elke SSH-verbinding is een proces, enzovoort. Linux plant de verschillende systeembronnen (CPU-tijd, geheugen, I / O) zodat elk proces de kans krijgt om te worden uitgevoerd.
Als u de lijst met lopende processen wilt zien, kunt u de opdracht ps
gebruiken. Probeer dit in een terminal:
ps aux
De aux
parameters vertellen ps
om alle systeemprocessen weer te geven met extra informatie over wie de eigenaar is van de processen en welke oproepparameters werden gebruikt.
Zoals je ziet, toont de lijst processen die eigendom zijn van verschillende gebruikers, waaronder "pi" (de standaard Raspbian-gebruiker op een Raspberry Pi), "root" en "www-data". Hier is een enigszins gewijzigde schermafbeelding die de processen toont, samen met meer details over de commando's en hun parameters.
Als u in de lijst kijkt, ziet u de opdracht nano MYBANKACCOUNTNUMBER.TXT
die eigendom is van de gebruiker "john." Stel u voor dat de bestandsnaam iets onthuller was dan het voorbeeld; dergelijke gegevens worden aan alle gebruikers van het systeem getoond en kunnen voor kwaadwillende doeleinden worden gebruikt.
Sinds Linux kernel 3.2 is er een manier om te voorkomen dat gebruikers toegang krijgen tot informatie over processen die ze niet bezitten. De ps
opdracht haalt de procesinformatie uit het / proc-bestandssysteem (waarbij "proc" tekortschiet voor het proces). Er is een nieuwe parameter genaamd "hidepid" die wordt gebruikt wanneer het / proc bestandssysteem is aangekoppeld. Het kan processen en besturingselementen verbergen die toegang hebben tot de informatie onder / proc.
- hidepid = 0 - Het standaardgedrag waarbij elke gebruiker de bestanden onder / proc / PID / kan lezen
- hidepid = 1 - Dit betekent dat gebruikers geen / proc / PID / subdirectory mogen openen behalve die van henzelf. Ook bestanden zoals cmdline, io, sched *, status, wchan zijn niet toegankelijk voor andere gebruikers.
- hidepid = 2 - Alles van hidepid = 1, plus alle / proc / PID / submappen worden verborgen voor andere gebruikers.
Het / proc-bestandssysteem kan meteen opnieuw worden gekoppeld met de optie remount van de opdracht mount
. Om hidepid te testen, kun je het / proc bestandssysteem op deze manier opnieuw koppelen:
sudo mount -o remount, rw, hidepid = 2 / proc
Nu kunt u de ps
opdracht opnieuw proberen:
ps aux
Nu toont de uitvoer alleen processen die eigendom zijn van de gebruiker "pi".
Om deze wijziging permanent te maken, moet je het bestand "/ etc / fstab" van je Pi bewerken. Het "fstab" -bestand bepaalt welke bestandssystemen bij het opstarten zijn gemount.
sudo nano / etc / fstab
En zoek de regel die luidt:
proc / proc proc standaard 0 0
En verander het in:
proc / proc proc standaard, hidepid = 2 0 0
Sluit de editor af met "Ctrl + X." Start nu je Raspberry Pi opnieuw op. Controleer na het opnieuw opstarten of het / proc-bestandssysteem is gematcht met de juiste opties. Gebruik eerst mount
en grep
om de huidige opties te bekijken:
monteren | grep hidepid
Test nu de ps
opdracht, precies zoals we hierboven hebben gedaan:
ps aux
Merk nu op dat alleen de processen die het eigendom zijn van "pi" zichtbaar zijn, maar in tegenstelling tot vroeger toen we het / proc-bestandssysteem opnieuw gebruikten, is dit nu de permanente instelling. Maar een woord van waarschuwing, zelfs wanneer hidepid wordt gebruikt, "root" kan nog steeds alle processen en de aanroepparameters zien.
De hierboven gebruikte techniek zal werken op andere Linux-machines en distributies, niet alleen de Raspberry Pi met Raspbian. Als je vragen hebt over het gebruik van de "hidepid" -optie in het / proc-bestandssysteem, gebruik dan alstublieft de opmerkingen hieronder en we zullen zien of we kunnen helpen.