Podnoszenie uprawnień aplikacji w systemach Linuksowych

1

Witam

Z tego co mi wiadomo w Linuxie mamy 2 rodzaje uprzywilejowania procesów: uprzywilejowany i nieuprzywilejowany (UID lub EUID inny niż 0 (root) )

W związku z tym moje pytanie.
Czy istnieje w systemach Linuksowych możliwość żeby nieuprzywilejowanej aplikacji tzn takiej która nie działa z uprawnieniami użytkownika root nadać prawo tylko do montowania systemów plików?

Na tej stronie http://man7.org/linux/man-pages/man7/capabilities.7.html czytamy:

Starting with kernel 2.2, Linux divides the privileges traditionally associated with superuser into distinct units, known as capabilities,which can be independently enabled and disabled. Capabilities are a per-thread attribute.

Jak ustawić sobie konkretne uprawnienia?
Nie odnalazłem dedykotwanej funkcji typu SetCapabilityProcess()
ale mam coś takiego:

prctl() is called with a first argument describing what to do (with values defined in <linux/prctl.h>), and further arguments with a significance depending on the first one.

 
#include <sys/prctl.h>

int prctl(int option, unsigned long arg2, unsigned long arg3, unsigned long arg4, unsigned long arg5);
====Przyklad====Example==============
 prctl(PR_CAPBSET_READ, CAP_SETUID, 0, 0, 0);

Czy ta funkcja służy do tego żeby ustawić procesowi żądane "zdolności"(ang. capabilities) ?
Nie ma jakiejś przyjaźniejszej? ;)

0

Czy istnieje w systemach Linuksowych możliwość żeby nieuprzywilejowanej aplikacji tzn takiej która nie działa z uprawnieniami użytkownika root nadać prawo tylko do montowania systemów plików?

Zobacz jak jest zrobiony np. wireshark, tylko tam jest dostępność do sprzętu, a tutaj do zasobów systemowych.
Nie lepiej montować plików jako zwykły exec? mount ma eskę od root'a.

0

Nie lepiej montować plików jako zwykły exec?

Chyba nie rozumiem - chodzi o funkcję exec? Ona sie nie sprawdzi bo:

The exec() family of functions replaces the current process image with a new process image.

Tobie chodzi chyba o execve

execve() executes the program pointed to by filename. filename must be either a binary executable, or a script starting with a line of the form: [...]

Teoretycznie mógłbym zlecić za pomocą funkcji execve uruchomienie programu mount który ma ustawiony bit który oznacza że zostanie program mount uruchomiony z uprawnieniami właściciela pliku - a więc rota.
ale praktycznie montowanie plików się nie uda bo "mount: only root can do that".

Jednak muszę zdobyć uprawnienia do użycia funkcji mount w normalny sposób.
Zobaczę jak to zrobił wireshark

1 użytkowników online, w tym zalogowanych: 0, gości: 1