FreeNX Slackware 14.2 pełny support
Niestety projekt FreeNX jest martwy od ponad dwóch lat. Pokusiłem sie o modyfikacje skryptów oraz zaimplementowanie najnowszych bibliotek i binarii z nomachine.com.
Założenia były takie:
-
Pełny supprt dla udostępniania plików.
-
Pełny support dla funkcji drukowania.
-
Wycięcie obsługi dzwieku ( zbędna funkcja do pracy terminalowej)
Podstawowym zadaniem jakie trzeba wykonać aby mieć możliwość mapowania zasobów oraz drukarek jest powtórne skompilowanie Samby. Wymagane to jest ze względu na to iż mount.cifs oraz umount.cifs maja z założenia zablokowane ustawienie bit SUID, czyli nie ma możliwości wykonania montowania zasobów z konta zwykłego użytkownika. Patch jest dostępny w załącznikach. Najlepszym sposobem jest pobranie źródeł samby
wget -r -np http://ftp.belnet.be/packages/slackware/slackware-13.1/patches/source/samba/
oraz dopisanie do samba.SlacBuild scieżki do pacha, tuż za poleceniem wypakowywującym żródło
patch -p0 /tmp/samba-3.5.5/client/mount.cifs.c < $CWD/samba_mount.cifs.diff
Po zbudowanie pakietu instalujemy go oraz nadajemy prawa 0755 i bit SUID dla mount.cifs oraz umount.cifs
chmod 0755 /usr/sbin/mount.cifs
chmod 0755 /usr/sbin/umount.cifs
chmod u+s /usr/sbin/mount.cifs
chmod u+s /usr/sbin/umount.cifs
Tyle jeżeli chodzi o sambe.
Zabieramy sie za system drukowania Cups. Jak wiadomo kde z serii 4.x.x jest ściśle powiązany z serwerem wydruku CUPS, usunięto dedykowany program konfiguracji drukarki a co za tym idzie plik kdeprintrc juz nie jest tworzony w konfiguracji środowiska KDE. W mojej modyfikacji FreeNX drukarka dodaje się do globalnego systemu drukowania. Drukarka jest widoczna pod nazwą jaka udostępniamy w kliencie oraz po zakończeniu pracy automatycznie usuwana jest z globalnego systemu drukowania. Podstawową rzeczą jest konfiguracja Cups’a w której musimy koniecznie zezwolić zwykłemu userów dodawania, usuwania drukarek a także dodawania i usuwania procesów (Job). Poniżej przykładowa konfiguracja:
LogLevel warn
SystemGroup sys root
Port 631
Listen /var/run/cups/cups.sock
Browsing Off
BrowseOrder allow,deny
BrowseAllow all
BrowseRemoteProtocols CUPS
BrowseLocalProtocols
DefaultAuthType Basic
<Location />
Order allow,deny
Allow @LOCAL
</Location>
<Location /admin>
Order allow,deny
Allow @LOCAL
</Location>
<Location /admin/conf>
AuthType Default
Order allow,deny
Allow @LOCAL
</Location>
<Policy default>
<Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job CUPS-Move-Job CUPS-Get-Document>
Order deny,allow
</Limit>
<Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default CUPS-Get-Devices>
AuthType None
Order deny,allow
</Limit>
<Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After CUPS-Accept-Jobs CUPS-Reject-Jobs>
Order deny,allow
</Limit>
<Limit CUPS-Authenticate-Job>
Order deny,allow
</Limit>
<Limit All>
Order deny,allow
</Limit>
</Policy>
<Policy authenticated>
<Limit Create-Job Print-Job Print-URI>
AuthType None
Order deny,allow
</Limit>
<Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job CUPS-Move-Job CUPS-Get-Document>
AuthType None
Order deny,allow
</Limit>
<Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default>
AuthType None
Order deny,allow
</Limit>
<Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After CUPS-Accept-Jobs CUPS-Reject-Jobs>
AuthType None
Order deny,allow
</Limit>
<Limit Cancel-Job CUPS-Authenticate-Job>
AuthType None
Order deny,allow
</Limit>
<Limit All>
Order deny,allow
</Limit>
</Policy>
Potrzebne biblioteki oraz dodatki dla CUPS:
Ze strony http://www.openprinting.org/download/foomatic/ pobieramy foomatic-db-current.tar.gz oraz foomatic-db-engine-4.0.5.tar.gz
Rozpakowywujemy i instalujemy:
1. Fommatic-db-xxxxx
./configure –prefix=/usr
make && make install
2. Foomatic-db-engine.xxx
./configure –prefix=/usr
make && make install
Jeżeli chcemy by FreeNX „widział” wszystkie sterowniki ( raczej nie zalecane – wiekszość i tak nigdy nie będzie wykorzystana) to albo linkujemy katalog /usr/share/foomatic/db/source/PPD do usr/share/cups/model albo kopiujemy odpowiednie sterowniki do /usr/share/cups/model. Ważną rzeczą jest rozpakowanie plików sterowników ponieważ są one spakowane .gz
wchodzimy do katalogu z sterownikami xxx.ppd.gz i wydajemy polecenie gzip -d * pliki w katalogu zostaną wypakowane.
Cups standardowo ma sterowniki, trzeba tylko wygenerować pliki ppd, służy do tego komenda cups-genppd.5.2, podana bez parametrów wygeneruje pliki ppd dla wszystkich dostepnych sterowników ok 1400 plików ppd.
Niezbędnie pakiety w systemie to: Biblioteki X11, sshd, expat, Xdialog oraz netcat
W załączeniu SlackBuildy dla Xdialog oraz netcat
Po instalacji musimy jeszce dokonać zmian w naszym serwerze ssh a mianowicie w pliku /etc/ssh/sshd_config w sekcji Autentication dodac
AllowUsers nx
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
{loadposition Adsense}
Ważną rzeczą jest też odpowiednie ustawienie portu na którym działa server ssh, wszystkie zmienne są w pliku /usr/NX/bin/nxloadconfig
następnie uruchomić
nxsetup –install w katalogu /usr/NX/bin
po instalacji trzeba dadac uzytkownika do NX, uzytkownik musi istniec w systemie !!!! polecnie
./nxserver –adduser nazwa_uzytkownika
nastepnie ustawiamy hasło sla naszego uzytkownika
./nxserver –passwd nazwa_uzytkownika
Ważną rzeczą jest ustawienie hasła dla użytkownika nx
passwd nx
Aby sprawdzić czy działa nasz server NX wykonujemy:
root@costam: ssh nx@localhost
po podaniu hasła powinien zgłosić się nam NX
Nasz klucz do autoryzacji znajduje sie w /usr/home/.ssh/client.id_dsa.key, będziemy go potrzebować do konfiguracji klienta
W załączeniu gotowy pakiet txz zawierający kompletny FreeNX, netcat, Xdialog a także SlackBuild dla FreeNX który pobiera odpowiednio zmodyfikowane źródła z mojej strony i kompiluje biblioteki i binaria.