File: Shadow-Password-HOWTO

package info (click to toggle)
doc-linux-it 2000.01-1
  • links: PTS
  • area: main
  • in suites: woody
  • size: 8,136 kB
  • ctags: 19
  • sloc: perl: 249; makefile: 50; sh: 42
file content (2442 lines) | stat: -rw-r--r-- 75,792 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
  Linux Shadow Password HOWTO
  Michael H. Jackson mhjack@tscnet.com
  v1.3, 3 Aprile 1996

  Questo documento si propone di descrivere come ottenere, installare e
  configurare la Linux Password Shadow Suite. Esso spiega anche come
  ottenere e reinstallare altri software e demoni di rete che richiedono
  accesso alle password degli utenti. Questi ultimi software in realt
  non fanno parte della Shadow Suite. Questo documento contiene inoltre
  un esempio di programmazione per aggiungere il supporto shadow ad un
  programma. Risposte ad alcune delle domande pi frequenti sono incluse
  verso la fine di questo documento. Traduzione a cura di Isabella
  Ruocco <isacher@nettaxi.com>, ultima revisione 25 Maggio 1999.

  1.  Introduzione

  Questo  il Linux Shadow Password HOWTO. Questo documento descrive
  perch e come aggiungere il supporto shadow password su un sistema
  Linux. Sono inclusi anche alcuni esempi su come usare alcune delle
  caratteristiche della Shadow Suite.

  Quando si installa la Shadow Suite e quando si usano molti dei
  programmi di utilit, occorre essere collegati come root.  Quando si
  installa la Shadow Suite verranno effettuati dei cambiamenti al
  software di sistema, ed  fortemente consigliato fare copie di backup
  dei programmi come indicato. Consiglio anche di leggere e comprendere
  tutte le istruzioni prima di iniziare.


  1.1.  Cambiamenti dalla versione precedente


  Aggiunte:
     Aggiunta una sotto-sezione sul perch potreste non voler installare le shadow
     Aggiunta una sotto-sezione sull'aggiornamento del programma xdm
     Aggiunta una sezione su come far funzionare le caratteristiche della Shadow Suite
     Aggiunta una sezione contenente le domande pi frequenti (FAQ)

  Correzioni/Aggiornamenti:
     Correzione dei riferimenti html sul sunsite
     Correzione della sezione su wu-ftp in modo che tenga conto dell'aggiunta di -lshadow al Makefile
     Correzione di errori secondari di ortografia
     Cambiamento della sezione su wu-ftp in modo da supportare ELF
     Aggiornamenti sui problemi di sicurezza in diversi programmi di login
     Aggiornamenti sulla raccomandazione di Marek Michalkiewicz sulla Linux Shadow Suite




  1.2.  Nuove versioni di questo documento

  La pi recente versione di questo documento si pu anche ottenere via
  FTP anonimo da:

  sunsite.unc.edu

  /pub/Linux/docs/HOWTO/Shadow-Password-HOWTO



  oppure:

  /pub/Linux/docs/HOWTO/other-formats/Shadow-Password-HOWTO{-html.tar,ps,dvi}.gz



  o tramite il World Wide Web dal Linux Documentation Project Web Server
  <http://sunsite.unc.edu/mdw/linux.html>, alla pagina: Shadow-Password-
  HOWTO <http://sunsite.unc.edu/linux/HOWTO/Shadow-Password-HOWTO.html>
  o direttamente da me, <mhjack@tscnet.com>. Sar anche inviata al
  newsgroup: comp.os.linux.answers


  Questo documento  ora impacchettato con i pacchetti Shadow-AAMMGG.


  1.3.  Commenti e critiche

  Per favore inviate qualunque commento, aggiornamento, o suggerimenti a
  me: Michael H. Jackson <mhjack@tscnet.com>.  Prima ricevo feedback,
  prima posso aggiornare e correggere questo documento. Se avete dei
  problemi, per favore mandate una e-mail direttamente a me, dato che
  molto raramente rimango aggiornato con i newsgroup.


  2.  Perch "oscurare" il vostro file passwd?

  Come impostazione predefinita, la maggior parte delle attuali
  distribuzioni Linux non contengono la Shadow Suite installata. Questo
  riguarda la Slackware 2.3, Slackware 3.0 ed altre famose
  distribuzioni. Una delle ragioni di questo  che le informazioni sul
  copyright nella Shadow Suite originale non spiegavano chiaramente se
  si dovesse versare una somma per la ridistribuzione. Linux usa un
  Copyright GNU (a cui talvolta si fa riferimento come Copyleft) che
  permette alle persone di impacchettarlo in un supporto conveniente
  (come una distribuzione su CD-ROM) e di venderlo.

  L'attuale manutentore della Shadow Suite, Marek Michalkiewicz
  <marekm@i17linuxb.ists.pwr.wroc.pl> ha ricevuto il codice sorgente
  dall'autore originale con un copyright tipo BSD che permette la
  ridistribuzione. Ora che i problemi di copyright sono risolti, ci si
  aspetta che le future distribuzioni conterranno le shadow password
  come opzione predefinita.  Fino ad allora, dovrete installarvele voi.


  Se avete installato la vostra distribuzione da un CD-ROM, potrebbe
  succedere che, anche se la distribuzione non aveva la Shadow Suite
  installata, alcuni dei file che vi occorrono per installare la Shadow
  Suite siano sul CD-ROM.


  Comunque, le versioni 3.3.1, 3.3.1-2 della Shadow Suite e la shadow-mk
  potrebbero avere problemi di sicurezza con il loro programma di login
  e molti altri programmi SUID root che si trovano insieme ad esse, e
  non dovrebbero essere pi usate.

  Tutti i file necessari si possono ottenere via FTP anonimo o tramite
  il World Wide Web.

  Su un sistema Linux senza la Shadow Suite installata, le informazioni
  sugli utenti, comprese la password, sono contenute nel file
  /etc/passwd. La password viene conservata in un formato criptato. Se
  chiedete ad un esperto crittografo, comunque, lui o lei vi diranno che
  la password  in realt in un formato codificato piuttosto che
  criptato, perch quando viene usato crypt(3), viene preso un testo
  vuoto e la password  usata come chiave. Perci, da qui in poi, in
  questo documento, user il termine codificato.

  Tecnicamente ci si riferisce all'algoritmo usato per codificare il
  campo password come ad una funzione hash monodirezionale. Questa  un
  algoritmo che  facile eseguire in una direzione, ma molto difficile
  eseguire nella direzione opposta. Altre informazioni sull'algoritmo
  usato si possono trovare nel paragrafo 2.4 o nella vostra pagina di
  manuale per crypt(3).

  Quando un utente sceglie o gli viene assegnata una password, questa
  viene codificata con un valore generato casualmente detto seme
  ("salt"). Questo significa che una certa password pu essere
  memorizzata in 4096 modi diversi. Il valore del seme viene memorizzato
  insieme alla password codificata.

  Quando un utente si collega e fornisce una password, prima viene
  prelevato il seme dalla password codificata in memoria. Poi la
  password digitata viene codificata con tale valore del seme e quindi
  confrontata con la password codificata. Se c' corrispondenza l'utente
  viene autenticato.

   computazionalmente difficile (ma non impossibile), ricostruire la
  password originale dalla password codificata casualmente. Comunque, su
  ogni sistema con pi di qualche utente, almeno alcune delle password
  saranno parole comuni (o semplici variazioni di parole comuni).

  Gli "scassinatori" di sistemi informatici sono a conoscenza di questo,
  e semplicemente critteranno un vocabolario di parole e password comuni
  usando tutti i 4096 possibili valori di seme. Quindi confronteranno le
  password codificate nel vostro file /etc/passwd con il loro database.
  Una volta trovata una corrispondenza, avranno la password per un altro
  account. Questo viene chiamato attacco a vocabolario ed  uno dei
  metodi pi comuni per ottenere o diffondere accessi non autorizzati ad
  un sistema.

  Se ci pensate, una password di 8 caratteri codifica fino a 4096*13
  stringhe di caratteri. Perci un vocabolario di, diciamo, 400.000
  parole comuni, nomi, password e semplici variazioni star facilmente
  su un disco fisso da 4GB. Lo scassinatore dovr solo ordinarle e
  cercare le corrispondenze. Poich un disco fisso da 4GB si pu avere a
  meno di $1000.00,  ampiamente nelle possibilit di molti scassinatori
  di sistemi informatici.

  Inoltre, se uno scassinatore ottiene prima il file /etc/passwd, avr
  bisogno solo di codificare il vocabolario con i valori del seme
  effettivamente contenuti nel vostro file /etc/passwd. Questo metodo
  pu essere usato dall'adolescente medio con un paio di Megabyte liberi
  e un computer 486.

  Anche senza molto spazio su disco, utility come crack(1) possono di
  solito corrompere almeno un paio di password su un sistema con un
  discreto numero di utenti (assumendo che gli utenti del sistema
  possano scegliersi le loro password).

  Il file /etc/passwd contiene anche informazioni tipo gli user ID e i
  group ID che sono usati da molti programmi di sistema. Perci il file
  /etc/passwd deve rimanere accessibile a tutti. Se voi cambiaste il
  file /etc/passwd in modo che nessuno possa leggerlo, la prima cosa che
  notereste sarebbe che il comando ls -s ora mostrerebbe gli user ID
  invece dei nomi!

  La Shadow Suite risolve il problema spostando le password in un altro
  file (di solito /etc/shadow). Il file /etc/shadow viene impostato in
  modo che quasi nessuno possa leggerlo. Solo root potr leggere e
  scrivere il file /etc/shadow. Alcuni programmi (come xlock) non devono
  poter cambiare le password, occorre solo che le possano verificare.
  Questi programmi possono essere eseguiti SUID root oppure si pu
  creare un gruppo shadow a cui  permesso l'accesso solo in lettura al
  file /etc/shadow. Quindi i programmi possono essere eseguiti SGID
  shadow.


  Spostando le password nel file /etc/shadow, stiamo effettivamente
  impedendo allo scassinatore di avere accesso alle password codificate
  con cui eseguire l'attacco a vocabolario.

  Inoltre, la Shadow Suite aggiunge molte altre caratteristiche
  interessanti:

    un file di configurazione per impostare le caratteristiche
     predefinite di login (/etc/login.defs)

    utility per aggiungere, modificare e cancellare account di utenti e
     gruppi

    invecchiamento e scadenza delle password

    scadenza e blocco degli account

    password di gruppo "oscurate" (opzionale)

    password di doppia lunghezza (password da 16 caratteri)
     [SCONSIGLIATO]

    migliore controllo sulla scelta delle password degli utenti

    dial-up password

    programmi di autenticazione secondaria [SCONSIGLIATO]

  Installare la Shadow Suite contribuisce alla sicurezza del sistema ma
  ci sono anche molte altre cose che si possono fare per migliorare la
  sicurezza di un sistema Linux, e ci saranno alcuni Linux Security
  HOWTO che discutono altre misure di sicurezza ed aspetti correlati.

  Per informazioni aggiornate su altri aspetti della sicurezza in Linux,
  tra cui avvertimenti sulle debolezze note guardate la Linux Security
  home page. <http://bach.cis.temple.edu/linux/linux-security/>


  2.1.  Perch potreste NON voler "oscurare" il vostro file passwd

  Ci sono alcune circostanze e configurazioni in cui installare la
  Shadow Suite  NON sarebbe una buona idea:

    la macchina non contiene account di utenti

    la vostra macchina funziona su una LAN e usa NIS (Network
     Information Services) per ottenere e fornire nomi e password degli
     utenti alle altre macchine sulla rete (in realt si potrebbe fare,
     ma  oltre lo scopo di questo documento, e in realt non
     aumenterebbe comunque molto la sicurezza)

    la vostra macchina viene usata dai server dei terminali per
     verificare gli utenti con NFS (Network File System), NIS, o qualche
     altro metodo

    la vostra macchina esegue altro codice per validare gli utenti, e
     non c' nessuna versione shadow disponibile, e non avete il codice
     sorgente.


  2.2.  Formato del file /etc/passwd

  Un file /etc/passwd non "oscurato" ha il seguente formato:



  nomeutente:passwd:UID:GID:nome_completo:directory:shell




  Dove:

     nomeutente
        Il nome (di login) dell'utente

     passwd
        La password codificata

     UID
        Identificativo numerico dell'utente

     GID
        Identificativo numerico predefinito del gruppo

     nome_completo
        Il nome completo dell'utente - in realt questo campo viene
        chiamato campo GECOS (General Electric Comprehensive Operating
        System) e pu contenere altre informazioni invece del solo nome
        completo. I comandi Shadow e le pagine di manuale si riferiscono
        a questo campo come al campo commento.

     directory
        Home directory dell'utente (percorso completo)

     shell
        Shell di login dell'utente (percorso completo)

  Ad esempio:


       nomeutente:Npge08pfz4wuk:503:100:Nome Completo:/home/nomeutente:/bin/sh




  Dove Np  il seme e ge08pfz4wuk  la password codificata. La coppia
  seme/password codificata avrebbe anche potuto essere kbeMVnZM0oL7I e
  queste due sono esattamente la stessa password. Ci sono 4096 possibili
  codifiche per la stessa password (la password usata in questo esempio
   'password', una pessima password).

  Una volta che la Shadow Suite  installata, il file /etc/passwd invece
  conterr:


       nomeutente:x:503:100:Nome Completo:/home/nomeutente:/bin/sh




  La x nel secondo campo in questo caso  ora soltanto un segnaposto. Il
  formato del file /etc/passwd non  di fatto cambiato, solo che non
  contiene pi le password codificate. Questo significa che qualunque
  programma che legge il file /etc/passwd, ma in realt non ha bisogno
  di verificare le password, funzioner ancora correttamente.

  Le password sono ora situate nel file shadow (di solito il file
  /etc/shadow).



  2.3.  Formato del file shadow

  Il file /etc/shadow contiene le seguenti informazioni:


       nomeutente:passwd:ult:pu:deve:avv:scad:disab:riservato




  Dove:

     nomeutente
        Il nome dell'utente

     passwd
        La password codificata

     ult
        Giorni dal 1 Gennaio 1970 fino all'ultima modifica della
        password

     pu
        Giorni prima che la password possa essere cambiata

     deve
        Giorni dopo i quali la password deve essere cambiata

     avv
        Giorni prima della scadenza della password in cui l'utente viene
        avvisato

     scad
        Giorni dopo la scadenza della password in cui l'account viene
        disabilitato

     disab
        Giorni a partire dal 1 Gennaio 1970 dopo cui l'account verr
        disabilitato

     riservato
        Campo riservato

  Il precedente esempio potrebbe allora essere:


       nomeutente:Npge08pfz4wuk:9479:0:10000::::





  2.4.  Uno sguardo a crypt(3)

  Dalla pagina di manuale di crypt(3):

  "crypt  la funzione di crittaggio delle password. Si basa
  sull'algoritmo Data Encryption Standard con variazioni aventi lo scopo
  (tra le altre cose) di scoraggiare l'uso di implementazioni hardware
  per la ricerca della chiave.

  [La] chiave  la password digitata dall'utente. [La stringa codificata
   tutta vuota.]

  [Il] seme  una stringa di due caratteri scelta nell'insieme [a-z  A-Z
  0-9./].  Questa stringa viene usata per perturbare l'algoritmo in uno
  tra 4096 modi diversi.

  Prendendo i 7 bit meno significativi di ogni carattere della chiave,
  si ottiene una chiave di 56 bit.  Questa chiave di 56 bit viene usata
  per crittare ripetutamente una stringa costante (di solito una stringa
  costituita di zeri). Il valore restituito punta alla password
  crittata, un insieme di 13 caratteri ASCII stampabili (i primi due
  caratteri sono il seme stesso). Il valore di ritorno punta a dati
  statici il cui contenuto viene sovrascritto da ogni chiamata.

  Attenzione: lo spazio chiave consiste di 2**56 cio 7.2e16 possibili
  valori.  possibile effettuare ricerche esaustive di questo spazio
  chiave usando computer massivamente paralleli.  disponibile del
  software, come crack(1), che cercher la porzione di questo spazio
  chiave che viene generalmente usata dagli umani per le password.
  Perci la scelta delle password dovrebbe, come minimo, evitare parole
  e nomi comuni. Si raccomanda l'uso di un programma passwd(1) che,
  durante il processo di selezione, controlla se le password sono
  vulnerabili a manomissioni.

  Lo stesso algoritmo DES ha alcune arguzie che rendono l'uso
  dell'interfaccia crypt(3) una scelta inefficace per qualunque altra
  cosa che non sia l'autenticazione di password. Se state pensando di
  usare l'interfaccia crypt(3) per un progetto di crittografia non lo
  fate: prendete un buon libro sulla crittografia e una delle librerie
  DES ampiamente disponibili."

  Molte Shadow Suite contengono codice per raddoppiare la lunghezza
  della password a 16 caratteri. Esperti in DES sconsigliano questo,
  dato che la codifica viene semplicemente applicata prima alla met di
  sinistra e poi alla met di destra della password allungata. A causa
  del modo in cui funziona crypt, la password codificata di lunghezza
  doppia potrebbe risultare addirittura meno sicura. Inoltre,  meno
  facile che un utente riesca a ricordare una password da 16 caratteri.

   in via di sviluppo un lavoro che permetterebbe all'algoritmo di
  autenticazione di essere sostituito con qualcosa di pi sicuro, che
  supporti password pi lunghe (in particolare l'algoritmo MD5) e
  mantenga compatibilit con il metodo crypt.

  Se state cercando un buon libro sulla crittografia, vi consiglio:

          "Applied Cryptography: Protocols, Algorithms, and Source Code in C"
          di Bruce Schneier <schneier@chinet.com>
          ISBN: 0-471-59756-2




  3.  Ottenere la Shadow Suite

  3.1.  Storia della Shadow Suite per Linux

  NON USATE I PACCHETTI DI QUESTO CAPITOLO, HANNO PROBLEMI DI SICUREZZA

  La Shadow Suite originale  stata scritta da John F. Haugh II.

  Esistono diverse versioni che sono state usate su sistemi Linux:

    shadow-3.3.1  l'originale;

    shadow-3.3.1-2  la patch specifica per Linux fatta da Florian La
     Roche <flla@stud.uni-sb.de> e contiene alcuni ulteriori
     miglioramenti;


    shadow-mk  stata specificamente impacchettata per Linux.

  Il pacchetto shadow-mk contiene il pacchetto shadow-3.3.1 distribuito
  da John F. Haugh II con la patch shadow-3.3.1-2 installata, alcune
  correzioni fatte da Mohan Kokal <magnus@texas.net> che semplificano
  molto l'installazione, una patch di Joseph R.M. Zbiciak per login1.c
  (login.secure) che elimina i bachi di sicurezza -f, -h in /bin/login,
  e alcune altre patch di vario tipo.

  Il pacchetto shadow.mk era il pacchetto precedentemente raccomandato,
  ma dovrebbe essere sostituito a causa di problemi di sicurezza con il
  programma di login.

  Ci sono problemi di sicurezza con le versioni 3.3.1, 3.3.1-2 di
  Shadow, e con shadow-mk che coinvolgono il programma di login. Questo
  baco di login riguarda il mancato controllo di un nome di login.
  Questo provoca un overflow nel buffer, con conseguente crash o peggio.
  Si  diffusa la voce che questo overflow del buffer possa permettere a
  qualcuno con un account sul sistema di usare questo baco e le librerie
  condivise per ottenere l'accesso come root. Non discuter esattamente
  come questo sia possibile, perch ci sono molti sistemi Linux che ne
  sono affetti, ma sistemi con queste Shadow Suite installate e la
  maggior parte delle distribuzioni pre-ELF senza la Shadow Suite sono
  vulnerabili!

  Per avere maggiori informazioni su questo e altri aspetti della
  sicurezza su Linux, guardate la: Linux Security home page (Shared
  Libraries and login Program Vulnerability)
  <http://bach.cis.temple.edu/linux/linux-security/Linux-Security-
  FAQ/Linux-telnetd.html>


  3.2.  Dove prendere la Shadow Suite

  L'unica Shadow Suite raccomandata  ancora in beta testing, comunque
  le ultime versioni sono sicure in un ambiente di produzione e non
  contengono un programma di login vulnerabile.

  Il pacchetto usa la seguente convenzione di denominazione:


       shadow-AAMMGG.tar.gz




  dove AAMMGG  la data di rilascio della Suite.

  Questa versione alla fine diventer la Versione 3.3.3 quando verr
  rilasciata dal beta testing ed  mantenuta da Marek Michalkiewicz
  <marekm@i17linuxb.ists.pwr.wroc.pl>.   disponibile come: shadow-
  current.tar.gz
  <ftp://i17linuxb.ists.pwr.wroc.pl/pub/linux/shadow/shadow-
  current.tar.gz>.

  Sono stati anche organizzati i seguenti siti mirror:

    ftp://ftp.icm.edu.pl/pub/Linux/shadow/shadow-current.tar.gz

    ftp://iguana.hut.fi/pub/linux/shadow/shadow-current.tar.gz

    ftp://ftp.cin.net/usr/ggallag/shadow/shadow-current.tar.gz

    ftp://ftp.netural.com/pub/linux/shadow/shadow-current.tar.gz


  Dovreste usare la versione attualmente disponibile.

  NON dovreste usare una versione precedente alla shadow-960129 perch
  anche quelle hanno il problema di sicurezza di login discusso sopra.

  Quando questo documento fa riferimento alla Shadow Suite mi riferisco
  a questo pacchetto. Si assume che sia questo il pacchetto che state
  usando.

  Per riferimento, io ho usato shadow-960129 per fare queste istruzioni
  di installazione.

  Se stavate usando shadow-mk, dovreste fare l'aggiornamento a questa
  versione e ricompilare tutto ci che avevate originariamente
  compilato.


  3.3.  Cosa  incluso nella Shadow Suite

  La Shadow Suite contiene programmi sostitutivi per:

  su, login, passwd, newgrp, chfn, chsh, e id

  Il pacchetto contiene anche i nuovi programmi:

  chage, newusers, dpasswd, gpasswd, useradd, userdel, usermod,
  groupadd, groupdel, groupmod, groups, pwck, grpck, lastlog, pwconv, e
  pwunconv

  Inoltre  compresa la libreria: libshadow.a per scrivere e/o compilare
  programmi che necessitino di accedere alle password degli utenti.

  Sono anche comprese pagine di manuale per i programmi.

  C' anche un file di configurazione per il programma di login che sar
  installato come /etc/login.defs.


  4.  Compilare i programmi

  4.1.  Spacchettare l'archivio

  Il primo passo dopo aver ottenuto il pacchetto  spacchettarlo. Il
  pacchetto  nel formato tar (tape archive) e compresso usando gzip,
  perci prima spostatelo in /usr/src, poi digitate:


       tar -xzvf shadow-current.tar.gz




  Questo lo spacchetter nella directory: /usr/src/shadow-AAMMGG


  4.2.  Configurare con il file config.h

  La prima cosa che avete bisogno di fare  sovrascrivere il Makefile e
  il file config.h:


       cd /usr/src/shadow-AAMMGG
       cp Makefile.linux Makefile
       cp config.h.linux config.h


  Dovreste poi dare un'occhiata al file config.h. Questo file contiene
  definizioni per alcune delle opzioni di configurazione. Se state
  usando il pacchetto consigliato, vi consiglio, almeno per la prima
  volta, di disabilitare il supporto per il gruppo shadow.

  Come opzione predefinita, sono abilitate le password di gruppo
  "oscurate". Per disabilitarle, editate il file config.h, e cambiate il
  #define SHADOWGRP in #undef SHADOWGRP. Consiglio di disabilitarle per
  iniziare, e poi se volete davvero le password di gruppo e gli
  amministratori di gruppo, li abiliterete in seguito e ricompilerete.
  Se le lasciate abilitate, dovete creare il file /etc/gshadow.

  Abilitare l'opzione per le password lunghe NON  raccomandato, come
  discusso sopra.

  NON cambiate l'impostazione: #undef AUTOSHADOW

  L'opzione AUTOSHADOW era stata in origine progettata in modo che i
  programmi che ignoravano la presenza delle shadow password avrebbero
  continuato a funzionare. Questo in teoria suona bene, ma non funziona
  correttamente. Se abilitate questa opzione, e il programma viene
  eseguito da root, potrebbe chiamare getpwnam() da root, e in seguito
  riscrivere il campo modificato nel file /etc/passwd (con la password
  non pi "oscurata"). Fanno parte di tali programmi chfn e chsh (non
  potete aggirare questo problema semplicemente scambiando
  l'identificativo utente reale con quello effettivo prima di chiamare
  getpwnam() perch anche root potrebbe usare chfn e chsh).

  Lo stesso avvertimento vale anche se state compilando libc, che ha
  un'opzione SHADOW_COMPAT che fa la stessa cosa. NON dovrebbe essere
  usata. Se cominciate a rimettere le password codificate nel vostro
  file /etc/passwd, questo  il problema.

  Se state usando una versione di libc precedente alla 4.6.27, avrete
  bisogno di fare un paio di modifiche al config.h e al Makefile.  Per
  il config.h editate e cambiate:


       #define HAVE_BASENAME




  in:


       #undef HAVE_BASENAME




  Poi, nel Makefile, cambiate:


       SOBJS = smain.o env.o entry.o susetup.o shell.o sub.o mail.o motd.o sulog.o age.o tz.o hushed.o
       SSRCS = smain.c env.c entry.c setup.c shell.c pwent.c sub.c mail.c motd.c sulog.c shadow.c age.c pwpack.c rad64.c tz.c hushed.c




  in:


       SOBJS = smain.o env.o entry.o susetup.o shell.o sub.o mail.o motd.o sulog.o age.o tz.o hushed.o basename.o
       SSRCS = smain.c env.c entry.c setup.c shell.c pwent.c sub.c mail.c motd.c sulog.c shadow.c age.c pwpack.c rad64.c tz.c hushed.c basename.c

  Questi cambiamenti aggiungono il codice contenuto in basename.c che 
  contenuto in libc 4.6.27 e successive.


  4.3.  Fare copie di backup dei vostri programmi originali

  Sarebbe anche una buona idea rintracciare e fare copie di backup dei
  programmi che la Shadow Suite sostituir. Su un sistema Slackware 3.0
  questi sono:

    /bin/su

    /bin/login

    /usr/bin/passwd

    /usr/bin/newgrp

    /usr/bin/chfn

    /usr/bin/chsh

    /usr/bin/id

  Il pacchetto BETA ha una destinazione di salvataggio nel Makefile, ma
   commentata perch distribuzioni diverse mettono i programmi in posti
  diversi.

  Dovreste anche fare una copia di backup del vostro file /etc/passwd,
  ma state attenti a rinominarlo se lo mettete nella stessa directory
  cos non sovrascriverete il comando passwd.


  4.4.  Eseguire il make

   necessario che siate collegati come root per fare la maggior parte
  dell'installazione.

  Eseguite make per compilare gli eseguibili nel pacchetto:


       make all




  Potreste vedere l'avvertimento: rcsid defined but not used.  tutto a
  posto, succede solo perch l'autore sta usando un pacchetto con il
  controllo di versione.


  5.  Installazione

  5.1.  Tenete a portata di mano un disco di boot nel caso faceste
  qualche danno

  Se qualcosa va terribilmente male, sarebbe utile avere un disco di
  boot. Se avete la combinazione boot/root dalla vostra installazione,
  questa funzioner, altrimenti leggete il Bootdisk-HOWTO
  <http://sunsite.unc.edu/mdw/HOWTO/Bootdisk-HOWTO.html>, che descrive
  come fare un disco di boot.





  5.2.  Rimuovere le pagine di manuale duplicate

  Dovreste anche spostare le pagine di manuale che stanno per essere
  sostituite. Anche se siete abbastanza coraggiosi da installare la
  Shadow Suite senza fare backup, comunque vorrete togliere le vecchie
  pagine di manuale. Le nuove pagine di manuale normalmente non
  sovrascriveranno quelle vecchie perch quelle vecchie sono
  probabilmente compresse.

  Potete usare la combinazione del comando man -aW e del comando locate
  per spostare le pagine man che devono essere (ri)mosse.  generalmente
  pi facile trovare quali sono le vecchie pagine man prima di eseguire
  make install.

  Se state usando la distribuzione Slackware 3.0, allora le pagine man
  che volete rimuovere sono:

    /usr/man/man1/chfn.1.gz

    /usr/man/man1/chsh.1.gz

    /usr/man/man1/id.1.gz

    /usr/man/man1/login.1.gz

    /usr/man/man1/passwd.1.gz

    /usr/man/man1/su.1.gz

    /usr/man/man5/passwd.5.gz

  Ci potrebbero anche essere delle pagine man con lo stesso nome nelle
  sottodirectory /var/man/cat[1-9] che dovrebbero anch'esse essere
  cancellate.


  5.3.  Eseguire make install

  Siete ora pronti a digitare (fatelo come root)


       make install




  Questo installer i programmi nuovi e quelli sostitutivi e sistemer i
  permessi dei file. Installer anche le pagine man.

  Questo si occupa anche di installare i file include della Shadow Suite
  nelle posizioni corrette in /usr/include/shadow.

  Usando il pacchetto BETA dovete copiare manualmente il file login.defs
  nella sottodirectory /etc ed essere sicuri che solo root possa
  cambiarlo.


       cp login.defs /etc
       chmod 700 /etc/login.defs




  Questo file  il file di configurazione per il programma di login.
  Dovreste controllare e apportare i cambiamenti opportuni a questo file
  per il vostro particolare sistema. Qui  dove potete decidere da quale
  tty root pu collegarsi e stabilire altre opzioni di strategia di
  sicurezza (come predefinire la scadenza delle password).


  5.4.  Eseguire pwconv

  Il passo successivo  eseguire pwconv. Anche questo deve essere fatto
  da root, ed  meglio che venga fatto dalla sottodirectory /etc:


       cd /etc
       /usr/sbin/pwconv




  pwconv prende il vostro file /etc/passwd e ne estrae i campi allo
  scopo di creare due file: /etc/npasswd e /etc/nshadow.

  Viene anche fornito un programma pwunconv qualora aveste bisogno di
  ricostruire il file originale /etc/passwd dalla combinazione
  /etc/passwd e /etc/shadow.


  5.5.  Rinominare npasswd e nshadow

  Ora che avete eseguito pwconv avete creato i file /etc/npasswd e
  /etc/nshadow. Questi file devono essere copiati in /etc/passwd e
  /etc/shadow. Vogliamo anche fare una copia di backup del file
  originale /etc/passwd ed essere sicuri che solo root possa leggerlo.
  Metteremo la copia di backup nella home directory di root:


       cd /etc
       cp passwd ~passwd
       chmod 600 ~passwd
       mv npasswd passwd
       mv nshadow shadow




  Dovreste anche assicurarvi che la propriet e i permessi dei file
  siano corretti. Se state per usare X-Windows, i programmi xlock e xdm
  devono poter leggere il file shadow (ma non scriverlo).

  Ci sono due modi per fare questo. Potete impostare xlock come SUID
  root (xdm di solito viene comunque eseguito da root). Oppure potete
  fare in modo che il proprietario del file shadow sia root con un
  gruppo shadow, ma prima che lo facciate, siate sicuri di avere un
  gruppo shadow (guardate in /etc/group). Nessuno degli utenti del
  sistema dovrebbe in realt stare nel gruppo shadow.


       chown root.root passwd
       chown root.shadow shadow
       chmod 0644 passwd
       chmod 0640 shadow




  Il vostro sistema ha ora il file password "oscurato". Dovreste ora
  andare su un altro terminale virtuale e verificare che possiate
  collegarvi.

  Davvero, fatelo adesso!

  Se non potete, allora c' qualcosa di sbagliato! Per ritornare a un
  stato non "oscurato", fate ci che segue:


       cd /etc
       cp ~passwd passwd
       chmod 644 passwd




  Dovreste poi ripristinare nelle loro corrette posizioni i file che
  avevate salvato prima.


  6.  Altri programmi a cui potreste dover fare un aggiornamento o
  applicare una patch

  Anche se la shadow suite contiene programmi sostitutivi per la maggior
  parte dei programmi che hanno bisogno di accedere alle password, ci
  sono alcuni altri programmi su molti sistemi che richiedono accesso
  alle password.

  Se state usando una Distribuzione Debian  (o anche se non la usate),
  potete ottenere i sorgenti Debian per i programmi che devono essere
  ricompilati da: ftp://ftp.debian.org/debian/stable/source/

  Il resto di questa sezione si occupa di come aggiornare adduser,
  wu_ftpd, ftpd, pop3d, xlock, xdm e sudo in modo che supportino la
  shadow suite.

  Guardate il capitolo ``Aggiungere il supporto Shadow ad un programma
  C'' per una discussione su come aggiungere il supporto shadow a
  qualunque altro programma che ne abbia bisogno (anche se il programma
  deve allora essere eseguito SUID root o SGID shadow per poter
  veramente accedere al file shadow).


  6.1.  Il programma adduser della Slackware

  Le distribuzioni Slackware (e forse anche altre) contengono un
  programma interattivo per aggiungere utenti chiamato /sbin/adduser.
  Una versione shadow di questo programma si pu ottenere da
  ftp://sunsite.unc.edu/pub/Linux/system/Admin/accounts/adduser.shadow-1.4.tar.gz.

  Vi incoraggio ad usare i programmi che vengono forniti con la Shadow
  Suite (useradd, usermod, e userdel) invece del programma Slackware
  adduser. Imparare ad usarli richiede poco tempo, ma vale la pena fare
  lo sforzo perch avete molto pi controllo ed essi eseguono un
  appropriato lock dei file /etc/passwd e /etc/shadow (adduser non lo
  fa).

  Guardate il capitolo su ``Mettere al lavoro la Shadow Suite'' per
  maggiori informazioni.

  Ma se dovete proprio usarlo (adduser N.d.T.), ecco cosa dovete fare:








  tar -xzvf adduser.shadow-1.4.tar.gz
  cd adduser
  make clean
  make adduser
  chmod 700 adduser
  cp adduser /sbin





  6.2.  Il Server wu_ftpd

  La maggior parte dei sistemi Linux contengono il server wu_ftpd. Se la
  vostra distribuzione non ha la shadow installata, allora il vostro
  wu_ftpd non sar compilato per la shadow. wu_ftpd viene lanciato da
  inetd/tcpd come un processo di root. Se state eseguendo un vecchio
  demone wu_ftpd, vorrete aggiornarlo comunque perch quelli pi vecchi
  hanno un baco che permetterebbe che l'account root venisse compromesso
  (per maggiori informazione guardate la Linux security home page
  <http://bach.cis.temple.edu/linux/linux-security/Linux-Security-
  FAQ/Linux-wu.ftpd-2.4-Update.html>).

  Fortunatamente, avete solo bisogno di ottenere il codice sorgente e di
  ricompilarlo con le shadow abilitate.

  Se non state usando un sistema ELF, il server wu_ftp pu essere
  trovato su Sunsite come wu-ftp-2.4-fixed.tar.gz
  <ftp://sunsite.unc.edu/pub/Linux/system/Network/file-transfer/wu-
  ftpd-2.4-fixed.tar.gz>

  Una volta ottenuto il server, mettetelo in /usr/src, quindi digitate:


       cd /usr/src
       tar -xzvf wu-ftpd-2.4-fixed.tar.gz
       cd wu-ftpd-2.4-fixed
       cp ./src/config/config.lnx.shadow ./src/config/config.lnx




  Quindi editate ./src/makefiles/Makefile.lnx, e cambiate la riga:


       LIBES    = -lbsd -support




  in:


       LIBES    = -lbsd -support -lshadow




  Ora siete pronti ad eseguire lo script "build" e all'installazione:


       cd /usr/src/wu-ftpd-2.4-fixed
       /usr/src/wu-ftp-2.4.fixed/build lnx
       cp /usr/sbin/wu.ftpd /usr/sbin/wu.ftpd.old
       cp ./bin/ftpd /usr/sbin/wu.ftpd

  Questo usa il file di configurazione delle shadow di Linux, compila ed
  installa il server.

  Sul mio sistema Slackware 2.3 devo fare anche le seguenti cose prima
  di eseguire il build:


       cd /usr/include/netinet
       ln -s in_systm.h in_system.h
       cd -




  Sono stati riscontrati dei problemi nel compilare questo pacchetto
  sotto sistemi ELF, ma la versione Beta della prossima release funziona
  bene. Si pu trovare come wu-ftp-2.4.2-beta-10.tar.gz
  <ftp://tscnet.com/pub/linux/network/ftp/wu-ftpd-2.4.2-beta-10.tar.gz>

  Una volta ottenuto il server, mettetelo in /usr/src, quindi digitate:


       cd /usr/src
       tar -xzvf wu-ftpd-2.4.2-beta-9.tar.gz
       cd wu-ftpd-beta-9
       cd ./src/config




  Poi editate config.lnx, e cambiate:


       #undef SHADOW.PASSWORD




  in:


       #define SHADOW.PASSWORD




  Poi,


       cd ../Makefiles




  ed editate il file Makefile.lnx e cambiate:


       LIBES = -lsupport -lbsd # -lshadow




  in:



  LIBES = -lsupport -lbsd -lshadow




  Poi eseguite build ed installate:


       cd ..
       build lnx
       cp /usr/sbin/wu.ftpd /usr/sbin/wu.ftpd.old
       cp ./bin/ftpd /usr/sbin/wu.ftpd





  Notate che dovreste controllare il vostro file /etc/inetd.conf per
  essere sicuri che  qui che viene realmente realmente il vostro server
  wu.ftpd.  stato riscontrato che alcune distribuzioni mettono i server
  dei demoni in posti diversi, e quindi wu.ftpd in particolare potrebbe
  essere chiamato in qualche altro modo.


  6.3.  Ftpd standard

  Se state usando il server ftpd standard, vi consiglio di aggiornarlo
  al server wu_ftpd.  A parte il baco conosciuto discusso sopra,
  generalmente  considerato pi sicuro.

  Se insistete ad usare quello standard, o avete bisogno di supporto
  NIS, Sunsite ha ftpd-shadow-nis.tgz
  <ftp://sunsite.unc.edu/pub/Linux/system/Network/file-transfer/ftpd-
  shadow-nis.tgz>


  6.4.  pop3d (Post Office Protocol 3)

  Se avete bisogno di supportare il Post Office Protocol 3 (POP3), avete
  bisogno di ricompilare un programma pop3d.  pop3d  normalmente
  eseguito da inetd/tcpd come root.

  Ci sono due versioni disponibili da: pop3d-1.00.4.linux.shadow.tar.gz
  <ftp://sunsite.unc.edu/pub/Linux/system/Mail/pop/pop3d-1.00.4.linux.shadow.tar.gz>
  e pop3d+shadow+elf.tar.gz
  <ftp://sunsite.unc.edu/pub/Linux/system/Mail/pop/pop3d+shadow+elf.tar.gz>

  Entrambi questi sono abbastanza semplici da installare.


  6.5.  xlock

  Se installate la Shadow Suite e poi eseguite X Windows System e
  bloccate (lock) lo schermo senza aggiornare il vostro xlock, dovrete
  usare CNTL-ALT-Fx per passare ad un'altra tty, collegarvi, e uccidere
  il processo xlock (o usare CNTL-ALT-BS per uccidere il server X).
  Fortunatamente  abbastanza facile aggiornare il vostro programma
  xlock.

  Se state usando le Versioni 3.x.x di XFree86, probabilmente state
  usando xlockmore (che  un grande screen-saver in aggiunta a lock).
  Questo pacchetto supporta le shadow con una ricompilazione. Se avete
  un xlock precedente, vi consiglio di aggiornarlo a questo.

  xlockmore-3.5.tgz  disponibile su:
  <ftp://sunsite.unc.edu/pub/Linux/X11/xutils/screensavers/xlockmore-3.7.tgz>
  Fondamentalmente, questo  quello che avete bisogno di fare:

  Ottenere il file xlockmore-3.7.tgz e metterlo in /usr/src,
  spacchettarlo:


       tar -xzvf xlockmore-3.7.tgz




  Editare il file: /usr/X11R6/lib/X11/config/linux.cf, e cambiare la
  riga:


       #define HasShadowPasswd    NO
       in
       #define HasShadowPasswd    YES




  Quindi compilate gli eseguibili:


       cd /usr/src/xlockmore
       xmkmf
       make depend
       make




  Quindi spostare tutto al suo posto e aggiornare i proprietari ed i
  permessi dei file:


       cp xlock /usr/X11R6/bin/
       cp XLock /var/X11R6/lib/app-defaults/
       chown root.shadow /usr/X11R6/bin/xlock
       chmod 2755 /usr/X11R6/bin/xlock
       chown root.shadow /etc/shadow
       chmod 640 /etc/shadow




  Il vostro xlock ora funzioner correttamente.


  6.6.  xdm

  xdm  un programma che presenta uno schermo di login per X-Windows.
  Alcuni sistemi avviano xdm quando viene detto al sistema di andare ad
  uno specifico livello di esecuzione (vedere /etc/inittab).

  Con la Shadow Suite installata, xdm avr bisogno di essere aggiornato.
  Fortunatamente  abbastanza facile aggiornare il vostro programma xdm.

  xdm.tar.gz  disponibile su:
  <ftp://sunsite.unc.edu/pub/Linux/X11/xutils/xdm.tar.gz>

  Prendete il file xdm.tar.gz e mettetelo in /usr/src, quindi per
  spacchettarlo:


  tar -xzvf xdm.tar.gz




  Editate il file: /usr/X11R6/lib/X11/config/linux.cf, e cambiate la
  riga:


       #define HasShadowPasswd    NO
       in
       #define HasShadowPasswd    YES




  Quindi compilate gli eseguibili:


       cd /usr/src/xdm
       xmkmf
       make depend
       make




  Poi mettete tutto al suo posto:


       cp xdm /usr/X11R6/bin/




  xdm  eseguito da root perci non avete bisogno di cambiare i permessi
  del file.


  6.7.  sudo

  Il programma sudo permette ad un amministratore di sistema di lasciare
  che gli utenti eseguano programmi che normalmente richiederebbero
  accesso da root. Questo  comodo perch lascia limitato l'accesso di
  amministratore all'account root stesso, mentre permette agli utenti di
  fare cose tipo il mount dei dispositivi.

  sudo necessita di leggere le password perch verifica la password
  dell'utente quando viene invocato. sudo gi viene eseguito SUID root,
  perci accedere al file /etc/shadow non  un problema.

  sudo per la shadow suite,  disponibile su:
  <ftp://sunsite.unc.edu/pub/Linux/system/Admin/sudo-1.2-shadow.tgz>

  Attenzione: Quando installate sudo il vostro file /etc/sudoers sar
  sostituito con uno predefinito, perci avrete bisogno di farne una
  copia di backup se avete aggiunto qualcosa a quello predefinito
  (potreste anche editare il Makefile e rimuovere la riga che copia il
  file predefinito in /etc).

  Il pacchetto  gi predisposto per le shadow, perci tutto quello che
   richiesto  ricompilare il pacchetto (mettetelo in /usr/src):




  cd /usr/src
  tar -xzvf sudo-1.2-shadow.tgz
  cd sudo-1.2-shadow
  make all
  make install





  6.8.  imapd (pacchetto Pine E-Mail)

  imapd  un server e-mail simile a pop3d. imapd  incluso nel pacchetto
  Pine E-mail. La documentazione inclusa nel pacchetto afferma che nei
  sistemi Linux  predefinita l'opzione di includere il supporto shadow.
  Comunque, ho trovato che questo non  vero. Inoltre, la combinazione
  script di build/Makefile su questo pacchetto rende molto difficile
  aggiungere la libreria libshadow.a in tempo di compilazione, perci
  non sono riuscito ad aggiungere il supporto shadow per imapd.

  Se qualcuno  riuscito a farlo, per favore mi mandi una e-mail, ed io
  includer qui la soluzione.


  6.9.  pppd (Point-to-Point Protocol Server)

  Il server pppd pu essere impostato in modo che usi diversi tipi di
  autenticazione: Password Authentication Protocol (PAP) e Cryptographic
  Handshake Authentication Protocol (CHAP). Il server pppd di solito
  legge le stringhe contenenti le password che usa da /etc/ppp/chap-
  secrets e/o /etc/ppp/pap-secrets.  Se state usando questo
  comportamento predefinito di pppd, non  necessario reinstallare pppd.

  pppd vi permette anche di usare il parametro login (o su linea di
  comando, o nella configurazione del file options). Se viene data
  l'opzione login, il pppd user il file /etc/passwd per il nome utente
  e la password per il PAP. Questo, ovviamente, non funzioner pi ora
  che il nostro file shadow  "oscurato". Per quanto riguarda
  pppd-1.2.1d questo richiede aggiunta di codice per il supporto shadow.

  L'esempio dato nel prossimo capitolo consiste nell'aggiunta di
  supporto shadow a pppd-1.2.1d (una vecchia versione di pppd).

  pppd-2.2.0 contiene gi il supporto shadow.


  7.  Mettere al lavoro la Shadow Suite

  Questo capitolo tratta alcune cose che dovete sapere ora che avete la
  Shadow Suite installata sul vostro sistema. Ulteriori informazioni
  sono contenute nelle pagine di manuale per ogni comando.


  7.1.  Aggiungere, Modificare e Cancellare utenti

  La Shadow Suite ha aggiunto i seguenti comandi orientati a linea di
  comando per aggiungere, modificare, e cancellare utenti. Potreste
  anche aver installato il programma adduser.


  7.1.1.  useradd

  Il comando useradd pu essere usato per aggiungere utenti al sistema.
  Potete anche invocare questo comando per cambiare le impostazioni
  predefinite.

  La prima cosa che dovreste fare  esaminare le impostazioni
  predefinite e apportare cambiamenti specifici per il vostro sistema:


       useradd -D




  ______________________________________________________________________
  GROUP=1
  HOME=/home
  INACTIVE=0
  EXPIRE=0
  SHELL=
  SKEL=/etc/skel
  ______________________________________________________________________



  Le impostazioni predefinite probabilmente non sono quelle che volete,
  perci se cominciaste ad aggiungere utenti adesso dovreste specificare
  tutte le informazioni per ciascun utente. Comunque, possiamo e
  dovremmo cambiare i valori predefiniti.

  Sul mio sistema:

    Voglio che il gruppo predefinito sia 100

    Voglio che le password scadano ogni 60 giorni

    Non voglio bloccare un account se la password  scaduta

    Voglio che la shell predefinita sia /bin/bash

     Per fare questi cambiamenti userei:


       useradd -D -g100 -e60 -f0 -s/bin/bash





  Ora eseguendo useradd -D dar:

  ______________________________________________________________________
  GROUP=100
  HOME=/home
  INACTIVE=0
  EXPIRE=60
  SHELL=/bin/bash
  SKEL=/etc/skel
  ______________________________________________________________________



  Solo nel caso voleste saperlo, questi valori predefiniti sono
  contenuti nel file /etc/default/useradd.

  Ora potete usare useradd per aggiungere utenti al sistema. Per
  esempio, per aggiungere l'utente fred, usando i valori predefiniti,
  dovreste fare come segue:



  useradd -m -c "Fred Flintstone" fred




  Questo creer la voce seguente nel file /etc/passwd:


       fred:*:505:100:Fred Flintstone:/home/fred:/bin/bash




  E la voce seguente nel file /etc/shadow:


       fred:!:0:0:60:0:0:0:0




  Verr creata la home directory di fred e il contenuto di /etc/skel
  sar copiato l grazie all'opzione -m.

  Inoltre, dato che non abbiamo specificato un UID,  stato usato il
  primo disponibile.

  L'account di fred  stato creato, ma fred non sar ancora in grado di
  collegarsi fino a quando sbloccheremo l'account. Facciamo questo
  cambiando la password.


       passwd fred





  ______________________________________________________________________
  Changing password for fred
  Enter the new password (minimum of 5 characters)
  Please use a combination of upper and lower case letters and numbers.
  New Password: *******
  Re-enter new password: *******
  ______________________________________________________________________


  Che, in italiano, sarebbe qualcosa del genere:

  ______________________________________________________________________
  Cambio la password di fred
  Inserire la nuova password (minimo 5 caratteri)
  Per favore, utilizzare una combinazione di maiuscole, minuscole e cifre.
  Nuova Password: *******
  Reinserire la nuova password: *******
  ______________________________________________________________________


  Ora /etc/shadow conterr:


       fred:J0C.WDR1amIt6:9559:0:60:0:0:0:0




  E fred potr ora collegarsi ed usare il sistema. La cosa bella di
  useradd e degli altri programmi che vengono forniti con la Shadow
  Suite  che fanno cambiamenti ai file /etc/passwd e /etc/shadow in
  modo non interrompibile. Perci , se state aggiungendo un utente, e
  contemporaneamente un altro utente sta cambiando la sua password,
  entrambe le operazioni verranno eseguite correttamente.

  Dovreste usare i comandi forniti anzich editare direttamente
  /etc/passwd e /etc/shadow. Se voi editaste il file /etc/shadow, e un
  utente cambiasse la sua password mentre voi state editando, e poi voi
  salvaste il file che stavate editando, il cambiamento della password
  dell'utente andrebbe perso.

  Qui c' un piccolo script interattivo che aggiunge utenti usando
  useradd e passwd:



















































  ______________________________________________________________________
  #!/bin/bash
  #
  # /sbin/newuser - Uno script per aggiungere utenti al sistema usando i
  #                 comandi useradd e passwd della Shadow Suite.
  #
  # Scritto da Mike Jackson <mhjack@tscnet.com> come esempio per il
  # Linux Shadow Password Howto. Viene esplicitamente concesso il
  # permesso di usarlo e modificarlo.
  #
  # Questo potrebbe essere modificato per mostrare i valori predefiniti
  # e permettere modifiche simili al programma Slackware
  # adduser. Potrebbe essere modificato per non permettere voci stupide
  # (i.e. miglior controllo degli errori).
  #
  ##
  # Valori predefiniti per il comando useradd
  ##
  GROUP=100        # Gruppo predefinito
  HOME=/home       # Collocazione della home directory (/home/nomeutente)
  SKEL=/etc/skel   # Struttura tipica di una nuova directory home.
  INACTIVE=0       # Giorni tra la scadenza della password e la
                   # disabilitazione dell'account (0 = mai)
  EXPIRE=60        # Durata della password in giorni
  SHELL=/bin/bash  # Shell predefinita (intero percorso)
  ##
  #  Valori predefiniti per il comando passwd
  ##
  PASSMIN=0        # Giorni tra i cambiamenti della password
  PASSWARN=14      # Giorni prima che scada la password in cui viene
                   # dato un avviso
  ##
  #  Assicurarsi che sia root ad eseguire lo script.
  ##
  WHOAMI=`/usr/bin/whoami`
  if [ $WHOAMI != "root" ]; then
          echo "Devi essere root per aggiungere nuovi utenti!"
          exit 1
  fi
  ##
  #  Chiedere il nome utente e il nome completo.
  ##
  echo ""
  echo -n "Nome utente: "
  read USERNAME

  echo -n "Nome completo: "
  read FULLNAME

  #
  echo "Aggiunta dell'utente: $USERNAME."
  #
  # Notate che le "" intorno a $FULLNAME sono richieste perch
  # questo campo quasi sempre conterr almeno uno spazio, e senza
  # le " il comando useradd, quando raggiunge il carattere SPAZIO,
  # penserebbe che vi stiate spostando sul prossimo parametro.
  #
  /usr/sbin/useradd -c"$FULLNAME" -d$HOME/$USERNAME -e$EXPIRE \
          -f$INACTIVE -g$GROUP -m -k$SKEL -s$SHELL $USERNAME

  ##
  #  Impostare i valori predefiniti per le password
  ##
  /bin/passwd -n $PASSMIN -w $PASSWARN $USERNAME >/dev/null 2>&1
  ##
  #  Lascia che il comando passwd chieda la password (due volte)
  ##
  /bin/passwd $USERNAME

  ##
  #  Mostra ci che  stato fatto.
  ##
  echo ""
  echo "Voce di /etc/passwd:"
  echo -n "   "
  grep "$USERNAME:" /etc/passwd
  echo "Voce di /etc/shadow:"
  echo -n "   "
  grep "$USERNAME:" /etc/shadow
  echo "Riassunto dei risultati del comando passwd:"
  echo -n "   "
  passwd -S $USERNAME

  echo ""
  ______________________________________________________________________



  Usare uno script per aggiungere utenti  davvero molto pi preferibile
  che editare direttamente i file /etc/passwd o /etc/shadow o usare un
  programma come il programma Slackware adduser. Sentitevi liberi di
  usare e modificare questo script per il vostro particolare sistema.

  Per maggiori informazioni su useradd vedere la pagina di manuale in
  linea.


  7.1.2.  usermod

  Il programma usermod viene usato per modificare le informazioni su un
  utente.  Le opzioni sono simili a quelle del programma useradd.

  Diciamo che volete cambiare la shell di fred, fareste ci che segue:


       usermod -s /bin/tcsh fred




  Ora la voce di frednel file /etc/passwd sarebbe diventata questa:


       fred:*:505:100:Fred Flintstone:/home/fred:/bin/tcsh




  Facciamo in modo che l'account di fred scada il 09/15/97:


       usermod -e 09/15/97 fred




  Ora la voce di fred in /etc/shadow diventa:


       fred:J0C.WDR1amIt6:9559:0:60:0:0:10119:0


  Per maggiori informazioni sul comando usermod vedere la pagina di
  manuale in linea.


  7.1.3.  userdel

  userdel fa proprio quello che vi aspettate, cancella l'account
  dell'utente.  Semplicemente usate:


       userdel -r nomeutente




  Il -r fa s che tutti i file nella home directory dell'utente vengano
  cancellati insieme alla home directory stessa. I file collocati in
  altri file system dovranno essere cercati e cancellati manualmente.

  Se volete semplicemente bloccare l'account invece che cancellarlo,
  usate piuttosto il comando passwd.


  7.2.  Il comando passwd e l'invecchiamento delle password

  Il comando passwd ha l'ovvio uso di cambiare le password.  Inoltre,
  viene usato dall'utente root per:

    Bloccare (lock) e sbloccare (unlock) gli account (-l e -u)

    Impostare il massimo numero di giorni per cui una password rimane
     valida (-x)

    Impostare il minimo numero di giorni tra cambiamenti della password
     (-n)

    Impostare il numero di giorni di avviso che una password sta per
     scadere (-w)

    Impostare il numero di giorni dopo la scadenza della password prima
     che l'account venga bloccato (-i)

    Permettere la visualizzazione delle informazioni di account in un
     formato pi chiaro -S)

  Per esempio, diamo ancora un'occhiata a fred


       passwd -S fred
       fred P 03/04/96 0 60 0 0




  Questo significa che la password di fred  valida, che  stata cambi
  ata l'ultima volta il 03/04/96, che pu essere cambiata in qualunque
  momento, scade dopo 60 giorni, fred non sar avvertito e l'account non
  verr disabilitato quando la password scadr.

  Questo semplicemente significa che se fred si collega dopo che la
  password scade, al collegamento gli verr richiesta una nuova
  password.

  Se decidiamo che vogliamo avvertire fred 14 giorni prima che la sua
  password scada e inattivare il suo account 14 giorni dopo che lui la
  lascia scadere, dovremo fare quanto segue:
       passwd -w14 -i14 fred




  Ora fred  diventato:


       fred P 03/04/96 0 60 14 14




  Per ulteriori informazioni sul comando passwd vedere le pagine di man
  uale in linea.


  7.3.  Il file login.defs

  Il file /etc/login  il file di configurazione per il programma login
  e anche per l'intera Shadow Suite.

  /etc/login contiene impostazioni che riguardano dall'aspetto del
  prompt fino alla scadenza predefinita quando un utente cambia la sua
  password.

  Il file /etc/login.defs  abbastanza ben documentato dai commenti
  contenuti al suo interno. Comunque, ci sono alcune cose da notare:

    Contiene alcuni flag che possono essere attivati o disattivati che
     determinano il numero di collegamenti che vengono effettuati.

    Contiene puntatori ad altri file di configurazione.

    Contiene valori predefiniti per cose tipo l'invecchiamento delle
     password.

  Dalla lista sopra potete vedere che questo  un file abbastanza
  importante, e dovreste essere sicuri che sia presente, e che le
  impostazioni siano quelle che desiderate per il vostro sistema.


  7.4.  Password di gruppo

  Il file /etc/groups pu contenere password che permettono ad un utente
  di diventare membro di un particolare gruppo. Questa funzione 
  abilitata se definite la costante SHADOWGRP nel file /usr/src/shadow-
  AAMMGG/config.h.

  Se definite questa costante e poi compilate, dovete creare un file
  /etc/gshadow che contenga le password del gruppo e le informazioni di
  amministrazione del gruppo.

  Quando avete creato /etc/shadow, avete usato un programma chiamato
  pwconv, non c' nessun programma equivalente per creare il file
  /etc/gshadow, ma in realt non importa, se ne occupa lui stesso.

  Per creare il file iniziale /etc/gshadow fate come segue:


       touch /etc/gshadow
       chown root.root /etc/gshadow
       chmod 700 /etc/gshadow



  Una volta che create nuovi gruppi, questi verranno aggiunti ai file
  /etc/group e /etc/gshadow. Se voi modificate un gruppo aggiungendo o
  togliendo utenti o cambiando la password del gruppo, il file
  /etc/gshadow verr modificato.

  I programmi groups, groupadd, groupmod, e groupdel sono forniti come
  parte della Shadow Suite per modificare i gruppi.

  Il formato del file /etc/group  quello che segue:


       nomegruppo:!:GID:membro,membro,...




  Dove:

     nomegruppo
        Il nome del gruppo

     !  Il campo che normalmente contiene la password, che ora  per
        situata nel file /etc/gshadow

     GID
        L'identificativo numerico del gruppo

     membro
        Elenco dei membri del gruppo

  Il formato del file /etc/gshadow  quello che segue:


       nomegruppo:password:ammin,ammin,...:membro,membro,...




  Dove:

     nomegruppo
        Il nome del gruppo

     password
        La password del gruppo codificata

     ammin
        Elenco degli amministratori del gruppo

     membro
        Elenco dei membri del gruppo

  Il comando gpasswd  usato solo per aggiungere o togliere
  amministratori e membri a o da un gruppo. Solo root o qualcuno
  appartenente all'elenco degli amministratori pu aggiungere o togliere
  membri del gruppo.

  La password del gruppo pu essere modificata con il comando passwd da
  root o chiunque appartenga alla lista degli amministratori del gruppo.

  Nonostante il fatto che attualmente non ci sia una pagina di manuale
  per gpasswd, digitando gpasswd senza alcun parametro si ottiene un
  elenco di opzioni.  abbastanza semplice capire come funziona il tutto
  una volta che avete capito i formati dei file e i concetti.


  7.5.  Programmi per il controllo della consistenza



  7.5.1.  pwck

  Il programma pwck viene fornito per offrire un controllo di
  consistenza sui file /etc/passwd e /etc/shadow. Esso controller ogni
  nome utente e verificher che abbia quanto segue:

    il corretto numero di campi

    un nome utente univoco

    un valido identificatore di utente e di gruppo

    un valido gruppo primario

    una valida home directory

    una valida shell di login

  Dar anche un avvertimento per ogni account privo di password.

   una buona idea eseguire pwck dopo aver installato la Shadow Suite. 
  anche una buona idea eseguirlo periodicamente, magari una volta alla
  settimana o al mese. Se usate l'opzione -r, potete usare cron per
  eseguirlo con una cadenza regolare e riceverne per posta il rapporto.


  7.5.2.  grpck

  grpck  il programma per il controllo della consistenza per i file
  /etc/group and /etc/gshadow. Esso esegue i seguenti controlli:

    il corretto numero di campi

    un nome del gruppo univoco

    elenco valido di membri ed amministratori

  Dispone anche dell'opzione -r per rapporti automatizzati.


  7.6.  Password di dial-up

  Le password di dial-up sono un altro strumento opzionale di difesa per
  i sistemi che permettono l'accesso tramite una linea telefonica
  commutata. Se avete un sistema che permette a molte persone di
  connettersi localmente o tramite una rete, ma volete porre dei limiti
  su chi possa accedere per telefono e connettersi, allora le password
  di dial-up fanno al caso vostro. Per abilitare le password di dial-up,
  dovete editare il file /etc/login.defs ed assicurarvi che
  DIALUPS_CHECK_ENAB sia impostato a yes.

  Due sono i file che contengono informazioni di dial-up: /etc/dialups
  che contiene le tty (una per riga, senza la parte iniziale /dev). Se
  una tty compare nella lista, allora vengono effettuati i controlli di
  dial-up.

  Il secondo file  /etc/d_passwd. Questo file contiene il percorso
  completo di una shell, seguito da una password opzionale.

  Se un utente si collega attraverso una tty elencata in /etc/dialups, e
  la sua shell  presente nel file /etc/d_passwd gli sar permesso
  l'accesso solo se fornir la corretta password.
  Un altro utile scopo per usare password di dial-up potrebbe essere
  quello di impostare una linea che permetta solo un certo tipo di
  connessione (come una connessione PPP o UUCP).  Se un utente cerca di
  ottenere un altro tipo di connessione (i.e. un elenco di shell), deve
  conoscere una password per usare la linea.

  Prima che possiate usare la caratteristica del dial-up, dovete creare
  i file.

  Viene fornito il comando dpasswd per assegnare password per le shell
  nel file /etc/d_passwd. Vedere la pagina di manuale per ulteriori
  informazioni.


  8.  Aggiungere il supporto shadow ad un programma C

  Aggiungere il supporto shadow ad un programma  in realt abbastanza
  semplice. L'unico problema  che il programma deve essere eseguito da
  root (o SUID root) in modo che il programma possa accedere al file
  /etc/shadow.

  Questo presenta un grande problema: occorre seguire una condotta di
  programmazione molto attenta quando si creano programmi SUID. Per
  esempio, se un programma ha un comando che invoca una shell, questa
  non deve essere eseguita con i diritti di root anche se il programma 
  SUID root.

  Per aggiungere il supporto shadow ad un programma in modo che possa
  controllare le password, ma per il resto non necessita di essere
  eseguito da root,  molto pi sicuro eseguire il programma SGID
  shadow. Il programma xlock ne  un esempio.

  Nell'esempio fatto prima, pppd-1.2.1d gi viene eseguito SUID root,
  perci aggiungere il supporto shadow non dovrebbe rendere il programma
  pi vulnerabile.


  8.1.  File di intestazione (header)

  I file di intestazione (header) dovrebbero stare in
  /usr/include/shadow. Ci dovrebbe anche essere un
  /usr/include/shadow.h, ma sarebbe un link simbolico a
  /usr/include/shadow/shadow.h.

  Per aggiungere il supporto shadow ad un programma, dovete includere i
  file di intestazione:

  #include <shadow/shadow.h>
  #include <shadow/pwauth.h>



  Potrebbe essere una buona idea usare le direttive del compilatore in
  modo da condizionare la compilazione del codice shadow (io lo faccio
  nell'esempio che segue).


  8.2.  La libreria libshadow.a

  Quando avete installato la Shadow Suite il file libshadow.a  stato
  creato ed installato in /usr/lib.

  Quando si compila il supporto shadow in un programma, bisogna dire al
  linker di includere la libreria libshadow.a.


  Questo viene fatto da:


       gcc program.c -o program -lshadow




  Comunque, come vedremo nell'esempio che segue, la maggior parte dei
  programmi di grandi dimensioni usa un Makefile, che di solito ha una
  variabile chiamata LIBS=... che noi modificheremo.


  8.3.  La struttura Shadow

  La libreria libshadow.a usa una struttura chiamata  spwd per le
  informazioni che preleva dal file /etc/shadow. Questa  la definizione
  della struttura spwd dal file di intestazione
  /usr/include/shadow/shadow.h:

  ______________________________________________________________________
  struct spwd
  {
    char *sp_namp;                /* nome di login  */
    char *sp_pwdp;                /* password codificata */
    sptime sp_lstchg;             /* data dell'ultimo cambiamento */
    sptime sp_min;                /* minimo numero di giorni tra cambiamenti */
    sptime sp_max;                /* massimo numero di giorni tra cambiamenti */
    sptime sp_warn;               /* numero di giorni di avvertimento prima
                                     che scada la password */
    sptime sp_inact;              /* numero di giorni dopo la scadenza della
                                     password prima che l'account venga
                                     disabilitato */
    sptime sp_expire;             /* giorni dal 1/1/70 fino alla scadenza
                                     dell'account */
    unsigned long sp_flag;        /* riservato per uso futuro */
  };
  ______________________________________________________________________



  La Shadow Suite pu mettere altre cose nel campo sp_pwdp proprio a
  fianco della password codificata. Il campo della password potrebbe
  contenere:


       nomeutente:Npge08pfz4wuk;@/sbin/extra:9479:0:10000::::




  Questo significa che, oltre alla password, dovrebbe essere chiamato il
  programma /sbin/extra per ulteriori autenticazioni. Il programma
  chiamato ricever il nome utente e un'opzione che indica perch viene
  chiamato. Vedere il file /usr/include/shadow/pwauth.h e il codice
  sorgente di pwauth.c per ulteriori informazioni.

  Ci che voglio dire  che dovremmo usare la funzione pwauth per
  eseguire la vera autenticazione, dato che si occuper anche
  dell'autenticazione secondaria. L'esempio sotto fa proprio questo.

  L'autore della Shadow Suite fa presente che poich molti dei programmi
  esistenti non la usano potrebbe essere rimossa o cambiata dalle future
  versioni della Shadow Suite.


  8.4.  Funzioni Shadow

  Il file shadow.h contiene anche i prototipi delle funzioni contenute
  nella libreria libshadow.a:

  ______________________________________________________________________
  extern void setspent __P ((void));
  extern void endspent __P ((void));
  extern struct spwd *sgetspent __P ((__const char *__string));
  extern struct spwd *fgetspent __P ((FILE *__fp));
  extern struct spwd *getspent __P ((void));
  extern struct spwd *getspnam __P ((__const char *__name));
  extern int putspent __P ((__const struct spwd *__sp, FILE *__fp));
  ______________________________________________________________________



  La funzione che useremo nell'esempio : getspnam che ritorna una
  struttura spwd per il nome passato per argomento.


  8.5.  Esempio

  Questo  un esempio di aggiunta del supporto shadow ad un programma
  che ne ha bisogno, ma non lo possiede.

  Questo esempio usa il Point-to-Point Protocol Server (pppd-1.2.1d),
  che ha una modalit in cui esegue l'autenticazione PAP usando i nomi e
  le password degli utenti dal file /etc/passwd anzich dai file PAP o
  CHAP.  Non dovreste aver bisogno di aggiungere questo codice a
  pppd-2.2.0 perch c' gi.

  Questa caratteristica del pppd probabilmente non  molto usata, ma se
  avete installato la Shadow Suite, non funzioner comunque perch le
  password non si trovano pi in /etc/passwd.

  Il codice per l'autenticazione degli utenti sotto pppd-1.2.1d si trova
  nel file /usr/src/pppd-1.2.1d/pppd/auth.c.

  Il seguente codice deve essere aggiunto all'inizio del file dove si
  trovano tutte le altre direttive #include. Abbiamo racchiuso gli
  #include tra direttive condizionali (i.e. vengono presi in
  considerazione solo se stiamo compilando per il supporto shadow).


  ______________________________________________________________________
  #ifdef HAS_SHADOW
  #include <shadow.h>
  #include <shadow/pwauth.h>
  #endif
  ______________________________________________________________________



  Il passo successivo consiste nel modificare il codice vero e proprio.
  Stiamo ancora apportando cambiamenti al file auth.c.

  Funzione auth.c prima delle modifiche:








  ______________________________________________________________________
  /*
   * login - Controlla il nome e la password dell'utente nel database delle
   * password di sistema, e permette il login se l'utente  OK.
   *
   * restituisce:
   *      UPAP_AUTHNAK: Login fallito.
   *      UPAP_AUTHACK: Login riuscito.
   * In entrambi i casi, msg punta al messaggio appropriato.
   */
  static int
  login(user, passwd, msg, msglen)
      char *user;
      char *passwd;
      char **msg;
      int *msglen;
  {
      struct passwd *pw;
      char *epasswd;
      char *tty;

      if ((pw = getpwnam(user)) == NULL) {
          return (UPAP_AUTHNAK);
      }
       /*
       * XXX Se non c' nessuna password, li lascia collegare senza.
       */
      if (pw->pw_passwd == '\0') {
          return (UPAP_AUTHACK);
      }

      epasswd = crypt(passwd, pw->pw_passwd);
      if (strcmp(epasswd, pw->pw_passwd)) {
          return (UPAP_AUTHNAK);
      }

      syslog(LOG_INFO, "user %s logged in", user);

      /*
       * Scrive una voce wtmp per questo utente.
       */
      tty = strrchr(devname, '/');
      if (tty == NULL)
          tty = devname;
      else
          tty++;
      logwtmp(tty, user, "");         /* Aggiunge una voce di login al wtmp */
      logged_in = TRUE;

      return (UPAP_AUTHACK);
  }
  ______________________________________________________________________



  La password dell'utente viene messa in pw->pw_passwd, cos tutto
  quello che dobbiamo fare in realt  aggiungere la funzione getspnam.
  Questa metter la password in spwd->sp_pwdp.

  Aggiungeremo la funzione pwauth per eseguire l'autenticazione vera e
  propria.  Questa eseguir automaticamente l'autenticazione secondaria
  se il file shadow  impostato per farlo.

  Funzione auth.c dopo le modifiche per il supporto shadow:


  ______________________________________________________________________
  /*
   * login - Controlla il nome e la password dell'utente nel database delle
   * password di sistema, e permette il login se l'utente  OK.
   *
   * Questa funzione  stata modificata in modo da supportare la
   * Linux Shadow Password Suite se USE_SHADOW  definito.
   *
   * restituisce:
   *      UPAP_AUTHNAK: Login fallito.
   *      UPAP_AUTHACK: Login riuscito.
   * In entrambi i casi, msg punta al messaggio appropriato.
   */
  static int
  login(user, passwd, msg, msglen)
      char *user;
      char *passwd;
      char **msg;
      int *msglen;
  {
      struct passwd *pw;
      char *epasswd;
      char *tty;

  #ifdef USE_SHADOW
      struct spwd *spwd;
      struct spwd *getspnam();
  #endif

      if ((pw = getpwnam(user)) == NULL) {
          return (UPAP_AUTHNAK);
      }

  #ifdef USE_SHADOW
          spwd = getspnam(user);
          if (spwd)
                  pw->pw_passwd = spwd->sp-pwdp;
  #endif

       /*
       * XXX Se non c' nessuna password, NON li lascia collegare senza.
       */
      if (pw->pw_passwd == '\0') {
          return (UPAP_AUTHNAK);
      }
  #ifdef HAS_SHADOW
      if ((pw->pw_passwd && pw->pw_passwd[0] == '@'
           && pw_auth (pw->pw_passwd+1, pw->pw_name, PW_LOGIN, NULL))
          || !valid (passwd, pw)) {
          return (UPAP_AUTHNAK);
      }
  #else
      epasswd = crypt(passwd, pw->pw_passwd);
      if (strcmp(epasswd, pw->pw_passwd)) {
          return (UPAP_AUTHNAK);
      }
  #endif

      syslog(LOG_INFO, "user %s logged in", user);

      /*
       * Scrive una voce wtmp per questo utente.
       */
      tty = strrchr(devname, '/');
      if (tty == NULL)
          tty = devname;
      else
          tty++;
      logwtmp(tty, user, "");        /* Aggiunge una voce di login al wtmp */
      logged_in = TRUE;

      return (UPAP_AUTHACK);
  }
  ______________________________________________________________________



  Un attento esame riveler che abbiamo fatto un'altra modifica. La
  versione originale permetteva l'accesso (restituiva UPAP_AUTHACK) se
  non c'era NESSUNA password nel file /etc/passwd. Questo non  una
  buona cosa, perch un uso comune di questa caratteristica di login 
  quello di usare un account che permetta l'accesso al processo ppp e
  quindi confrontare il nome utente e la password forniti da PAP con il
  nome utente nel file /etc/passwd e la password nel file /etc/shadow.

  Perci se abbiamo impostato la versione originale in modo da eseguire,
  al posto della shell per un utente, ad esempio ppp, allora chiunque
  potrebbe ottenere una connessione ppp impostando la sua PAP con utente
  ppp e senza password.

  Abbiamo risolto questo anche restituendo UPAP_AUTHNAK invece che
  UPAP_AUTHACK nel caso in cui il campo password fosse vuoto.

   abbastanza interessante il fatto che pppd-2.2.0 abbia lo stesso
  problema.

  Poi abbiamo bisogno di modificare il Makefile in modo che avvengano
  due cose: USE_SHADOW deve essere definita, e libshadow.a deve essere
  aggiunta al processo di link.

  Editate il Makefile, e aggiungete:


       LIBS = -lshadow




  Quindi troviamo la riga:


       COMPILE_FLAGS = -I.. -D_linux_=1 -DGIDSET_TYPE=gid_t




  E la cambiamo in:


       COMPILE_FLAGS = -I.. -D_linux_=1 -DGIDSET_TYPE=gid_t -DUSE_SHADOW




  Ora eseguite il make ed installate.


  9.  Domande poste frequentemente (FAQ)

  D: Ero abituato a controllare con quale tty root potesse collegarsi
  usando il file /etc/securettys, ma sembra non funzionare pi, cosa 
  successo?
  R: Il file /etc/securettys non fa assolutamente nulla ore che la
  Shadow Suite  installata. Le tty che root pu usare sono ora situate
  nel file di configurazione di login /etc/login.defs. La voce in questo
  file potrebbe puntare ad un altro file.


  D: Ho installato la Shadow Suite, ma ora non posso collegarmi, cosa ho
  dimenticato?

  R: Probabilmente hai installato i programmi Shadow, ma non hai
  eseguito pwconv o hai dimenticato di copiare /etc/npasswd in
  /etc/passwd e /etc/nshadow in /etc/shadow.  Inoltre, potresti aver
  bisogno di copiare login.defs in /etc.


  D: Nella sezione su xlock, si dice di cambiare il gruppo proprietario
  del file /etc/shadow e di farlo diventare shadow. Non ho un gruppo
  shadow, cosa faccio?

  R: Puoi aggiungerne uno. Semplicemente edita il file /etc/group, e
  inserisci una riga per il gruppo shadow. Devi assicurarti che il
  numero del gruppo non sia usato da un altro gruppo, e devi inserirlo
  prima della voce nogroup. Oppure puoi semplicemente impostare SUID
  root xlock.


  D: Esiste una mailing list per la Linux Shadow Password Suite?

  R: S, ma  per lo sviluppo e il beta testing della prossima Shadow
  Suite per Linux.  Puoi iscriverti alla lista mandando una e-mail a:
  shadow-list-request@neptune.cin.net avente per subject: subscribe.  La
  lista si occupa in realt delle release Linux shadow-AAMMGG.  Dovresti
  iscriverti se vuoi essere coinvolto in ulteriori sviluppi o se
  installi la Suite sul tuo sistema e vuoi avere informazioni sulle pi
  recenti release.


  D: Ho installato la Shadow Suite, ma quando uso il comando userdel,
  ottengo: "userdel: cannot open shadow group file", (in italiano:
  "userdel: non posso aprire il file shadow group"); cosa ho sbagliato?

  R: Hai compilato la Shadow Suite con l'opzione SHADOWGRP abilitata, ma
  non hai un file /etc/gshadow. Devi o editare il file config.h e
  ricompilare, oppure creare un file /etc/group. Vedere la sezione sui
  gruppi shadow.


  D: Ho installato la Shadow Suite ma ho di nuovo le password codificate
  nel mio file /etc/passwd, cosa c' che non va?

  R: O hai abilitato l'opzione AUTOSHADOW nel file Shadow config.h,
  oppure il tuo libc  stato compilato con l'opzione SAHDOW_COMPAT. Devi
  capire qual  il problema, e ricompilare.


  10.  Messaggio di copyright

  The Linux Shadow Password HOWTO is Copyright (c) 1996 Michael H.
  Jackson.

  Permission is granted to make and distribute verbatim copies of this
  document provided the copyright notice and this permission notice are
  preserved on all copies.

  Permission is granted to copy and distribute modified versions of this
  document under the conditions for verbatim copies above, provided a
  notice clearly stating that the document is a modified version is also
  included in the modified document.

  Permission is granted to copy and distribute translations of this
  document into another language, under the conditions specified above
  for modified versions.

  Permission is granted to convert this document into another media
  under the conditions specified above for modified versions provided
  the requirement to acknowledge the source document is fulfilled by
  inclusion of an obvious reference to the source document in the new
  media. Where there is any doubt as to what defines 'obvious' the
  copyright owner reserves the right to decide.

  Ovvero (ni noti che l'unica licenza valida  quella in lingua
  originale):

  Il Linux Shadow Password HOWTO  Copyright (c) 1996 di Michael H.
  Jackson.

   concesso il permesso di fare e distribuire copie testuali di questo
  documento, a patto che la nota sul copyright e questa nota di permesso
  siano mantenute su tutte le copie.

   concesso il permesso di copiare e distribuire versioni modificate di
  questo documento sotto le condizioni delle copie testuali dette sopra,
  a condizione che venga inclusa nel documento modificato una nota che
  dica chiaramente che il documento  una versione modificata.

   concesso il permesso si copiare e distribuire traduzioni di questo
  documento in un'altra lingua, sotto le condizioni specificate sopra
  per le versioni modificate.

   concesso il permesso di convertire questo documento in altri mezzi
  sotto le condizioni specificate sopra per le versioni  modificate, a
  condizione che il nuovo mezzo contenga il riconoscimento del documento
  sorgente tramite un ovvio riferimento al documento sorgente stesso.
  Dove ci sia un qualunque dubbio sul significato di 'ovvio' il
  proprietario del copyright si riserva il diritto di decidere.


  11.  Varie e Riconoscimenti

  Il codice di esempio per auth.c  tratto da pppd-1.2.1d e ppp-2.1.0e,
  Copyright (c) 1993 The Australian National University e Copyright (c)
  1989 Carnegie Mellon University.

  Grazie a Marek Michalkiewicz <marekm@i17linuxb.ists.pwr.wroc.pl> per
  aver scritto e mantenuto la Shadow Suite per Linux, e per la sua
  revisione e i suoi commenti a questo documento.

  Grazie a Ron Tidd <rtidd@tscnet.com> per la sua utile revisione e il
  suo collaudo.

  Grazie a tutti coloro che mi hanno mandato feedback per contribuire a
  migliorare questo documento.

  Per favore, se avete commenti o suggerimenti, mandatemeli per posta.

  saluti

  Michael H. Jackson <mhjack@tscnet.com>