Ukrywanie procesów przed innymi użytkownikami w Linuksie

Konrad Kowalski
  • Konrad Kowalski
  • 08/02/2016
  • Linux
  • 0 komentarzy
ps - Lista procesów

Domyślnie użytkownicy systemów Linux uprawnieni są do wyświetlenia pełnej listy procesów uruchomionych w systemie. Na liście procesów widoczne są też argumenty, z którymi zostały uruchomione programy (niekiedy widoczne są nawet hasła czy klucze API do różnych serwisów). W środowisku z wieloma użytkownikami takie zachowanie nie jest pożądane.

Jeśli system posiada jądro w wersji co najmniej 3.2 można zamontować system plików /proc z opcją hidepid. Opcja hidepid umożliwia między innymi ukrycie informacji o procesach przed innymi użytkownikami. Możliwe opcje:

  • 0 – domyślne ustawienie, użytkownicy widzą wszystkie procesy
  • 1 – normalni użytkownicy nie mają dostępu od pełnej listy procesów wyświetlanych przez polecenia typu ps, top itp. Istnieje jednak możliwość znalezienia informacji o procesach w systemie plików /proc
  • 2 – normalni użytkownicy widzą tylko i wyłącznie swoje procesy (tak jak w hidepid=1). Nie ma możliwości znalezienia informacji o procesach w systemie plików /proc


Poniżej przedstawiony jest wynik komendy ps wydanej przez normalnego użytkownika. Jak można zauważyć widoczne są wszystkie uruchomione procesy, nawet te systemowe.

ps aux      
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0  10648   800 ?        Ss    2015   0:49 init [2]  
root         2  0.0  0.0      0     0 ?        S     2015   0:02 [kthreadd]
root         3  0.0  0.0      0     0 ?        S     2015   0:04 [ksoftirqd/0]
...
root      2210  0.0  0.0 120932  5780 ?        Sl    2015   8:12 /usr/sbin/rsyslogd -c5
root      2299  0.0  0.0   4116   632 ?        Ss    2015   0:00 /usr/sbin/acpid
daemon    2350  0.0  0.0  16672   148 ?        Ss    2015   0:00 /usr/sbin/atd
root      2401  0.0  0.0  20408  1044 ?        Ss    2015   0:58 /usr/sbin/cron
104       2448  0.0  0.0  29804   712 ?        Ss    2015   0:00 /usr/bin/dbus-daemon --syste
root      2486  0.0  0.0  49932  1200 ?        Ss    2015   0:00 /usr/sbin/sshd
root      2543  0.0  0.0 115604  1388 ?        Ss    2015   0:00 nginx: master process /usr/s
www-data  2544  0.0  0.0 116064  3188 ?        S     2015   2:19 nginx: worker process
www-data  2545  0.0  0.0 116064  3188 ?        S     2015   3:01 nginx: worker process
www-data  2547  0.0  0.0 116064  3192 ?        S     2015   2:37 nginx: worker process
www-data  2548  0.0  0.0 116064  3188 ?        S     2015   2:25 nginx: worker process
101       3241  0.0  0.0  44740   976 ?        Ss    2015   0:02 /usr/sbin/exim4 -bd -q30m
root      3273  0.0  0.0  16256   932 tty1     Ss+   2015   0:00 /sbin/getty 38400 tty1
root      3274  0.0  0.0  16256   936 tty2     Ss+   2015   0:00 /sbin/getty 38400 tty2
root      3275  0.0  0.0  16256   928 tty3     Ss+   2015   0:00 /sbin/getty 38400 tty3
root      3276  0.0  0.0  16256   928 tty4     Ss+   2015   0:00 /sbin/getty 38400 tty4
root      3277  0.0  0.0  16256   924 tty5     Ss+   2015   0:00 /sbin/getty 38400 tty5
root      3278  0.0  0.0  16256   924 tty6     Ss+   2015   0:00 /sbin/getty 38400 tty6
kowalsio  5147  0.0  0.0   4180   576 pts/0    S    13:39   0:00 sh
kowalsio  5148  0.0  0.0  16836  1224 pts/0    R+   13:39   0:00 ps aux

W celu ograniczenia informacji o procesach, nie należących do danego użytkownika, należy wydać polecenie:

mount -o remount /proc -o hidepid=2

System plików /proc zostanie zamontowany ponownie z opcją hidepid=2

Po wprowadzeniu zmian wydanie polecenia ps aux przez normalnego użytkownika, spowoduje wyświetlenie listy procesów uruchomionych przez danego użytkownika.

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
kowalsio  5622  0.0  0.0   4180   576 pts/0    S    13:42   0:00 sh
kowalsio  5623  0.0  0.0  16836  1208 pts/0    R+   13:42   0:00 ps aux

Aby zmiana ustawień była zachowana również po restarcie systemu należy odpowiednio zmodyfikować wpis w pliku /etc/fstab dodając opcję hidepid.

proc    /proc    proc    defaults,hidepid=2     0     0

Ustawienie to nie dotyczy konta administratora – root. Administrator ma zawsze dostęp do pełnej listy procesów bez względu na wprowadzone zmiany w ustawieniach.

Dodaj komentarz