css: set PRE’s max-width so it doesn’t stretch the viewport
[mina86.com.git] / posts / pierwsze-kroki-po-zainstalowaniu-slackware-a.pl.html
blobf51be7ad76ce87d655816b3fdb1f62315dc5b660
1 <!-- subject: Pierwsze kroki po zainstalowaniu {Slackware’a} -->
2 <!-- date: 2008-02-12 05:36:26 -->
3 <!-- tags: slackware, linux, harening, zabezpieczenia, konfiguracja -->
4 <!-- categories: Articles, Techblog -->
6 <p>W niniejszym artykule opiszę czynności, jakie zazwyczaj wykonuję
7 zaraz po zainstalowaniu Slackware’a. Nie są to rzeczy, które
8 doprowadzają do idealnego zabezpieczenia, olbrzymiego wzrostu
9 wydajności, czu użyteczności systemu, ale raczej kroki wyważone
10 pomiędzy tymi aspektami. Oczywiście, jest to opis tego co <em>ja</em>
11 robję, więc niekoniecznie wszystko, co zostało tutaj opisane,
12 będzie <em>Ci</em> odpowiadać.
14 <p>UPDATE 18/04/08: Dodane TMOUT.
16 <!-- FULL -->
18 <h2 id="adduser">Dodawanie użytkownika</h2>
20 <p>Z całą pewnością pierwszą czynnością jaką należy wykonać jest
21 stworzenie nowego użytkownika. Aby to zrobić wystarczy uruchomić
22 polecenie <code>adduser</code> i odpowiadać na kolejne pytania.
23 Najistotniejszym jest nazwa użytkownika oraz pytanie o dodatkowe
24 grupy. To drugie jest zadawane zaraz po pytaniu o grupę podstawową
25 i należy na nie odpowiedzieć <code>root</code> — będzie to bardzo
26 przydatne przy ograniczaniu dostępu do różnych poleceń
27 (<strong>nie</strong> dodawaj użytkownika do grupy <code>wheel</code>, bo
28 dalsze modyfikacje plików konfiguracyjnych uniemożliwią Ci zalogowanie
29 się do komputera). Na pozostałe pytania wystarczy odpowiedzieć
30 wciskając enter.
32 <h2 id="loginaccess">Ustawienia logowania</h2>
34 <p>W drugim kroku należy wyedytować plik <code>/etc/login.access</code>,
35 aby miał następującą zawartość:
37 <pre>
38 -:wheel:ALL
39 -:ALL EXCEPT mina86:ALL</pre>
41 <p>Pierwsza linijka spowoduje, że użytkownicy z grupy <code>wheel</code>
42 nie będą mogli się logować do komputera (do grupy tej należy między
43 innymi <code>root</code>). Druga linijka zabrania logować się wszystkim
44 oprócz użytkownika o podanym loginie. Jeżeli więcej osób ma mieć
45 możliwość logowania się (nie dotyczy to dostępu zdalnego
46 np. przez SSH) to można stworzyć grupę
47 (np. <code>ttylogin</code>), a w omawianym pliku drugą
48 z podanych linijek zamienić na:
50 <pre>-:ALL EXCEPT ttylogin:ALL</pre>
52 <p>W ten sposób, aby zalogować się jako root trzeba najpierw zalogować
53 się jako zwykły użytkownik, a następnie użyć polecenia <code>su</code>,
54 o którym niżej.
56 <p>Dalej, w pliku <code>/etc/login.defs</code> dokonujemy następujących
57 zmian:
59 <table>
60 <tr>
61 <th scope="row"><code>MAIL_CHECK_ENAB</code>
62 <td>Ustawiamy na <code>no</code>, chyba że rzeczywiście jest to
63 potrzebne. Jeżeli masz wątpliwości to pewnie nie jest to
64 potrzebne.
66 <tr>
67 <th scope="row"><code>ISSUE_FILE</code>
68 <td>Ustawiamy na <code>/etc/issue</code>. Później jeszcze dodamy
69 w odpowiednie miejsce kod definiujący ten plik.
71 <tr>
72 <th scope="row"><code>SU_WHEEL_ONLY</code>
73 <td>Ustawiamy na <code>yes</code>. W ten sposób z <code>su</code> będą
74 mogli korzystać jedynie użytkownicy należący do grupy o numerze
75 zero, tj. do grupy <code>root</code>. Należy zauważyć,
76 że w niektórych systemach opcja ta ma nieco inne znaczenie,
77 a mianowicie, zgodnie z nazwą, zezwala na logowanie jedynie
78 użytkownikom z grupy <code>wheel</code> co trochę utrudnia sprawę,
79 gdyż nie da się wówczas w łatwy sposób zablokować możliwości
80 logowania dla użytkowników z tej grupy (tak jak to zrobiliśmy
81 edytując plik <code>login.access</code>). Nie ma się jednak co
82 przejmować — na takich systemach nie należy po prostu zamieniać tej
83 wartości — zabezpieczeniem <code>su</code> jeszcze się zajmiemy.
85 <tr>
86 <th scope="row"><code>LOGIN_STRING</code>
87 <td>Komentarz mówi, że ta opcja nie działa poprawnie, ale nie
88 spotkałem się z żadnymi problemami toteż wystarczy odkomentować
89 linię by opcja <code>LOGIN_STRING</code> przyjęła wartość <code>"%s's
90 Password: "</code>.
92 <tr>
93 <th scope="row"><code>GETPASS_ASTERISKS</code>
94 <td>Bardzo zabawna opcja, osobiście ustawiam ją na <code>10</code>
95 dzięki czemu, w trakcie wpisywania hasła, wpisanie pojedynczej
96 literki powoduje wyświetlenie od jednej do 10 gwiazdek — dobry
97 sposób na zmylenie kogoś, kto spogląda zza ramienia na to co
98 wpisujemy. Śmiesznie też wyglądają ludzie, którzy myślą, że
99 w istocie mam kilkudziesięcio znakowe hasło i wpisałem je w dwie,
100 trzy sekundy.
102 </table>
104 <h2 id="ssh">Zabezpieczanie SSH</h2>
106 <p>Logowanie z konsoli jest już zrobione to teraz należy
107 zabezpieczyć SSH. Przede wszystkim, jeżeli nie
108 używamy <code>sshd</code> to warto ustawić, aby nie włączał się on
109 automatycznie przy starcie (generalnie wszelkie nieużywane lub rzadko
110 używane daemony nie powinny być uruchamiane przy starcie). Aby tego
111 dokonać wystarczy uruchomić polecenie:
113 <pre>chmod 600 /etc/rc.d/rc.sshd</pre>
115 <p>Przy takich ustawieniach, aby wystartować <code>sshd</code> należy
116 wykonać polecenie:
118 <pre>sh /etc/rc.d/rc.sshd start</pre>
120 <p>Po drugie trzeba jeszcze wyedytować
121 plik <code>/etc/ssh/sshd_config</code> ustawiając w nim następujące
122 opcje:
124 <pre>
125 PermitRootLogin no
126 AllowUsers mina86
127 DenyUsers root
128 DenyGroups wheel</pre>
130 <p>Spowoduje to, że jedynie użytkownik <code>mina86</code> będzie mógł
131 logować się zdalnie przy pomocy <code>ssh</code>. Jeżeli więcej
132 użytkowników ma mieć dostęp zdalny to wystarczy dopisać loginy do
133 opcji <code>AllowUsers</code> oddzielając poszczególne nazwy spacjami.
134 Jeżeli użytkowników miałoby być sporo to lepiej stworzyć nową
135 grupę, np. <code>sshlogin</code>, do
136 pliku <code>sshd_config</code> dodać opcję <code>AllowGroups sshlogin</code>
137 i dodawać użytkowników do tej grupy.
139 <h2 id="su">Zabezpieczanie <code>su</code></h2>
141 <p>Teraz jeszcze pozostaje zabezpieczyć trochę polecenie <code>su</code>.
142 Po pierwsze, do pliku <code>/etc/suauth</code> (w razie potrzeby należy
143 ten plik utworzyć) dodajemy następującą linijkę:
145 <pre>ALL:ALL EXCEPT GROUP root:DENY</pre>
147 <p>Dzięki której, jedynie użytkownicy należący do grupy <code>root</code>
148 będą mogli korzystać z <code>su</code>. W chwili obecnej, do grupy tej
149 powinien należeć root oraz użytkownik stworzony na początku tego
150 artykułu.
152 <p>Na wszelki wypadek warto jeszcze wykonać następujące dwa
153 polecenia:
155 <pre>
156 chown root:root /bin/su
157 chmod 4750 /bin/su</pre>
159 <p>Dzięki którym, blokowanie użytkowników nienależących do grupy
160 <code>root</code> będzie się odbywało również na poziomie systemu plików
161 i jądra.
163 <h2 id="rc">Skrypty startowe</h2>
165 <p>Tutaj będzie trochę zmian. Zarówno zwiększających bezpieczeństwo
166 jak i przyśpieszających start systemu.
168 <h3 id="rcm"><code>rc.M</code></h3>
170 <p>Zacznijmy od pliku <code>/etc/rc.d/rc.M</code>. Po pierwsze należy
171 w nim zakomentować linijki uruchamiające polecenia <code>ldconfig</code>
172 oraz <code>fc-cache</code>. Wykonują się one bardzo długo i strasznie
173 wydłużają start systemu, a w gruncie rzeczy są niepotrzebne. Należy
174 tylko pamiętać, żeby po zainstalowaniu (lub odinstalowaniu)
175 jakiejkolwiek biblioteki uruchomić <code>ldconfig</code> oraz po
176 dodaniu/skasowaniu czcionek — <code>fc-cache</code>.
178 <p>W celu przyśpieszenia startu systemu warto uruchomić kilka
179 programów w tle. Ja tak zrobiłem z <code>syslog</code>, <code>acpid</code>,
180 <code>alsa</code>, <code>gpm</code>, oraz całym fragmentem kodu począwszy od
181 <code>inet1</code>, a skończywszy na <code>inet2</code>. W przypadku
182 <code>syslog</code> wystarczy zmienić linijkę:
184 <pre> . /etc/rc.d/rc.syslog start</pre>
186 <p>na:
188 <pre> /etc/rc.d/rc.syslog start &amp;</pre>
190 <p>Może to co prawda spowodować, że niektóre komunikaty nie zostaną
191 zapisane w logu systemowym, ale osobiście uznałem, że nie jest to aż
192 tak wielka strata. Analogicznie wygląda sytuacja
193 <code>acpid</code>, <code>alsa</code> oraz <code>gpm</code>.
195 <p>W przypadku kodu od <code>inet1</code> do <code>inet2</code>, wystarczy
196 przed linijkami:
198 <pre>
199 # Initialize the networking hardware. If your network driver is a module
200 # and you haven’t loaded it manually, this will be deferred until after
201 # the hotplug system loads the module below.
202 if [ -x /etc/rc.d/rc.inet1 ]; then
203 . /etc/rc.d/rc.inet1
204 fi</pre>
206 <p>dodać okrągły nawias otwierający, tj.:
208 <pre>
211 # Initialize the networking hardware. If your network driver is a module
212 # and you haven’t loaded it manually, this will be deferred until after
213 # the hotplug system loads the module below.
214 if [ -x /etc/rc.d/rc.inet1 ]; then
215 . /etc/rc.d/rc.inet1
216 fi</pre>
218 <p>oraz za linijkami:
220 <pre>
221 # Start networking daemons:
222 if [ -x /etc/rc.d/rc.inet2 ]; then
223 . /etc/rc.d/rc.inet2
224 fi</pre>
226 <p>dodać okrągły nawias zamykający z etką:
228 <pre>
229 # Start networking daemons:
230 if [ -x /etc/rc.d/rc.inet2 ]; then
231 . /etc/rc.d/rc.inet2
234 ) &amp;</pre>
236 <p>Powinno to przyśpieszyć start systemu, choć nie wiem czy
237 użytkownicy <code>hotplug</code> nie napotkają jakiś problemów, oby
238 nie.
240 <p>Na koniec jeszcze, zdecydowałem się usunąć pliki
241 <code>/etc/rc.d/rc.font</code><code>/etc/rc.d/rc.keymap</code>, a ich
242 zawartość wstawić bezpośrednio do pliku <code>/etc/rc.d/rc.M</code>
243 z jednoczesnym uruchomieniem w tle:
245 <pre>
246 # Load a custom screen font
247 setfont lat2-16 &amp;
249 # Load a custom keymap
250 if [ -x /usr/bin/loadkeys ]; then
251 /usr/bin/loadkeys pl2.map &amp;
252 fi</pre>
254 <h3 id="rcs"><code>rc.S</code></h3>
256 <p>Tutaj jedynie zmieniłem kilka uprawnień:
258 <pre>chmod 1733 /tmp/.ICE-unix /tmp/.X11-unix</pre>
260 Dodatkowo, można jeszcze zmienić uprawnienia do pliku <code>/var/run/utmp</code> modyfikując odpowiednią linijkę, tak aby przybrała postać: <code>chmod 600 /var/run/utmp</code>, ale należy wziąć pod uwagę, fakt, że zpowoduje to, iż polecenia takie jak <code>uptime</code> będą jako liczbę zalogowanych użytkowników podawać 0 (słownie zero).
262 <h3 id="rclocal"><code>rc.local</code></h3>
264 <p>Nie rozwodząc się długo, do pliku <code>/etc/rc.d/rc.local</code>
265 proponuję wpisać co następuje:
267 <pre>
268 chown root:root /sbin/shutdown /sbin/halt /sbin/reboot /sbin/poweroff /bin/su
269 chmod 4750 /sbin/shutdown /sbin/halt /sbin/reboot /sbin/poweroff /bin/su
271 /usr/sbin/icmpinfo -vvv -s -l
273 cat &gt;/etc/issue &lt;&lt;END
274 ### ###
275 ## ##
276 #### ## #### #### ## ### ### ### #### ### ### ####
277 ## ## ## ## ## ## ## ## ## ## ### ## ## ##
278 | ### ## ##### ## #### ## #### ## ##### ## ######
279 | ## ## ## ## ## ## ## ### ### ## ## ## ##
280 | #### #### ###### #### ### ### ## ## ###### ## #####
281 +------------------------------------------ l i n u x `uname -rm`
283 cp -f /etc/issue /etc/issue.net
285 /usr/sbin/hdparm -c3 -a16 -W1 -u1 /dev/hda &gt;/dev/null
287 if [ -x /etc/cron.hourly/ntpsync ]; then
288 /etc/cron.hourly/ntpsync &amp;
289 fi</pre>
291 <p>Na początku ustawiane są uprawnienia do różnych poleceń
292 systemowych. Dzięki nim, użytkownicy z grupy <code>root</code> nie muszą
293 korzystać z <code>su</code>, aby móc odpalić polecenia takie jak
294 <code>/sbin/halt</code>. Dalej włączane jest logowanie pakietów
295 ICMP. Następnie generowane są pliku
296 <code>/etc/issue</code> oraz <code>/etc/issue.net</code> po czym ustawiane są
297 różne parametry dysku — prawdopodobnie będziesz chciał je zmodyfikować.
298 Na koniec uruchamiany jest skrypt <code>/etc/cron.hourly/ntpsync</code>
299 o ile takowy istnieje.
301 <h3 id="rclasa"><code>rc.alsa</code></h3>
303 <p>Ponieważ stosunkowo szybko przekompilowuję jądro i wkompilowuję
304 w nim emulację OSS to nie ma potrzeby wczytywania
305 żadnych modułów, więc w pliku <code>/etc/rc.d/rc.alsa</code> zmieniam
306 definicję funkcji <code>load_alsa_oss_modules</code> na następującą:
308 <pre>
309 load_alsa_oss_modules () {
310 : Compiled in
311 }</pre>
313 <h3 id="rcsyslog"><code>rc.syslog</code></h3>
315 <p>Tutaj można minimalnie zmienić parametry wywoływania
316 <code>syslogd</code> oraz <code>klogd</code>:
318 <pre>
319 /usr/sbin/syslogd -m 0
320 /usr/sbin/klogd -c 3 -x -p</pre>
322 <h2>Crontab</h2>
324 <p>Po pierwsze, tworzymy plik <code>/etc/cron.hourly/ntpsync</code>
325 o następującej treści:
327 <pre>
328 #!/bin/sh
329 # Query time
330 /usr/sbin/ntpdate -u -s 0.pl.pool.ntp.org 1.pl.pool.ntp.org \
331 2.pl.pool.ntp.org || exit $?
333 # Save the system time to the hardware clock using hwclock --systohc.
334 if [ -x /sbin/hwclock ]; then
335 # Check for a broken motherboard RTC clock (where ioports for rtc are
336 # unknown) to prevent hwclock causing a hang:
337 if ! grep -q -w rtc /proc/ioports ; then
338 CLOCK_OPT="--directisa"
340 if grep -q "^UTC" /etc/hardwareclock 2> /dev/null ; then
341 /sbin/hwclock $CLOCK_OPT --utc --systohc
342 else
343 /sbin/hwclock $CLOCK_OPT --localtime --systohc
345 fi</pre>
347 <p>Po drugie, tworzymy plik <code>/etc/cron.daily/cleanup</code> nadając
348 mu prawa wykonywania o następującej treści:
350 <pre>
351 #!/bin/sh
352 /usr/bin/find /tmp /var/tmp -atime +7 -exec rm -f -- {} + 2>/dev/null</pre>
354 <p>I na koniec jeszcze warto odpalić <code>crontab -e</code> i pozmieniać
355 godziny z 4. w nocy na np. północ, chyba że nasza maszyna jest zazwyczaj na
356 chodzie o 4. w nocy. Oczywiście obu utworzonym plikom nadajemy prawa do
357 wykonywania, np.:
359 <pre>chmod 700 /etc/cron.hourly/ntpsync /etc/cron.daily/cleanup</pre>
361 <h2 id="x">Zabezpieczanie Xów</h2>
363 <p>Kilka szybkich zmian zamykających różne dziwne porty:
365 <table>
366 <tr>
367 <th scope="row"><code>/usr/X11R6/bin/startx</code>
368 <td><pre>defaultserverargs="-nolisten tcp"</pre>
370 <tr>
371 <th scope="row"><code>/etc/X11/xdm/Xservers</code>
372 <td><pre>:0 local /usr/X11R6/bin/X -nolisten tcp</pre>
374 <tr>
375 <th scope="row"><code>/etc/rc.d/rc.4</code>
376 <td><pre>exec /usr/X11R6/bin/xdm -nodaemon -udpPort 0</pre>
378 <tr>
379 <th scope="row"><code>/etc/X11/fs/config</code>
380 <td><pre>use-syslog = yes<br />no-listen = tcp</pre>
382 </table>
384 <h2 id="del">Kasowanie zbędny userów i grup</h2>
386 <p>Generalnie uruchamiamy następujące polecenia:
388 <pre>
389 find / -user adm -o -user games -o -user gdm -o -user lp -o -user news \
390 -o -user operator -o -user pop -o -user rpc -o -user uucp \
391 -o -group adm -o -group lp -o -group news -o -group pop \
392 -o -group uucp -ls
394 for USR in adm gdm lp news operator pop rpc uucp halt shutdown sync; do
395 userdel "$USR"
396 done
398 for GRP in adm news pop; do groupdel "$GRP"; done
400 grpck</pre>
402 <p>Istotne jest, aby po uruchomieniu <code>find</code> sprawdzić
403 dokładnie, czy dany użytkownik lub grupa nie jest jednak w systemie
404 potrzebny/a. W moim przypadku okazało się, że użytkownik
405 <code>games</code><code>uucp</code> oraz grupa <code>uucp</code> były
406 wykorzystywane (tj. istniały pliki należące do tych
407 użytkowników/grup) i z tego powodu tych użytkowników/grup nie usunąłem
408 (co widać brakiem odpowiedniej pozycji w pętli for).
410 <h2 id="hostconf"><code>host.conf</code></h2>
412 <p>Do pliku <code>/etc/host.conf</code> dodajemy:
414 <pre>
415 nospoof on
416 spoofalert on
417 spoof warn</pre>
419 <h2 id="chmod">Prawa dostępu</h2>
421 <pre>
422 chmod -R go-rwx /etc/cron.*
423 chmod -R go-rwx /etc/rc.d
424 chmod -R o-rwx /var/log</pre>
426 <h2 id="profile"><code>profile</code></h2>
428 <p>Na początek pliku <code>/etc/profile</code> dodajemy:
430 <pre>
431 # Check required variables
432 : ${USER:?Who are you?}
433 : ${LOGNAME:?Who are you?}
434 : ${HOME:?The homeless need help}</pre>
436 <h2 id="fstab">Partycje</h2>
438 <p>Jeżeli mamy jakieś partycje <code>vfat</code> to warto zmienić w pliku
439 <code>/etc/fstab</code> opcje z jakimi są montowane na
440 następujące: <code>umask=7,shortname=winnt,codepage=852,quiet,iocharset=iso8859-2</code>
441 Spowoduje to, że <code>root</code> oraz użytkownicy z grupy
442 <code>root</code> będą mogli bez przeszkód odczytywać i modyfikować pliki
443 na partycjach <code>vfat</code>. Jeżeli chcemy, żeby dodatkowo wszyscy
444 mogli odczytywać pliki z partycji Windowsa wystarczy zmienić
445 <code>umask=7</code> na <code>umask=2</code>. Zmiana na <code>umask=0</code>
446 spowoduje, że wszyscy będą mogli robić wszystko. By mieć większą kontrolę,
447 można stworzyć grupę
448 <code>vfat</code>, <code>umask</code> ustawić na <code>7</code> i jeszcze
449 dodać opcję <code>gid=<i>numer</i></code>, gdzie <i>numer</i> to
450 identyfikator stworzonej grupy. Spowoduje to, że tylko <code>root</code>
451 oraz członkowie grupy <code>vfat</code> będą mogli szperać po i dokonywać
452 zmian na partycjach <code>vfat</code>.
454 <p>Na koniec jeszcze, by być bardziej zgodnym z <a
455 href="http://www.pathname.com/fhs/" lang="en">File Hierarchy
456 Standard</a> wykonuję następujące polecenia:
458 <pre>
459 mv -f -- /mnt /media
460 mkdir -- /mnt
461 sed -e 's/\/mnt\//\/media\//' -i -- /etc/fstab</pre>
463 <p>Co powoduje, że rzeczy takie jak CD-ROM czy dyskietki są montowane
464 nie w katalogu <code>/mnt</code>, ale <code>/media</code>.
466 <h2 id="lilo">LILO</h2>
468 <p>Zawsze lubiłem, jak system szybko się ładował i zawsze denerwowały mnie
469 długie opóźnienia powodowane przez boot loadery. W związku z czym, w swoim
470 LILO dokonałem następujących zmian:
472 <p>Po pierwsze, dodałem <code>lba32</code><code>compact</code>; po drugie,
473 <code>timeout</code> ustawiłem na <code>5</code>
474 (tj. pół sekundy); po trzecie, <code>install</code> ustawiłem
475 na <code>text</code>; po czwarte, dodałem opcję
476 <code>single-key</code>, która powoduje, że system jest wybierany przez
477 wciśnięcie pojedynczego klawisza; i po piąte, pozmieniałem wszędzie
478 <code>label</code> na jednoliterowe (konkretnie: <code>l</code> — linux,
479 <code>o</code> — linux z poprzednim jądrem, <code>s</code> — linux w trybie
480 single, <code>w</code> — windows). Mój cały plik <code>/etc/lilo.conf</code>
481 wygląda następująco:
483 <pre>
484 boot = /dev/hda
485 lba32
486 compact
487 prompt
488 install = text
489 timeout = 5
490 single-key
492 image = /boot/bzImage
493 root = /dev/hda5
494 label = l
495 read-only
497 image = /boot/bzImage~
498 root = /dev/hda5
499 label = o
500 read-only
502 image = /boot/bzImage
503 root = /dev/hda5
504 label = s
505 read-only
506 append = "single"
508 other = /dev/hda1
509 label = w
510 table = /dev/hda</pre>
512 <h2 id="other">Inne</h2>
514 <p>Jeszcze jedna mała sztuczka. Otóż czasami zdarza mi
515 się, że zamiast <code>ls nazwa_katalogu</code> wpisuje <code>less
516 nazwa_katalogu</code>. W ten sposób otrzymuje błąd z informacją, że
517 podany plik to katalog (jakie odkrywcze :P). Jednakże jest bardzo
518 łatwo nauczyć <code>less</code> listowania zawartości katalogu. W tym
519 celu otweiramy plik <code>/usr/bin/lesspipe.sh</code> i jego ostatnia
520 linijkę (tj. <code>lesspipe "$1"</code>) zamieniamy na:
522 <pre>
523 if [ -d "$1" ]; then
524 /bin/ls -lT0 --color=no -I '*~' -I '#*' -I '.#*' -- "$1"
525 else
526 lesspipe "$1"
527 fi</pre>
529 <p>Oczywiście można też skorzystać z <code>lesspipe</code> dostępnego
530 w pakiecie <a href="http://tinyapps.sf.net">Tiny Applications</a>, który ma też
531 różne inne ciekawe funkcje (np. ściąganie plików). Instalacja sprowadza się do
532 dodania linijki <code>$(eval $(/sciezka/do/lesspipe --install-lesspipe)</code>
533 do pliku profilu.
535 <h2>umask</h2>
536 <p>Ponieważ wyznaję zasadę, iż lepiej domyślnie nie dawać jakichś uprawnień i w razie konieczności to zmienić, w skryptach startowych na swoim koncie mam ustawione <code>umask 077</code>, przez co tworzone przeze mnie pliki mają ustawione zerowe uprawnienia dla grupy i innych użytkowników. Jednakże instalowanie jakichkolwiek programów jako root czy tworzenie paczek z taką maską może naprawdę zaboleć, a zwykłe polecenie <code>su</code> pozostawia umask taki jaki był. Z tego powodu, warto, na wszelki wypadek, do skryptów startowych roota dodać wpisy zmieniające umask na domyślny. Uruchamiamy jako root (niektóre linijki zapewne można pominąć):
537 <pre>
538 for f in shell bash zsh csh ksh; do
539 echo umask 022 >>~/.${f}rc
540 done</pre>
542 <h2>TMOUT</h2>
543 <p>Ciekawym pomysłem jest również ustawienie zmiennej <code>TMOUT</code>, w niektórych lub wszystkich skryptach startowych powłoki. Zasadniczo, jeżeli po czasie (w sekundach) określonym przez tą zmienną użytkownik nic nie wpisze do powłoki zostanie on automatycznie wylogowany. Osobiście używam tej opcji w dwóch miejscach: w powłoce super użytkownika oraz powłoce logowania zwykłego użytkownika (jako root, <i>mina86</i> podmieniamy na nazwę naszego użytkownika):
544 <pre>
545 for f in '' bash_ z; do
546 echo TMOUT=1200 >>~mina86/.${f}profile
547 done
549 for f in shell bash zsh csh ksh; do
550 echo TMOUT=1200 >>~/.${f}rc
551 done</pre>
553 <!-- COMMENT -->
554 <!-- date: 2008-02-28 08:17:10 -->
555 <!-- nick: SS -->
557 <p>Wszystko prawda, ale na desktopie. Tylko czy Slackware na desktopa to dobry wybór?<br />
558 W przypadku serwera produkcyjnego to już połowa rozwiązań nie ma najmniejszego sensu, a druga połowa może powodować problemy.
560 <!-- COMMENT -->
561 <!-- date: 2008-02-28 08:47:43 -->
562 <!-- nick: mina86 -->
563 <!-- nick_url: http://mina86.com -->
565 <p>Jak dla mnie bardzo dobry.
567 <!-- COMMENT -->
568 <!-- date: 2008-03-01 10:53:20 -->
569 <!-- nick: Porter3 -->
571 <p>mina86 — super art! tego mi brakowało. Pozdrawiam.
573 <!-- COMMENT -->
574 <!-- date: 2008-03-08 01:36:52 -->
575 <!-- nick: QbaMiszcz -->
576 <!-- nick_url: https://darmowazupa.blogspot.com -->
578 <p>Swietny artykul. Gratuluje.<br />
579 pzdr
581 <!-- COMMENT -->
582 <!-- date: 2009-02-16 22:59:53 -->
583 <!-- nick: bryn1u -->
585 <p>Gdzie to dodac ?
587 <p>for f in '' bash_ z; do
588 echo TMOUT=1200 &gt;&gt;~mina86/.${f}profila<br />
589 done
591 <p>for f in shell bash zsh csh ksh; do
592 echo TMOUT=1200 &gt;&gt;~/.${f}rc<br />
593 done
595 <!-- COMMENT -->
596 <!-- date: 2009-02-16 23:02:33 -->
597 <!-- nick: mina86 -->
598 <!-- nick_url: http://mina86.com -->
600 <p>Nie dodać, tylko wykonać.
602 <!-- COMMENT -->
603 <!-- date: 2009-02-17 14:01:48 -->
604 <!-- nick: bryn1u -->
606 <p>mina86 jedno pytanie jeszcze, pare osob mi mowilo ze to nie bezpiecznie nadawac takie chomdy jak podales wyzej czyli chmod 4750 /bin/costam tylko 750 dlaczego i czy prawda to ?
608 <!-- COMMENT -->
609 <!-- date: 2009-02-17 14:21:42 -->
610 <!-- nick: mina86 -->
611 <!-- nick_url: http://mina86.com -->
613 <p><code>/bin/su</code> musi mieć co najmniej prawa 04750 (zarówno
614 04700 jak i 0755 byłby bezużyteczny),
615 04750 w przypadku <code>/sbin/halt</code> i spółki
616 pozwala na uruchamianie tych programów przez użytkowników
617 w grupie bez konieczności uruchamiania su czy sudo.
619 <p>Czwórka na początku ustawia bit SUID. O SUID
620 i SGID <a href="/2008/systemy-operacyjne/">pisałem
621 w innej mojej notce</a> (sekcja „Prawa dostępu do plików,
622 bity SUID, SGID”).
624 <p>W skrócie chodzi o to, że
625 z ustawioną flagą SUID program jest uruchamiany tak jakby
626 uruchomił go jego właściciel, a nie osoba faktycznie to
627 czyniąca — w ten sposób, gdy <code>/sbin/halt</code> ma
628 ustawione prawa 04750 i własność na root:root to każda osoba
629 z grupy root może go uruchomić i program zadziała
630 poprawnie, gdyż dzięki SUID uzyska uprawnienia super
631 użytkownika — bez tej flagi narzekałby na brak
632 uprawnień.
634 <p>Generalnie z flagami SUID i SGID należy uważać, ale
635 z drugiej strony są one po to, aby z nich korzystać.
636 Przykładowo polecenia takie
637 jak <code>mount</code>, <code>ping</code>, <code>ping6</code>, <code>umount</code>
638 czy <code>Xorg</code> mają bit SUID ustawiony.
640 <!-- COMMENT -->
641 <!-- date: 2009-03-05 10:31:46 -->
642 <!-- nick: tomek -->
644 <p>Artykuł bardzo dobry. W „Kasowanie zbędny userów i grup” w pierwszym poleceniu są powielone nazwy użytkowników i lista nie odpowiada tym z następnego polecenia.
646 <!-- COMMENT -->
647 <!-- date: 2009-03-08 10:49:03 -->
648 <!-- nick: tomek -->
650 <p>Cofam co w poprzednim komentarzu napisałem. Pomyliłem grupy z użytkownikami.
652 <!-- COMMENT -->
653 <!-- date: 2014-01-25 21:41:44 -->
654 <!-- nick: mina86.com -->
655 <!-- nick_url: https://mina86.com/2014/slackware-post-install/ -->
657 <p>Slackware post install
658 <p>Same as my previous article written in Polish, this text will describe some steps
659 I take after installing Slackware Linux. I try to strike a balance between performance, security and usability, but not everything written here may work for everyone. You have been warned.