Всички съвременни многозадачни операционни системи, включително Linux, изпълняват поредица от процеси за всяка от изпълняваните задачи. Заявлението за бележник е процес, терминалният прозорец е процес, SSH сървърът е процес, всяка SSH връзка е процес и така нататък. Linux планира различните системни ресурси (процесорно време, памет, I / O), така че всеки процес да получи възможност за изпълнение.

За да видите списъка с текущите процеси, можете да използвате командата ps . Опитайте това в терминал:

 ps aux 

Параметрите aux показват на ps да изброяват всички системни процеси с допълнителна информация за това кой притежава процесите и какви параметри на обаждането са били използвани.

Както можете да видите, списъкът показва процеси, собственост на различни потребители, включително "pi" (по подразбиране Raspbian потребител на Raspberry Pi), "root" и "www-данни". Тук има леко модифицирана екранна снимка, която показва процесите заедно с по-пълни подробности за командите и техните параметри.

Ако погледнете списъка надолу, ще видите командата nano MYBANKACCOUNTNUMBER.TXT която е собственост на потребителя "john". Представете си, ако името на файла е малко по-разумно от примера; такива данни са изложени на всички потребители в системата и могат да бъдат използвани за злонамерени цели.

От ядрото 3.2 на Linux има начин да се спре потребителите да получат достъп до информация за процеси, които не притежават. Командата ps получава информацията за процеса от файловата система / proc (където "proc" е кратка за процеса). Има нов параметър, наречен "hidepid", който се използва при монтиране на файловата система / proc. Той може да скрива процеси и контроли, които имат достъп до информацията под / proc.

  • hidepid = 0 - поведението по подразбиране, при което всеки потребител може да прочете файловете в / proc / PID /
  • hidepid = 1 - Това означава, че потребителите нямат право да имат достъп до / proc / PID / поддиректория, освен собствените си. Също така файлове като cmdline, io, sched *, status, wchan са недостъпни за други потребители.
  • hidepid = 2 - Всичко от hidepid = 1, плюс всички / proc / PID / поддиректории ще бъде скрито за други потребители.

Файловата система / proc може да бъде повторно mount като се използва опцията remount на командата mount . За да тествате hidepid, можете да замените / proc файловата система по следния начин:

 sudo mount -o remount, rw, hidepid = 2 / proc 

Сега можете отново да опитате командата ps :

 ps aux 

Сега изходът показва само процеси, които са собственост на потребителя "pi".

За да направите тази промяна постоянна, трябва да редактирате файла "/ etc / fstab" на Pi. Файлът "fstab" контролира кои файлови системи се монтират при стартиране.

 sudo nano / etc / fstab 

И намерете линията, която гласи:

 proc / proc proc по подразбиране 0 0 

И да го промените на:

 proc / proc proc по подразбиране, hidepid = 2 0 0 

Излезте от редактора, като използвате "Ctrl + X." Сега рестартирайте малините Pi. Когато се рестартира, проверете дали файловата система / proc е монтирана с правилните опции. Първо използвайте mount и grep да видите текущите опции:

 mount | grep hidepid 

Сега тествайте командата ps, точно както направихме по-горе:

 ps aux 

Забележете, че само процесите, притежавани от "pi", са видими, но за разлика от преди, когато сменихме файловата система / proc, сега това е постоянната настройка. Въпреки това, една дума за предупреждение, дори когато се използва hidepid, "корен" все още може да види всички процеси и параметрите на повикване.

Техниката, използвана по-горе, ще работи на други машини и дистрибуции на Linux, а не само на Raspberry Pi с Raspbian. Ако имате въпроси относно използването на опцията "hidepid" на файловата система / proc, моля, използвайте секцията за коментари по-долу и ще видим дали можем да помогнем.