Jak uruchomić aplikację jako inny użytkownik?

17

Używam krusadera do zarządzania plikami. problemem jest to, że apache DocumentRootpowinien być poniżej chown www-data:www-data /path/to/www. więc używając krusadera (który działa na moim koncie) nie mam dostępu do zapisu, /path/to/wwwgdy naprawdę potrzebuję. Nie wiem, w jaki sposób inni programiści mogą nadal robić rzeczy z takim ograniczeniem!

Zastanawiałem się, czy mógłbym uruchomić krusader, ponieważ www-datawtedy będę mógł łatwo grać z plikami. ale używanie su - www-datapoprosiło mnie o www-datahasło !!

Jak mogę uruchomić aplikację (np. Krusader) jako inny użytkownik (np. Www-data) w Gnome?

czy jest jakieś inne rozwiązanie dla mojej sprawy? (chociaż jestem naprawdę ciekawa odpowiedzi!)

pamiętaj, że wiem, że mogę go uruchomić jako root ! ale spowoduje to pewne problemy z uprawnieniami podczas korzystania cpi mkdir.

PS: sudo i gksudonie pomógł:

$ gksudo -u -www-data krusader
No protocol specified
krusader: cannot connect to X server :0.0

Ostatnia uwaga: zgodnie z najlepszą odpowiedzią zrobiłem chmod u+w /path/to/wwwi mój problem rozwiązany. ale nadal nie udało mi się otworzyć Krusadera jako inny użytkownik!

Alexar
źródło

Odpowiedzi:

4

Zastanawiając się nad tym pytaniem (mam nadzieję, że dobrze zrozumiałem twój problem, ale popraw mnie, jeśli się mylę), znalazłem inne rozwiązanie i myślę, że nie musisz uruchamiać aplikacji jako danych www ani grać z uprawnieniami . Ty to powiedziałeś:

DocumentRoot Apache powinien znajdować się pod danymi www: data-www / path / to / www

ale tak naprawdę nie jest to w pełni prawdą: Apache DocumentRootmusi być czytelny www-data, ale niekoniecznie jest jego własnością. Domyślnie w Ubuntu Desktop wszystkie tworzone przez Ciebie pliki i katalogi są czytelne dla wszystkich, dzięki czemu możesz ustawić DocumentRoot na katalog w folderze domowym, na przykład:

DocumentRoot /home/user/my-project/my-document-root
Andrea Corbellini
źródło
dzięki! po prostu zadziałało. i twoje wyjaśnienie, dlaczego to miałoby działać, było bardzo pomocne. ponieważ to rozwiązało mój problem, ale wciąż jestem ciekawy, jak mogę otworzyć Krusader jako inny użytkownik. inne rozwiązania po prostu nie działały.
Alexar
8
xhost +SI:localuser:uname
gksudo -u uname -l "firefox"
xhost -SI:localuser:uname

Gdzie uname = nazwa podszywającego się użytkownika. Widziałem tam: http://ubuntuforums.org/showthread.php?p=10399617

Działa na moim indywidualnym pudełku, nie ma dźwięku w rozwidlonym skype i ~ / .profile.d nie jest wykonywany tak, jak mógłby.

Anton S. Kraievoy
źródło
5

Jeśli uruchamiasz to z systemu menu, będziesz chciał użyć alacarte(System> Preferencje> Menu główne) i zmienić wpis dla krusader i dodać przed nim: gksudo -u www-dataco powinno dać coś takiego:

gksudo -u www-data krusader

Spowoduje to uruchomienie okna wiersza zadania administracyjnego, które według GKSudo Manpage jest

GTK + Frontend dla su i sudo

Użycie tylko gksudo bez -uprzełącznika spowoduje uruchomienie polecenia jako root.

Marco Ceppi
źródło
dzięki, ale zwraca: Nie określono protokołu
kraderader
2
przed uruchomieniem polecenia gksudo, w terminalu pod kontem uruchom:xhost +
jet
4

Tak jak wspomniany Marco, możesz używać go gksudo -u www-data <command>do uruchamiania poleceń jako inny użytkownik. Rutynowo używam tego do uruchamiania poleceń jakogdm do tej pory nigdy nie prosił mnie o nic innego niż moje własne hasło.

Jeśli używasz kde, odpowiednikiem jest. kdesu -u www-data krusaderMyślę, że ponieważ krusader jest aplikacją kde, może działać lepiej kdesu. Więcej informacji o kdesu tutaj .

Kiedyś gksudouruchamiałem polecenia jako inni „ludzcy” użytkownicy w systemie i kiedy pojawia się monit o hasło, wpisuję moje.

koushik
źródło
dzięki, ale wynik jest następujący: gksudo: Nie określono protokołu
krusader
Prawdopodobnie dla krusadera (aplikacja KDE) kdesujest lepszym wyborem. Zaktualizowałem swoją odpowiedź. Możesz tego spróbować?
koushik,
4

Aby stać się danymi www z własnym hasłem, użyj tego:

$ sudo su www-data
[sudo] password for <your username>: [enter your password]
$ whoami
(you should see www-data here)

Ale nie sądzę, że będziesz mógł uruchomić aplikacje GUI stamtąd ...

Zwykle jestem po prostu właścicielem wszystkiego /var/www, ale pozwalam wszystkim na dostęp do odczytu:

/var/www$ sudo chown -R [your-username]\:[your-group] *
/var/www$ find . -type d -exec chmod a+rx {} \;
/var/www$ find . -type f -exec chmod a+r {} \;

Mam nadzieję, że to złagodzi Twój ból :)

dr Hannibal Lecter
źródło
jak się domyślacie, nie mogłem uruchomić aplikacji GUI. powiedziałNo protocol specified krusader: cannot connect to X server :0.0
Alexar,
Czy drugie rozwiązanie nie jest dla Ciebie opcją? Twoje dane nie muszą być własnością www-data, choć myślę, że jest to preferowane.
dr Hannibal Lecter,
3

Uważam, że musisz uruchomić następujące polecenia na terminalu:

xhost +SI:localuser:<user-to-run-as>

Następnie możesz zrobić:

sudo su - <user-to-run-as>

Na koniec uruchom aplikację:

krusader

To powinno to zrobić, pamiętaj tylko o zastąpieniu <user-to-run-as>swoją nazwą użytkownika.

nicholas.alipaz
źródło
0

Zarówno „gksu”, jak i „kdesu” to graficzne nakładki na „sudo”, które jest narzędziem, którego powinieneś używać, gdy jesteś w środowisku tekstowym. Narzędzia „gksu” i „kdesu” wymagają przejścia w tryb graficzny, który wyjaśnia błędy „nie można połączyć się z serwerem X”.

jeśli chcesz wykonać polecenie konsoli jako inny użytkownik, użyj polecenia „sudo -u nazwa użytkownika”.

Sense Hofstede
źródło
dzięki, uruchamiam to i mówi, że coś takiego [1] 12100wydaje się być identyfikatorem procesu; ale nic nie widzę w akcji.
Alexar,
0

Uruchomienie aplikacji graficznej pod www-data stwarza szereg problemów. Możesz dodać się do grupy danych www, abyś mógł zmienić wszystkie potrzebne pliki:

sudo adduser $USER www-data

Uwaga: prawdopodobnie musisz wylogować się z sesji, aby zmiana zaczęła obowiązywać.

Jeśli po wykonaniu tego polecenia nadal nie możesz zmienić niektórych plików, upewnij się, że masz do nich uprawnienia do zapisu:

sudo chown www-data:www-data /var/www/file
chmod g+w /var/www/file
Andrea Corbellini
źródło
nie jest to jednak rozwiązanie ogólnego problemu, ale wydaje się, że działa w moim przypadku; Spróbuję to zgłosić
Alexar,
0

Zainspirowany przez Anton S. Kraievoy zastosowałem podobne rozwiązanie, które działa dla mnie. W użytkowniku, który za pomocą Krusadera dodałem nowego użytkownika do xhhost:

xhost +SI:localuser:username

Niż uprzejmie zaloguj się:

su - username

Niż krusader uruchamia się poprawnie jako nowa instancja u nowego użytkownika:

krusader

Zauważ, że nowa konfiguracja zostanie utworzona w ~ / .kde / share / config / krusaderrc.

hariprasad
źródło