Problem jest taki:
Piszemy sobie skrypt który będzie uruchamiany jako root i chcemy uruchomić aplikacje bez uprawnień root.
Z pomocą nam przychodzi poradnik z wyszukiwarki https://www.cyberciti.biz/open-source/command-line-hacks/linux-run-command-as-different-user/
W którym są wymienione:
" #1: runuser "
" #2: su "
" #3: sudo "
Zacznę może od tyłu …
sudo
Nie będę używał ponieważ nie jest to domyślne polecenie w systemie i czasami trzeba sobie doinstalować i skonfigurować. Generalnie jest to komenda używana tylko w Ubuntowych distrach. Dlatego denerwuje mnie jak ktoś używa sudo w skryptach na każdą dystrybucje linuxa. Poza tym nie wiem na ile to jest bezpieczne, może już jest bezpieczne. Pamiętam też dziwoląga “ sudo su “ , dla mnie używanie dwóch komend które robią prawie to samo to utrudnianie sobie życia.
su
Ta komenda jest dostępna w każdej dystrybucji linuxa Bardzo prosta i przydatna przy logowaniu sie do root. Pojawia się tylko problem gdy chcemy użyć w skrypcie w celu ograniczenia praw root. Tutaj nie mogę podać jakiej aplikacji używałem ale przy testowaniu
su tele -c 'aplikacja'
otrzymywalem
# ls -la-rw-r--r-- 1 root root 256 sie 12 12:29 plik
Co nie było tym czego oczekiwałem. Poza tym trzeba inne dawać nawiasy w skrypcie a inne w wierszu poleceń przy testowaniu, co jest trochę kłopotliwe.
runuser
runuser -l tele -c 'aplikacja'
Sprawdzam …
# ls
-la-rw-r--r-- 1 tele tele 256 sie 12 12:29 plik
I stworzylo taki plik jaki oczekiwalem :-)
No to czym to się różni od su ? Znowu szperając w sieci można znaleść https://superuser.com/questions/1062576/difference-between-su-c-and-runuser-l-c i dalej idąc po sznurku http://danwalsh.livejournal.com/55588.html
runuser is actually built from the su.c source code. … Basically runuser is just the su command with the pam stack removed as well as verifying the command is running as root, not setuid. …
Poprzez aplikacje chodzi mi o własny skrypt z własnymi komendami które chcemy uruchomić z poziomu root. Ponieważ z “su” mogę podać komendę ale łączenie więcej komend bywa problematyczne, dlatego najłatwiej zapisać wszystkie do skryptu i uruchamiać skrypt.
Natomiast sudo nie lubię, poniewaz domyślne w dystrybucjach linuxa jest “su” a nie “sudo”. Także jak ktoś chce, to żeby używac “sudo” czasami musi sobie pierw zainstalować i skonfigurować.
Poradnik leżał od dawna w poczekalni i może nie oddawać wszystkiego co miało tu się znaleść.