Cu putin timp in urma m-am regasit in situatia de a configura un user cu drepturi limitate pe linux. Concret, scopul a fost de a-i permite doar rularea din terminal a unui script in python. Ulterior am realizat o interfata grafica pentru script si am avut o provocare in implementarea restrictiilor si in GUI.
Voi descrie mai jos pasii parcursi pentru limitarea accesului in CLI si GUI.
User management
1. Incepem prin crearea unui user nou.
$ sudo adduser <username>
2. Cream un grup nou pentru user.
$ sudo groupadd <groupname>
3. Adaugam userul in grup.
$ sudo adduser <username> <groupname>
Limitarea accesului in CLI
4. Se modifica /etc/passwd pentru ca userul sa foloseasca rbash
$ sudo nano /etc/passwd
Ex.
testuser:x:1001:1001:,,,:/home/testuser:/bin/rbash
5. Se creaza un director bin in directorul /home/<user>, cu permisiuni 755
$ pwd
/home/<user>
$ sudo mkdir bin
$sudo chmod 755 bin
$ pwd
/home/<user>
$ sudo mkdir bin
$sudo chmod 755 bin
6. Se modifica in .bashrc:
PATH=$HOME/bin
export PATH
7. Generam symlink-uri pentru comenzile la care dorim sa oferim acces userului.
Ex.
$ sudo ln -s /bin/python /home/testuser/bin/
8. Marcam .bashrc ca important pentru a nu putea fi modificat
$ sudo chattr +i .bashrc
PATH=$HOME/bin
export PATH
7. Generam symlink-uri pentru comenzile la care dorim sa oferim acces userului.
Ex.
$ sudo ln -s /bin/python /home/testuser/bin/
8. Marcam .bashrc ca important pentru a nu putea fi modificat
$ sudo chattr +i .bashrc
Limitarea accesului in GUI
9. Trecem toate fisierele in ownership-ul root-ului
9. Trecem toate fisierele in ownership-ul root-ului
$ sudo chown root <nume fisier>
10. Se creaza un script in C care sa apeleze scriptul in python.
$sudo nano scr.c
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
10. Se creaza un script in C care sa apeleze scriptul in python.
$sudo nano scr.c
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
int main() {
setuid(geteuid());
system("/usr/bin/python <nume script>.py");
return 0;
}
11. Se compileaza fisierul
$ sudo gcc scr.c -o run
12. Se seteaza SUID bit pentru fisierul compilat
$ sudo chmod 4755 run
13. Se creaza un script in python in ownership user care sa apeleze fisierul compilat
setuid(geteuid());
system("/usr/bin/python <nume script>.py");
return 0;
}
11. Se compileaza fisierul
$ sudo gcc scr.c -o run
12. Se seteaza SUID bit pentru fisierul compilat
$ sudo chmod 4755 run
13. Se creaza un script in python in ownership user care sa apeleze fisierul compilat
$ sudo nano run.py
#!/usr/bin/env python
import os
os.system("./.run")
14. Sa nu fie 13. :)
Niciun comentariu :
Trimiteți un comentariu