Compare commits
1150 Commits
upstream/4
...
debian/1%4
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fa9d17cdf0 | ||
|
|
c351eb41fc | ||
|
|
61fede083a | ||
|
|
822369c353 | ||
|
|
899d7434c4 | ||
|
|
d689ba2dfe | ||
|
|
1e58713e0a | ||
|
|
9d5ab87d61 | ||
|
|
52239321b8 | ||
|
|
4660554e73 | ||
|
|
4e64c42f1e | ||
|
|
f62eb980d5 | ||
|
|
19d6a0f9a3 | ||
|
|
a9c3448878 | ||
|
|
9e93a3348b | ||
|
|
de176e27ed | ||
|
|
302d4ef809 | ||
|
|
73d57c09a1 | ||
|
|
6360940c7f | ||
|
|
0e6f426896 | ||
|
|
b56ac5f36b | ||
|
|
193bcdacf8 | ||
|
|
47ba166e47 | ||
|
|
a475f464e0 | ||
|
|
df34dc0271 | ||
|
|
03ab41b0a9 | ||
|
|
da9ad99cc7 | ||
|
|
677d61be14 | ||
|
|
5afd832ec6 | ||
|
|
a68ce238bd | ||
|
|
1c472beabb | ||
|
|
6eb4f265cf | ||
|
|
32a244b0ce | ||
|
|
fea713992d | ||
|
|
94385da1c2 | ||
|
|
a143aca1c9 | ||
|
|
f476e8b263 | ||
|
|
477077497f | ||
|
|
8b42aebdfb | ||
|
|
d39c5351ae | ||
|
|
b2a5824f7f | ||
|
|
7c5c7ebd17 | ||
|
|
65261e28f4 | ||
|
|
4d765593fb | ||
|
|
52fc52e74a | ||
|
|
30f621e2a7 | ||
|
|
f6f677a4ca | ||
|
|
ac4bab2baa | ||
|
|
ccffcd6f80 | ||
|
|
bd724b34e0 | ||
|
|
194489de56 | ||
|
|
8524eb9ab1 | ||
|
|
5c6c085ae5 | ||
|
|
d11a43e29c | ||
|
|
baf57b0835 | ||
|
|
83ef3ff76d | ||
|
|
bea3610b66 | ||
|
|
d14cb1acb3 | ||
|
|
931b0f68b7 | ||
|
|
32d53642f0 | ||
|
|
24c35ea945 | ||
|
|
0a94a89bcf | ||
|
|
92410b1c76 | ||
|
|
c91a226797 | ||
|
|
b0619a14cd | ||
|
|
6605806a6d | ||
|
|
e649b28033 | ||
|
|
4f3dfcdadd | ||
|
|
ccaa7ea01e | ||
|
|
1eaf9012b1 | ||
|
|
a5e0d00442 | ||
|
|
ade65b0204 | ||
|
|
a23a040247 | ||
|
|
f11f8581f2 | ||
|
|
4885f58fde | ||
|
|
68624ca168 | ||
|
|
8d8becfddb | ||
|
|
d390695b6d | ||
|
|
70bb4db51c | ||
|
|
5a17bd19ad | ||
|
|
b44052751e | ||
|
|
d7383961f5 | ||
|
|
a7e5816642 | ||
|
|
a2f607ed76 | ||
|
|
9bbb9e5060 | ||
|
|
75eb23ace8 | ||
|
|
588b536eb1 | ||
|
|
f6e239d940 | ||
|
|
c4ecaf0a01 | ||
|
|
2acc8676db | ||
|
|
9966b2ae50 | ||
|
|
0d8225bd20 | ||
|
|
5c3cef331a | ||
|
|
4d9f62575d | ||
|
|
b7b75e2d61 | ||
|
|
ccae83d30e | ||
|
|
08e5e0a148 | ||
|
|
0d4266dc81 | ||
|
|
c5d3d4be36 | ||
|
|
6170f973ff | ||
|
|
1c7262b6e2 | ||
|
|
e9cceb62ce | ||
|
|
75904cfd05 | ||
|
|
f8e81f7293 | ||
|
|
d0c5da8cf1 | ||
|
|
5f784b3ef3 | ||
|
|
fd652cdf40 | ||
|
|
a5d765523b | ||
|
|
9b4bfac4ef | ||
|
|
d7b0c262ba | ||
|
|
82e88c1e9b | ||
|
|
688fb93702 | ||
|
|
43bf5f3b39 | ||
|
|
7c7e8f5c18 | ||
|
|
81313b4c5d | ||
|
|
632746518a | ||
|
|
a6f8d25673 | ||
|
|
9b0bef767c | ||
|
|
61085fbfef | ||
|
|
bc6fea5f73 | ||
|
|
972687a07b | ||
|
|
aad21d4486 | ||
|
|
29f0e1dcf4 | ||
|
|
e0d410ad6a | ||
|
|
95447b3f56 | ||
|
|
999c14c87b | ||
|
|
b214d3fb51 | ||
|
|
d08fc0fe8b | ||
|
|
69a2672d3b | ||
|
|
41662e422b | ||
|
|
ff20574597 | ||
|
|
712f360fcd | ||
|
|
551cf36757 | ||
|
|
e4f60bc5b6 | ||
|
|
0a96fd2bf0 | ||
|
|
019ffd5126 | ||
|
|
45e98ea60a | ||
|
|
878710fb7a | ||
|
|
771535fa07 | ||
|
|
ac353a0d49 | ||
|
|
527b684a18 | ||
|
|
ae2c71761e | ||
|
|
154029254a | ||
|
|
a85c288e96 | ||
|
|
e1f06f07bc | ||
|
|
80660f4a94 | ||
|
|
f19c0e69e1 | ||
|
|
b6e44ab213 | ||
|
|
f56f3e81df | ||
|
|
5413108b8a | ||
|
|
c154cb50fa | ||
|
|
3bf1270130 | ||
|
|
e3549c3f90 | ||
|
|
ad3a822529 | ||
|
|
10c72480c0 | ||
|
|
6c1c44f0fc | ||
|
|
23d33f4922 | ||
|
|
0c8f801a7a | ||
|
|
4a109337ab | ||
|
|
584b0b6a36 | ||
|
|
4e48f059e7 | ||
|
|
fbd4430a1d | ||
|
|
4b707105f4 | ||
|
|
1526e6cde8 | ||
|
|
8199342364 | ||
|
|
4f3d0ac9b9 | ||
|
|
57721a210f | ||
|
|
d7536122e8 | ||
|
|
558a8f0796 | ||
|
|
623fdb60cd | ||
|
|
bd08493dab | ||
|
|
d3b392f509 | ||
|
|
9f16b61fe4 | ||
|
|
97e47ed437 | ||
|
|
d300102446 | ||
|
|
3d71c62ab1 | ||
|
|
2ff04fd9b5 | ||
|
|
97a3bc0c43 | ||
|
|
485b374d09 | ||
|
|
25f0b936c0 | ||
|
|
776d4d23ac | ||
|
|
9f285306f3 | ||
|
|
f569ea06ff | ||
|
|
50defcfa5d | ||
|
|
56c7502686 | ||
|
|
7c66acdd2e | ||
|
|
4806645316 | ||
|
|
05a41bc4d5 | ||
|
|
75eb241552 | ||
|
|
d7ce68863e | ||
|
|
095f9d48ef | ||
|
|
b4c00e119f | ||
|
|
326f1566ef | ||
|
|
6ac9c8ffe1 | ||
|
|
860bfc3bc2 | ||
|
|
f960334281 | ||
|
|
e4bc4e00d3 | ||
|
|
f17d14fa1d | ||
|
|
bdbb726365 | ||
|
|
e0c751974f | ||
|
|
8b93f459b4 | ||
|
|
658cda9512 | ||
|
|
8f8e8c66d6 | ||
|
|
9351646a53 | ||
|
|
9335ee4556 | ||
|
|
cfe3388825 | ||
|
|
fa71d99553 | ||
|
|
220f9aac4d | ||
|
|
deba8c722e | ||
|
|
f0d0800450 | ||
|
|
c0e008111e | ||
|
|
f7c5ed7e44 | ||
|
|
71b57931c8 | ||
|
|
830963375b | ||
|
|
119d3e7fb4 | ||
|
|
22cdffdd80 | ||
|
|
23958d1506 | ||
|
|
840aa7a980 | ||
|
|
8f8c08e8a5 | ||
|
|
9126929c22 | ||
|
|
56751ea5fa | ||
|
|
cda8c5fa81 | ||
|
|
69ca70f202 | ||
|
|
8d8547f65f | ||
|
|
bda4983ef6 | ||
|
|
ff3c5edbc6 | ||
|
|
7b64365e45 | ||
|
|
696ec6893f | ||
|
|
6185fb4b72 | ||
|
|
fcd5a6a753 | ||
|
|
c97b544618 | ||
|
|
cfbad60da9 | ||
|
|
f6500af0fb | ||
|
|
abd7c0d1a8 | ||
|
|
b96c915fb6 | ||
|
|
c9d3bfbed8 | ||
|
|
b8a6958c8c | ||
|
|
b8eb6e21e3 | ||
|
|
fbcc252aa2 | ||
|
|
78ed95c5f6 | ||
|
|
78b4357090 | ||
|
|
8971f347df | ||
|
|
f7a09bbd35 | ||
|
|
efb3723826 | ||
|
|
600860fd1b | ||
|
|
0246ee1e32 | ||
|
|
a784da8035 | ||
|
|
17b9314598 | ||
|
|
73b4950948 | ||
|
|
c5e7641878 | ||
|
|
27194eea96 | ||
|
|
988e6e1667 | ||
|
|
8655461698 | ||
|
|
395194208e | ||
|
|
6116809ed3 | ||
|
|
d9490db020 | ||
|
|
7588913847 | ||
|
|
3fe38f1a8e | ||
|
|
ae9399155f | ||
|
|
8234369aa8 | ||
|
|
f5e88fde2a | ||
|
|
f06a70460c | ||
|
|
e225d71e7f | ||
|
|
1ea5452692 | ||
|
|
be18f1bbfc | ||
|
|
6b02a8c46a | ||
|
|
1529920170 | ||
|
|
0905cf7764 | ||
|
|
b93dcd7b74 | ||
|
|
537fb2b47d | ||
|
|
ea2453d97e | ||
|
|
06238ddfc6 | ||
|
|
a0f09c4de7 | ||
|
|
d40cb183f8 | ||
|
|
a155720a06 | ||
|
|
5a8056702c | ||
|
|
89221d3983 | ||
|
|
b7878255ff | ||
|
|
06d1bd8617 | ||
|
|
d19ac3ae86 | ||
|
|
cfc17bfaa7 | ||
|
|
fe2a40ab85 | ||
|
|
c7baab6534 | ||
|
|
92b40afe13 | ||
|
|
7456cef7e2 | ||
|
|
dc0f840741 | ||
|
|
10af5ab4c4 | ||
|
|
2d2f190b5f | ||
|
|
8b9729cf03 | ||
|
|
8a1d6c51aa | ||
|
|
b1eaec13e7 | ||
|
|
262a350c14 | ||
|
|
752c64e4e4 | ||
|
|
fa4dccbc4a | ||
|
|
e34706dd5b | ||
|
|
787ebc3336 | ||
|
|
93ea3fe510 | ||
|
|
30e6a960ee | ||
|
|
e38381641b | ||
|
|
dc46a7a96f | ||
|
|
1177f4b257 | ||
|
|
0a3492dd90 | ||
|
|
77901f4115 | ||
|
|
042e76175a | ||
|
|
4d8a10d86c | ||
|
|
9bda99f55d | ||
|
|
927c6cbdd6 | ||
|
|
8f33168316 | ||
|
|
488bb269c9 | ||
|
|
1a76a81ccc | ||
|
|
1e63ff4abc | ||
|
|
8931f490ed | ||
|
|
1ddb81753d | ||
|
|
252ca1a609 | ||
|
|
3709c159af | ||
|
|
00c091542c | ||
|
|
084a543a03 | ||
|
|
4793149a12 | ||
|
|
d04fc57f13 | ||
|
|
1daf68f0a3 | ||
|
|
58ead426f4 | ||
|
|
9be33624de | ||
|
|
f1f3ef5674 | ||
|
|
c60535694b | ||
|
|
7bc992f580 | ||
|
|
7c34f34109 | ||
|
|
e153c45690 | ||
|
|
9c70ce4480 | ||
|
|
6170e87bd5 | ||
|
|
2ace7fb8f5 | ||
|
|
b2a4d20bf7 | ||
|
|
089560d90e | ||
|
|
d6eb9f97a0 | ||
|
|
7ca7e82ae8 | ||
|
|
19c35c70e1 | ||
|
|
b001531192 | ||
|
|
88de51965d | ||
|
|
df6b651325 | ||
|
|
406a28db14 | ||
|
|
00bcf65d58 | ||
|
|
9105fcd24c | ||
|
|
ba18b6cab2 | ||
|
|
b43b5a89d1 | ||
|
|
591aa8debe | ||
|
|
bcd42a4c62 | ||
|
|
d7f24f954e | ||
|
|
f9176c3be3 | ||
|
|
bc6cd09194 | ||
|
|
b8a7c3ac04 | ||
|
|
133b10b734 | ||
|
|
40146019e6 | ||
|
|
3588f5d2a3 | ||
|
|
af6b417156 | ||
|
|
9b4168f0b2 | ||
|
|
fd20e4fe4b | ||
|
|
d779e83350 | ||
|
|
8b5c7cace3 | ||
|
|
182a8cf464 | ||
|
|
b20639f055 | ||
|
|
0531cb85a4 | ||
|
|
19ebc9d55a | ||
|
|
f19610854c | ||
|
|
398a6d383a | ||
|
|
70c472f91d | ||
|
|
3b66774757 | ||
|
|
a975974d2c | ||
|
|
25df6ffc55 | ||
|
|
9eb5f5e758 | ||
|
|
e530aed7c6 | ||
|
|
39c9155f66 | ||
|
|
60d4dc5ae0 | ||
|
|
5a3eada191 | ||
|
|
616a2b0c7b | ||
|
|
9089583e08 | ||
|
|
b89c17643b | ||
|
|
83c828d86a | ||
|
|
786bb46ef9 | ||
|
|
d4fc50519b | ||
|
|
45c29ff8ce | ||
|
|
8e21a0615d | ||
|
|
b679e205d8 | ||
|
|
186f8f8c5a | ||
|
|
d53df510ec | ||
|
|
569a90cd97 | ||
|
|
b5d9320f6d | ||
|
|
f1e917cc43 | ||
|
|
83e36d1e1b | ||
|
|
d9e428fd63 | ||
|
|
3fcf082618 | ||
|
|
68cd195044 | ||
|
|
d8af4b7e5b | ||
|
|
598853e638 | ||
|
|
5a6e0c0ebd | ||
|
|
f9aecd19f3 | ||
|
|
14d5db18a8 | ||
|
|
7df6dd8cf2 | ||
|
|
d5849a0f2b | ||
|
|
e56640f2af | ||
|
|
e1782606c1 | ||
|
|
11e8de1be1 | ||
|
|
dedf96dd6f | ||
|
|
4ea3973200 | ||
|
|
2fb68149d6 | ||
|
|
a154eb5401 | ||
|
|
4a2fadfa21 | ||
|
|
1566e6de21 | ||
|
|
acf9e8fa4a | ||
|
|
6c29058c9f | ||
|
|
16e593e364 | ||
|
|
e8c4143fdc | ||
|
|
b4ad01d830 | ||
|
|
ea64aa07a8 | ||
|
|
523b9000fd | ||
|
|
71869c2d24 | ||
|
|
2aa9297367 | ||
|
|
9bc936e018 | ||
|
|
2ef82ecb53 | ||
|
|
5fc7602f3e | ||
|
|
0274441ec5 | ||
|
|
60c9571605 | ||
|
|
c7e2932be4 | ||
|
|
d480b7dfee | ||
|
|
260b0eb77a | ||
|
|
34599da75c | ||
|
|
aeb11d0c3e | ||
|
|
9c7fd6b104 | ||
|
|
1f40da3a5f | ||
|
|
c84a3fd5f8 | ||
|
|
25cba03d2d | ||
|
|
68ee6e45ad | ||
|
|
00e4c00838 | ||
|
|
45c41f0de6 | ||
|
|
b27aad278a | ||
|
|
57283d75f7 | ||
|
|
2649a0dc50 | ||
|
|
68fb7adaf7 | ||
|
|
bbfcca9015 | ||
|
|
0e011449f7 | ||
|
|
99a8e345da | ||
|
|
7573a1f684 | ||
|
|
d89d44af82 | ||
|
|
13f031cd67 | ||
|
|
0c7f32eab6 | ||
|
|
16796d7e3b | ||
|
|
371d5aa969 | ||
|
|
0687637b17 | ||
|
|
4294d76926 | ||
|
|
e2fa8501ca | ||
|
|
0047ae2042 | ||
|
|
820997101a | ||
|
|
2e8f003402 | ||
|
|
2e014282f7 | ||
|
|
be2dc119ed | ||
|
|
1e2d22eb6b | ||
|
|
35d80a0a73 | ||
|
|
f06ef92c66 | ||
|
|
22d833f38e | ||
|
|
08807ee3fc | ||
|
|
80a1bae6fe | ||
|
|
e8bdaa552b | ||
|
|
60bf0e1338 | ||
|
|
33f491513e | ||
|
|
36ff9fa1df | ||
|
|
c0dbed948f | ||
|
|
03e6eeb8bb | ||
|
|
9cf5fea519 | ||
|
|
62c424ce33 | ||
|
|
346bc7c0df | ||
|
|
d977bc5d19 | ||
|
|
4a0d11ba27 | ||
|
|
8d3f289bd8 | ||
|
|
7a04299f9e | ||
|
|
770fddc081 | ||
|
|
b079e4f331 | ||
|
|
ac43a9a2d5 | ||
|
|
5c999162fa | ||
|
|
4d45becee0 | ||
|
|
057ad9bb69 | ||
|
|
27c3b04789 | ||
|
|
553718623c | ||
|
|
438596a720 | ||
|
|
5e3b5ba676 | ||
|
|
7ca179b885 | ||
|
|
1bd5acfa3f | ||
|
|
a10d121ff7 | ||
|
|
c16590aaf3 | ||
|
|
013637e2de | ||
|
|
c8c3924815 | ||
|
|
18d4a7a6a9 | ||
|
|
36018131dd | ||
|
|
f35045dcf1 | ||
|
|
2a2cee4a95 | ||
|
|
30eae84422 | ||
|
|
62c0ed4fcb | ||
|
|
315479a6ce | ||
|
|
a240b74921 | ||
|
|
48841074a0 | ||
|
|
c55dcada36 | ||
|
|
b7d5465b0e | ||
|
|
5f5b7d56a6 | ||
|
|
ca30001269 | ||
|
|
e45face1d2 | ||
|
|
2ad689b454 | ||
|
|
53b76ca815 | ||
|
|
21b505094a | ||
|
|
89c37173e1 | ||
|
|
7ab1a77227 | ||
|
|
1d04d40bc6 | ||
|
|
3bde6ef31b | ||
|
|
2dd2472e22 | ||
|
|
e065751f91 | ||
|
|
f2973dcc5a | ||
|
|
907c0ab20b | ||
|
|
9171ec4eae | ||
|
|
f21fe99292 | ||
|
|
96845a5867 | ||
|
|
d984dcb999 | ||
|
|
eafbe03cc8 | ||
|
|
b63ac7ac95 | ||
|
|
3dc001c683 | ||
|
|
3cb3fec04a | ||
|
|
d6508a4fed | ||
|
|
3b694115de | ||
|
|
903f041993 | ||
|
|
9811f7fd4a | ||
|
|
5852c4eb9b | ||
|
|
b954300b83 | ||
|
|
a2c7f4c8a5 | ||
|
|
8e85d1cb82 | ||
|
|
ec7f69e97a | ||
|
|
fbdc52a86d | ||
|
|
dff2fa836e | ||
|
|
190dfc30eb | ||
|
|
8ba58a61d5 | ||
|
|
c980cb6b3a | ||
|
|
30b6ca81e0 | ||
|
|
541f6a66b8 | ||
|
|
c6175f07e3 | ||
|
|
0b8b6534cc | ||
|
|
f6de85357c | ||
|
|
913827c3c1 | ||
|
|
5fdb900d7b | ||
|
|
7803aa52ab | ||
|
|
54746f0d92 | ||
|
|
dd612ca974 | ||
|
|
55b516ba94 | ||
|
|
bda5661096 | ||
|
|
186f0b002a | ||
|
|
ce533f3250 | ||
|
|
eb3cd52450 | ||
|
|
28af4c5bc5 | ||
|
|
5bb64ec036 | ||
|
|
6b8409e9e8 | ||
|
|
4a5447d4d7 | ||
|
|
1c619c768d | ||
|
|
af075bffc9 | ||
|
|
971f260e94 | ||
|
|
9f71e81c91 | ||
|
|
7dc1f3b2dd | ||
|
|
5431d2abe2 | ||
|
|
47bbcf4dc4 | ||
|
|
b512961c12 | ||
|
|
efab223b05 | ||
|
|
cd964eccb5 | ||
|
|
1ce22b1adc | ||
|
|
6c4c7f47a0 | ||
|
|
53ba4f6fc6 | ||
|
|
2d0341ae26 | ||
|
|
edc2bc5556 | ||
|
|
a3e655cc19 | ||
|
|
34e67733ad | ||
|
|
f261f8897d | ||
|
|
b2f829c0d9 | ||
|
|
e44a7c5333 | ||
|
|
5256839da0 | ||
|
|
053fd6f667 | ||
|
|
d25fbce118 | ||
|
|
4d3d2852df | ||
|
|
35f6fa4fb2 | ||
|
|
8c79098041 | ||
|
|
227e780644 | ||
|
|
85f90d1aa2 | ||
|
|
2fcaf22140 | ||
|
|
ff97ca76fc | ||
|
|
b7a8fec626 | ||
|
|
7d143a73d5 | ||
|
|
fd69ebf5a9 | ||
|
|
9fa842ffbf | ||
|
|
5305181f4e | ||
|
|
5760010c6a | ||
|
|
ed983623b7 | ||
|
|
871df6e34b | ||
|
|
279b8e9b69 | ||
|
|
9540ec861e | ||
|
|
d408a3cdda | ||
|
|
51520f2c77 | ||
|
|
c0a26b82ae | ||
|
|
133092e437 | ||
|
|
6f7963a3ea | ||
|
|
d2b12355ee | ||
|
|
c0e2ae0e41 | ||
|
|
6e0036f616 | ||
|
|
12e0029b68 | ||
|
|
efd41d31d8 | ||
|
|
ea725da60f | ||
|
|
ec9d756fc7 | ||
|
|
e74300f9f3 | ||
|
|
ce687005c7 | ||
|
|
645829be3b | ||
|
|
87134054ab | ||
|
|
f26adb9373 | ||
|
|
563facd989 | ||
|
|
5292e8e37e | ||
|
|
4a79eb6418 | ||
|
|
d36e1588a4 | ||
|
|
3a8fc569dc | ||
|
|
d88fee56d0 | ||
|
|
8c071f98f4 | ||
|
|
17589834e9 | ||
|
|
b1dcbb9109 | ||
|
|
ff21533772 | ||
|
|
8e4062eaad | ||
|
|
3e7c866497 | ||
|
|
25eb9fd7e9 | ||
|
|
a472a22b42 | ||
|
|
528435663e | ||
|
|
13125b6596 | ||
|
|
e642700f7c | ||
|
|
1c05718b49 | ||
|
|
21b28d9ac2 | ||
|
|
31b4793161 | ||
|
|
831ca2acc0 | ||
|
|
c959b173fa | ||
|
|
494fe327a2 | ||
|
|
32ee5cf5a4 | ||
|
|
1dab661a88 | ||
|
|
5c743da48c | ||
|
|
34b64c6a5c | ||
|
|
520c3d2ee8 | ||
|
|
edc1e3de4c | ||
|
|
51c1b4fd6e | ||
|
|
dc8ebb9a93 | ||
|
|
3f81b32b3a | ||
|
|
05712cf244 | ||
|
|
3cd211df74 | ||
|
|
eed7f843e5 | ||
|
|
0dd4550277 | ||
|
|
4f0461c5aa | ||
|
|
801dc30dc9 | ||
|
|
81d3f93571 | ||
|
|
2bbe223879 | ||
|
|
5a13d590df | ||
|
|
150d37d441 | ||
|
|
92ada6ae8c | ||
|
|
f844f3fc1f | ||
|
|
f04a81b799 | ||
|
|
ac62509912 | ||
|
|
090dcd4714 | ||
|
|
2772f3caaf | ||
|
|
d4da487911 | ||
|
|
26d47d4a13 | ||
|
|
7aa5afbe3e | ||
|
|
8e07b2236e | ||
|
|
b82323f6fc | ||
|
|
2da85fc32b | ||
|
|
036fdfd2cb | ||
|
|
3081241777 | ||
|
|
3472bee15a | ||
|
|
a6336f11f8 | ||
|
|
3b6a675f3f | ||
|
|
bcd3d8c1b8 | ||
|
|
7de171da64 | ||
|
|
fc3fa0e293 | ||
|
|
53b2f99d37 | ||
|
|
056347f7a0 | ||
|
|
80d3925cc1 | ||
|
|
4ff6fdd350 | ||
|
|
6fd2918f82 | ||
|
|
991d707460 | ||
|
|
6268434a34 | ||
|
|
79bd47d726 | ||
|
|
6a94f65dc6 | ||
|
|
f38390ecf8 | ||
|
|
1906527bb8 | ||
|
|
4de1bfac9c | ||
|
|
ce8580ca6d | ||
|
|
78fd15bab1 | ||
|
|
f32335f6f9 | ||
|
|
c7df39a736 | ||
|
|
cc5a9f7708 | ||
|
|
f1bb2c3848 | ||
|
|
5f632d1a86 | ||
|
|
56545b1b78 | ||
|
|
43c4c62ad7 | ||
|
|
9530fa372c | ||
|
|
26691d3301 | ||
|
|
a8a28eba99 | ||
|
|
3cdfbb6cef | ||
|
|
250ed8cf16 | ||
|
|
c6e3185f0c | ||
|
|
cd10fe20c5 | ||
|
|
31678f87d9 | ||
|
|
b318b6721e | ||
|
|
0fe9b6b867 | ||
|
|
3a91912281 | ||
|
|
b1286d31fd | ||
|
|
5c8a6cd6eb | ||
|
|
68fdd46a81 | ||
|
|
76097618c2 | ||
|
|
fe99e0edd8 | ||
|
|
a000373d8d | ||
|
|
8c5876cef0 | ||
|
|
f5e0895b3a | ||
|
|
da9a0615de | ||
|
|
1640002065 | ||
|
|
53f2df3ded | ||
|
|
49a95f6c07 | ||
|
|
3ababb2263 | ||
|
|
20ba2e50ab | ||
|
|
282bbb9cfc | ||
|
|
52f620f78d | ||
|
|
0bdd59ac57 | ||
|
|
f1127e1aac | ||
|
|
e9e97852cf | ||
|
|
43cd3dc662 | ||
|
|
070ba9d6d4 | ||
|
|
ce9ed32e74 | ||
|
|
9e83d9f840 | ||
|
|
96866ff296 | ||
|
|
1a58cb2346 | ||
|
|
01b11c5f84 | ||
|
|
91c630033d | ||
|
|
8422a00909 | ||
|
|
fa16e07b2e | ||
|
|
bf28febe2f | ||
|
|
4375e97124 | ||
|
|
b42d7cf631 | ||
|
|
b3a4a77b46 | ||
|
|
65269966d5 | ||
|
|
86ce147df1 | ||
|
|
d868434939 | ||
|
|
3e50639cba | ||
|
|
d3a0659e13 | ||
|
|
199d8b2719 | ||
|
|
e9b12a545d | ||
|
|
0d29450314 | ||
|
|
96432cb7a1 | ||
|
|
d2a6818f17 | ||
|
|
c2b51209bb | ||
|
|
436996ed07 | ||
|
|
3d5b4ce121 | ||
|
|
f121e979bb | ||
|
|
cb8f35691a | ||
|
|
0ea08a3961 | ||
|
|
9ef58601e0 | ||
|
|
130e26d582 | ||
|
|
3462794b84 | ||
|
|
f82f0de34e | ||
|
|
eb61b09070 | ||
|
|
a97b3a382b | ||
|
|
f3ef07b8c7 | ||
|
|
8f4d210b31 | ||
|
|
6ff5ab6af4 | ||
|
|
cfbe85f1f0 | ||
|
|
6752d525c3 | ||
|
|
36595ad2cd | ||
|
|
88e88fbf27 | ||
|
|
f2915bc349 | ||
|
|
fca246813e | ||
|
|
9292f7b951 | ||
|
|
ff0f6c28eb | ||
|
|
c556de2b56 | ||
|
|
7890eab89b | ||
|
|
f9aee80330 | ||
|
|
d9b8c55516 | ||
|
|
c3e1c92fa7 | ||
|
|
8cd330b97a | ||
|
|
156bd855d4 | ||
|
|
5324b00638 | ||
|
|
ba569f80b6 | ||
|
|
d6495cab07 | ||
|
|
5520ea45cc | ||
|
|
98df44c5a1 | ||
|
|
e5aa1773d3 | ||
|
|
f810e0a171 | ||
|
|
4e2e230b07 | ||
|
|
d65a81cc37 | ||
|
|
9febd5c52e | ||
|
|
c9eb7cb521 | ||
|
|
d6271f27b8 | ||
|
|
4d7d93d08a | ||
|
|
127ac7cf5e | ||
|
|
292b47c386 | ||
|
|
2d99df028e | ||
|
|
8009e96f35 | ||
|
|
d485633edc | ||
|
|
81c1f063d2 | ||
|
|
067fb2ff47 | ||
|
|
3052b0306d | ||
|
|
1b0a6b20be | ||
|
|
bce89b7cad | ||
|
|
0a6760339d | ||
|
|
e379403368 | ||
|
|
02cfa1e96e | ||
|
|
ae2a17ec1c | ||
|
|
7b6b6a081f | ||
|
|
a89ae2b415 | ||
|
|
f6b6e256d0 | ||
|
|
95611179d1 | ||
|
|
a8fe4890d5 | ||
|
|
4c58978bf2 | ||
|
|
d97b4164c7 | ||
|
|
049e27557a | ||
|
|
11e7186926 | ||
|
|
40065af03f | ||
|
|
b30988f25e | ||
|
|
99858683d0 | ||
|
|
d3b0033664 | ||
|
|
e1d86d97bb | ||
|
|
a1a7ad3bee | ||
|
|
beb38aa933 | ||
|
|
a3a623daed | ||
|
|
d2bd32ab51 | ||
|
|
420463e136 | ||
|
|
34cc1b4591 | ||
|
|
40f31fe111 | ||
|
|
66d1c537b8 | ||
|
|
0d5d805ba3 | ||
|
|
af0a5b3a7e | ||
|
|
e6fdd218b5 | ||
|
|
9c9b12ccfb | ||
|
|
208cc24840 | ||
|
|
00fa6ffc89 | ||
|
|
562ea47e66 | ||
|
|
33d5f5d307 | ||
|
|
7ab05204f9 | ||
|
|
7ff74651d9 | ||
|
|
b13dde1746 | ||
|
|
5ef093d38e | ||
|
|
d56e6d08bc | ||
|
|
b98c5149da | ||
|
|
1ccdb08ab2 | ||
|
|
39553bc84a | ||
|
|
2a3f424d3d | ||
|
|
49db6466e1 | ||
|
|
b09af63a5d | ||
|
|
d9a24cc82c | ||
|
|
ab1840c6d6 | ||
|
|
14aaa22238 | ||
|
|
e7bb558118 | ||
|
|
bb269e44d7 | ||
|
|
2ad293e849 | ||
|
|
e6bc2c9f9b | ||
|
|
af76777327 | ||
|
|
4d7b872d28 | ||
|
|
bc66fb0ed3 | ||
|
|
a295dc0f1b | ||
|
|
097d6864f7 | ||
|
|
b7bf03b161 | ||
|
|
7a78d9c181 | ||
|
|
d548fe213b | ||
|
|
0423800e3e | ||
|
|
e98619c71c | ||
|
|
8f364eb05a | ||
|
|
0ca7b0bfb3 | ||
|
|
09b2603e32 | ||
|
|
cd0a2dd06d | ||
|
|
d4931a4aef | ||
|
|
0b36e4e59f | ||
|
|
51c59171e4 | ||
|
|
474d525137 | ||
|
|
f0866cc1fb | ||
|
|
f4c395459d | ||
|
|
8f64322393 | ||
|
|
5e45536e26 | ||
|
|
a645f89697 | ||
|
|
02e5dbd136 | ||
|
|
fd204abcae | ||
|
|
9fb40391f8 | ||
|
|
6657ff38e5 | ||
|
|
43515a0924 | ||
|
|
66c00bd2be | ||
|
|
101469c265 | ||
|
|
dbe74223ee | ||
|
|
9d3a7eb59a | ||
|
|
21d6b34360 | ||
|
|
da34d2eac4 | ||
|
|
f34f017160 | ||
|
|
0323eeb589 | ||
|
|
26d0bcb51f | ||
|
|
c5d02f1f2f | ||
|
|
3ccb21e2ff | ||
|
|
fe497cb98e | ||
|
|
557a602026 | ||
|
|
57d512829c | ||
|
|
d7e3907ab6 | ||
|
|
6d4f30fbeb | ||
|
|
f7ea46fe79 | ||
|
|
1c142ff073 | ||
|
|
6edf9089ec | ||
|
|
af8755d005 | ||
|
|
0c13397839 | ||
|
|
ec60f91bc5 | ||
|
|
1e73fef46e | ||
|
|
469a214650 | ||
|
|
d638e563b6 | ||
|
|
ae59303366 | ||
|
|
291b61a6c3 | ||
|
|
515dbe2f9a | ||
|
|
f1fd47e349 | ||
|
|
d181848c75 | ||
|
|
c0dda226c3 | ||
|
|
7c0c287396 | ||
|
|
6232365cea | ||
|
|
455c9e8673 | ||
|
|
3c064bcebb | ||
|
|
3152fbd0d2 | ||
|
|
560095862a | ||
|
|
126500c911 | ||
|
|
855c092543 | ||
|
|
b705ca4d97 | ||
|
|
9fc3874093 | ||
|
|
e780891e11 | ||
|
|
22278063de | ||
|
|
edde4d731d | ||
|
|
30c5ceb601 | ||
|
|
22a26e92e4 | ||
|
|
2d5f7a20d7 | ||
|
|
8d682b7f61 | ||
|
|
39c3a9c268 | ||
|
|
510226f810 | ||
|
|
0db4a29c22 | ||
|
|
e5dd164814 | ||
|
|
a80f47a81d | ||
|
|
40461f86ed | ||
|
|
5a1749e06e | ||
|
|
7500d0ec1c | ||
|
|
6da3c2ba7f | ||
|
|
4fa62a74e2 | ||
|
|
5901e73a95 | ||
|
|
79081455e3 | ||
|
|
73fe74c374 | ||
|
|
d56b246d1b | ||
|
|
792ea0fa66 | ||
|
|
42f0bdb7aa | ||
|
|
eeccfb8f62 | ||
|
|
90895612f1 | ||
|
|
c284183a26 | ||
|
|
bf4b725f01 | ||
|
|
20de595e37 | ||
|
|
92ff2a501d | ||
|
|
6aec5248e8 | ||
|
|
dbecb8a7c0 | ||
|
|
61fb780f5c | ||
|
|
ac4b6af8e9 | ||
|
|
5f027bb6a4 | ||
|
|
c53557d535 | ||
|
|
afce34ff40 | ||
|
|
312f23ab50 | ||
|
|
93933b959d | ||
|
|
5af0050d0a | ||
|
|
993f5134fd | ||
|
|
89e6ca0d7e | ||
|
|
7857beaf95 | ||
|
|
86aaea0978 | ||
|
|
8779ad5ec2 | ||
|
|
eb2337b2c7 | ||
|
|
ac972ba6fb | ||
|
|
e8f45d238f | ||
|
|
d27a65e33b | ||
|
|
0c6a55969e | ||
|
|
b3acd37d6d | ||
|
|
99c78a4ae3 | ||
|
|
ffddc3dbf8 | ||
|
|
aaa2195044 | ||
|
|
9c9b24acaa | ||
|
|
bebb89c93b | ||
|
|
b53ea15a4d | ||
|
|
a2054f9a9d | ||
|
|
ed328dc03c | ||
|
|
f3b4069ba4 | ||
|
|
dac2b189c2 | ||
|
|
3f9037b282 | ||
|
|
d4f56275e5 | ||
|
|
062eb42fd4 | ||
|
|
9768aa54f9 | ||
|
|
326c956bcd | ||
|
|
49c32e7ec1 | ||
|
|
c8f4e36ebf | ||
|
|
57d3f9fa83 | ||
|
|
aeae21cf6e | ||
|
|
857a615e2c | ||
|
|
7df22c6930 | ||
|
|
d83880777a | ||
|
|
f490e1a144 | ||
|
|
27ed5d04f7 | ||
|
|
98b7858e66 | ||
|
|
9c0339d436 | ||
|
|
48537b4957 | ||
|
|
4146176c08 | ||
|
|
33ba4c0628 | ||
|
|
3cf7c19a56 | ||
|
|
29f48bafae | ||
|
|
57da5c1045 | ||
|
|
897f8481b2 | ||
|
|
2d428c52c9 | ||
|
|
9d4c337ca1 | ||
|
|
dfff7d3cfe | ||
|
|
67ac228c4a | ||
|
|
9e4d6448e6 | ||
|
|
1cbb3cc320 | ||
|
|
30d2b24f04 | ||
|
|
202fb5c463 | ||
|
|
c203282681 | ||
|
|
1937662816 | ||
|
|
d8b44cb331 | ||
|
|
4399f64323 | ||
|
|
d17cbbac9f | ||
|
|
d073acd750 | ||
|
|
1f7ad41762 | ||
|
|
319a16fc84 | ||
|
|
6790d09e85 | ||
|
|
de17d213b2 | ||
|
|
e1f8184dc3 | ||
|
|
91a8f30a61 | ||
|
|
c155f2e39f | ||
|
|
51f7bfdfde | ||
|
|
7fb73b155e | ||
|
|
b088dfeff4 | ||
|
|
1dbaebde63 | ||
|
|
1023d83acd | ||
|
|
d07207326e | ||
|
|
2697c9817e | ||
|
|
159fbaacc0 | ||
|
|
f276efcb29 | ||
|
|
9300464b43 | ||
|
|
52635a7d74 | ||
|
|
e47fc28584 | ||
|
|
37385ee60d | ||
|
|
7b44b22213 | ||
|
|
fa2b2e905d | ||
|
|
494e15df37 | ||
|
|
851446c287 | ||
|
|
0d183e6b94 | ||
|
|
ffe583db50 | ||
|
|
fffcc837ac | ||
|
|
1712aa91e9 | ||
|
|
ee5bd9c521 | ||
|
|
25b03d8cd7 | ||
|
|
4473bc6264 | ||
|
|
7be39fc4aa | ||
|
|
f4d0f69e35 | ||
|
|
afabc3beb8 | ||
|
|
7bbe585f1e | ||
|
|
3ff563252e | ||
|
|
5b6ed9c678 | ||
|
|
f9a23b8f67 | ||
|
|
b140a0da35 | ||
|
|
676f702362 | ||
|
|
1beaa67010 | ||
|
|
f7679480e6 | ||
|
|
3354e2dce7 | ||
|
|
ca42fa251a | ||
|
|
bab3f92304 | ||
|
|
9b9f463b8f | ||
|
|
3d84c8c91c | ||
|
|
54e3d28428 | ||
|
|
0a21c2438e | ||
|
|
5a9ea180fa | ||
|
|
f77c7d061f | ||
|
|
02d1ba5c99 | ||
|
|
106a7a690c | ||
|
|
c3d6c6d5ce | ||
|
|
b2b7993cd0 | ||
|
|
89c07802de | ||
|
|
285046bd1e | ||
|
|
41d38991df | ||
|
|
517cc9fd79 | ||
|
|
8b991cdd58 | ||
|
|
b1487cf3e6 | ||
|
|
e158a89d37 | ||
|
|
632a264077 | ||
|
|
201d2b1608 | ||
|
|
a48e84f0d6 | ||
|
|
90b05a2679 | ||
|
|
36f46d4dfb | ||
|
|
4a57055073 | ||
|
|
e7ffab6b8e | ||
|
|
46b0cb2db2 | ||
|
|
bd4b7d0c23 | ||
|
|
960b18e52e | ||
|
|
dfcdbb7db5 | ||
|
|
dd712a6184 | ||
|
|
e4d00c832f | ||
|
|
4cff2127e3 | ||
|
|
837e8bcd05 | ||
|
|
edb3448880 | ||
|
|
2c6ecc3e02 | ||
|
|
06f7f0d87f | ||
|
|
80dcfd6690 | ||
|
|
f6249fb88a | ||
|
|
bb9ad48e4f | ||
|
|
6cde8339cf | ||
|
|
de62c3d005 | ||
|
|
54d8487fe3 | ||
|
|
cf35478f4d | ||
|
|
1c33a0b2e5 | ||
|
|
5c207aa3ac | ||
|
|
fe6fa70efe | ||
|
|
abbf45f14f | ||
|
|
e3e826734c | ||
|
|
17026efc75 | ||
|
|
41a6258033 | ||
|
|
191be4c39f | ||
|
|
09e267dad4 | ||
|
|
459433e461 | ||
|
|
5ec74ab450 | ||
|
|
40d644c1b5 | ||
|
|
11194f7e88 | ||
|
|
9dcb747e52 | ||
|
|
ab9d319d06 | ||
|
|
8b6415c8cb | ||
|
|
5e1e47c89f | ||
|
|
a1bb0a0c36 | ||
|
|
9765bc4a11 | ||
|
|
3bc2c036d4 | ||
|
|
d0aa0033ee | ||
|
|
6d31d38571 | ||
|
|
2e741e5948 | ||
|
|
8af99d4da2 | ||
|
|
6e28c75c09 | ||
|
|
164c2b24bf | ||
|
|
c6f0bda817 | ||
|
|
8ebce60492 | ||
|
|
52af2aa829 | ||
|
|
62a24d7d0b | ||
|
|
a0d0068f7d | ||
|
|
b2a73af945 | ||
|
|
75ee1ef03b | ||
|
|
9df5820cb5 | ||
|
|
1e502d5cbc | ||
|
|
e4feaa023e | ||
|
|
e895c05aa3 | ||
|
|
21a85fb04a | ||
|
|
cf467c52af | ||
|
|
4442be02f7 | ||
|
|
1ed4974bf0 | ||
|
|
32d29775bc | ||
|
|
d0e332f49c | ||
|
|
39beb1da3a |
@@ -6,7 +6,7 @@ if ENABLE_SUBIDS
|
||||
SUBDIRS += libsubid
|
||||
endif
|
||||
|
||||
SUBDIRS += src po contrib doc etc tests/unit
|
||||
SUBDIRS += src po doc etc tests/unit
|
||||
|
||||
if ENABLE_REGENERATE_MAN
|
||||
SUBDIRS += man
|
||||
|
||||
@@ -163,7 +163,7 @@ am__define_uniq_tagged_files = \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | $(am__uniquify_input)`
|
||||
DIST_SUBDIRS = lib libsubid src po contrib doc etc tests/unit man
|
||||
DIST_SUBDIRS = lib libsubid src po doc etc tests/unit man
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \
|
||||
$(top_srcdir)/man/po/Makefile.in ABOUT-NLS AUTHORS.md COPYING \
|
||||
ChangeLog NEWS README compile config.guess config.rpath \
|
||||
@@ -243,6 +243,7 @@ EGREP = @EGREP@
|
||||
ETAGS = @ETAGS@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
FILECMD = @FILECMD@
|
||||
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
|
||||
GMSGFMT = @GMSGFMT@
|
||||
GMSGFMT_015 = @GMSGFMT_015@
|
||||
@@ -333,8 +334,6 @@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
|
||||
XMLCATALOG = @XMLCATALOG@
|
||||
XML_CATALOG_FILE = @XML_CATALOG_FILE@
|
||||
XSLTPROC = @XSLTPROC@
|
||||
YACC = @YACC@
|
||||
YFLAGS = @YFLAGS@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
@@ -389,7 +388,7 @@ target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
SUBDIRS = lib $(am__append_1) src po contrib doc etc tests/unit \
|
||||
SUBDIRS = lib $(am__append_1) src po doc etc tests/unit \
|
||||
$(am__append_2)
|
||||
CLEANFILES = man/8.out man/po/remove-potcdate.* man/*/login.defs.d man/*/*.mo
|
||||
EXTRA_DIST = NEWS README tests/
|
||||
|
||||
43
aclocal.m4
vendored
43
aclocal.m4
vendored
@@ -22,14 +22,15 @@ To do so, use the procedure documented by the package, typically 'autoreconf'.])
|
||||
|
||||
# ltdl.m4 - Configure ltdl for the target system. -*-Autoconf-*-
|
||||
#
|
||||
# Copyright (C) 1999-2008, 2011-2015 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1999-2008, 2011-2019, 2021-2022 Free Software
|
||||
# Foundation, Inc.
|
||||
# Written by Thomas Tanner, 1999
|
||||
#
|
||||
# This file is free software; the Free Software Foundation gives
|
||||
# unlimited permission to copy and/or distribute it, with or without
|
||||
# modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 20 LTDL_INIT
|
||||
# serial 21 LTDL_INIT
|
||||
|
||||
# LT_CONFIG_LTDL_DIR(DIRECTORY, [LTDL-MODE])
|
||||
# ------------------------------------------
|
||||
@@ -357,7 +358,7 @@ AC_CONFIG_COMMANDS_PRE([
|
||||
if test -n "$_LT_LIBOBJS"; then
|
||||
# Remove the extension.
|
||||
_lt_sed_drop_objext='s/\.o$//;s/\.obj$//'
|
||||
for i in `for i in $_LT_LIBOBJS; do echo "$i"; done | sed "$_lt_sed_drop_objext" | sort -u`; do
|
||||
for i in `for i in $_LT_LIBOBJS; do echo "$i"; done | $SED "$_lt_sed_drop_objext" | sort -u`; do
|
||||
_ltdl_libobjs="$_ltdl_libobjs $lt_libobj_prefix$i.$ac_objext"
|
||||
_ltdl_ltlibobjs="$_ltdl_ltlibobjs $lt_libobj_prefix$i.lo"
|
||||
done
|
||||
@@ -495,7 +496,7 @@ AC_CACHE_CHECK([whether deplibs are loaded by dlopen],
|
||||
# If you are looking for one http://www.opendarwin.org/projects/dlcompat
|
||||
lt_cv_sys_dlopen_deplibs=yes
|
||||
;;
|
||||
freebsd* | dragonfly*)
|
||||
freebsd* | dragonfly* | midnightbsd*)
|
||||
lt_cv_sys_dlopen_deplibs=yes
|
||||
;;
|
||||
gnu* | linux* | k*bsd*-gnu | kopensolaris*-gnu)
|
||||
@@ -930,8 +931,8 @@ AU_ALIAS([AC_LTDL_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE])
|
||||
dnl aclocal-1.4 backwards compatibility:
|
||||
dnl AC_DEFUN([AC_LTDL_DLSYM_USCORE], [])
|
||||
|
||||
# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
|
||||
# serial 11 (pkg-config-0.29.1)
|
||||
# pkg.m4 - Macros to locate and use pkg-config. -*- Autoconf -*-
|
||||
# serial 12 (pkg-config-0.29.2)
|
||||
|
||||
dnl Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
|
||||
dnl Copyright © 2012-2015 Dan Nicholson <dbn.lists@gmail.com>
|
||||
@@ -973,7 +974,7 @@ dnl
|
||||
dnl See the "Since" comment for each macro you use to see what version
|
||||
dnl of the macros you require.
|
||||
m4_defun([PKG_PREREQ],
|
||||
[m4_define([PKG_MACROS_VERSION], [0.29.1])
|
||||
[m4_define([PKG_MACROS_VERSION], [0.29.2])
|
||||
m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1,
|
||||
[m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])])
|
||||
])dnl PKG_PREREQ
|
||||
@@ -1018,7 +1019,7 @@ dnl Check to see whether a particular set of modules exists. Similar to
|
||||
dnl PKG_CHECK_MODULES(), but does not set variables or print errors.
|
||||
dnl
|
||||
dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
|
||||
dnl only at the first occurence in configure.ac, so if the first place
|
||||
dnl only at the first occurrence in configure.ac, so if the first place
|
||||
dnl it's called might be skipped (such as if it is within an "if", you
|
||||
dnl have to call PKG_CHECK_EXISTS manually
|
||||
AC_DEFUN([PKG_CHECK_EXISTS],
|
||||
@@ -1074,7 +1075,7 @@ AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
|
||||
AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
|
||||
|
||||
pkg_failed=no
|
||||
AC_MSG_CHECKING([for $1])
|
||||
AC_MSG_CHECKING([for $2])
|
||||
|
||||
_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
|
||||
_PKG_CONFIG([$1][_LIBS], [libs], [$2])
|
||||
@@ -1084,17 +1085,17 @@ and $1[]_LIBS to avoid the need to call pkg-config.
|
||||
See the pkg-config man page for more details.])
|
||||
|
||||
if test $pkg_failed = yes; then
|
||||
AC_MSG_RESULT([no])
|
||||
AC_MSG_RESULT([no])
|
||||
_PKG_SHORT_ERRORS_SUPPORTED
|
||||
if test $_pkg_short_errors_supported = yes; then
|
||||
$1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
|
||||
else
|
||||
$1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
|
||||
$1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
|
||||
else
|
||||
$1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
|
||||
fi
|
||||
# Put the nasty error message in config.log where it belongs
|
||||
echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
|
||||
# Put the nasty error message in config.log where it belongs
|
||||
echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
|
||||
|
||||
m4_default([$4], [AC_MSG_ERROR(
|
||||
m4_default([$4], [AC_MSG_ERROR(
|
||||
[Package requirements ($2) were not met:
|
||||
|
||||
$$1_PKG_ERRORS
|
||||
@@ -1105,8 +1106,8 @@ installed software in a non-standard prefix.
|
||||
_PKG_TEXT])[]dnl
|
||||
])
|
||||
elif test $pkg_failed = untried; then
|
||||
AC_MSG_RESULT([no])
|
||||
m4_default([$4], [AC_MSG_FAILURE(
|
||||
AC_MSG_RESULT([no])
|
||||
m4_default([$4], [AC_MSG_FAILURE(
|
||||
[The pkg-config script could not be found or is too old. Make sure it
|
||||
is in your PATH or set the PKG_CONFIG environment variable to the full
|
||||
path to pkg-config.
|
||||
@@ -1116,10 +1117,10 @@ _PKG_TEXT
|
||||
To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl
|
||||
])
|
||||
else
|
||||
$1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
|
||||
$1[]_LIBS=$pkg_cv_[]$1[]_LIBS
|
||||
$1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
|
||||
$1[]_LIBS=$pkg_cv_[]$1[]_LIBS
|
||||
AC_MSG_RESULT([yes])
|
||||
$3
|
||||
$3
|
||||
fi[]dnl
|
||||
])dnl PKG_CHECK_MODULES
|
||||
|
||||
|
||||
64
config.h.in
64
config.h.in
@@ -20,10 +20,6 @@
|
||||
/* Path for faillog file. */
|
||||
#undef FAILLOG_FILE
|
||||
|
||||
/* Define to the type of elements in the array set by `getgroups'. Usually
|
||||
this is either `int' or `gid_t'. */
|
||||
#undef GETGROUPS_T
|
||||
|
||||
/* max group name length */
|
||||
#undef GROUP_NAME_MAX_LENGTH
|
||||
|
||||
@@ -53,9 +49,6 @@
|
||||
the CoreFoundation framework. */
|
||||
#undef HAVE_CFPREFERENCESCOPYAPPVALUE
|
||||
|
||||
/* Define to 1 if you have the <crypt.h> header file. */
|
||||
#undef HAVE_CRYPT_H
|
||||
|
||||
/* Define if the GNU dcgettext() function is already present or preinstalled.
|
||||
*/
|
||||
#undef HAVE_DCGETTEXT
|
||||
@@ -98,45 +91,27 @@
|
||||
/* Defined to 1 if you have the declaration of 'fgetpwent_r' */
|
||||
#undef HAVE_FGETPWENT_R
|
||||
|
||||
/* Define to 1 if you have the `futimes' function. */
|
||||
#undef HAVE_FUTIMES
|
||||
|
||||
/* Define to 1 if you have the `getentropy' function. */
|
||||
#undef HAVE_GETENTROPY
|
||||
|
||||
/* Define to 1 if you have the `getrandom' function. */
|
||||
#undef HAVE_GETRANDOM
|
||||
|
||||
/* Define to 1 if you have the `getspnam' function. */
|
||||
#undef HAVE_GETSPNAM
|
||||
|
||||
/* Define to 1 if you have the `getspnam_r' function. */
|
||||
#undef HAVE_GETSPNAM_R
|
||||
|
||||
/* Define if the GNU gettext() function is already present or preinstalled. */
|
||||
#undef HAVE_GETTEXT
|
||||
|
||||
/* Define to 1 if you have the `getusershell' function. */
|
||||
#undef HAVE_GETUSERSHELL
|
||||
|
||||
/* Define to 1 if you have the <gshadow.h> header file. */
|
||||
#undef HAVE_GSHADOW_H
|
||||
|
||||
/* Define if you have the iconv() function and it works. */
|
||||
#undef HAVE_ICONV
|
||||
|
||||
/* Define to 1 if you have the `initgroups' function. */
|
||||
#undef HAVE_INITGROUPS
|
||||
|
||||
/* Define to 1 if you have the `innetgr' function. */
|
||||
#undef HAVE_INNETGR
|
||||
|
||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
#undef HAVE_INTTYPES_H
|
||||
|
||||
/* Define to 1 if you have the <lastlog.h> header file. */
|
||||
#undef HAVE_LASTLOG_H
|
||||
|
||||
/* Define to 1 if you have the `lckpwdf' function. */
|
||||
#undef HAVE_LCKPWDF
|
||||
|
||||
@@ -164,9 +139,6 @@
|
||||
/* Define to 1 if you have the <minix/config.h> header file. */
|
||||
#undef HAVE_MINIX_CONFIG_H
|
||||
|
||||
/* Define to 1 if you have the <paths.h> header file. */
|
||||
#undef HAVE_PATHS_H
|
||||
|
||||
/* Define to 1 if you have the `putgrent' function. */
|
||||
#undef HAVE_PUTGRENT
|
||||
|
||||
@@ -179,9 +151,6 @@
|
||||
/* Define to 1 if you have the <readpassphrase.h> header file. */
|
||||
#undef HAVE_READPASSPHRASE_H
|
||||
|
||||
/* Define to 1 if you have the <rpc/key_prot.h> header file. */
|
||||
#undef HAVE_RPC_KEY_PROT_H
|
||||
|
||||
/* Define to 1 if you have the `rpmatch' function. */
|
||||
#undef HAVE_RPMATCH
|
||||
|
||||
@@ -197,9 +166,6 @@
|
||||
/* Define to 1 if you have the <semanage/semanage.h> header file. */
|
||||
#undef HAVE_SEMANAGE_SEMANAGE_H
|
||||
|
||||
/* Define to 1 if you have the `setgroups' function. */
|
||||
#undef HAVE_SETGROUPS
|
||||
|
||||
/* Define to 1 if you have the `sgetgrent' function. */
|
||||
#undef HAVE_SGETGRENT
|
||||
|
||||
@@ -209,12 +175,6 @@
|
||||
/* Define to 1 if you have the `sgetspent' function. */
|
||||
#undef HAVE_SGETSPENT
|
||||
|
||||
/* Define to 1 if you have the <sgtty.h> header file. */
|
||||
#undef HAVE_SGTTY_H
|
||||
|
||||
/* Have working shadow group support in libc */
|
||||
#undef HAVE_SHADOWGRP
|
||||
|
||||
/* Define if you have the shl_load function. */
|
||||
#undef HAVE_SHL_LOAD
|
||||
|
||||
@@ -260,15 +220,6 @@
|
||||
/* Define to 1 if `ut_xtime' is a member of `struct utmpx'. */
|
||||
#undef HAVE_STRUCT_UTMPX_UT_XTIME
|
||||
|
||||
/* Define to 1 if you have the <sys/capability.h> header file. */
|
||||
#undef HAVE_SYS_CAPABILITY_H
|
||||
|
||||
/* Define to 1 if you have the <sys/ioctl.h> header file. */
|
||||
#undef HAVE_SYS_IOCTL_H
|
||||
|
||||
/* Define to 1 if you have the <sys/random.h> header file. */
|
||||
#undef HAVE_SYS_RANDOM_H
|
||||
|
||||
/* Define to 1 if you have the <sys/statfs.h> header file. */
|
||||
#undef HAVE_SYS_STATFS_H
|
||||
|
||||
@@ -281,9 +232,6 @@
|
||||
/* Define to 1 if you have the <tcb.h> header file. */
|
||||
#undef HAVE_TCB_H
|
||||
|
||||
/* Define to 1 if you have the <termio.h> header file. */
|
||||
#undef HAVE_TERMIO_H
|
||||
|
||||
/* Define to 1 if you have the <unistd.h> header file. */
|
||||
#undef HAVE_UNISTD_H
|
||||
|
||||
@@ -296,9 +244,6 @@
|
||||
/* Define to 1 if `utime(file, NULL)' sets file's timestamp to the present. */
|
||||
#undef HAVE_UTIME_NULL
|
||||
|
||||
/* Define to 1 if you have the <utmp.h> header file. */
|
||||
#undef HAVE_UTMP_H
|
||||
|
||||
/* Define to support vendor settings. */
|
||||
#undef HAVE_VENDORDIR
|
||||
|
||||
@@ -512,14 +457,5 @@
|
||||
/* Define for large files, on AIX-style hosts. */
|
||||
#undef _LARGE_FILES
|
||||
|
||||
/* Path for utmp file. */
|
||||
#undef _UTMP_FILE
|
||||
|
||||
/* Path for wtmp file. */
|
||||
#undef _WTMP_FILE
|
||||
|
||||
/* Define to `int' if <sys/types.h> doesn't define. */
|
||||
#undef gid_t
|
||||
|
||||
/* Define to `int' if <sys/types.h> doesn't define. */
|
||||
#undef uid_t
|
||||
|
||||
69
configure.ac
69
configure.ac
@@ -4,7 +4,7 @@ m4_define([libsubid_abi_major], 5)
|
||||
m4_define([libsubid_abi_minor], 0)
|
||||
m4_define([libsubid_abi_micro], 0)
|
||||
m4_define([libsubid_abi], [libsubid_abi_major.libsubid_abi_minor.libsubid_abi_micro])
|
||||
AC_INIT([shadow], [4.17.0], [pkg-shadow-devel@lists.alioth.debian.org], [],
|
||||
AC_INIT([shadow], [4.18.0], [pkg-shadow-devel@lists.alioth.debian.org], [],
|
||||
[https://github.com/shadow-maint/shadow])
|
||||
AM_INIT_AUTOMAKE([1.11 foreign dist-xz subdir-objects tar-pax])
|
||||
AC_CONFIG_MACRO_DIRS([m4])
|
||||
@@ -30,26 +30,18 @@ AM_MAINTAINER_MODE
|
||||
dnl Checks for programs.
|
||||
AC_PROG_CC
|
||||
AC_PROG_LN_S
|
||||
AC_PROG_YACC
|
||||
LT_INIT
|
||||
LT_LIB_DLLOAD
|
||||
|
||||
dnl Checks for libraries.
|
||||
|
||||
dnl Checks for header files.
|
||||
AC_CHECK_HEADERS(crypt.h utmp.h \
|
||||
termio.h sgtty.h sys/ioctl.h paths.h \
|
||||
sys/capability.h sys/random.h \
|
||||
gshadow.h lastlog.h rpc/key_prot.h acl/libacl.h \
|
||||
attr/libattr.h attr/error_context.h)
|
||||
|
||||
dnl shadow now uses the libc's shadow implementation
|
||||
AC_CHECK_HEADER([shadow.h],,[AC_MSG_ERROR([You need a libc with shadow.h])])
|
||||
|
||||
AC_CHECK_FUNCS(arc4random_buf futimes \
|
||||
getentropy getrandom getspnam getusershell \
|
||||
initgroups lckpwdf lutimes \
|
||||
setgroups updwtmpx innetgr \
|
||||
AC_CHECK_FUNCS(arc4random_buf \
|
||||
getentropy getrandom \
|
||||
lckpwdf lutimes \
|
||||
updwtmpx innetgr \
|
||||
getspnam_r \
|
||||
rpmatch \
|
||||
memset_explicit explicit_bzero stpecpy stpeprintf)
|
||||
@@ -66,7 +58,6 @@ AC_CHECK_MEMBERS([struct utmpx.ut_name,
|
||||
struct utmpx.ut_xtime],,,[[#include <utmpx.h>]])
|
||||
|
||||
dnl Checks for library functions.
|
||||
AC_TYPE_GETGROUPS
|
||||
AC_FUNC_UTIME_NULL
|
||||
AC_REPLACE_FUNCS(putgrent putpwent putspent)
|
||||
AC_REPLACE_FUNCS(sgetgrent sgetpwent sgetspent)
|
||||
@@ -76,33 +67,6 @@ AC_CHECK_FUNC(secure_getenv, [AC_DEFINE(HAS_SECURE_GETENV,
|
||||
1,
|
||||
[Defined to 1 if you have the declaration of 'secure_getenv'])])
|
||||
|
||||
if test "$ac_cv_header_shadow_h" = "yes"; then
|
||||
AC_CACHE_CHECK(for working shadow group support,
|
||||
ac_cv_libc_shadowgrp,
|
||||
AC_RUN_IFELSE([AC_LANG_SOURCE([
|
||||
#include <shadow.h>
|
||||
#ifdef HAVE_GSHADOW_H
|
||||
#include <gshadow.h>
|
||||
#endif
|
||||
int
|
||||
main()
|
||||
{
|
||||
struct sgrp *sg = sgetsgent("test:x::");
|
||||
/* NYS libc on Red Hat 3.0.3 has broken shadow group support */
|
||||
return !sg || !sg->sg_adm || !sg->sg_mem;
|
||||
}]
|
||||
)],
|
||||
[ac_cv_libc_shadowgrp=yes],
|
||||
[ac_cv_libc_shadowgrp=no],
|
||||
[ac_cv_libc_shadowgrp=no]
|
||||
)
|
||||
)
|
||||
|
||||
if test "$ac_cv_libc_shadowgrp" = "yes"; then
|
||||
AC_DEFINE(HAVE_SHADOWGRP, 1, [Have working shadow group support in libc])
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_CACHE_CHECK([location of shared mail directory], shadow_cv_maildir,
|
||||
[for shadow_cv_maildir in /var/mail /var/spool/mail /usr/spool/mail /usr/mail none; do
|
||||
if test -d $shadow_cv_maildir; then
|
||||
@@ -125,18 +89,6 @@ if test $shadow_cv_mailfile != none; then
|
||||
[Name of user's mail spool file if stored in user's home directory.])
|
||||
fi
|
||||
|
||||
AC_CACHE_CHECK([location of utmp], shadow_cv_utmpdir,
|
||||
[for shadow_cv_utmpdir in /var/run /var/adm /usr/adm /etc none; do
|
||||
if test -f $shadow_cv_utmpdir/utmp; then
|
||||
break
|
||||
fi
|
||||
done])
|
||||
if test "$shadow_cv_utmpdir" = "none"; then
|
||||
AC_MSG_WARN(utmp file not found)
|
||||
fi
|
||||
AC_DEFINE_UNQUOTED(_UTMP_FILE, "$shadow_cv_utmpdir/utmp",
|
||||
[Path for utmp file.])
|
||||
|
||||
AC_CACHE_CHECK([location of faillog/lastlog/wtmp], shadow_cv_logdir,
|
||||
[for shadow_cv_logdir in /var/log /var/adm /usr/adm /etc; do
|
||||
if test -d $shadow_cv_logdir; then
|
||||
@@ -150,13 +102,7 @@ AC_DEFINE_UNQUOTED(LASTLOG_FILE, "$shadow_cv_logdir/lastlog",
|
||||
AC_DEFINE_UNQUOTED(FAILLOG_FILE, "$shadow_cv_logdir/faillog",
|
||||
[Path for faillog file.])
|
||||
|
||||
AC_CACHE_CHECK([location of the passwd program], shadow_cv_passwd_dir,
|
||||
[if test -f /usr/bin/passwd; then
|
||||
shadow_cv_passwd_dir=/usr/bin
|
||||
else
|
||||
shadow_cv_passwd_dir=/bin
|
||||
fi])
|
||||
AC_DEFINE_UNQUOTED(PASSWD_PROGRAM, "$shadow_cv_passwd_dir/passwd",
|
||||
AC_DEFINE_UNQUOTED(PASSWD_PROGRAM, "$exec_prefix/bin/passwd",
|
||||
[Path to passwd program.])
|
||||
|
||||
AC_ARG_ENABLE(shadowgrp,
|
||||
@@ -384,7 +330,7 @@ if test "$enable_lastlog" = "yes" && test "$ac_cv_header_lastlog_h" = "yes"; the
|
||||
enable_lastlog="yes"
|
||||
else
|
||||
AC_MSG_ERROR([Cannot enable support for lastlog on systems where the data structures aren't available])
|
||||
enable_subids="no"
|
||||
enable_lastlog="no"
|
||||
fi
|
||||
fi
|
||||
AM_CONDITIONAL(ENABLE_LASTLOG, test "x$enable_lastlog" != "xno")
|
||||
@@ -737,7 +683,6 @@ AC_CONFIG_FILES([
|
||||
libsubid/Makefile
|
||||
libsubid/subid.h
|
||||
src/Makefile
|
||||
contrib/Makefile
|
||||
etc/Makefile
|
||||
etc/pam.d/Makefile
|
||||
etc/shadow-maint/Makefile
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
# This is a dummy Makefile.am to get automake work flawlessly,
|
||||
# and also cooperate to make a distribution for `make dist'
|
||||
|
||||
EXTRA_DIST = README adduser.c adduser.sh adduser2.sh
|
||||
@@ -1,507 +0,0 @@
|
||||
# Makefile.in generated by automake 1.16.5 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2021 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
# This is a dummy Makefile.am to get automake work flawlessly,
|
||||
# and also cooperate to make a distribution for `make dist'
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = contrib
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
|
||||
$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
|
||||
$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
|
||||
$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
||||
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
|
||||
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
|
||||
$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/acinclude.m4 \
|
||||
$(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in README
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CMOCKA_CFLAGS = @CMOCKA_CFLAGS@
|
||||
CMOCKA_LIBS = @CMOCKA_LIBS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CSCOPE = @CSCOPE@
|
||||
CTAGS = @CTAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
DUMPBIN = @DUMPBIN@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
ECONF_CPPFLAGS = @ECONF_CPPFLAGS@
|
||||
EGREP = @EGREP@
|
||||
ETAGS = @ETAGS@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
|
||||
GMSGFMT = @GMSGFMT@
|
||||
GMSGFMT_015 = @GMSGFMT_015@
|
||||
GREP = @GREP@
|
||||
GROUP_NAME_MAX_LENGTH = @GROUP_NAME_MAX_LENGTH@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
INTLLIBS = @INTLLIBS@
|
||||
INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBACL = @LIBACL@
|
||||
LIBADD_DL = @LIBADD_DL@
|
||||
LIBADD_DLD_LINK = @LIBADD_DLD_LINK@
|
||||
LIBADD_DLOPEN = @LIBADD_DLOPEN@
|
||||
LIBADD_SHL_LOAD = @LIBADD_SHL_LOAD@
|
||||
LIBATTR = @LIBATTR@
|
||||
LIBAUDIT = @LIBAUDIT@
|
||||
LIBBSD = @LIBBSD@
|
||||
LIBBSD_CFLAGS = @LIBBSD_CFLAGS@
|
||||
LIBBSD_LIBS = @LIBBSD_LIBS@
|
||||
LIBCRYPT = @LIBCRYPT@
|
||||
LIBECONF = @LIBECONF@
|
||||
LIBICONV = @LIBICONV@
|
||||
LIBINTL = @LIBINTL@
|
||||
LIBMD = @LIBMD@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBPAM = @LIBPAM@
|
||||
LIBS = @LIBS@
|
||||
LIBSELINUX = @LIBSELINUX@
|
||||
LIBSEMANAGE = @LIBSEMANAGE@
|
||||
LIBSKEY = @LIBSKEY@
|
||||
LIBSUBID_ABI = @LIBSUBID_ABI@
|
||||
LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@
|
||||
LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@
|
||||
LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@
|
||||
LIBSYSTEMD = @LIBSYSTEMD@
|
||||
LIBTCB = @LIBTCB@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIPO = @LIPO@
|
||||
LIYESCRYPT = @LIYESCRYPT@
|
||||
LN_S = @LN_S@
|
||||
LTLIBICONV = @LTLIBICONV@
|
||||
LTLIBINTL = @LTLIBINTL@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
LT_DLLOADERS = @LT_DLLOADERS@
|
||||
LT_DLPREOPEN = @LT_DLPREOPEN@
|
||||
LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
|
||||
MAINT = @MAINT@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
MSGFMT = @MSGFMT@
|
||||
MSGFMT_015 = @MSGFMT_015@
|
||||
MSGMERGE = @MSGMERGE@
|
||||
NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PKG_CONFIG = @PKG_CONFIG@
|
||||
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
|
||||
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
|
||||
POSUB = @POSUB@
|
||||
RANLIB = @RANLIB@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
USE_NLS = @USE_NLS@
|
||||
VENDORDIR = @VENDORDIR@
|
||||
VERSION = @VERSION@
|
||||
XGETTEXT = @XGETTEXT@
|
||||
XGETTEXT_015 = @XGETTEXT_015@
|
||||
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
|
||||
XMLCATALOG = @XMLCATALOG@
|
||||
XML_CATALOG_FILE = @XML_CATALOG_FILE@
|
||||
XSLTPROC = @XSLTPROC@
|
||||
YACC = @YACC@
|
||||
YFLAGS = @YFLAGS@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
capcmd = @capcmd@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
runstatedir = @runstatedir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
EXTRA_DIST = README adduser.c adduser.sh adduser2.sh
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign contrib/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign contrib/Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
tags TAGS:
|
||||
|
||||
ctags CTAGS:
|
||||
|
||||
cscope cscopelist:
|
||||
|
||||
distdir: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) distdir-am
|
||||
|
||||
distdir-am: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile
|
||||
installdirs:
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-am
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-am
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-am
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
|
||||
cscopelist-am ctags-am distclean distclean-generic \
|
||||
distclean-libtool distdir dvi dvi-am html html-am info info-am \
|
||||
install install-am install-data install-data-am install-dvi \
|
||||
install-dvi-am install-exec install-exec-am install-html \
|
||||
install-html-am install-info install-info-am install-man \
|
||||
install-pdf install-pdf-am install-ps install-ps-am \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||
tags-am uninstall uninstall-am
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
@@ -1,7 +0,0 @@
|
||||
People keep sending various adduser programs and scripts... They are
|
||||
all in this directory. I haven't tested them, use at your own risk.
|
||||
Anyway, the best one I've seen so far is adduser-3.x from Debian.
|
||||
|
||||
udbachk.tgz is a passwd/group/shadow file integrity checker.
|
||||
|
||||
--marekm
|
||||
@@ -1,503 +0,0 @@
|
||||
/****
|
||||
** 04/21/96
|
||||
** hacked even more, replaced gets() with something slightly harder to buffer
|
||||
** overflow. Added support for setting a default quota on new account, with
|
||||
** edquota -p. Other cleanups for security, I let some users run adduser suid
|
||||
** root to add new accounts. (overflow checks, clobber environment, valid
|
||||
** shell checks, restrictions on gid + home dir settings).
|
||||
|
||||
** Added max. username length. Used syslog() a bit for important events.
|
||||
** Support to immediately expire account with passwd -e.
|
||||
|
||||
** Called it version 2.0! Because I felt like it!
|
||||
|
||||
** -- Chris, chris@ferret.lmh.ox.ac.uk
|
||||
|
||||
** 03/17/96
|
||||
** hacked a bit more, removed unused code, cleaned up for gcc -Wall.
|
||||
** --marekm
|
||||
**
|
||||
** 02/26/96
|
||||
** modified to call shadow utils (useradd,chage,passwd) on shadowed
|
||||
** systems - Cristian Gafton, gafton@sorosis.ro
|
||||
**
|
||||
** 6/27/95
|
||||
** shadow-adduser 1.4:
|
||||
**
|
||||
** now it copies the /etc/skel dir into the person's dir,
|
||||
** makes the mail folders, changed some defaults and made a 'make
|
||||
** install' just for the hell of it.
|
||||
**
|
||||
** Greg Gallagher
|
||||
** CIN.Net
|
||||
**
|
||||
** 1/28/95
|
||||
** shadow-adduser 1.3:
|
||||
**
|
||||
** Basically a bug-fix on my additions in 1.2. Thanks to Terry Stewart
|
||||
** (stew@texas.net) for pointing out one of the many idiotic bugs I introduced.
|
||||
** It was such a stupid bug that I would have never seen it myself.
|
||||
**
|
||||
** Brandon
|
||||
*****
|
||||
** 01/27/95
|
||||
**
|
||||
** shadow-adduser 1.2:
|
||||
** I took the C source from adduser-shadow (credits are below) and made
|
||||
** it a little more worthwhile. Many small changes... Here's
|
||||
** the ones I can remember:
|
||||
**
|
||||
** Removed support for non-shadowed systems (if you don't have shadow,
|
||||
** use the original adduser, don't get this shadow version!)
|
||||
** Added support for the correct /etc/shadow fields (Min days before
|
||||
** password change, max days before password change, Warning days,
|
||||
** and how many days from expiry date does the account go invalid)
|
||||
** The previous version just left all of those fields blank.
|
||||
** There is still one field left (expiry date for the account, period)
|
||||
** which I have left blank because I do not use it and didn't want to
|
||||
** spend any more time on this. I'm sure someone will put it in and
|
||||
** tack another plethora of credits on here. :)
|
||||
** Added in the password date field, which should always reflect the last
|
||||
** date the password was changed, for expiry purposes. "passwd" always
|
||||
** updates this field, so the adduser program should set it up right
|
||||
** initially (or a user could keep their initial password forever ;)
|
||||
** The number is in days since Jan 1st, 1970.
|
||||
**
|
||||
** Have fun with it, and someone please make
|
||||
** a real version(this is still just a hack)
|
||||
** for us all to use (and Email it to me???)
|
||||
**
|
||||
** Brandon
|
||||
** photon@usis.com
|
||||
**
|
||||
*****
|
||||
** adduser 1.0: add a new user account (For systems not using shadow)
|
||||
** With a nice little interface and a will to do all the work for you.
|
||||
**
|
||||
** Craig Hagan
|
||||
** hagan@opine.cs.umass.edu
|
||||
**
|
||||
** Modified to really work, look clean, and find unused uid by Chris Cappuccio
|
||||
** chris@slinky.cs.umass.edu
|
||||
**
|
||||
*****
|
||||
**
|
||||
** 01/19/95
|
||||
**
|
||||
** FURTHER modifications to enable shadow passwd support (kludged, but
|
||||
** no more so than the original) by Dan Crowson - dcrowson@mo.net
|
||||
**
|
||||
** Search on DAN for all changes...
|
||||
**
|
||||
*****
|
||||
**
|
||||
** cc -O -o adduser adduser.c
|
||||
** Use gcc if you have it... (political reasons beyond my control) (chris)
|
||||
**
|
||||
** I've gotten this program to work with success under Linux (without
|
||||
** shadow) and SunOS 4.1.3. I would assume it should work pretty well
|
||||
** on any system that uses no shadow. (chris)
|
||||
**
|
||||
** If you have no crypt() then try
|
||||
** cc -DNO_CRYPT -O -o adduser adduser.c xfdes.c
|
||||
** I'm not sure how login operates with no crypt()... I guess
|
||||
** the same way we're doing it here.
|
||||
*/
|
||||
|
||||
#include <unistd.h>
|
||||
#include <stdlib.h>
|
||||
#include <pwd.h>
|
||||
#include <grp.h>
|
||||
#include <ctype.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <time.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/timeb.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/stat.h>
|
||||
#include <syslog.h>
|
||||
|
||||
#include "string/strcmp/streq.h"
|
||||
|
||||
|
||||
#define IMMEDIATE_CHANGE /* Expire newly created password, must be changed
|
||||
* immediately upon next login */
|
||||
#define HAVE_QUOTAS /* Obvious */
|
||||
#define EXPIRE_VALS_SET /* If defined, 'normal' users can't change
|
||||
* password expiry values (if running suid root) */
|
||||
|
||||
#define HAVE_GETUSERSHELL /* FIXME: Isn't this defined in config.h too? */
|
||||
#define LOGGING /* If we want to log various things to syslog */
|
||||
#define MAX_USRNAME 8 /* Longer usernames seem to work on my system....
|
||||
* But they're probably a poor idea */
|
||||
|
||||
|
||||
#define DEFAULT_SHELL "/bin/bash" /* because BASH is your friend */
|
||||
#define DEFAULT_HOME "/home"
|
||||
#define USERADD_PATH "/usr/sbin/useradd"
|
||||
#define CHAGE_PATH "/usr/bin/chage"
|
||||
#define PASSWD_PATH "/usr/bin/passwd"
|
||||
#define EDQUOTA_PATH "/usr/sbin/edquota"
|
||||
#define QUOTA_DEFAULT "defuser"
|
||||
#define DEFAULT_GROUP 100
|
||||
|
||||
#define DEFAULT_MIN_PASS 0
|
||||
#define DEFAULT_MAX_PASS 100
|
||||
#define DEFAULT_WARN_PASS 14
|
||||
#define DEFAULT_USER_DIE 366
|
||||
|
||||
void safeget (char *, int);
|
||||
|
||||
void
|
||||
main (void)
|
||||
{
|
||||
char foo[32];
|
||||
char usrname[32], person[32], dir[32], shell[32];
|
||||
unsigned int group, min_pass, max_pass, warn_pass, user_die;
|
||||
/* the group and uid of the new user */
|
||||
int bad = 0, done = 0, correct = 0, olduid;
|
||||
char cmd[255];
|
||||
struct group *grp;
|
||||
|
||||
/* flags, in order:
|
||||
* bad to see if the username is in /etc/passwd, or if strange stuff has
|
||||
* been typed if the user might be put in group 0
|
||||
* done allows the program to exit when a user has been added
|
||||
* correct loops until a username is found that isn't in /etc/passwd
|
||||
*/
|
||||
|
||||
/* The real program starts HERE! */
|
||||
|
||||
if (geteuid () != 0)
|
||||
{
|
||||
printf ("It seems you don't have access to add a new user. Try\n");
|
||||
printf ("logging in as root or su root to gain superuser access.\n");
|
||||
exit (1);
|
||||
}
|
||||
|
||||
/* Sanity checks
|
||||
*/
|
||||
|
||||
#ifdef LOGGING
|
||||
openlog ("adduser", LOG_PID | LOG_CONS | LOG_NOWAIT, LOG_AUTH);
|
||||
syslog (LOG_INFO, "invoked by user %s\n", getpwuid (getuid ())->pw_name);
|
||||
#endif
|
||||
|
||||
if (!(grp = getgrgid (DEFAULT_GROUP)))
|
||||
{
|
||||
printf ("Error: the default group %d does not exist on this system!\n",
|
||||
DEFAULT_GROUP);
|
||||
printf ("adduser must be recompiled.\n");
|
||||
#ifdef LOGGING
|
||||
syslog (LOG_ERR, "warning: failed. no such default group\n");
|
||||
closelog ();
|
||||
#endif
|
||||
exit (1);
|
||||
};
|
||||
|
||||
while (!correct)
|
||||
{ /* loop until a "good" usrname is chosen */
|
||||
while (!done)
|
||||
{
|
||||
printf ("\nLogin to add (^C to quit): ");
|
||||
fflush (stdout);
|
||||
|
||||
safeget (usrname, sizeof (usrname));
|
||||
|
||||
if (!strlen (usrname))
|
||||
{
|
||||
printf ("Empty input.\n");
|
||||
done = 0;
|
||||
continue;
|
||||
};
|
||||
|
||||
/* what I saw here before made me think maybe I was running DOS */
|
||||
/* might this be a solution? (chris) */
|
||||
if (strlen (usrname) > MAX_USRNAME)
|
||||
{
|
||||
printf ("That name is longer than the maximum of %d characters. Choose another.\n", MAX_USRNAME);
|
||||
done = 0;
|
||||
}
|
||||
else if (getpwnam (usrname) != NULL)
|
||||
{
|
||||
printf ("That name is in use, choose another.\n");
|
||||
done = 0;
|
||||
}
|
||||
else if (strchr (usrname, ' ') != NULL)
|
||||
{
|
||||
printf ("No spaces in username!!\n");
|
||||
done = 0;
|
||||
}
|
||||
else
|
||||
done = 1;
|
||||
}; /* done, we have a valid new user name */
|
||||
|
||||
/* all set, get the rest of the stuff */
|
||||
printf ("\nEditing information for new user [%s]\n", usrname);
|
||||
|
||||
printf ("\nFull Name [%s]: ", usrname);
|
||||
fflush (stdout);
|
||||
safeget (person, sizeof (person));
|
||||
if (!strlen (person))
|
||||
{
|
||||
bzero (person, sizeof (person));
|
||||
strcpy (person, usrname);
|
||||
};
|
||||
|
||||
if (getuid () == 0)
|
||||
{
|
||||
do
|
||||
{
|
||||
bad = 0;
|
||||
printf ("GID [%d]: ", DEFAULT_GROUP);
|
||||
fflush (stdout);
|
||||
safeget (foo, sizeof (foo));
|
||||
if (!strlen (foo))
|
||||
group = DEFAULT_GROUP;
|
||||
else if (isdigit (*foo))
|
||||
{
|
||||
group = atoi (foo);
|
||||
if (!(grp = getgrgid (group)))
|
||||
{
|
||||
printf ("unknown gid %s\n", foo);
|
||||
group = DEFAULT_GROUP;
|
||||
bad = 1;
|
||||
};
|
||||
}
|
||||
else if ((grp = getgrnam (foo)))
|
||||
group = grp->gr_gid;
|
||||
else
|
||||
{
|
||||
printf ("unknown group %s\n", foo);
|
||||
group = DEFAULT_GROUP;
|
||||
bad = 1;
|
||||
}
|
||||
if (group == 0)
|
||||
{ /* You're not allowed to make root group users! */
|
||||
printf ("Creation of root group users not allowed (must be done by hand)\n");
|
||||
group = DEFAULT_GROUP;
|
||||
bad = 1;
|
||||
};
|
||||
}
|
||||
while (bad);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf ("Group will be default of: %d\n", DEFAULT_GROUP);
|
||||
group = DEFAULT_GROUP;
|
||||
}
|
||||
|
||||
if (getuid () == 0)
|
||||
{
|
||||
printf ("\nIf home dir ends with a / then '%s' will be appended to it\n", usrname);
|
||||
printf ("Home Directory [%s/%s]: ", DEFAULT_HOME, usrname);
|
||||
fflush (stdout);
|
||||
safeget (dir, sizeof (dir));
|
||||
if (!strlen(dir)) /* hit return */
|
||||
sprintf(dir, "%s/%s", DEFAULT_HOME, usrname);
|
||||
else if (dir[strlen (dir) - 1] == '/')
|
||||
strcat(dir, usrname);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf ("\nHome directory will be %s/%s\n", DEFAULT_HOME, usrname);
|
||||
sprintf (dir, "%s/%s", DEFAULT_HOME, usrname);
|
||||
}
|
||||
|
||||
printf ("\nShell [%s]: ", DEFAULT_SHELL);
|
||||
fflush (stdout);
|
||||
safeget (shell, sizeof (shell));
|
||||
if (!strlen (shell))
|
||||
strcpy(shell, DEFAULT_SHELL);
|
||||
else
|
||||
{
|
||||
char *sh;
|
||||
int ok = 0;
|
||||
#ifdef HAVE_GETUSERSHELL
|
||||
setusershell ();
|
||||
while ((sh = getusershell ()) != NULL)
|
||||
if (streq(shell, sh))
|
||||
ok = 1;
|
||||
endusershell ();
|
||||
#endif
|
||||
if (!ok)
|
||||
{
|
||||
if (getuid () == 0)
|
||||
printf ("Warning: root allowed non standard shell\n");
|
||||
else
|
||||
{
|
||||
printf ("Shell NOT in /etc/shells, DEFAULT used\n");
|
||||
strcpy(shell, DEFAULT_SHELL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef EXPIRE_VALS_SET
|
||||
if (getuid () == 0)
|
||||
{
|
||||
#endif
|
||||
printf ("\nMin. Password Change Days [%d]: ", DEFAULT_MIN_PASS);
|
||||
fflush (stdout);
|
||||
safeget (foo, sizeof (foo));
|
||||
if (strlen (foo) > 1)
|
||||
min_pass = DEFAULT_MIN_PASS;
|
||||
else
|
||||
min_pass = atoi (foo);
|
||||
|
||||
printf ("Max. Password Change Days [%d]: ", DEFAULT_MAX_PASS);
|
||||
fflush (stdout);
|
||||
safeget (foo, sizeof (foo));
|
||||
if (strlen (foo) > 1)
|
||||
max_pass = atoi (foo);
|
||||
else
|
||||
max_pass = DEFAULT_MAX_PASS;
|
||||
|
||||
printf ("Password Warning Days [%d]: ", DEFAULT_WARN_PASS);
|
||||
fflush (stdout);
|
||||
safeget (foo, sizeof (foo));
|
||||
warn_pass = atoi (foo);
|
||||
if (warn_pass == 0)
|
||||
|
||||
warn_pass = DEFAULT_WARN_PASS;
|
||||
|
||||
printf ("Days after Password Expiry for Account Locking [%d]: ", DEFAULT_USER_DIE);
|
||||
fflush (stdout);
|
||||
safeget (foo, sizeof (foo));
|
||||
user_die = atoi (foo);
|
||||
if (user_die == 0)
|
||||
user_die = DEFAULT_USER_DIE;
|
||||
|
||||
#ifdef EXPIRE_VALS_SET
|
||||
}
|
||||
else
|
||||
{
|
||||
printf ("\nSorry, account expiry values are set.\n");
|
||||
user_die = DEFAULT_USER_DIE;
|
||||
warn_pass = DEFAULT_WARN_PASS;
|
||||
max_pass = DEFAULT_MAX_PASS;
|
||||
min_pass = DEFAULT_MIN_PASS;
|
||||
}
|
||||
#endif
|
||||
|
||||
printf ("\nInformation for new user [%s] [%s]:\n", usrname, person);
|
||||
printf ("Home directory: [%s] Shell: [%s]\n", dir, shell);
|
||||
printf ("GID: [%d]\n", group);
|
||||
printf ("MinPass: [%d] MaxPass: [%d] WarnPass: [%d] UserExpire: [%d]\n",
|
||||
min_pass, max_pass, warn_pass, user_die);
|
||||
printf ("\nIs this correct? [y/N]: ");
|
||||
fflush (stdout);
|
||||
safeget (foo, sizeof (foo));
|
||||
|
||||
done = bad = correct = (foo[0] == 'y' || foo[0] == 'Y');
|
||||
|
||||
if (bad != 1)
|
||||
printf ("\nUser [%s] not added\n", usrname);
|
||||
}
|
||||
|
||||
/* Clobber the environment, I run this suid root sometimes to let
|
||||
* non root privileged accounts add users --chris */
|
||||
|
||||
*environ = NULL;
|
||||
|
||||
bzero (cmd, sizeof (cmd));
|
||||
sprintf (cmd, "%s -g %d -d %s -s %s -c \"%s\" -m -k /etc/skel %s",
|
||||
USERADD_PATH, group, dir, shell, person, usrname);
|
||||
printf ("Calling useradd to add new user:\n%s\n", cmd);
|
||||
if (system (cmd))
|
||||
{
|
||||
printf ("User add failed!\n");
|
||||
#ifdef LOGGING
|
||||
syslog (LOG_ERR, "could not add new user\n");
|
||||
closelog ();
|
||||
#endif
|
||||
exit (errno);
|
||||
};
|
||||
|
||||
olduid = getuid (); /* chage, passwd, edquota etc. require ruid = root
|
||||
*/
|
||||
setuid (0);
|
||||
|
||||
bzero (cmd, sizeof (cmd));
|
||||
|
||||
/* Chage runs suid root. => we need ruid root to run it with
|
||||
* anything other than chage -l
|
||||
*/
|
||||
|
||||
sprintf (cmd, "%s -m %d -M %d -W %d -I %d %s", CHAGE_PATH,
|
||||
min_pass, max_pass, warn_pass, user_die, usrname);
|
||||
printf ("%s\n", cmd);
|
||||
if (system (cmd))
|
||||
{
|
||||
printf ("There was an error setting password expire values\n");
|
||||
#ifdef LOGGING
|
||||
syslog (LOG_ERR, "password expire values could not be set\n");
|
||||
#endif
|
||||
};
|
||||
|
||||
/* I want to add a user completely with one easy command --chris */
|
||||
|
||||
#ifdef HAVE_QUOTAS
|
||||
bzero (cmd, sizeof (cmd));
|
||||
sprintf (cmd, "%s -p %s -u %s", EDQUOTA_PATH, QUOTA_DEFAULT, usrname);
|
||||
printf ("%s\n", cmd);
|
||||
if (system (cmd))
|
||||
{
|
||||
printf ("\nWarning: error setting quota\n");
|
||||
#ifdef LOGGING
|
||||
syslog (LOG_ERR, "warning: account created but NO quotas set!\n");
|
||||
#endif /* LOGGING */
|
||||
}
|
||||
else
|
||||
printf ("\nDefault quota set.\n");
|
||||
#endif /* HAVE_QUOTAS */
|
||||
|
||||
bzero (cmd, sizeof (cmd));
|
||||
sprintf (cmd, "%s %s", PASSWD_PATH, usrname);
|
||||
if (system (cmd))
|
||||
{
|
||||
printf ("\nWarning: error setting password\n");
|
||||
#ifdef LOGGING
|
||||
syslog (LOG_ERR, "warning: password set failed!\n");
|
||||
#endif
|
||||
}
|
||||
#ifdef IMMEDIATE_CHANGE
|
||||
bzero (cmd, sizeof (cmd));
|
||||
sprintf (cmd, "%s -e %s", PASSWD_PATH, usrname);
|
||||
if (system (cmd))
|
||||
{
|
||||
printf ("\nWarning: error expiring password\n");
|
||||
#ifdef LOGGING
|
||||
syslog (LOG_ERR, "warning: password expire failed!\n");
|
||||
#endif /* LOGGING */
|
||||
}
|
||||
#endif /* IMMEDIATE_CHANGE */
|
||||
|
||||
setuid (olduid);
|
||||
|
||||
#ifdef LOGGING
|
||||
closelog ();
|
||||
#endif
|
||||
|
||||
printf ("\nDone.\n");
|
||||
}
|
||||
|
||||
void
|
||||
safeget (char *buf, int maxlen)
|
||||
{
|
||||
int c, i = 0, bad = 0;
|
||||
char *bstart = buf;
|
||||
while ((c = getc (stdin)) != EOF && (c != '\n') && (++i < maxlen))
|
||||
{
|
||||
bad = (!isalnum (c) && (c != '_') && (c != ' '));
|
||||
*(buf++) = c;
|
||||
}
|
||||
stpcpy(buf, "");
|
||||
|
||||
if (bad)
|
||||
{
|
||||
printf ("\nString contained banned character. Please stick to alphanumerics.\n");
|
||||
stpcpy(bstart, "");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,90 +0,0 @@
|
||||
#!/bin/sh
|
||||
# adduser script for use with shadow passwords and useradd command.
|
||||
# by Hrvoje Dogan <hdogan@student.math.hr>, Dec 1995.
|
||||
|
||||
echo -n "Login name for new user []:"
|
||||
read LOGIN
|
||||
if [ -z $LOGIN ]
|
||||
then echo "Come on, man, you can't leave the login field empty...";exit
|
||||
fi
|
||||
echo
|
||||
echo -n "User id for $LOGIN [ defaults to next available]:"
|
||||
read ID
|
||||
GUID="-u $ID"
|
||||
if [ -z $ID ]
|
||||
then GUID=""
|
||||
fi
|
||||
|
||||
echo
|
||||
echo -n "Initial group for $LOGIN [users]:"
|
||||
read GID
|
||||
GGID="-g $GID"
|
||||
if [ -z $GID ]
|
||||
then GGID=""
|
||||
fi
|
||||
|
||||
echo
|
||||
echo -n "Additional groups for $LOGIN []:"
|
||||
read AGID
|
||||
GAGID="-G $AGID"
|
||||
if [ -z $AGID ]
|
||||
then GAGID=""
|
||||
fi
|
||||
|
||||
echo
|
||||
echo -n "$LOGIN's home directory [/home/$LOGIN]:"
|
||||
read HME
|
||||
GHME="-d $HME"
|
||||
if [ -z $HME ]
|
||||
then GHME=""
|
||||
fi
|
||||
|
||||
echo
|
||||
echo -n "$LOGIN's shell [/bin/bash]:"
|
||||
read SHL
|
||||
GSHL="-s $SHL"
|
||||
if [ -z $SHL ]
|
||||
then GSHL=""
|
||||
fi
|
||||
|
||||
echo
|
||||
echo -n "$LOGIN's account expiry date (MM/DD/YY) []:"
|
||||
read EXP
|
||||
GEXP="-e $EXP"
|
||||
if [ -z $EXP ]
|
||||
then GEXP=""
|
||||
fi
|
||||
echo
|
||||
echo OK, I'm about to make a new account. Here's what you entered so far:
|
||||
echo New login name: $LOGIN
|
||||
if [ -z $GUID ]
|
||||
then echo New UID: [Next available]
|
||||
else echo New UID: $UID
|
||||
fi
|
||||
if [ -z $GGID ]
|
||||
then echo Initial group: users
|
||||
else echo Initial group: $GID
|
||||
fi
|
||||
if [ -z $GAGID ]
|
||||
then echo Additional groups: [none]
|
||||
else echo Additional groups: $AGID
|
||||
fi
|
||||
if [ -z $GHME ]
|
||||
then echo Home directory: /home/$LOGIN
|
||||
else echo Home directory: $HME
|
||||
fi
|
||||
if [ -z $GSHL ]
|
||||
then echo Shell: /bin/bash
|
||||
else echo Shell: $SHL
|
||||
fi
|
||||
if [ -z $GEXP ]
|
||||
then echo Expiry date: [no expiration]
|
||||
else echo Expiry date: $EXP
|
||||
fi
|
||||
echo "This is it... if you want to bail out, you'd better do it now."
|
||||
read FOO
|
||||
echo Making new account...
|
||||
/usr/sbin/useradd $GHME -m $GEXP $GGID $GAGID $GSHL $GUID $LOGIN
|
||||
/usr/bin/chfn $LOGIN
|
||||
/usr/bin/passwd $LOGIN
|
||||
echo "Done..."
|
||||
@@ -1,743 +0,0 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# adduser Interactive user adding program.
|
||||
#
|
||||
# Copyright (C) 1996 Petri Mattila, Prihateam Networks
|
||||
# petri@prihateam.fi
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# Changes:
|
||||
# 220496 v0.01 Initial version
|
||||
# 230496 v0.02 More checks, embolden summary
|
||||
# 240496 Even more checks
|
||||
# 250496 Help with ?
|
||||
# 040596 v0.03 Cleanups
|
||||
# 050596 v0.04 Bug fixes, expire date checks
|
||||
# 070596 v0.05 Iso-latin-1 names
|
||||
#
|
||||
|
||||
## Defaults
|
||||
|
||||
# default groups
|
||||
def_group="users"
|
||||
def_other_groups=""
|
||||
|
||||
# default home directory
|
||||
def_home_dir=/home/users
|
||||
|
||||
# default shell
|
||||
def_shell=/bin/tcsh
|
||||
|
||||
# Default expiration date (mm/dd/yy)
|
||||
def_expire=""
|
||||
|
||||
# default dates
|
||||
def_pwd_min=0
|
||||
def_pwd_max=90
|
||||
def_pwd_warn=14
|
||||
def_pwd_iact=14
|
||||
|
||||
|
||||
# possible UIDs
|
||||
uid_low=1000
|
||||
uid_high=64000
|
||||
|
||||
# skel directory
|
||||
skel=/etc/skel
|
||||
|
||||
# default mode for home directory
|
||||
def_mode=711
|
||||
|
||||
# Regex, that the login name must meet, only ANSI characters
|
||||
login_regex='^[0-9a-zA-Z_-]*$'
|
||||
|
||||
# Regex, that the user name must meet
|
||||
# ANSI version
|
||||
##name_regex='^[0-9a-zA-Z_-\ ]*$'
|
||||
# ISO-LATIN-1 version
|
||||
name_regex='^[0-9a-zA-ZÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöùúûüýþÿ_-\ ]*$'
|
||||
|
||||
# set PATH
|
||||
export PATH="/bin:/sbin:/usr/bin:/usr/sbin"
|
||||
|
||||
# Some special characters
|
||||
case "$TERM" in
|
||||
vt*|ansi*|con*|xterm*|linux*)
|
||||
S='[1m' # start embolden
|
||||
E='[m' # end embolden
|
||||
;;
|
||||
*)
|
||||
S=''
|
||||
E=''
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
## Functions
|
||||
|
||||
check_root() {
|
||||
if test "$EUID" -ne 0
|
||||
then
|
||||
echo "You must be root to run this program."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
check_user() {
|
||||
local usr pwd uid gid name home sh
|
||||
|
||||
cat /etc/passwd | (
|
||||
while IFS=":" read usr pwd uid gid name home sh
|
||||
do
|
||||
if test "$1" = "${usr}"
|
||||
then
|
||||
return 1
|
||||
fi
|
||||
done
|
||||
return 0
|
||||
)
|
||||
}
|
||||
|
||||
check_group() {
|
||||
local read grp pwd gid members
|
||||
|
||||
cat /etc/group | (
|
||||
while IFS=":" read grp pwd gid members
|
||||
do
|
||||
if test "$1" = "${grp}"
|
||||
then
|
||||
return 1
|
||||
fi
|
||||
done
|
||||
return 0
|
||||
)
|
||||
}
|
||||
|
||||
check_other_groups() {
|
||||
local grp check IFS
|
||||
|
||||
check="$1"
|
||||
IFS=","
|
||||
|
||||
set ${check}
|
||||
for grp
|
||||
do
|
||||
if check_group "${grp}"
|
||||
then
|
||||
echo "Group ${grp} does not exist."
|
||||
return 1
|
||||
fi
|
||||
done
|
||||
return 0
|
||||
}
|
||||
|
||||
check_uid() {
|
||||
local usr pwd uid gid name home sh
|
||||
|
||||
cat /etc/passwd | (
|
||||
while IFS=":" read usr pwd uid gid name home sh
|
||||
do
|
||||
if test "$1" = "${uid}"
|
||||
then
|
||||
return 1
|
||||
fi
|
||||
done
|
||||
return 0
|
||||
)
|
||||
}
|
||||
|
||||
read_yn() {
|
||||
local ans ynd
|
||||
|
||||
ynd="$1"
|
||||
|
||||
while :
|
||||
do
|
||||
read ans
|
||||
case "${ans}" in
|
||||
"") return ${ynd} ;;
|
||||
[nN]) return 1 ;;
|
||||
[yY]) return 0 ;;
|
||||
*) echo -n "Y or N, please ? " ;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
read_login() {
|
||||
echo
|
||||
while :
|
||||
do
|
||||
echo -n "Login: ${def_login:+[${def_login}] }"
|
||||
read login
|
||||
|
||||
if test "${login}" = '?'
|
||||
then
|
||||
less /etc/passwd
|
||||
echo
|
||||
continue
|
||||
fi
|
||||
|
||||
if test -z "${login}" -a -n "${def_login}"
|
||||
then
|
||||
login="${def_login}"
|
||||
echo "Using ${login}"
|
||||
return
|
||||
fi
|
||||
|
||||
if test "${#login}" -gt 8
|
||||
then
|
||||
echo "Login must be at most 8 characters long"
|
||||
continue
|
||||
fi
|
||||
|
||||
if test "${#login}" -lt 2
|
||||
then
|
||||
echo "Login must be at least 2 characters long"
|
||||
continue
|
||||
fi
|
||||
|
||||
if ! expr "${login}" : "${login_regex}" &> /dev/null
|
||||
then
|
||||
echo "Please use letters, numbers and special characters _-,."
|
||||
continue
|
||||
fi
|
||||
|
||||
if ! check_user "${login}"
|
||||
then
|
||||
echo "Username ${login} is already in use"
|
||||
continue
|
||||
fi
|
||||
|
||||
def_login="${login}"
|
||||
return
|
||||
done
|
||||
}
|
||||
|
||||
read_name () {
|
||||
echo
|
||||
while :
|
||||
do
|
||||
echo -n "Real name: ${def_name:+[${def_name}] }"
|
||||
read name
|
||||
|
||||
if test "${name}" = '?'
|
||||
then
|
||||
less /etc/passwd
|
||||
echo
|
||||
continue
|
||||
fi
|
||||
|
||||
if test -z "${name}" -a -n "${def_name}"
|
||||
then
|
||||
name="${def_name}"
|
||||
echo "Using ${name}"
|
||||
fi
|
||||
|
||||
if test "${#name}" -gt 32
|
||||
then
|
||||
echo "Name should be at most 32 characters long"
|
||||
continue
|
||||
fi
|
||||
|
||||
if ! expr "${name}" : "${name_regex}" &> /dev/null
|
||||
then
|
||||
echo "Please use letters, numbers, spaces and special characters ,._-"
|
||||
continue
|
||||
fi
|
||||
|
||||
def_name="${name}"
|
||||
return
|
||||
done
|
||||
}
|
||||
|
||||
read_home() {
|
||||
local x
|
||||
|
||||
echo
|
||||
while :
|
||||
do
|
||||
echo -n "Home Directory: [${def_home_dir}/${login}] "
|
||||
read home
|
||||
|
||||
if test -z "${home}"
|
||||
then
|
||||
home="${def_home_dir}/${login}"
|
||||
echo "Using ${home}"
|
||||
fi
|
||||
|
||||
if ! expr "${home}" : '^[0-9a-zA-Z,._-\/]*$' &> /dev/null
|
||||
then
|
||||
echo "Please use letters, numbers, spaces and special characters ,._-/"
|
||||
continue
|
||||
fi
|
||||
|
||||
x="$(basename ${home})"
|
||||
if test "${x}" != "${login}"
|
||||
then
|
||||
echo "Warning: you are about to use different login name and home directory."
|
||||
fi
|
||||
|
||||
x="$(dirname ${home})"
|
||||
if ! test -d "${x}"
|
||||
then
|
||||
echo "Directory ${x} does not exist."
|
||||
echo "If you still want to use it, please make it manually."
|
||||
continue
|
||||
fi
|
||||
|
||||
def_home_dir="${x}"
|
||||
return
|
||||
done
|
||||
}
|
||||
|
||||
read_shell () {
|
||||
local x
|
||||
|
||||
echo
|
||||
while :
|
||||
do
|
||||
echo -n "Shell: [${def_shell}] "
|
||||
read shell
|
||||
|
||||
if test -z "${shell}"
|
||||
then
|
||||
shell="${def_shell}"
|
||||
echo "Using ${shell}"
|
||||
fi
|
||||
|
||||
for x in $(cat /etc/shells)
|
||||
do
|
||||
if test "${x}" = "${shell}"
|
||||
then
|
||||
def_shell="${shell}"
|
||||
return
|
||||
fi
|
||||
done
|
||||
|
||||
echo "Possible shells are:"
|
||||
cat /etc/shells
|
||||
done
|
||||
}
|
||||
|
||||
read_group () {
|
||||
echo
|
||||
while :
|
||||
do
|
||||
echo -n "Group: [${def_group}] "
|
||||
read group
|
||||
|
||||
if test -z "${group}"
|
||||
then
|
||||
group="${def_group}"
|
||||
echo "Using ${group}"
|
||||
fi
|
||||
|
||||
if test "${group}" = '?'
|
||||
then
|
||||
less /etc/group
|
||||
echo
|
||||
continue
|
||||
fi
|
||||
|
||||
if check_group "${group}"
|
||||
then
|
||||
echo "Group ${group} does not exist."
|
||||
continue
|
||||
fi
|
||||
|
||||
def_group="${group}"
|
||||
return
|
||||
done
|
||||
}
|
||||
|
||||
read_other_groups () {
|
||||
echo
|
||||
while :
|
||||
do
|
||||
echo -n "Other groups: [${def_og:-none}] "
|
||||
read other_groups
|
||||
|
||||
if test "${other_groups}" = '?'
|
||||
then
|
||||
less /etc/group
|
||||
echo
|
||||
continue
|
||||
fi
|
||||
|
||||
if test -z "${other_groups}"
|
||||
then
|
||||
if test -n "${def_og}"
|
||||
then
|
||||
other_groups="${def_og}"
|
||||
echo "Using ${other_groups}"
|
||||
else
|
||||
echo "No other groups"
|
||||
return
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
if ! check_other_groups "${other_groups}"
|
||||
then
|
||||
continue
|
||||
fi
|
||||
|
||||
def_og="${other_groups}"
|
||||
return
|
||||
done
|
||||
}
|
||||
|
||||
read_uid () {
|
||||
echo
|
||||
while :
|
||||
do
|
||||
echo -n "uid: [first free] "
|
||||
read uid
|
||||
|
||||
if test -z "${uid}"
|
||||
then
|
||||
echo "Using first free UID."
|
||||
return
|
||||
fi
|
||||
|
||||
if test "${uid}" = '?'
|
||||
then
|
||||
less /etc/passwd
|
||||
echo
|
||||
continue
|
||||
fi
|
||||
|
||||
if ! expr "${uid}" : '^[0-9]+$' &> /dev/null
|
||||
then
|
||||
echo "Please use numbers only."
|
||||
continue
|
||||
fi
|
||||
if test "${uid}" -lt "${uid_low}"
|
||||
then
|
||||
echo "UID must be greater than ${uid_low}"
|
||||
continue
|
||||
fi
|
||||
if test "${uid}" -gt "${uid_high}"
|
||||
then
|
||||
echo "UID must be smaller than ${uid_high}"
|
||||
continue
|
||||
fi
|
||||
if ! check_uid "${uid}"
|
||||
then
|
||||
echo "UID ${uid} is already in use"
|
||||
continue
|
||||
fi
|
||||
|
||||
return
|
||||
done
|
||||
}
|
||||
|
||||
read_max_valid_days() {
|
||||
echo
|
||||
while :
|
||||
do
|
||||
echo -en "Maximum days between password changes: [${def_pwd_max}] "
|
||||
read max_days
|
||||
|
||||
if test -z "${max_days}"
|
||||
then
|
||||
max_days="${def_pwd_max}"
|
||||
echo "Using ${max_days}"
|
||||
return
|
||||
fi
|
||||
|
||||
if ! expr "${max_days}" : '^[0-9]+$' &> /dev/null
|
||||
then
|
||||
echo "Please use numbers only."
|
||||
continue
|
||||
fi
|
||||
if test "${max_days}" -lt 7
|
||||
then
|
||||
echo "Warning: you are using a value shorter than a week."
|
||||
fi
|
||||
|
||||
def_pwd_max="${max_days}"
|
||||
return
|
||||
done
|
||||
}
|
||||
|
||||
read_min_valid_days() {
|
||||
echo
|
||||
while :
|
||||
do
|
||||
echo -en "Minimum days between password changes: [${def_pwd_min}] "
|
||||
read min_days
|
||||
|
||||
if test -z "${min_days}"
|
||||
then
|
||||
min_days="${def_pwd_min}"
|
||||
echo "Using ${min_days}"
|
||||
return
|
||||
fi
|
||||
|
||||
if ! expr "${min_days}" : '^[0-9]+$' &> /dev/null
|
||||
then
|
||||
echo "Please use numbers only."
|
||||
continue
|
||||
fi
|
||||
if test "${min_days}" -gt 7
|
||||
then
|
||||
echo "Warning: you are using a value longer than a week."
|
||||
fi
|
||||
|
||||
def_pwd_min="${min_days}"
|
||||
return
|
||||
done
|
||||
}
|
||||
|
||||
read_warning_days() {
|
||||
echo
|
||||
while :
|
||||
do
|
||||
echo -en "Number of warning days before password expires: [${def_pwd_warn}] "
|
||||
read warn_days
|
||||
|
||||
if test -z "${warn_days}"
|
||||
then
|
||||
warn_days="${def_pwd_warn}"
|
||||
echo "Using ${warn_days}"
|
||||
fi
|
||||
|
||||
if ! expr "${warn_days}" : '^[0-9]+$' &> /dev/null
|
||||
then
|
||||
echo "Please use numbers only."
|
||||
continue
|
||||
fi
|
||||
if test "${warn_days}" -gt 14
|
||||
then
|
||||
echo "Warning: you are using a value longer than two week."
|
||||
fi
|
||||
|
||||
def_pwd_warn="${warn_days}"
|
||||
return
|
||||
done
|
||||
}
|
||||
|
||||
|
||||
read_inactive_days() {
|
||||
echo
|
||||
while :
|
||||
do
|
||||
echo -en "Number of usable days after expiration: [${def_pwd_iact}] "
|
||||
read iact_days
|
||||
|
||||
if test -z "${iact_days}"
|
||||
then
|
||||
iact_days="${def_pwd_iact}"
|
||||
echo "Using ${iact_days}"
|
||||
return
|
||||
fi
|
||||
if ! expr "${iact_days}" : '^[0-9]+$' &> /dev/null
|
||||
then
|
||||
echo "Please use numbers only."
|
||||
continue
|
||||
fi
|
||||
if test "${iact_days}" -gt 14
|
||||
then
|
||||
echo "Warning: you are using a value that is more than two weeks."
|
||||
fi
|
||||
|
||||
def_pwd_iact="${iact_days}"
|
||||
return
|
||||
done
|
||||
}
|
||||
|
||||
read_expire_date() {
|
||||
local ans
|
||||
|
||||
echo
|
||||
while :
|
||||
do
|
||||
echo -en "Expire date of this account (mm/dd/yy): [${def_expire:-never}] "
|
||||
read ans
|
||||
|
||||
if test -z "${ans}"
|
||||
then
|
||||
if test -z "${def_expire}"
|
||||
then
|
||||
ans="never"
|
||||
else
|
||||
ans="${def_expire}"
|
||||
echo "Using ${def_expire}"
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "${ans}" = "never"
|
||||
then
|
||||
echo "Account will never expire."
|
||||
def_expire=""
|
||||
expire=""
|
||||
return
|
||||
fi
|
||||
|
||||
if ! expr "${ans}" : '^[0-9][0-9]/[0-9][0-9]/[0-9][0-9]$' &> /dev/null
|
||||
then
|
||||
echo "Please use format mm/dd/yy"
|
||||
continue
|
||||
fi
|
||||
|
||||
if ! expire_date="$(date -d ${ans} '+%A, %B %d %Y')"
|
||||
then
|
||||
continue
|
||||
fi
|
||||
|
||||
def_expire="${expire}"
|
||||
return
|
||||
done
|
||||
}
|
||||
|
||||
read_passwd_yn() {
|
||||
echo -en "\nDo you want to set password [Y/n] ? "
|
||||
if read_yn 0
|
||||
then
|
||||
set_pwd="YES"
|
||||
else
|
||||
set_pwd=""
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
print_values() {
|
||||
|
||||
clear
|
||||
cat << EOM
|
||||
|
||||
Login: ${S}${login}${E}
|
||||
Group: ${S}${group}${E}
|
||||
Other groups: ${S}${other_groups:-[none]}${E}
|
||||
|
||||
Real Name: ${S}${name}${E}
|
||||
|
||||
uid: ${S}${uid:-[first free]}${E}
|
||||
home: ${S}${home}${E}
|
||||
shell: ${S}${shell}${E}
|
||||
|
||||
Account expiration date: ${S}${expire_date:-never}${E}
|
||||
Minimum days between password changes: ${S}${min_days}${E}
|
||||
Maximum days between password changes: ${S}${max_days}${E}
|
||||
Number of usable days after expiration: ${S}${iact_days}${E}
|
||||
Number of warning days before expiration: ${S}${warn_days}${E}
|
||||
|
||||
${S}${set_pwd:+Set password for this account.}${E}
|
||||
|
||||
EOM
|
||||
}
|
||||
|
||||
set_user() {
|
||||
if ! useradd \
|
||||
-c "${name}" \
|
||||
-d "${home}" \
|
||||
-g "${group}" \
|
||||
-s "${shell}" \
|
||||
${expire:+-e ${expire}} \
|
||||
${uid:+-u ${uid}} \
|
||||
${other_groups:+-G ${other_groups}} \
|
||||
${login}
|
||||
then
|
||||
echo "Error ($?) in useradd...exiting..."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
set_aging() {
|
||||
if ! passwd \
|
||||
-x ${max_days} \
|
||||
-n ${min_days} \
|
||||
-w ${warn_days} \
|
||||
-i ${iact_days} \
|
||||
${login}
|
||||
then
|
||||
echo "Error ($?) in setting password aging...exiting..."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
set_password() {
|
||||
if test -n "${set_pwd}"
|
||||
then
|
||||
echo
|
||||
passwd ${login}
|
||||
echo
|
||||
fi
|
||||
}
|
||||
|
||||
set_system() {
|
||||
if test -d "${home}"
|
||||
then
|
||||
echo "Directory ${home} already exists."
|
||||
echo "Skeleton files not copied."
|
||||
return
|
||||
fi
|
||||
|
||||
echo -n "Copying skeleton files..."
|
||||
(
|
||||
mkdir ${home}
|
||||
cd ${skel} && cp -af . ${home}
|
||||
chmod ${def_mode} ${home}
|
||||
chown -R ${login}:${group} ${home}
|
||||
)
|
||||
echo "done."
|
||||
|
||||
## Add your own stuff here:
|
||||
echo -n "Setting up other files..."
|
||||
(
|
||||
mailbox="/var/spool/mail/${login}"
|
||||
touch ${mailbox}
|
||||
chown "${login}:mail" ${mailbox}
|
||||
chmod 600 ${mailbox}
|
||||
)
|
||||
echo "done."
|
||||
}
|
||||
|
||||
|
||||
read_values() {
|
||||
clear
|
||||
echo -e "\nPlease answer the following questions about the new user to be added."
|
||||
|
||||
while :
|
||||
do
|
||||
read_login
|
||||
read_name
|
||||
read_group
|
||||
read_other_groups
|
||||
read_home
|
||||
read_shell
|
||||
read_uid
|
||||
read_expire_date
|
||||
read_max_valid_days
|
||||
read_min_valid_days
|
||||
read_warning_days
|
||||
read_inactive_days
|
||||
read_passwd_yn
|
||||
|
||||
print_values
|
||||
|
||||
echo -n "Is this correct [N/y] ? "
|
||||
read_yn 1 && return
|
||||
done
|
||||
}
|
||||
|
||||
|
||||
main() {
|
||||
check_root
|
||||
read_values
|
||||
set_user
|
||||
set_aging
|
||||
set_system
|
||||
set_password
|
||||
}
|
||||
|
||||
|
||||
## Run it 8-)
|
||||
main
|
||||
|
||||
# End.
|
||||
78
debian/NEWS
vendored
Normal file
78
debian/NEWS
vendored
Normal file
@@ -0,0 +1,78 @@
|
||||
shadow (1:4.17.0~rc1-1) unstable; urgency=medium
|
||||
|
||||
Username checking now once again follows the upstream rules, for
|
||||
an ecosystem-wide ruleset and security.
|
||||
|
||||
-- Chris Hofstaedtler <zeha@debian.org> Sun, 22 Dec 2024 20:12:35 +0100
|
||||
|
||||
shadow (1:4.16.0-5) unstable; urgency=medium
|
||||
|
||||
/var/log/faillog and the programs to read it are no longer part since
|
||||
1:4.15.2-2.
|
||||
The file isn't cleaned up automatically, which should be done manually,
|
||||
unless it is still needed for special reasons.
|
||||
|
||||
-- Chris Hofstaedtler <zeha@debian.org> Sat, 16 Nov 2024 15:48:35 +0100
|
||||
|
||||
shadow (1:4.13+dfsg1-2) unstable; urgency=medium
|
||||
|
||||
The previous entry falsely states that PREVENT_NO_AUTH in /etc/login.defs
|
||||
affects authentication. The historical default of letting all users with
|
||||
empty password field in without authentication is still in effect.
|
||||
|
||||
-- Balint Reczey <balint@balintreczey.hu> Mon, 25 Sep 2023 17:04:09 +0200
|
||||
|
||||
shadow (1:4.11.1+dfsg1-0exp1) experimental; urgency=medium
|
||||
|
||||
Login now prevents an empty password field to be interpreted as
|
||||
"no authentication required" for UID 0 (root account).
|
||||
The historical default of letting all users with empty password field
|
||||
in without authentication can be restored in /etc/login.defs setting
|
||||
PREVENT_NO_AUTH to "no".
|
||||
|
||||
-- Balint Reczey <balint@balintreczey.hu> Sun, 07 Nov 2021 21:51:46 +0100
|
||||
|
||||
shadow (1:4.7-1) unstable; urgency=medium
|
||||
|
||||
* /etc/securetty is no longer shipped by this package and it is no longer
|
||||
honored in login's PAM configuration by default. Please see #731656 for the
|
||||
details.
|
||||
|
||||
-- Balint Reczey <rbalint@ubuntu.com> Thu, 20 Jun 2019 13:46:52 +0200
|
||||
|
||||
shadow (1:4.0.15-5) unstable; urgency=low
|
||||
|
||||
* commands passed in argument to su must use su's -c option and must quote
|
||||
the command if it contains a space, as in:
|
||||
su - root -c "ls -l /"
|
||||
The following commands won't work anymore:
|
||||
su - root -c ls -l /
|
||||
su - root "ls -l /"
|
||||
su - root ls -l /
|
||||
|
||||
-- Christian Perrier <bubulle@debian.org> Sat, 8 Apr 2006 20:11:38 +0200
|
||||
|
||||
shadow (1:4.0.14-1) unstable; urgency=low
|
||||
|
||||
* passwd does not support the -f, -s, and -g options anymore. You should use
|
||||
the chfn, chsh and gpasswd utilities instead.
|
||||
* login now distributes the nologin utility, which can be used as a shell
|
||||
to politely refuse a login
|
||||
|
||||
-- Christian Perrier <bubulle@debian.org> Thu, 5 Jan 2006 08:47:44 +0100
|
||||
|
||||
shadow (1:4.0.12-1) unstable; urgency=low
|
||||
|
||||
CLOSE_SESSIONS and other variables are not used anymore in
|
||||
/etc/login/defs.
|
||||
As shadow utilities which use this file now warn about unknown
|
||||
entries there, administrators should remove such unknown entries.
|
||||
The supplied login.defs file does not include them anymore.
|
||||
|
||||
dpasswd is no more distributed by upstream. Login do not support
|
||||
dialup password anymore. Re-introducing this functionality in
|
||||
upstream is not trivial.
|
||||
|
||||
|
||||
-- Christian Perrier <bubulle@debian.org> Thu, 25 Aug 2005 08:38:47 +0200
|
||||
|
||||
63
debian/README.Debian
vendored
Normal file
63
debian/README.Debian
vendored
Normal file
@@ -0,0 +1,63 @@
|
||||
Read this file first for a brief overview of the current version
|
||||
of passwd.
|
||||
|
||||
|
||||
---Shadow passwords
|
||||
|
||||
The command `shadowconfig on' will turn on shadow password support.
|
||||
This is the default. Turning off shadow passwords is not supported
|
||||
anymore.
|
||||
Together with shadow passwords, you get the ability to set password ages
|
||||
and expirations with chage(1).
|
||||
|
||||
NOTE: If you use the nscd package, you may have problems with a
|
||||
slight delay in updating the password information. You may notice
|
||||
this during upgrades of certain packages that try to add a system
|
||||
user and then access the users information immediately afterwards.
|
||||
To avoid this, it is suggested that you stop the nscd daemon before
|
||||
upgrades, then restart it again.
|
||||
|
||||
---General configuration
|
||||
|
||||
Most of the configuration for the shadow utilities is in
|
||||
/etc/login.defs. See login.defs(5). The defaults are quite
|
||||
reasonable.
|
||||
|
||||
Also see the /etc/pam.d/* files for each program to configure the PAM
|
||||
support. PAM documentation is available in several formats in the
|
||||
libpam-doc package.
|
||||
|
||||
|
||||
---Encryption
|
||||
|
||||
This is enabled now using the /etc/pam.d/* files. Examples are given.
|
||||
|
||||
|
||||
---Adding users and groups
|
||||
|
||||
Though you may add users and groups with the SysV type commands,
|
||||
useradd and groupadd, I recommend you add them with Debian adduser
|
||||
version 3+. adduser gives you more configuration and conforms to the
|
||||
Debian UID and GID allocation.
|
||||
|
||||
Editing user and group parameters can be done with usermod and
|
||||
groupmod. Removing users and groups can be done with userdel and
|
||||
groupdel.
|
||||
|
||||
|
||||
--- Group administration
|
||||
|
||||
Local group allocation is much easier. With gpasswd(1) you can
|
||||
designate users to administer groups. They can then securely add or
|
||||
remove users from the group.
|
||||
|
||||
|
||||
--- What to read next?
|
||||
|
||||
Read the manpages, the other files in this directory, and the Shadow
|
||||
Password HOWTO (included in the doc-linux package). A large portion
|
||||
of these files deals with getting shadow installed. You can, of
|
||||
course, ignore those parts.
|
||||
|
||||
Also, the libpam-doc package will go a long way to allowing you to take
|
||||
full advantage of the PAM authentication scheme.
|
||||
8
debian/README.source
vendored
Normal file
8
debian/README.source
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
If you update the translation of upsteam files (thank you for that!) please
|
||||
submit a pull request upstream instead of filing a bug in the Debian BTS
|
||||
to get it reviewed and accepted faster.
|
||||
|
||||
A testsuite is also available. Instruction on how to run this testsuite
|
||||
are available in tests/README
|
||||
|
||||
-- Balint Reczey <balint@balintreczey.hu>, Mon, 31 Jan 2022 14:07:11 +0100
|
||||
19
debian/TODO
vendored
Normal file
19
debian/TODO
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
Things that should be done:
|
||||
* Verify the files left in debian/tmp
|
||||
+ e.g. /etc/default/adduser should be installed
|
||||
* Check the build system: rebuilding the package twoce in the same tree
|
||||
doubles the size of the diff.gz file
|
||||
|
||||
Other points (not related to the release of a syncronized shadow):
|
||||
* compare the source with the usages and man pages
|
||||
+ probably add a sentence to chsh/chfn's manpages about authentication
|
||||
required for ordinary users
|
||||
* do something (a tool) for the variables in login.defs
|
||||
In Debian, some tools are not compiled with the PAM support, so upstream
|
||||
getdef.c won't be OK.
|
||||
It should be nice to see in each man page the set of variables used.
|
||||
The Debian package can now compile (export DEB_BUILD_OPTIONS='nostrip debug')
|
||||
with the debugging informations. This may be used to extract the set of
|
||||
variables used in Debian/for each tools.
|
||||
* verify all the patches around (I've found patches for at least RedHat,
|
||||
OWL, LFS, Mandriva, Gentoo; are they already applied?)
|
||||
25
debian/bugs-usertags
vendored
Normal file
25
debian/bugs-usertags
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
This described the usertags used by the team.
|
||||
|
||||
For usertags documentation, see
|
||||
http://lists.debian.org/debian-devel-announce/2005/09/msg00002.html
|
||||
|
||||
All bugs tagged by team members must be tagged with
|
||||
"user pkg-shadow-devel@lists.alioth.debian.org"
|
||||
|
||||
Tags list
|
||||
---------
|
||||
|
||||
toclose: This bug has been announced to be closed in case no more news
|
||||
or information is received from the bug submitter or someone
|
||||
else until the delay specified in the limits_YYYYMMDD tag
|
||||
|
||||
limits-YYYYMMDD: combine it with "toclose". Specifies the date after which
|
||||
bugs can be closed without other action in case no news
|
||||
is received
|
||||
|
||||
manpages-replace A bug reported angainst a manpages-xx package to indicate
|
||||
conflicting man pages. This tag can be used to tune the
|
||||
Replaces fields.
|
||||
|
||||
su-transition: This bug is related to the su transition (#276419)
|
||||
|
||||
4438
debian/changelog
vendored
Normal file
4438
debian/changelog
vendored
Normal file
File diff suppressed because it is too large
Load Diff
90
debian/control
vendored
Normal file
90
debian/control
vendored
Normal file
@@ -0,0 +1,90 @@
|
||||
Source: shadow
|
||||
Maintainer: Shadow package maintainers <pkg-shadow-devel@lists.alioth.debian.org>
|
||||
Uploaders:
|
||||
Serge Hallyn <serge@hallyn.com>,
|
||||
Chris Hofstaedtler <zeha@debian.org>
|
||||
Section: admin
|
||||
Priority: required
|
||||
Build-Depends:
|
||||
debhelper-compat (= 13),
|
||||
dh-package-notes,
|
||||
dh-sequence-zz-debputy-rrr (>= 0.1.23~),
|
||||
docbook-xml <!nodoc>,
|
||||
docbook-xsl <!nodoc>,
|
||||
gettext,
|
||||
itstool <!nodoc>,
|
||||
libacl1-dev,
|
||||
libattr1-dev,
|
||||
libaudit-dev [linux-any],
|
||||
libbsd-dev,
|
||||
libcrypt-dev,
|
||||
libltdl-dev,
|
||||
libpam0g-dev,
|
||||
libselinux1-dev [linux-any],
|
||||
libsemanage-dev [linux-any],
|
||||
libxml2-utils <!nodoc>,
|
||||
pkgconf,
|
||||
systemd-dev [linux-any],
|
||||
xsltproc <!nodoc>
|
||||
Standards-Version: 4.7.0
|
||||
Vcs-Git: https://salsa.debian.org/debian/shadow.git -b master
|
||||
Vcs-Browser: https://salsa.debian.org/debian/shadow
|
||||
Homepage: https://github.com/shadow-maint/shadow
|
||||
Rules-Requires-Root: no
|
||||
|
||||
Package: passwd
|
||||
Architecture: any
|
||||
Multi-Arch: foreign
|
||||
Depends:
|
||||
base-passwd (>= 3.6.4),
|
||||
libpam-modules,
|
||||
login.defs
|
||||
Recommends:
|
||||
sensible-utils
|
||||
Replaces:
|
||||
login (<< 1:4.16.0-2~)
|
||||
Description: change and administer password and group data
|
||||
This package includes passwd, chsh, chfn, and many other programs to
|
||||
maintain password and group data.
|
||||
.
|
||||
Shadow passwords are supported. See /usr/share/doc/passwd/README.Debian
|
||||
|
||||
Package: login.defs
|
||||
Architecture: all
|
||||
Multi-Arch: foreign
|
||||
Replaces:
|
||||
login (<< 1:4.16.0-2~)
|
||||
Description: system user management configuration
|
||||
This package provides the login.defs configuration file,
|
||||
used by otherwise unrelated tools managing system users.
|
||||
|
||||
Package: uidmap
|
||||
Architecture: any
|
||||
Multi-Arch: foreign
|
||||
Priority: optional
|
||||
Description: programs to help use subuids
|
||||
These programs help unprivileged users to create uid and gid mappings in
|
||||
user namespaces.
|
||||
|
||||
Package: libsubid5
|
||||
Section: libs
|
||||
Priority: optional
|
||||
Architecture: any
|
||||
Multi-Arch: same
|
||||
Description: subordinate id handling library -- shared library
|
||||
The library provides an interface for querying, granding and ungranting
|
||||
subordinate user and group ids.
|
||||
|
||||
Package: libsubid-dev
|
||||
Section: libdevel
|
||||
Priority: optional
|
||||
Architecture: any
|
||||
Multi-Arch: same
|
||||
Depends:
|
||||
libsubid5 (= ${binary:Version})
|
||||
Description: subordinate id handling library -- shared library
|
||||
The library provides an interface for querying, granding and ungranting
|
||||
subordinate user and group ids.
|
||||
.
|
||||
This package contains the C header files that are
|
||||
needed for applications to use the libsubid library.
|
||||
177
debian/copyright
vendored
Normal file
177
debian/copyright
vendored
Normal file
@@ -0,0 +1,177 @@
|
||||
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||
Upstream-Name: Shadow
|
||||
Source: https://github.com/shadow-maint/shadow
|
||||
|
||||
Files: *
|
||||
Copyright: 1989-1994, Julianne Frances Haugh
|
||||
2016-2024, Serge Hallyn <serge@hallyn.com>
|
||||
License: BSD-3-clause
|
||||
|
||||
Files: man/po/da.po
|
||||
man/po/de.po
|
||||
man/tr/man1/su.1
|
||||
po/da.po
|
||||
po/de.po
|
||||
po/es.po
|
||||
po/eu.po
|
||||
po/fi.po
|
||||
po/gl.po
|
||||
po/it.po
|
||||
po/kk.po
|
||||
po/nb.po
|
||||
po/nl.po
|
||||
po/nn.po
|
||||
po/pl.po
|
||||
po/pt_BR.po
|
||||
po/ru.po
|
||||
po/sq.po
|
||||
po/sv.po
|
||||
po/vi.po
|
||||
Copyright: 1999-2015, Free Software Foundation, Inc
|
||||
License: BSD-3-clause
|
||||
|
||||
Files: man/fi/man1/chfn.1
|
||||
man/id/man1/*
|
||||
man/ko/man1/chfn.1
|
||||
man/ko/man1/chsh.1
|
||||
man/tr/man1/chfn.1
|
||||
man/zh_TW/man1/chfn.1
|
||||
man/zh_TW/man1/chsh.1
|
||||
Copyright: 1994, salvatore valente <svalente@athena.mit.edu>
|
||||
License: GPL-1
|
||||
|
||||
Files: man/pt_BR/man8/*
|
||||
man/zh_TW/man8/usermod.8
|
||||
Copyright: 1991-1994, Julianne Frances Haugh
|
||||
License: BSD-3-clause
|
||||
|
||||
Files: man/hu/man1/gpasswd.1
|
||||
man/ja/man1/gpasswd.1
|
||||
man/pt_BR/man1/*
|
||||
Copyright: 1996, Rafal Maszkowski <rzm@pdi.net>
|
||||
License: BSD-3-clause
|
||||
|
||||
Files: man/id/man1/login.1
|
||||
man/ko/man1/login.1
|
||||
man/tr/man1/login.1
|
||||
Copyright: 1993, Rickard E. Faith <faith@cs.unc.edu>
|
||||
License: BSD-3-clause
|
||||
|
||||
Files: man/ja/man5/limits.5
|
||||
man/ja/man8/vipw.8
|
||||
Copyright: 2001, Maki KURODA
|
||||
License: BSD-3-clause
|
||||
|
||||
Files: man/pt_BR/man5/passwd.5
|
||||
man/tr/man5/passwd.5
|
||||
Copyright: 1993, Michael Haardt <michael@moria.de>
|
||||
License: GPL-2+
|
||||
|
||||
Files: man/ja/man1/chage.1
|
||||
man/ja/man5/suauth.5
|
||||
Copyright: 1997, Kazuyoshi Furutaka
|
||||
License: BSD-3-clause
|
||||
|
||||
Files: man/po/fr.po
|
||||
po/fr.po
|
||||
Copyright: 2011-2013, Debian French l10n team <debian-l10n-french@lists.debian.org>
|
||||
License: BSD-3-clause
|
||||
|
||||
Files: man/zh_TW/man5/*
|
||||
Copyright: 1993, Michael Haardt <michael@moria.de>
|
||||
1993, Scorpio, www.linuxforum.net
|
||||
License: GPL-2+
|
||||
|
||||
Files: man/hu/man5/*
|
||||
Copyright: 1993, Michael Haardt <u31b3hs@pool.informatik.rwth-aachen.de>
|
||||
License: GPL-2+
|
||||
|
||||
Files: lib/subordinateio.h
|
||||
Copyright: 2012, Eric W. Biederman
|
||||
License: BSD-3-clause
|
||||
|
||||
Files: man/hu/man1/su.1
|
||||
Copyright: 1999, Ragnar Hojland Espinosa <ragnar@macula.net>
|
||||
License: BSD-3-clause
|
||||
|
||||
Files: man/ja/man8/pwconv.8
|
||||
Copyright: 2001, Yuichi SATO
|
||||
License: BSD-3-clause
|
||||
|
||||
Files: src/login_nopam.c
|
||||
Copyright: 1995, Wietse Venema
|
||||
License: BSD-3-clause
|
||||
|
||||
Files: src/su.c
|
||||
Copyright: 1989 - 1994, Julianne Frances Haugh
|
||||
1996 - 2000, Marek Michałkiewicz
|
||||
2000 - 2006, Tomasz Kłoczko
|
||||
2007 - 2013, Nicolas François
|
||||
License: GPL-2+
|
||||
|
||||
Files: src/vipw.c
|
||||
Copyright: 1997, Guy Maor <maor@ece.utexas.edu>
|
||||
1999 - 2000, Marek Michałkiewicz
|
||||
2002 - 2006, Tomasz Kłoczko
|
||||
2007 - 2013, Nicolas François
|
||||
License: GPL-2+
|
||||
|
||||
Files: man/ko/man5/*
|
||||
Copyright: 2000, ASPLINUX <man@asp-linux.co.kr>
|
||||
License: GPL-2+
|
||||
|
||||
Files: debian/*
|
||||
Copyright: 1999-2001, Ben Collins <bcollins@debian.org>
|
||||
2001-2004 Karl Ramm <kcr@debian.org>
|
||||
2004-2014 Christian Perrier <bubulle@debian.org>
|
||||
2006-2012 Nicolas Francois (Nekral) <nicolas.francois@centraliens.net>
|
||||
2017-2022 Balint Reczey <balint@balintreczey.hu>
|
||||
License: BSD-3-clause
|
||||
|
||||
Files: debian/passwd.expire.cron
|
||||
Copyright: 1999, Ben Collins <bcollins@debian.org>
|
||||
License: BSD-3-clause
|
||||
|
||||
License: BSD-3-clause
|
||||
All rights reserved.
|
||||
.
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
3. Neither the name of the University nor the names of its contributors
|
||||
may be used to endorse or promote products derived from this software
|
||||
without specific prior written permission.
|
||||
.
|
||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGE.
|
||||
|
||||
License: GPL-1
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; version 1
|
||||
.
|
||||
On Debian systems, the complete text of version 1 of the GNU General
|
||||
Public License can be found in '/usr/share/common-licenses/GPL-1'.
|
||||
|
||||
License: GPL-2+
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; version 2 dated June, 1991, or (at
|
||||
your option) any later version.
|
||||
.
|
||||
On Debian systems, the complete text of version 2 of the GNU General
|
||||
Public License can be found in '/usr/share/common-licenses/GPL-2'.
|
||||
24
debian/debputy.manifest
vendored
Normal file
24
debian/debputy.manifest
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
manifest-version: '0.1'
|
||||
packages:
|
||||
passwd:
|
||||
transformations:
|
||||
- path-metadata:
|
||||
paths:
|
||||
- usr/bin/chfn
|
||||
- usr/bin/chsh
|
||||
- usr/bin/gpasswd
|
||||
- usr/bin/passwd
|
||||
mode: "u=rwxs,go=rx"
|
||||
- path-metadata:
|
||||
paths:
|
||||
- usr/bin/chage
|
||||
- usr/bin/expiry
|
||||
group: "shadow"
|
||||
mode: "u=rwx,go=rxs"
|
||||
uidmap:
|
||||
transformations:
|
||||
- path-metadata:
|
||||
paths:
|
||||
- usr/bin/newgidmap
|
||||
- usr/bin/newuidmap
|
||||
mode: "u=rwxs,go=rx"
|
||||
37
debian/default/useradd
vendored
Normal file
37
debian/default/useradd
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
# Default values for useradd(8)
|
||||
#
|
||||
# The SHELL variable specifies the default login shell on your
|
||||
# system.
|
||||
# Similar to DSHELL in adduser. However, we use "sh" here because
|
||||
# useradd is a low level utility and should be as general
|
||||
# as possible
|
||||
SHELL=/bin/sh
|
||||
#
|
||||
# The default group for users
|
||||
# 100=users on Debian systems
|
||||
# Same as USERS_GID in adduser
|
||||
# This argument is used when the -n flag is specified.
|
||||
# The default behavior (when -n and -g are not specified) is to create a
|
||||
# primary user group with the same name as the user being added to the
|
||||
# system.
|
||||
# GROUP=100
|
||||
#
|
||||
# The default home directory. Same as DHOME for adduser
|
||||
# HOME=/home
|
||||
#
|
||||
# The number of days after a password expires until the account
|
||||
# is permanently disabled
|
||||
# INACTIVE=-1
|
||||
#
|
||||
# The default expire date
|
||||
# EXPIRE=
|
||||
#
|
||||
# The SKEL variable specifies the directory containing "skeletal" user
|
||||
# files; in other words, files such as a sample .profile that will be
|
||||
# copied to the new user's home directory when it is created.
|
||||
# SKEL=/etc/skel
|
||||
#
|
||||
# Defines whether the mail spool should be created while
|
||||
# creating the account
|
||||
# CREATE_MAIL_SPOOL=no
|
||||
|
||||
16
debian/dependencies
vendored
Normal file
16
debian/dependencies
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
Build-Depends:
|
||||
==============
|
||||
* gettext
|
||||
POT, PO, GMO regenerated?
|
||||
* xsltproc
|
||||
used to generate the manpages
|
||||
* docbook-xsl
|
||||
needed for /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl
|
||||
* docbook-xml
|
||||
manpages/docbook.xsl includes html/docbook.xsl
|
||||
(But it is not strictly needed. The generated manpages are identical.
|
||||
Without it, a warning is generated.)
|
||||
Needed by JH_CHECK_XML_CATALOG([-//OASIS//DTD DocBook XML V4.1.2//EN], [DocBook XML DTD V4.1.2], [], enable_man=no)
|
||||
* libxml2-utils
|
||||
needed by the JH_CHECK_XML_CATALOG macros
|
||||
|
||||
7
debian/gbp.conf
vendored
Normal file
7
debian/gbp.conf
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
[DEFAULT]
|
||||
upstream-branch = upstream
|
||||
pristine-tar = True
|
||||
sign-tags = True
|
||||
|
||||
[pq]
|
||||
patch-numbers = False
|
||||
7
debian/gitlab-ci.yml
vendored
Normal file
7
debian/gitlab-ci.yml
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
variables:
|
||||
RELEASE: 'unstable'
|
||||
# workaround for https://salsa.debian.org/salsa-ci-team/pipeline/-/issues/259
|
||||
SALSA_CI_REPROTEST_ARGS: --vary=domain_host.use_sudo=1
|
||||
include:
|
||||
- https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml
|
||||
- https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/pipeline-jobs.yml
|
||||
3
debian/libsubid-dev.install
vendored
Normal file
3
debian/libsubid-dev.install
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
usr/include/*
|
||||
usr/lib/*/libsubid.a
|
||||
usr/lib/*/libsubid.so
|
||||
1
debian/libsubid5.install
vendored
Normal file
1
debian/libsubid5.install
vendored
Normal file
@@ -0,0 +1 @@
|
||||
usr/lib/*/libsubid.so.*
|
||||
11
debian/libsubid5.symbols
vendored
Normal file
11
debian/libsubid5.symbols
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
libsubid.so.5 libsubid5 #MINVER#
|
||||
subid_free@Base 1:4.16.0
|
||||
subid_get_gid_owners@Base 1:4.16.0
|
||||
subid_get_gid_ranges@Base 1:4.16.0
|
||||
subid_get_uid_owners@Base 1:4.16.0
|
||||
subid_get_uid_ranges@Base 1:4.16.0
|
||||
subid_grant_gid_range@Base 1:4.16.0
|
||||
subid_grant_uid_range@Base 1:4.16.0
|
||||
subid_init@Base 1:4.16.0
|
||||
subid_ungrant_gid_range@Base 1:4.16.0
|
||||
subid_ungrant_uid_range@Base 1:4.16.0
|
||||
1
debian/login.defs.install
vendored
Normal file
1
debian/login.defs.install
vendored
Normal file
@@ -0,0 +1 @@
|
||||
etc/login.defs etc
|
||||
2
debian/login.defs.manpages
vendored
Normal file
2
debian/login.defs.manpages
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
usr/share/man/*/man5/login.defs.5
|
||||
usr/share/man/man5/login.defs.5
|
||||
26
debian/login.defs.postinst
vendored
Normal file
26
debian/login.defs.postinst
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
|
||||
_adopt_conffile() {
|
||||
conffile=$1
|
||||
pkg=$2
|
||||
|
||||
[ -f ${conffile}.dpkg-bak ] || return 0
|
||||
|
||||
md5sum="$(md5sum ${conffile} | sed -e 's/ .*//')"
|
||||
old_md5sum="$(dpkg-query -W -f='${Conffiles}' $pkg | \
|
||||
sed -n -e "\' ${conffile} ' { s/ obsolete$//; s/.* //; p }")"
|
||||
# On new installs, if the conffile was preserved on upgrade by
|
||||
# dpkg-maintscript helper, copy it back if the new file has not been
|
||||
# modified yet
|
||||
if [ "$md5sum" = "$old_md5sum" ]; then
|
||||
mv ${conffile}.dpkg-bak ${conffile}
|
||||
fi
|
||||
}
|
||||
|
||||
if [ "$1" = configure ] && [ -z "$2" ]; then
|
||||
_adopt_conffile /etc/login.defs login.defs
|
||||
fi
|
||||
|
||||
#DEBHELPER#
|
||||
54
debian/not-installed
vendored
Normal file
54
debian/not-installed
vendored
Normal file
@@ -0,0 +1,54 @@
|
||||
bin/groups
|
||||
bin/login
|
||||
# Workaround debhelper complaining about login.defs, although we install it.
|
||||
etc/login.defs
|
||||
etc/pam.d/chfn
|
||||
etc/pam.d/chage
|
||||
etc/pam.d/chpasswd
|
||||
etc/pam.d/chsh
|
||||
etc/pam.d/groupadd
|
||||
etc/pam.d/groupdel
|
||||
etc/pam.d/groupmems
|
||||
etc/pam.d/groupmod
|
||||
etc/pam.d/login
|
||||
etc/pam.d/newusers
|
||||
etc/pam.d/passwd
|
||||
etc/pam.d/useradd
|
||||
etc/pam.d/userdel
|
||||
etc/pam.d/usermod
|
||||
sbin/nologin
|
||||
usr/bin/newgrp
|
||||
usr/bin/faillog
|
||||
usr/bin/sg
|
||||
usr/lib/*/libsubid.la
|
||||
usr/sbin/groupmems
|
||||
usr/sbin/logoutd
|
||||
usr/sbin/vigr
|
||||
usr/share/man/*/man1/groups.1
|
||||
usr/share/man/*/man1/login.1
|
||||
usr/share/man/*/man1/logoutd.1
|
||||
usr/share/man/*/man1/newgrp.1
|
||||
usr/share/man/*/man1/sg.1
|
||||
usr/share/man/*/man1/su.1
|
||||
usr/share/man/*/man3/getspnam.3
|
||||
usr/share/man/*/man3/shadow.3
|
||||
usr/share/man/*/man5/faillog.5
|
||||
usr/share/man/*/man5/suauth.5
|
||||
usr/share/man/*/man8/faillog.8
|
||||
usr/share/man/*/man8/groupmems.8
|
||||
usr/share/man/*/man8/logoutd.8
|
||||
usr/share/man/*/man8/nologin.8
|
||||
usr/share/man/man1/groups.1
|
||||
usr/share/man/man1/login.1
|
||||
usr/share/man/man1/logoutd.1
|
||||
usr/share/man/man1/newgrp.1
|
||||
usr/share/man/man1/sg.1
|
||||
usr/share/man/man1/su.1
|
||||
usr/share/man/man3/getspnam.3
|
||||
usr/share/man/man3/shadow.3
|
||||
usr/share/man/man5/faillog.5
|
||||
usr/share/man/man5/suauth.5
|
||||
usr/share/man/man8/faillog.8
|
||||
usr/share/man/man8/groupmems.8
|
||||
usr/share/man/man8/logoutd.8
|
||||
usr/share/man/man8/nologin.8
|
||||
8
debian/passwd.chage.pam
vendored
Normal file
8
debian/passwd.chage.pam
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
# The PAM configuration file for the Shadow 'chage' service
|
||||
#
|
||||
|
||||
# This allows root to change password aging being prompted for a password
|
||||
auth sufficient pam_rootok.so
|
||||
|
||||
# checks for account validity
|
||||
account required pam_permit.so
|
||||
16
debian/passwd.chfn.pam
vendored
Normal file
16
debian/passwd.chfn.pam
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
#
|
||||
# The PAM configuration file for the Shadow `chfn' service
|
||||
#
|
||||
|
||||
# This allows root to change user infomation without being
|
||||
# prompted for a password
|
||||
auth sufficient pam_rootok.so
|
||||
|
||||
# The standard Unix authentication modules, used with
|
||||
# NIS (man nsswitch) as well as normal /etc/passwd and
|
||||
# /etc/shadow entries.
|
||||
@include common-auth
|
||||
@include common-account
|
||||
@include common-session
|
||||
|
||||
|
||||
5
debian/passwd.chpasswd.pam
vendored
Normal file
5
debian/passwd.chpasswd.pam
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
# The PAM configuration file for the Shadow 'chpasswd' service
|
||||
#
|
||||
|
||||
@include common-password
|
||||
|
||||
20
debian/passwd.chsh.pam
vendored
Normal file
20
debian/passwd.chsh.pam
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
#
|
||||
# The PAM configuration file for the Shadow `chsh' service
|
||||
#
|
||||
|
||||
# This will not allow a user to change their shell unless
|
||||
# their current one is listed in /etc/shells. This keeps
|
||||
# accounts with special shells from changing them.
|
||||
auth required pam_shells.so
|
||||
|
||||
# This allows root to change user shell without being
|
||||
# prompted for a password
|
||||
auth sufficient pam_rootok.so
|
||||
|
||||
# The standard Unix authentication modules, used with
|
||||
# NIS (man nsswitch) as well as normal /etc/passwd and
|
||||
# /etc/shadow entries.
|
||||
@include common-auth
|
||||
@include common-account
|
||||
@include common-session
|
||||
|
||||
2
debian/passwd.dirs
vendored
Normal file
2
debian/passwd.dirs
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
etc/default
|
||||
usr/share/lintian/overrides
|
||||
1
debian/passwd.examples
vendored
Normal file
1
debian/passwd.examples
vendored
Normal file
@@ -0,0 +1 @@
|
||||
debian/passwd.expire.cron
|
||||
57
debian/passwd.expire.cron
vendored
Normal file
57
debian/passwd.expire.cron
vendored
Normal file
@@ -0,0 +1,57 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
# passwd.expire.cron: sample expiry notification script for use as a cronjob
|
||||
#
|
||||
# Copyright 1999 by Ben Collins <bcollins@debian.org>, complete rights granted
|
||||
# for use, distribution, modification, etc.
|
||||
#
|
||||
# Usage:
|
||||
# edit the listed options, including the actual email, then rename to
|
||||
# /etc/cron.daily/passwd
|
||||
#
|
||||
# If your users don't have a valid login shell (ie. they are ftp or mail
|
||||
# users only), they will need some other way to change their password
|
||||
# (telnet will work since login will handle password aging, or a poppasswd
|
||||
# program, if they are mail users).
|
||||
|
||||
# <CONFIG> #
|
||||
|
||||
# should be same as /etc/adduser.conf
|
||||
$LOW_UID=1000;
|
||||
$HIGH_UID=29999;
|
||||
|
||||
# this let's the MTA handle the domain,
|
||||
# set it manually if you want. Make sure
|
||||
# you also add the @ like "\@domain.com"
|
||||
$MAIL_DOM="";
|
||||
|
||||
# </CONFIG> #
|
||||
|
||||
# Set the current day reference
|
||||
$curdays = int(time() / (60 * 60 * 24));
|
||||
|
||||
# Now go through the list
|
||||
|
||||
open(SH, "< /etc/shadow");
|
||||
while (<SH>) {
|
||||
@shent = split(':', $_);
|
||||
@userent = getpwnam($shent[0]);
|
||||
if ($userent[2] >= $LOW_UID && $userent[2] <= $HIGH_UID) {
|
||||
if ($curdays > $shent[2] + $shent[4] - $shent[5] &&
|
||||
$shent[4] != -1 && $shent[4] != 0 &&
|
||||
$shent[5] != -1 && $shent[5] != 0) {
|
||||
$daysleft = ($shent[2] + $shent[4]) - $curdays;
|
||||
if ($daysleft == 1) { $days = "day"; } else {$days = "days"; }
|
||||
if ($daysleft < 0) { next; }
|
||||
open (MAIL, "| mail -s '[WARNING] account will expire in $daysleft $days' $shent[0]${MAIL_DOM}");
|
||||
print MAIL <<EOF;
|
||||
Your account will expire in $daysleft $days. Please change your password before
|
||||
then or your account will expire
|
||||
EOF
|
||||
close (MAIL);
|
||||
# This makes sure we also get a list of almost expired users
|
||||
print "$shent[0]'s account will expire in $daysleft days\n";
|
||||
}
|
||||
}
|
||||
@userent = getpwent();
|
||||
}
|
||||
8
debian/passwd.groupadd.pam
vendored
Normal file
8
debian/passwd.groupadd.pam
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
# The PAM configuration file for the Shadow 'groupadd' service
|
||||
#
|
||||
|
||||
# This allows root to add groups without being prompted for a password
|
||||
auth sufficient pam_rootok.so
|
||||
|
||||
# checks for account validity
|
||||
account required pam_permit.so
|
||||
8
debian/passwd.groupdel.pam
vendored
Normal file
8
debian/passwd.groupdel.pam
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
# The PAM configuration file for the Shadow 'groupdel' service
|
||||
#
|
||||
|
||||
# This allows root to remove groups without being prompted for a password
|
||||
auth sufficient pam_rootok.so
|
||||
|
||||
# checks for account validity
|
||||
account required pam_permit.so
|
||||
8
debian/passwd.groupmod.pam
vendored
Normal file
8
debian/passwd.groupmod.pam
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
# The PAM configuration file for the Shadow 'groupmod' service
|
||||
#
|
||||
|
||||
# This allows root to modify groups without being prompted for a password
|
||||
auth sufficient pam_rootok.so
|
||||
|
||||
# checks for account validity
|
||||
account required pam_permit.so
|
||||
25
debian/passwd.install
vendored
Normal file
25
debian/passwd.install
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
debian/default/useradd etc/default
|
||||
debian/shadowconfig usr/sbin
|
||||
usr/bin/chage
|
||||
usr/bin/chfn
|
||||
usr/bin/chsh
|
||||
usr/bin/expiry
|
||||
usr/bin/gpasswd
|
||||
usr/bin/passwd
|
||||
usr/sbin/chgpasswd
|
||||
usr/sbin/chpasswd
|
||||
usr/sbin/groupadd
|
||||
usr/sbin/groupdel
|
||||
usr/sbin/groupmod
|
||||
usr/sbin/grpck
|
||||
usr/sbin/grpconv
|
||||
usr/sbin/grpunconv
|
||||
usr/sbin/newusers
|
||||
usr/sbin/pwck
|
||||
usr/sbin/pwconv
|
||||
usr/sbin/pwunconv
|
||||
usr/sbin/useradd
|
||||
usr/sbin/userdel
|
||||
usr/sbin/usermod
|
||||
usr/sbin/vipw
|
||||
usr/share/locale/*/LC_MESSAGES/shadow.mo
|
||||
1
debian/passwd.links
vendored
Normal file
1
debian/passwd.links
vendored
Normal file
@@ -0,0 +1 @@
|
||||
usr/sbin/vipw usr/sbin/vigr
|
||||
6
debian/passwd.lintian-overrides
vendored
Normal file
6
debian/passwd.lintian-overrides
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
passwd: elevated-privileges 2755 root/shadow [usr/bin/chage]
|
||||
passwd: elevated-privileges 4755 root/root [usr/bin/chfn]
|
||||
passwd: elevated-privileges 4755 root/root [usr/bin/chsh]
|
||||
passwd: elevated-privileges 2755 root/shadow [usr/bin/expiry]
|
||||
passwd: elevated-privileges 4755 root/root [usr/bin/gpasswd]
|
||||
passwd: elevated-privileges 4755 root/root [usr/bin/passwd]
|
||||
1
debian/passwd.maintscript
vendored
Normal file
1
debian/passwd.maintscript
vendored
Normal file
@@ -0,0 +1 @@
|
||||
rm_conffile /etc/cron.daily/passwd 1:4.7-2~
|
||||
57
debian/passwd.manpages
vendored
Normal file
57
debian/passwd.manpages
vendored
Normal file
@@ -0,0 +1,57 @@
|
||||
usr/share/man/*/man1/chage.1
|
||||
usr/share/man/*/man1/chfn.1
|
||||
usr/share/man/*/man1/chsh.1
|
||||
usr/share/man/*/man1/expiry.1
|
||||
usr/share/man/*/man1/gpasswd.1
|
||||
usr/share/man/*/man1/passwd.1
|
||||
usr/share/man/*/man5/gshadow.5
|
||||
usr/share/man/*/man5/passwd.5
|
||||
usr/share/man/*/man5/shadow.5
|
||||
usr/share/man/*/man5/subgid.5
|
||||
usr/share/man/*/man5/subuid.5
|
||||
usr/share/man/*/man8/chgpasswd.8
|
||||
usr/share/man/*/man8/chpasswd.8
|
||||
usr/share/man/*/man8/groupadd.8
|
||||
usr/share/man/*/man8/groupdel.8
|
||||
usr/share/man/*/man8/groupmod.8
|
||||
usr/share/man/*/man8/grpck.8
|
||||
usr/share/man/*/man8/grpconv.8
|
||||
usr/share/man/*/man8/grpunconv.8
|
||||
usr/share/man/*/man8/newusers.8
|
||||
usr/share/man/*/man8/pwck.8
|
||||
usr/share/man/*/man8/pwconv.8
|
||||
usr/share/man/*/man8/pwunconv.8
|
||||
usr/share/man/*/man8/useradd.8
|
||||
usr/share/man/*/man8/userdel.8
|
||||
usr/share/man/*/man8/usermod.8
|
||||
usr/share/man/*/man8/vigr.8
|
||||
usr/share/man/*/man8/vipw.8
|
||||
usr/share/man/man1/chage.1
|
||||
usr/share/man/man1/chfn.1
|
||||
usr/share/man/man1/chsh.1
|
||||
usr/share/man/man1/expiry.1
|
||||
usr/share/man/man1/gpasswd.1
|
||||
usr/share/man/man1/passwd.1
|
||||
usr/share/man/man5/gshadow.5
|
||||
usr/share/man/man5/passwd.5
|
||||
usr/share/man/man5/shadow.5
|
||||
usr/share/man/man5/subgid.5
|
||||
usr/share/man/man5/subuid.5
|
||||
usr/share/man/man8/chgpasswd.8
|
||||
usr/share/man/man8/chpasswd.8
|
||||
usr/share/man/man8/groupadd.8
|
||||
usr/share/man/man8/groupdel.8
|
||||
usr/share/man/man8/groupmod.8
|
||||
usr/share/man/man8/grpck.8
|
||||
usr/share/man/man8/grpconv.8
|
||||
usr/share/man/man8/grpunconv.8
|
||||
usr/share/man/man8/newusers.8
|
||||
usr/share/man/man8/pwck.8
|
||||
usr/share/man/man8/pwconv.8
|
||||
usr/share/man/man8/pwunconv.8
|
||||
usr/share/man/man8/shadowconfig.8
|
||||
usr/share/man/man8/useradd.8
|
||||
usr/share/man/man8/userdel.8
|
||||
usr/share/man/man8/usermod.8
|
||||
usr/share/man/man8/vigr.8
|
||||
usr/share/man/man8/vipw.8
|
||||
5
debian/passwd.newusers.pam
vendored
Normal file
5
debian/passwd.newusers.pam
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
# The PAM configuration file for the Shadow 'newusers' service
|
||||
#
|
||||
|
||||
@include common-password
|
||||
|
||||
6
debian/passwd.passwd.pam
vendored
Normal file
6
debian/passwd.passwd.pam
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
#
|
||||
# The PAM configuration file for the Shadow `passwd' service
|
||||
#
|
||||
|
||||
@include common-password
|
||||
|
||||
30
debian/passwd.postinst
vendored
Normal file
30
debian/passwd.postinst
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
|
||||
case "$1" in
|
||||
configure)
|
||||
if ! getent group shadow | grep -q '^shadow:[^:]*:42'
|
||||
then
|
||||
groupadd -g 42 shadow || (
|
||||
cat <<EOF
|
||||
Group ID 42 has been allocated for the shadow group. You have either
|
||||
used 42 yourself or created a shadow group with a different ID.
|
||||
Please correct this problem and reconfigure with ``dpkg --configure passwd''.
|
||||
|
||||
Note that both user and group IDs in the range 0-99 are globally
|
||||
allocated by the Debian project and must be the same on every Debian
|
||||
system.
|
||||
EOF
|
||||
exit 1
|
||||
)
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
# Run shadowconfig only on new installs
|
||||
[ -z "$2" ] && shadowconfig on
|
||||
|
||||
#DEBHELPER#
|
||||
|
||||
exit 0
|
||||
8
debian/passwd.tmpfiles
vendored
Normal file
8
debian/passwd.tmpfiles
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
# If a password operation is in progress and we lose power, stale lockfiles
|
||||
# can be left behind. Clear them on boot.
|
||||
r! /etc/gshadow.lock
|
||||
r! /etc/shadow.lock
|
||||
r! /etc/passwd.lock
|
||||
r! /etc/group.lock
|
||||
r! /etc/subuid.lock
|
||||
r! /etc/subgid.lock
|
||||
8
debian/passwd.useradd.pam
vendored
Normal file
8
debian/passwd.useradd.pam
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
# The PAM configuration file for the Shadow 'useradd' service
|
||||
#
|
||||
|
||||
# This allows root to add users without being prompted for a password
|
||||
auth sufficient pam_rootok.so
|
||||
|
||||
# checks for account validity
|
||||
account required pam_permit.so
|
||||
8
debian/passwd.userdel.pam
vendored
Normal file
8
debian/passwd.userdel.pam
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
# The PAM configuration file for the Shadow 'userdel' service
|
||||
#
|
||||
|
||||
# This allows root to remove users without being prompted for a password
|
||||
auth sufficient pam_rootok.so
|
||||
|
||||
# checks for account validity
|
||||
account required pam_permit.so
|
||||
8
debian/passwd.usermod.pam
vendored
Normal file
8
debian/passwd.usermod.pam
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
# The PAM configuration file for the Shadow 'groupdel' service
|
||||
#
|
||||
|
||||
# This allows root to remove groups without being prompted for a password
|
||||
auth sufficient pam_rootok.so
|
||||
|
||||
# checks for account validity
|
||||
account required pam_permit.so
|
||||
400
debian/patches/Update-Dutch-translation.patch
vendored
Normal file
400
debian/patches/Update-Dutch-translation.patch
vendored
Normal file
@@ -0,0 +1,400 @@
|
||||
From: Frans Spiesschaert <Frans.Spiesschaert@yucom.be>
|
||||
Date: Wed, 17 Sep 2025 00:45:00 +0200
|
||||
Subject: Update Dutch translation
|
||||
|
||||
Bug-Debian: #1115411
|
||||
---
|
||||
po/nl.po | 218 ++++++++++++++++++---------------------------------------------
|
||||
1 file changed, 62 insertions(+), 156 deletions(-)
|
||||
|
||||
diff --git a/po/nl.po b/po/nl.po
|
||||
index 9730899..6734cf6 100644
|
||||
--- a/po/nl.po
|
||||
+++ b/po/nl.po
|
||||
@@ -1,22 +1,22 @@
|
||||
# dutch po-file for shadow
|
||||
# Copyright (C) 2004 Free Software Foundation, Inc.
|
||||
# Bart Cornelis <cobaco@linux.be>, 2004, 2006.
|
||||
-# Frans Spiesschaert <Frans.Spiesschaert@yucom.be>, 2014-2024.
|
||||
+# Frans Spiesschaert <Frans.Spiesschaert@yucom.be>, 2014-2025.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
-"Project-Id-Version: shadow 4.15.1\n"
|
||||
+"Project-Id-Version: shadow 4.18.0-1\n"
|
||||
"Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n"
|
||||
"POT-Creation-Date: 2025-06-24 20:28+0000\n"
|
||||
-"PO-Revision-Date: 2024-05-09 12:30+0200\n"
|
||||
+"PO-Revision-Date: 2025-09-01 20:41+0200\n"
|
||||
"Last-Translator: Frans Spiesschaert <Frans.Spiesschaert@yucom.be>\n"
|
||||
"Language-Team: Debian Dutch l10n Team <debian-l10n-dutch@lists.debian.org>\n"
|
||||
"Language: nl\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
-"X-Generator: Poedit 2.2.1\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
+"X-Generator: Poedit 3.2.2\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Warning: unknown group %s\n"
|
||||
@@ -879,10 +879,9 @@ msgstr "%s: '%s' bevat niet-ASCII tekens\n"
|
||||
msgid "%s: '%s' contains illegal characters\n"
|
||||
msgstr "%s: '%s' bevat ongeldige tekens\n"
|
||||
|
||||
-#, fuzzy, c-format
|
||||
-#| msgid "%s: '%s' is not a valid group name\n"
|
||||
+#, c-format
|
||||
msgid "%s: Provided user name is not a valid name\n"
|
||||
-msgstr "%s: '%s' is geen geldige groepsnaam\n"
|
||||
+msgstr "%s: De opgegeven gebruikersnaam is geen geldige naam\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: user '%s' does not exist\n"
|
||||
@@ -940,15 +939,13 @@ msgstr "%s: de vlaggen -c, -e, en -m zijn exclusief\n"
|
||||
msgid "%s: unsupported crypt method: %s\n"
|
||||
msgstr "%s: niet-ondersteunde encryptiemethode: %s\n"
|
||||
|
||||
-#, fuzzy, c-format
|
||||
-#| msgid "%s: line %d: line too long\n"
|
||||
+#, c-format
|
||||
msgid "%s: line %jd: line too long\n"
|
||||
-msgstr "%s: regel %d: regel is te lang\n"
|
||||
+msgstr "%s: regel %jd: regel is te lang\n"
|
||||
|
||||
-#, fuzzy, c-format
|
||||
-#| msgid "%s: line %d: missing new password\n"
|
||||
+#, c-format
|
||||
msgid "%s: line %jd: missing new password\n"
|
||||
-msgstr "%s: regel %d: nieuw wachtwoord ontbreekt\n"
|
||||
+msgstr "%s: regel %jd: nieuw wachtwoord ontbreekt\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: failed to crypt password with salt '%s': %s\n"
|
||||
@@ -956,29 +953,25 @@ msgstr ""
|
||||
"%s: mislukte versleuteling van het wachtwoord met toegevoegde willekeurige "
|
||||
"bits (salt) '%s': %s\n"
|
||||
|
||||
-#, fuzzy, c-format
|
||||
-#| msgid "%s: line %d: group '%s' does not exist\n"
|
||||
+#, c-format
|
||||
msgid "%s: line %jd: group '%s' does not exist\n"
|
||||
-msgstr "%s: regel %d: groep '%s' bestaan niet\n"
|
||||
+msgstr "%s: regel %jd: groep '%s' bestaan niet\n"
|
||||
|
||||
-#, fuzzy, c-format
|
||||
-#| msgid "%s: line %d: failed to prepare the new %s entry '%s'\n"
|
||||
+#, c-format
|
||||
msgid "%s: line %jd: failed to prepare the new %s entry '%s'\n"
|
||||
-msgstr "%s: regel %d: kon het nieuwe %s-item '%s' niet voorbereiden\n"
|
||||
+msgstr "%s: regel %jd: kon het nieuwe %s-item '%s' niet voorbereiden\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: error detected, changes ignored\n"
|
||||
msgstr "%s: fout gevonden, aanpassingen genegeerd\n"
|
||||
|
||||
-#, fuzzy, c-format
|
||||
-#| msgid "%s: (line %d, user %s) password not changed\n"
|
||||
+#, c-format
|
||||
msgid "%s: (line %jd, user %s) password not changed\n"
|
||||
-msgstr "%s: (regel %d, gebruiker %s) wachtwoord niet gewijzigd\n"
|
||||
+msgstr "%s: (regel %jd, gebruiker %s) wachtwoord niet gewijzigd\n"
|
||||
|
||||
-#, fuzzy, c-format
|
||||
-#| msgid "%s: line %d: user '%s' does not exist\n"
|
||||
+#, c-format
|
||||
msgid "%s: line %jd: user '%s' does not exist\n"
|
||||
-msgstr "%s: regel %d: gebruiker '%s' bestaat niet\n"
|
||||
+msgstr "%s: regel %jd: gebruiker '%s' bestaat niet\n"
|
||||
|
||||
msgid " -s, --shell SHELL new login shell for the user account\n"
|
||||
msgstr ""
|
||||
@@ -1552,14 +1545,14 @@ msgid ""
|
||||
msgstr ""
|
||||
" -u, --user GEBRUIKER lastlog-informatie over GEBRUIKER tonen\n"
|
||||
|
||||
-#, fuzzy
|
||||
#| msgid ""
|
||||
#| " -a, --all display faillog records for all users\n"
|
||||
msgid ""
|
||||
" -a, --active print lastlog excluding '**Never logged "
|
||||
"in**' users"
|
||||
msgstr ""
|
||||
-" -a, --all aanmeldingsfouten van alle gebruikers tonen\n"
|
||||
+" -a, --active lastlog tonen zonder '**Nooit ingelogde**' "
|
||||
+"gebruikers"
|
||||
|
||||
#, c-format
|
||||
msgid "Username Port From%*sLatest\n"
|
||||
@@ -1731,10 +1724,9 @@ msgstr "%s: setgroups opzoeken mislukte: %s\n"
|
||||
msgid "%s: failed to setgroups %s policy: %s\n"
|
||||
msgstr "%s: setgroups-beleid %s mislukte: %s\n"
|
||||
|
||||
-#, fuzzy, c-format
|
||||
-#| msgid "%s: Could not stat directory for target process\n"
|
||||
+#, c-format
|
||||
msgid "%s: Could not stat directory for target process: %s\n"
|
||||
-msgstr "%s: Kon status van map voor doelproces niet opvragen\n"
|
||||
+msgstr "%s: Kon status van map voor doelproces niet opvragen: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
@@ -1763,10 +1755,9 @@ msgstr "Ongeldig wachtwoord.\n"
|
||||
msgid "%s: failure forking: %s\n"
|
||||
msgstr "%s: nieuw proces beginnen is mislukt: %s\n"
|
||||
|
||||
-#, fuzzy, c-format
|
||||
-#| msgid "%s: '%s' is not a valid group name\n"
|
||||
+#, c-format
|
||||
msgid "%s: provided group is not a valid group name\n"
|
||||
-msgstr "%s: '%s' is geen geldige groepsnaam\n"
|
||||
+msgstr "%s: opgegeven groep is geen geldige groepsnaam\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: GID '%lu' does not exist\n"
|
||||
@@ -1802,19 +1793,17 @@ msgstr "%s: ongeldig gebruikers-ID '%s'\n"
|
||||
msgid "%s: invalid user name '%s': use --badname to ignore\n"
|
||||
msgstr "%s: ongeldige gebruikersnaam '%s': gebruik --badname om te negeren\n"
|
||||
|
||||
-#, fuzzy, c-format
|
||||
-#| msgid "%s: invalid user ID '%s'\n"
|
||||
+#, c-format
|
||||
msgid "%s: invalid user name '%s'\n"
|
||||
-msgstr "%s: ongeldig gebruikers-ID '%s'\n"
|
||||
+msgstr "%s: ongeldig gebruikersnaam '%s'\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: Provide '--crypt-method' before number of rounds\n"
|
||||
msgstr "%s: Geef '--crypt-method' op vóór het aantal rondes\n"
|
||||
|
||||
-#, fuzzy, c-format
|
||||
-#| msgid "%s: line %d: invalid line\n"
|
||||
+#, c-format
|
||||
msgid "%s: line %jd: invalid line\n"
|
||||
-msgstr "%s: regel %d: ongeldige regel\n"
|
||||
+msgstr "%s: regel %jd: ongeldige regel\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: cannot update the entry of user %s (not in the passwd database)\n"
|
||||
@@ -1822,50 +1811,41 @@ msgstr ""
|
||||
"%s: kan gegevens over gebruiker %s niet bijwerken (niet in de passwd-"
|
||||
"database)\n"
|
||||
|
||||
-#, fuzzy, c-format
|
||||
-#| msgid "%s: line %d: can't create user\n"
|
||||
+#, c-format
|
||||
msgid "%s: line %jd: can't create user\n"
|
||||
-msgstr "%s: regel %d: kan de gebruiker niet aanmaken\n"
|
||||
+msgstr "%s: regel %jd: kan de gebruiker niet aanmaken\n"
|
||||
|
||||
-#, fuzzy, c-format
|
||||
-#| msgid "%s: line %d: can't create group\n"
|
||||
+#, c-format
|
||||
msgid "%s: line %jd: can't create group\n"
|
||||
-msgstr "%s: regel %d: kan de groep niet aanmaken\n"
|
||||
+msgstr "%s: regel %jd: kan de groep niet aanmaken\n"
|
||||
|
||||
-#, fuzzy, c-format
|
||||
-#| msgid "%s: line %d: user '%s' does not exist in %s\n"
|
||||
+#, c-format
|
||||
msgid "%s: line %jd: user '%s' does not exist in %s\n"
|
||||
-msgstr "%s: regel %d: gebruiker '%s' bestaat niet in %s\n"
|
||||
+msgstr "%s: regel %jd: gebruiker '%s' bestaat niet in %s\n"
|
||||
|
||||
-#, fuzzy, c-format
|
||||
-#| msgid "%s: line %d: %s\n"
|
||||
+#, c-format
|
||||
msgid "%s: line %jd: %s\n"
|
||||
-msgstr "%s: regel: %d: %s\n"
|
||||
+msgstr "%s: regel: %jd: %s\n"
|
||||
|
||||
-#, fuzzy, c-format
|
||||
-#| msgid "%s: line %d: can't update password\n"
|
||||
+#, c-format
|
||||
msgid "%s: line %jd: can't update password\n"
|
||||
-msgstr "%s: regel %d: kan wachtwoord niet bijwerken\n"
|
||||
+msgstr "%s: regel %jd: kan wachtwoord niet bijwerken\n"
|
||||
|
||||
-#, fuzzy, c-format
|
||||
-#| msgid "%s: line %d: homedir must be an absolute path\n"
|
||||
+#, c-format
|
||||
msgid "%s: line %jd: homedir must be an absolute path\n"
|
||||
-msgstr "%s: regel %d: thuismap moet een absoluut pad zijn\n"
|
||||
+msgstr "%s: regel %jd: thuismap moet een absoluut pad zijn\n"
|
||||
|
||||
-#, fuzzy, c-format
|
||||
-#| msgid "%s: line %d: mkdir %s failed: %s\n"
|
||||
+#, c-format
|
||||
msgid "%s: line %jd: mkdir %s failed: %s\n"
|
||||
-msgstr "%s: regel %d: mkdir %s is mislukt: %s\n"
|
||||
+msgstr "%s: regel %jd: mkdir %s is mislukt: %s\n"
|
||||
|
||||
-#, fuzzy, c-format
|
||||
-#| msgid "%s: line %d: chown %s failed: %s\n"
|
||||
+#, c-format
|
||||
msgid "%s: line %jd: chown %s failed: %s\n"
|
||||
-msgstr "%s: regel %d: chown %s is mislukt: %s\n"
|
||||
+msgstr "%s: regel %jd: chown %s is mislukt: %s\n"
|
||||
|
||||
-#, fuzzy, c-format
|
||||
-#| msgid "%s: line %d: can't update entry\n"
|
||||
+#, c-format
|
||||
msgid "%s: line %jd: can't update entry\n"
|
||||
-msgstr "%s: regel %d: kan element niet bijwerken\n"
|
||||
+msgstr "%s: regel %jd: kan element niet bijwerken\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: can't find subordinate user range\n"
|
||||
@@ -2089,10 +2069,9 @@ msgstr "identieke regel in wachtwoordbestand"
|
||||
msgid "invalid user name '%s': use --badname to ignore\n"
|
||||
msgstr "ongeldige gebruikersnaam '%s': gebruik --badname om te negeren\n"
|
||||
|
||||
-#, fuzzy, c-format
|
||||
-#| msgid "invalid group name '%s'\n"
|
||||
+#, c-format
|
||||
msgid "invalid user name '%s'\n"
|
||||
-msgstr "ongeldige groepsnaam '%s'\n"
|
||||
+msgstr "ongeldige gebruikersnaam '%s'\n"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid user ID '%lu'\n"
|
||||
@@ -2308,21 +2287,17 @@ msgstr "Systeemonderhoudsmodus wordt opgestart"
|
||||
msgid "%s: %s was created, but could not be removed\n"
|
||||
msgstr "%s: %s was aangemaakt, maar kon niet verwijderd worden\n"
|
||||
|
||||
-#, fuzzy, c-format
|
||||
-#| msgid "%s: the %s configuration in %s will be ignored\n"
|
||||
+#, c-format
|
||||
msgid "%s: the %s= configuration in %s will be ignored\n"
|
||||
-msgstr "%s: de %s-instellingen in %s zullen genegeerd worden\n"
|
||||
+msgstr "%s: de configuratie %s= in %s zullen genegeerd worden\n"
|
||||
|
||||
-#, fuzzy, c-format
|
||||
-#| msgid ""
|
||||
-#| "%s: the '%s' configuration in %s has an invalid group, ignoring the bad "
|
||||
-#| "group\n"
|
||||
+#, c-format
|
||||
msgid ""
|
||||
"%s: the '%s=' configuration in %s has an invalid group, ignoring the bad "
|
||||
"group\n"
|
||||
msgstr ""
|
||||
-"%s: de configuratie van '%s' in %s heeft een ongeldige groep, deze groep "
|
||||
-"wordt genegeerd\n"
|
||||
+"%s: de configuratie '%s=' in %s heeft een ongeldige groep, deze groep wordt "
|
||||
+"genegeerd\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: cannot create new defaults file: %s\n"
|
||||
@@ -3031,25 +3006,21 @@ msgstr "aanpassen van de postvak-eigenaar is mislukt"
|
||||
msgid "failed to rename mailbox"
|
||||
msgstr "hernoemen van het postvak is mislukt"
|
||||
|
||||
-#, fuzzy, c-format
|
||||
-#| msgid "%s: failed to remove uid range %lu-%lu from '%s'\n"
|
||||
+#, c-format
|
||||
msgid "%s: failed to remove uid range %ju-%ju from '%s'\n"
|
||||
-msgstr "%s: verwijderen van UID-bereik %lu-%lu van '%s' is mislukt\n"
|
||||
+msgstr "%s: verwijderen van UID-bereik %ju-%ju van '%s' is mislukt\n"
|
||||
|
||||
-#, fuzzy, c-format
|
||||
-#| msgid "%s: failed to add uid range %lu-%lu to '%s'\n"
|
||||
+#, c-format
|
||||
msgid "%s: failed to add uid range %ju-%ju to '%s'\n"
|
||||
-msgstr "%s: toevoegen van UID-bereik %lu-%lu aan '%s' is mislukt\n"
|
||||
+msgstr "%s: toevoegen van UID-bereik %ju-%ju aan '%s' is mislukt\n"
|
||||
|
||||
-#, fuzzy, c-format
|
||||
-#| msgid "%s: failed to remove gid range %lu-%lu from '%s'\n"
|
||||
+#, c-format
|
||||
msgid "%s: failed to remove gid range %ju-%ju from '%s'\n"
|
||||
-msgstr "%s: verwijderen van GID-bereik %lu-%lu van '%s' is mislukt\n"
|
||||
+msgstr "%s: verwijderen van GID-bereik %ju-%ju van '%s' is mislukt\n"
|
||||
|
||||
-#, fuzzy, c-format
|
||||
-#| msgid "%s: failed to add gid range %lu-%lu to '%s'\n"
|
||||
+#, c-format
|
||||
msgid "%s: failed to add gid range %ju-%ju to '%s'\n"
|
||||
-msgstr "%s: toevoegen van GID-bereik %lu-%lu aan '%s' is mislukt\n"
|
||||
+msgstr "%s: toevoegen van GID-bereik %ju-%ju aan '%s' is mislukt\n"
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
@@ -3126,10 +3097,8 @@ msgstr "ontkoppelen van initieel bestand is mislukt"
|
||||
msgid "failed to stat edited file"
|
||||
msgstr "opvragen van status van bewerkt bestand is mislukt"
|
||||
|
||||
-#, fuzzy
|
||||
-#| msgid "asprintf(3) failed"
|
||||
msgid "aprintf() failed"
|
||||
-msgstr "asprintf(3) is mislukt"
|
||||
+msgstr "aprintf() is mislukt"
|
||||
|
||||
msgid "failed to create backup file"
|
||||
msgstr "maken van reservekopie is mislukt"
|
||||
@@ -3141,66 +3110,3 @@ msgstr "%s: kan %s niet herstellen: %s (uw aanpassingen staan in %s)\n"
|
||||
#, c-format
|
||||
msgid "%s: failed to find tcb directory for %s\n"
|
||||
msgstr "%s: tcb-map van %s vinden is mislukt\n"
|
||||
-
|
||||
-#~ msgid "Warning: too many groups\n"
|
||||
-#~ msgstr "Waarschuwing: te veel groepen\n"
|
||||
-
|
||||
-#~ msgid "Environment overflow\n"
|
||||
-#~ msgstr "Omgeving wordt te groot\n"
|
||||
-
|
||||
-#, c-format
|
||||
-#~ msgid "%s: Suspiciously long symlink: %s\n"
|
||||
-#~ msgstr "%s: verdacht lange symbolische koppeling: %s\n"
|
||||
-
|
||||
-#, c-format
|
||||
-#~ msgid "%s: cannot change user '%s' on NIS client.\n"
|
||||
-#~ msgstr "%s: kan gebruiker '%s' niet veranderen op NIS-client.\n"
|
||||
-
|
||||
-#, c-format
|
||||
-#~ msgid "%s: '%s' is the NIS master for this client.\n"
|
||||
-#~ msgstr "%s: '%s' is de NIS-master voor deze client.\n"
|
||||
-
|
||||
-#, c-format
|
||||
-#~ msgid "%s: group '%s' is a NIS group\n"
|
||||
-#~ msgstr "%s: groep '%s' is een NIS-groep\n"
|
||||
-
|
||||
-#, c-format
|
||||
-#~ msgid "%s: %s is the NIS master\n"
|
||||
-#~ msgstr "%s: %s is de NIS-master\n"
|
||||
-
|
||||
-#, c-format
|
||||
-#~ msgid "%s: group %s is a NIS group\n"
|
||||
-#~ msgstr "%s: groep %s is een NIS-groep\n"
|
||||
-
|
||||
-#, c-format
|
||||
-#~ msgid "%s: unknown user %s\n"
|
||||
-#~ msgstr "%s: onbekende gebruiker %s\n"
|
||||
-
|
||||
-#~ msgid "Usage: id [-a]\n"
|
||||
-#~ msgstr "Gebruik: id [-a]\n"
|
||||
-
|
||||
-#~ msgid " groups="
|
||||
-#~ msgstr " groepen="
|
||||
-
|
||||
-#, c-format
|
||||
-#~ msgid " %s [-p] -r host\n"
|
||||
-#~ msgstr " %s [-p] -r computer\n"
|
||||
-
|
||||
-#, c-format
|
||||
-#~ msgid "%s: Could not stat directory for process\n"
|
||||
-#~ msgstr "%s: Kon status van map voor proces niet opvragen\n"
|
||||
-
|
||||
-#~ msgid "too many groups\n"
|
||||
-#~ msgstr "te veel groepen\n"
|
||||
-
|
||||
-#, c-format
|
||||
-#~ msgid "%s: cannot create new defaults file\n"
|
||||
-#~ msgstr "%s: kan geen nieuw bestand met standaardwaarden aanmaken\n"
|
||||
-
|
||||
-#, c-format
|
||||
-#~ msgid "%s: group '%s' is a NIS group.\n"
|
||||
-#~ msgstr "%s: groep '%s' is een NIS-groep.\n"
|
||||
-
|
||||
-#, c-format
|
||||
-#~ msgid "%s: user %s is a NIS user\n"
|
||||
-#~ msgstr "%s: gebruiker %s is een NIS-gebruiker\n"
|
||||
514
debian/patches/debian/Adapt-login.defs-for-Debian.patch
vendored
Normal file
514
debian/patches/debian/Adapt-login.defs-for-Debian.patch
vendored
Normal file
@@ -0,0 +1,514 @@
|
||||
From: Shadow package maintainers <pkg-shadow-devel@lists.alioth.debian.org>
|
||||
Date: Sun, 7 Jul 2024 14:06:39 +0200
|
||||
Subject: Adapt login.defs for Debian
|
||||
|
||||
Remove settings only applicable to shadow's su, which we do not use.
|
||||
Remove settings only applicable without PAM support enabled.
|
||||
Remove obscure commented-out settings.
|
||||
Remove explanation about write(1), which Debian does not ship anymore.
|
||||
---
|
||||
etc/login.defs | 369 +++++++--------------------------------------------------
|
||||
1 file changed, 44 insertions(+), 325 deletions(-)
|
||||
|
||||
diff --git a/etc/login.defs b/etc/login.defs
|
||||
index 33622c2..91d3ec4 100644
|
||||
--- a/etc/login.defs
|
||||
+++ b/etc/login.defs
|
||||
@@ -1,24 +1,38 @@
|
||||
#
|
||||
# /etc/login.defs - Configuration control definitions for the shadow package.
|
||||
#
|
||||
-# $Id$
|
||||
-#
|
||||
|
||||
+# REQUIRED for useradd/userdel/usermod
|
||||
+# Directory where mailboxes reside, _or_ name of file, relative to the
|
||||
+# home directory. If you _do_ define MAIL_DIR and MAIL_FILE,
|
||||
+# MAIL_DIR takes precedence.
|
||||
#
|
||||
-# Delay in seconds before being allowed another attempt after a login failure
|
||||
-# Note: When PAM is used, some modules may enforce a minimum delay (e.g.
|
||||
-# pam_unix(8) enforces a 2s delay)
|
||||
+# Essentially:
|
||||
+# - MAIL_DIR defines the location of users mail spool files
|
||||
+# (for mbox use) by appending the username to MAIL_DIR as defined
|
||||
+# below.
|
||||
+# - MAIL_FILE defines the location of the users mail spool files as the
|
||||
+# fully-qualified filename obtained by prepending the user home
|
||||
+# directory before $MAIL_FILE
|
||||
#
|
||||
-FAIL_DELAY 3
|
||||
-
|
||||
+# NOTE: This is no more used for setting up users MAIL environment variable
|
||||
+# which is, starting from shadow 4.0.12-1 in Debian, entirely the
|
||||
+# job of the pam_mail PAM modules
|
||||
+# See default PAM configuration files provided for
|
||||
+# login, su, etc.
|
||||
#
|
||||
-# Enable logging and display of /var/log/faillog login(1) failure info.
|
||||
-#
|
||||
-FAILLOG_ENAB yes
|
||||
+# This is a temporary situation: setting these variables will soon
|
||||
+# move to /etc/default/useradd and the variables will then be
|
||||
+# no more supported
|
||||
+MAIL_DIR /var/mail
|
||||
+#MAIL_FILE .mail
|
||||
|
||||
#
|
||||
# Enable display of unknown usernames when login(1) failures are recorded.
|
||||
#
|
||||
+# WARNING: Unknown usernames may become world readable.
|
||||
+# See #290803 and #298773 for details about how this could become a security
|
||||
+# concern
|
||||
LOG_UNKFAIL_ENAB no
|
||||
|
||||
#
|
||||
@@ -26,110 +40,12 @@ LOG_UNKFAIL_ENAB no
|
||||
#
|
||||
LOG_OK_LOGINS no
|
||||
|
||||
-#
|
||||
-# Enable logging and display of /var/log/lastlog login(1) time info.
|
||||
-#
|
||||
-LASTLOG_ENAB yes
|
||||
-
|
||||
-#
|
||||
-# Limit the highest user ID number for which the lastlog entries should
|
||||
-# be updated.
|
||||
-#
|
||||
-# No LASTLOG_UID_MAX means that there is no user ID limit for writing
|
||||
-# lastlog entries.
|
||||
-#
|
||||
-#LASTLOG_UID_MAX
|
||||
-
|
||||
-#
|
||||
-# Enable checking and display of mailbox status upon login.
|
||||
-#
|
||||
-# Disable if the shell startup files already check for mail
|
||||
-# ("mailx -e" or equivalent).
|
||||
-#
|
||||
-MAIL_CHECK_ENAB yes
|
||||
-
|
||||
-#
|
||||
-# Enable additional checks upon password changes.
|
||||
-#
|
||||
-OBSCURE_CHECKS_ENAB yes
|
||||
-
|
||||
-#
|
||||
-# Enable checking of time restrictions specified in /etc/porttime.
|
||||
-#
|
||||
-PORTTIME_CHECKS_ENAB yes
|
||||
-
|
||||
-#
|
||||
-# Enable setting of ulimit, umask, and niceness from passwd(5) gecos field.
|
||||
-#
|
||||
-QUOTAS_ENAB yes
|
||||
-
|
||||
-#
|
||||
-# Enable "syslog" logging of su(1) activity - in addition to sulog file logging.
|
||||
-# SYSLOG_SG_ENAB does the same for newgrp(1) and sg(1).
|
||||
-#
|
||||
-SYSLOG_SU_ENAB yes
|
||||
-SYSLOG_SG_ENAB yes
|
||||
-
|
||||
-#
|
||||
-# If defined, either full pathname of a file containing device names or
|
||||
-# a ":" delimited list of device names. Root logins will be allowed only
|
||||
-# from these devices.
|
||||
-#
|
||||
-CONSOLE /etc/securetty
|
||||
-#CONSOLE console:tty01:tty02:tty03:tty04
|
||||
-
|
||||
-#
|
||||
-# If defined, all su(1) activity is logged to this file.
|
||||
-#
|
||||
-#SULOG_FILE /var/log/sulog
|
||||
-
|
||||
-#
|
||||
-# If defined, ":" delimited list of "message of the day" files to
|
||||
-# be displayed upon login.
|
||||
-#
|
||||
-MOTD_FILE /etc/motd
|
||||
-#MOTD_FILE /etc/motd:/usr/lib/news/news-motd
|
||||
-
|
||||
-#
|
||||
-# If defined, this file will be output before each login(1) prompt.
|
||||
-#
|
||||
-#ISSUE_FILE /etc/issue
|
||||
-
|
||||
#
|
||||
# If defined, file which maps tty line to TERM environment parameter.
|
||||
# Each line of the file is in a format similar to "vt100 tty01".
|
||||
#
|
||||
#TTYTYPE_FILE /etc/ttytype
|
||||
|
||||
-#
|
||||
-# If defined, login(1) failures will be logged here in a utmp format.
|
||||
-# last(1), when invoked as lastb(1), will read /var/log/btmp, so...
|
||||
-#
|
||||
-FTMP_FILE /var/log/btmp
|
||||
-
|
||||
-#
|
||||
-# If defined, name of file whose presence will inhibit non-root
|
||||
-# logins. The content of this file should be a message indicating
|
||||
-# why logins are inhibited.
|
||||
-#
|
||||
-NOLOGINS_FILE /etc/nologin
|
||||
-
|
||||
-#
|
||||
-# If defined, the command name to display when running "su -". For
|
||||
-# example, if this is defined as "su" then ps(1) will display the
|
||||
-# command as "-su". If not defined, then ps(1) will display the
|
||||
-# name of the shell actually being run, e.g. something like "-sh".
|
||||
-#
|
||||
-SU_NAME su
|
||||
-
|
||||
-#
|
||||
-# *REQUIRED*
|
||||
-# Directory where mailboxes reside, _or_ name of file, relative to the
|
||||
-# home directory. If you _do_ define both, MAIL_DIR takes precedence.
|
||||
-#
|
||||
-MAIL_DIR /var/spool/mail
|
||||
-#MAIL_FILE .mail
|
||||
-
|
||||
#
|
||||
# If defined, file which inhibits all the usual chatter during the login
|
||||
# sequence. If a full pathname, then hushed mode will be enabled if the
|
||||
@@ -139,40 +55,21 @@ MAIL_DIR /var/spool/mail
|
||||
HUSHLOGIN_FILE .hushlogin
|
||||
#HUSHLOGIN_FILE /etc/hushlogins
|
||||
|
||||
-#
|
||||
-# If defined, either a TZ environment parameter spec or the
|
||||
-# fully-rooted pathname of a file containing such a spec.
|
||||
-#
|
||||
-#ENV_TZ TZ=CST6CDT
|
||||
-#ENV_TZ /etc/tzname
|
||||
-
|
||||
-#
|
||||
-# If defined, an HZ environment parameter spec.
|
||||
-#
|
||||
-# for Linux/x86
|
||||
-ENV_HZ HZ=100
|
||||
-# For Linux/Alpha...
|
||||
-#ENV_HZ HZ=1024
|
||||
-
|
||||
#
|
||||
# *REQUIRED* The default PATH settings, for superuser and normal users.
|
||||
#
|
||||
# (they are minimal, add the rest in the shell startup files)
|
||||
-ENV_SUPATH PATH=/sbin:/bin:/usr/sbin:/usr/bin
|
||||
-ENV_PATH PATH=/bin:/usr/bin
|
||||
+ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
||||
+ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
|
||||
|
||||
#
|
||||
-# Terminal permissions
|
||||
+# Terminal permissions for terminals after login(1).
|
||||
+# These settings are ignored for remote and other logins.
|
||||
#
|
||||
# TTYGROUP Login tty will be assigned this group ownership.
|
||||
# TTYPERM Login tty will be set to this permission.
|
||||
#
|
||||
-# If you have a write(1) program which is "setgid" to a special group
|
||||
-# which owns the terminals, define TTYGROUP as the number of such group
|
||||
-# and TTYPERM as 0620. Otherwise leave TTYGROUP commented out and
|
||||
-# set TTYPERM to either 622 or 600.
|
||||
-#
|
||||
-TTYGROUP tty
|
||||
+#TTYGROUP tty
|
||||
TTYPERM 0600
|
||||
|
||||
#
|
||||
@@ -180,61 +77,35 @@ TTYPERM 0600
|
||||
#
|
||||
# ERASECHAR Terminal ERASE character ('\010' = backspace).
|
||||
# KILLCHAR Terminal KILL character ('\025' = CTRL/U).
|
||||
-# ULIMIT Default "ulimit" value.
|
||||
#
|
||||
# The ERASECHAR and KILLCHAR are used only on System V machines.
|
||||
-# The ULIMIT is used only if the system supports it.
|
||||
-# (now it works with setrlimit too; ulimit is in 512-byte units)
|
||||
-#
|
||||
-# Prefix these values with "0" to get octal, "0x" to get hexadecimal.
|
||||
#
|
||||
ERASECHAR 0177
|
||||
KILLCHAR 025
|
||||
-#ULIMIT 2097152
|
||||
-
|
||||
-# Default initial "umask" value used by login(1) on non-PAM enabled systems.
|
||||
-# Default "umask" value for pam_umask(8) on PAM enabled systems.
|
||||
-# UMASK is also used by useradd(8) and newusers(8) to set the mode for new
|
||||
-# home directories if HOME_MODE is not set.
|
||||
-# 022 is the default value, but 027, or even 077, could be considered
|
||||
-# for increased privacy. There is no One True Answer here: each sysadmin
|
||||
-# must make up their mind.
|
||||
-UMASK 022
|
||||
|
||||
# HOME_MODE is used by useradd(8) and newusers(8) to set the mode for new
|
||||
# home directories.
|
||||
-# If HOME_MODE is not set, the value of UMASK is used to create the mode.
|
||||
-#HOME_MODE 0700
|
||||
+HOME_MODE 0700
|
||||
|
||||
#
|
||||
# Password aging controls:
|
||||
#
|
||||
# PASS_MAX_DAYS Maximum number of days a password may be used.
|
||||
# PASS_MIN_DAYS Minimum number of days allowed between password changes.
|
||||
-# PASS_MIN_LEN Minimum acceptable password length.
|
||||
# PASS_WARN_AGE Number of days warning given before a password expires.
|
||||
#
|
||||
PASS_MAX_DAYS 99999
|
||||
PASS_MIN_DAYS 0
|
||||
-PASS_MIN_LEN 5
|
||||
PASS_WARN_AGE 7
|
||||
|
||||
-#
|
||||
-# If "yes", the user must be listed as a member of the first gid 0 group
|
||||
-# in /etc/group (called "root" on most Linux systems) to be able to "su"
|
||||
-# to uid 0 accounts. If the group doesn't exist or is empty, no one
|
||||
-# will be able to "su" to uid 0.
|
||||
-#
|
||||
-SU_WHEEL_ONLY no
|
||||
-
|
||||
#
|
||||
# Min/max values for automatic uid selection in useradd(8)
|
||||
#
|
||||
UID_MIN 1000
|
||||
UID_MAX 60000
|
||||
# System accounts
|
||||
-SYS_UID_MIN 101
|
||||
-SYS_UID_MAX 999
|
||||
+#SYS_UID_MIN 101
|
||||
+#SYS_UID_MAX 999
|
||||
# Extra per user uids
|
||||
SUB_UID_MIN 100000
|
||||
SUB_UID_MAX 600100000
|
||||
@@ -246,8 +117,8 @@ SUB_UID_COUNT 65536
|
||||
GID_MIN 1000
|
||||
GID_MAX 60000
|
||||
# System accounts
|
||||
-SYS_GID_MIN 101
|
||||
-SYS_GID_MAX 999
|
||||
+#SYS_GID_MIN 101
|
||||
+#SYS_GID_MAX 999
|
||||
# Extra per user group ids
|
||||
SUB_GID_MIN 100000
|
||||
SUB_GID_MAX 600100000
|
||||
@@ -255,6 +126,9 @@ SUB_GID_COUNT 65536
|
||||
|
||||
#
|
||||
# Max number of login(1) retries if password is bad
|
||||
+# This will most likely be overriden by PAM, since the default pam_unix module
|
||||
+# has it's own built in of 3 retries. However, this is a safe fallback in case
|
||||
+# you are using an authentication module that does not enforce PAM_MAXTRIES.
|
||||
#
|
||||
LOGIN_RETRIES 5
|
||||
|
||||
@@ -263,28 +137,6 @@ LOGIN_RETRIES 5
|
||||
#
|
||||
LOGIN_TIMEOUT 60
|
||||
|
||||
-#
|
||||
-# Maximum number of attempts to change password if rejected (too easy)
|
||||
-#
|
||||
-PASS_CHANGE_TRIES 5
|
||||
-
|
||||
-#
|
||||
-# Warn about weak passwords (but still allow them) if you are root.
|
||||
-#
|
||||
-PASS_ALWAYS_WARN yes
|
||||
-
|
||||
-#
|
||||
-# Number of significant characters in the password for crypt().
|
||||
-# Default is 8, don't change unless your crypt() is better.
|
||||
-# Ignored if MD5_CRYPT_ENAB set to "yes".
|
||||
-#
|
||||
-#PASS_MAX_LEN 8
|
||||
-
|
||||
-#
|
||||
-# Require password before chfn(1)/chsh(1) can make any changes.
|
||||
-#
|
||||
-CHFN_AUTH yes
|
||||
-
|
||||
#
|
||||
# Which fields may be changed by regular users using chfn(1) - use
|
||||
# any combination of letters "frwh" (full name, room number, work
|
||||
@@ -294,29 +146,6 @@ CHFN_AUTH yes
|
||||
CHFN_RESTRICT rwh
|
||||
|
||||
#
|
||||
-# Password prompt (%s will be replaced by user name).
|
||||
-#
|
||||
-# XXX - it doesn't work correctly yet, for now leave it commented out
|
||||
-# to use the default which is just "Password: ".
|
||||
-#LOGIN_STRING "%s's Password: "
|
||||
-
|
||||
-#
|
||||
-# Only works if compiled with MD5_CRYPT defined:
|
||||
-# If set to "yes", new passwords will be encrypted using the MD5-based
|
||||
-# algorithm compatible with the one used by recent releases of FreeBSD.
|
||||
-# It supports passwords of unlimited length and longer salt strings.
|
||||
-# Set to "no" if you need to copy encrypted passwords to other systems
|
||||
-# which don't understand the new algorithm. Default is "no".
|
||||
-#
|
||||
-# Note: If you use PAM, it is recommended to use a value consistent with
|
||||
-# the PAM modules configuration.
|
||||
-#
|
||||
-# This variable is deprecated. You should use ENCRYPT_METHOD instead.
|
||||
-#
|
||||
-#MD5_CRYPT_ENAB no
|
||||
-
|
||||
-#
|
||||
-# Only works if compiled with ENCRYPTMETHOD_SELECT defined:
|
||||
# If set to MD5, MD5-based algorithm will be used for encrypting password
|
||||
# If set to SHA256, SHA256-based algorithm will be used for encrypting password
|
||||
# If set to SHA512, SHA512-based algorithm will be used for encrypting password
|
||||
@@ -326,66 +155,10 @@ CHFN_RESTRICT rwh
|
||||
# MD5 and DES should not be used for new hashes, see crypt(5) for recommendations.
|
||||
# Overrides the MD5_CRYPT_ENAB option
|
||||
#
|
||||
-# Note: If you use PAM, it is recommended to use a value consistent with
|
||||
+# Note: It is recommended to use a value consistent with
|
||||
# the PAM modules configuration.
|
||||
#
|
||||
-#ENCRYPT_METHOD DES
|
||||
-
|
||||
-#
|
||||
-# Only works if ENCRYPT_METHOD is set to SHA256 or SHA512.
|
||||
-#
|
||||
-# Define the number of SHA rounds.
|
||||
-# With a lot of rounds, it is more difficult to brute-force the password.
|
||||
-# However, more CPU resources will be needed to authenticate users if
|
||||
-# this value is increased.
|
||||
-#
|
||||
-# If not specified, the libc will choose the default number of rounds (5000),
|
||||
-# which is orders of magnitude too low for modern hardware.
|
||||
-# The values must be within the 1000-999999999 range.
|
||||
-# If only one of the MIN or MAX values is set, then this value will be used.
|
||||
-# If MIN > MAX, the highest value will be used.
|
||||
-#
|
||||
-#SHA_CRYPT_MIN_ROUNDS 5000
|
||||
-#SHA_CRYPT_MAX_ROUNDS 5000
|
||||
-
|
||||
-#
|
||||
-# Only works if ENCRYPT_METHOD is set to BCRYPT.
|
||||
-#
|
||||
-# Define the number of BCRYPT rounds.
|
||||
-# With a lot of rounds, it is more difficult to brute-force the password.
|
||||
-# However, more CPU resources will be needed to authenticate users if
|
||||
-# this value is increased.
|
||||
-#
|
||||
-# If not specified, 13 rounds will be attempted.
|
||||
-# If only one of the MIN or MAX values is set, then this value will be used.
|
||||
-# If MIN > MAX, the highest value will be used.
|
||||
-#
|
||||
-#BCRYPT_MIN_ROUNDS 13
|
||||
-#BCRYPT_MAX_ROUNDS 13
|
||||
-
|
||||
-#
|
||||
-# Only works if ENCRYPT_METHOD is set to YESCRYPT.
|
||||
-#
|
||||
-# Define the YESCRYPT cost factor.
|
||||
-# With a higher cost factor, it is more difficult to brute-force the password.
|
||||
-# However, more CPU time and more memory will be needed to authenticate users
|
||||
-# if this value is increased.
|
||||
-#
|
||||
-# If not specified, a cost factor of 5 will be used.
|
||||
-# The value must be within the 1-11 range.
|
||||
-#
|
||||
-#YESCRYPT_COST_FACTOR 5
|
||||
-
|
||||
-#
|
||||
-# List of groups to add to the user's supplementary group set
|
||||
-# when logging in from the console (as determined by the CONSOLE
|
||||
-# setting). Default is none.
|
||||
-#
|
||||
-# Use with caution - it is possible for users to gain permanent
|
||||
-# access to these groups, even when not logged in from the console.
|
||||
-# How to do it is left as an exercise for the reader...
|
||||
-#
|
||||
-#CONSOLE_GROUPS floppy:audio:cdrom
|
||||
+ENCRYPT_METHOD YESCRYPT
|
||||
|
||||
#
|
||||
# Should login be allowed if we can't cd to the home directory?
|
||||
@@ -401,12 +174,6 @@ DEFAULT_HOME yes
|
||||
#
|
||||
NONEXISTENT /nonexistent
|
||||
|
||||
-#
|
||||
-# If this file exists and is readable, login environment will be
|
||||
-# read from it. Every line should be in the form name=value.
|
||||
-#
|
||||
-ENVIRON_FILE /etc/environment
|
||||
-
|
||||
#
|
||||
# If defined, this command is run when removing a user.
|
||||
# It should remove any at/cron/print jobs etc. owned by
|
||||
@@ -415,59 +182,11 @@ ENVIRON_FILE /etc/environment
|
||||
#USERDEL_CMD /usr/sbin/userdel_local
|
||||
|
||||
#
|
||||
-# Enable setting of the umask group bits to be the same as owner bits
|
||||
-# (examples: 022 -> 002, 077 -> 007) for non-root users, if the uid is
|
||||
-# the same as gid, and username is the same as the primary group name.
|
||||
+# If set to yes, userdel(8) will remove the user's group if it contains no more
|
||||
+# members, and useradd(8) will create by default a group with the name of the
|
||||
+# user.
|
||||
#
|
||||
-# This also enables userdel(8) to remove user groups if no members exist.
|
||||
+# Other former uses of this variable are not used in PAM environments, such as
|
||||
+# Debian.
|
||||
#
|
||||
USERGROUPS_ENAB yes
|
||||
-
|
||||
-#
|
||||
-# If set to a non-zero number, the shadow utilities will make sure that
|
||||
-# groups never have more than this number of users on one line.
|
||||
-# This permits to support split groups (groups split into multiple lines,
|
||||
-# with the same group ID, to avoid limitation of the line length in the
|
||||
-# group file).
|
||||
-#
|
||||
-# 0 is the default value and disables this feature.
|
||||
-#
|
||||
-#MAX_MEMBERS_PER_GROUP 0
|
||||
-
|
||||
-#
|
||||
-# If useradd(8) should create home directories for users by default (non
|
||||
-# system users only).
|
||||
-# This option is overridden with the -M or -m flags on the useradd(8)
|
||||
-# command-line.
|
||||
-#
|
||||
-#CREATE_HOME yes
|
||||
-
|
||||
-#
|
||||
-# Force use shadow, even if shadow passwd & shadow group files are
|
||||
-# missing.
|
||||
-#
|
||||
-#FORCE_SHADOW yes
|
||||
-
|
||||
-#
|
||||
-# Allow newuidmap and newgidmap when running under an alternative
|
||||
-# primary group.
|
||||
-#
|
||||
-#GRANT_AUX_GROUP_SUBIDS yes
|
||||
-
|
||||
-#
|
||||
-# Prevents an empty password field to be interpreted as "no authentication
|
||||
-# required".
|
||||
-# Set to "yes" to prevent for all accounts
|
||||
-# Set to "superuser" to prevent for UID 0 / root (default)
|
||||
-# Set to "no" to not prevent for any account (dangerous, historical default)
|
||||
-PREVENT_NO_AUTH superuser
|
||||
-
|
||||
-#
|
||||
-# Select the HMAC cryptography algorithm.
|
||||
-# Used in pam_timestamp module to calculate the keyed-hash message
|
||||
-# authentication code.
|
||||
-#
|
||||
-# Note: It is recommended to check hmac(3) to see the possible algorithms
|
||||
-# that are available in your system.
|
||||
-#
|
||||
-#HMAC_CRYPTO_ALGO SHA512
|
||||
25
debian/patches/debian/Define-LOGIN_NAME_MAX-on-HURD.patch
vendored
Normal file
25
debian/patches/debian/Define-LOGIN_NAME_MAX-on-HURD.patch
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
From: Chris Hofstaedtler <zeha@debian.org>
|
||||
Date: Tue, 6 Aug 2024 00:16:59 +0200
|
||||
Subject: Define LOGIN_NAME_MAX on HURD
|
||||
|
||||
---
|
||||
lib/chkname.c | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
diff --git a/lib/chkname.c b/lib/chkname.c
|
||||
index 57d6d96..6af55a9 100644
|
||||
--- a/lib/chkname.c
|
||||
+++ b/lib/chkname.c
|
||||
@@ -29,6 +29,12 @@
|
||||
#include <stddef.h>
|
||||
#include <unistd.h>
|
||||
|
||||
+#ifdef __GNU__
|
||||
+#ifndef LOGIN_NAME_MAX
|
||||
+#define LOGIN_NAME_MAX 256
|
||||
+#endif
|
||||
+#endif
|
||||
+
|
||||
#include "defines.h"
|
||||
#include "chkname.h"
|
||||
#include "string/ctype/strisascii/strisdigit.h"
|
||||
65
debian/patches/debian/Document-the-shadowconfig-utility.patch
vendored
Normal file
65
debian/patches/debian/Document-the-shadowconfig-utility.patch
vendored
Normal file
@@ -0,0 +1,65 @@
|
||||
From: Shadow package maintainers <pkg-shadow-devel@lists.alioth.debian.org>
|
||||
Date: Sat, 22 Jun 2024 17:39:41 +0200
|
||||
Subject: Document the shadowconfig utility
|
||||
|
||||
Status wrt upstream: The shadowconfig utility is Debian-specific.
|
||||
The man page is Debian-specific, but it used to be distributed by
|
||||
upstream.
|
||||
---
|
||||
man/Makefile.am | 1 +
|
||||
man/man8/shadowconfig.8 | 34 ++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 35 insertions(+)
|
||||
create mode 100644 man/man8/shadowconfig.8
|
||||
|
||||
diff --git a/man/Makefile.am b/man/Makefile.am
|
||||
index f34ed7a..2523e84 100644
|
||||
--- a/man/Makefile.am
|
||||
+++ b/man/Makefile.am
|
||||
@@ -36,6 +36,7 @@ man_MANS = \
|
||||
man8/pwck.8 \
|
||||
man8/pwconv.8 \
|
||||
man8/pwunconv.8 \
|
||||
+ man8/shadowconfig.8 \
|
||||
man1/sg.1 \
|
||||
man3/shadow.3 \
|
||||
man5/shadow.5 \
|
||||
diff --git a/man/man8/shadowconfig.8 b/man/man8/shadowconfig.8
|
||||
new file mode 100644
|
||||
index 0000000..a463a92
|
||||
--- /dev/null
|
||||
+++ b/man/man8/shadowconfig.8
|
||||
@@ -0,0 +1,34 @@
|
||||
+.TH shadowconfig 8 2025-02-17 "Debian shadow-utils"
|
||||
+.SH Name
|
||||
+shadowconfig \- turn shadow passwords on
|
||||
+.
|
||||
+.
|
||||
+.SH Synopsis
|
||||
+.SY shadowconfig on
|
||||
+.YS
|
||||
+.
|
||||
+.
|
||||
+.SH Description
|
||||
+.I shadowconfig\ on
|
||||
+will turn shadow passwords on.
|
||||
+.
|
||||
+.
|
||||
+.SH Errors
|
||||
+.B shadowconfig
|
||||
+will print an error message and exit with a nonzero code
|
||||
+if it finds anything awry.
|
||||
+If that happens,
|
||||
+you should correct the error and run it again.
|
||||
+Turning shadow passwords on when they are already on
|
||||
+is harmless.
|
||||
+.
|
||||
+.
|
||||
+.SH Caveats
|
||||
+Turning shadow passwords off using shadowconfig
|
||||
+is not supported anymore.
|
||||
+.
|
||||
+.
|
||||
+.SH See also
|
||||
+Read
|
||||
+.I /usr/share/doc/passwd/README.Debian
|
||||
+for a brief introduction to shadow passwords and related features.
|
||||
37
debian/patches/debian/Exclude-Debian-globally-allocated-UIDs-from-sys_uid-range.patch
vendored
Normal file
37
debian/patches/debian/Exclude-Debian-globally-allocated-UIDs-from-sys_uid-range.patch
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
From: Chris Hofstaedtler <zeha@debian.org>
|
||||
Date: Sun, 16 Mar 2025 13:29:45 +0100
|
||||
Subject: Exclude Debian-globally allocated UIDs from sys_uid range warning
|
||||
|
||||
Bug: http://bugs.debian.org/1100563
|
||||
---
|
||||
src/useradd.c | 11 +++++++++--
|
||||
1 file changed, 9 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/useradd.c b/src/useradd.c
|
||||
index 9da533a..2f5df5f 100644
|
||||
--- a/src/useradd.c
|
||||
+++ b/src/useradd.c
|
||||
@@ -2372,14 +2372,21 @@ static void create_mail (void)
|
||||
#endif
|
||||
}
|
||||
|
||||
+/* See Debian Policy 9.2.2 "UID and GID classes"
|
||||
+ * https://www.debian.org/doc/debian-policy/ch-opersys.html#uid-and-gid-classes
|
||||
+ */
|
||||
+#define DEBIAN_GLOBAL_UID_MIN ((uid_t)60000)
|
||||
+#define DEBIAN_GLOBAL_UID_MAX ((uid_t)64999)
|
||||
+
|
||||
static void check_uid_range(int rflg, uid_t user_id)
|
||||
{
|
||||
uid_t uid_min ;
|
||||
uid_t uid_max ;
|
||||
if (rflg) {
|
||||
uid_max = getdef_ulong("SYS_UID_MAX",getdef_ulong("UID_MIN",1000UL)-1);
|
||||
- if (user_id > uid_max) {
|
||||
- fprintf(stderr, _("%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n"), Prog, user_name, user_id, uid_max);
|
||||
+ if (user_id > uid_max
|
||||
+ && (!(user_id >= DEBIAN_GLOBAL_UID_MIN && user_id <= DEBIAN_GLOBAL_UID_MAX))) {
|
||||
+ fprintf(stderr, _("%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n"), Prog, user_name, user_id, uid_max);
|
||||
}
|
||||
}else{
|
||||
uid_min = getdef_ulong("UID_MIN", 1000UL);
|
||||
52
debian/patches/debian/Keep-using-Debian-adduser-defaults.patch
vendored
Normal file
52
debian/patches/debian/Keep-using-Debian-adduser-defaults.patch
vendored
Normal file
@@ -0,0 +1,52 @@
|
||||
From: Balint Reczey <balint@balintreczey.hu>
|
||||
Date: Sat, 22 Jun 2024 17:39:41 +0200
|
||||
Subject: Keep using Debian's adduser defaults
|
||||
|
||||
Bug: https://github.com/shadow-maint/shadow/issues/501
|
||||
Bug-Debian: https://bugs.debian.org/1004710
|
||||
Forwarded: not-needed
|
||||
|
||||
Upstream's bbf4b79bc49fd1826eb41f6629669ef0b647267b commit
|
||||
in 4.9 merged those values from upstream's default configuration file
|
||||
which is not shipped in Debian.
|
||||
This patch keeps the program's compiled in defaults in sync with the
|
||||
configuration files shipped in Debian (debian/default/useradd).
|
||||
---
|
||||
man/useradd.8.xml | 2 +-
|
||||
src/useradd.c | 4 ++--
|
||||
2 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/man/useradd.8.xml b/man/useradd.8.xml
|
||||
index fd9ff69..69126ee 100644
|
||||
--- a/man/useradd.8.xml
|
||||
+++ b/man/useradd.8.xml
|
||||
@@ -262,7 +262,7 @@
|
||||
command line), useradd will set the primary group of the new
|
||||
user to the value specified by the <option>GROUP</option>
|
||||
variable in <filename>/etc/default/useradd</filename>, or
|
||||
- 1000 by default.
|
||||
+ 100 by default.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
diff --git a/src/useradd.c b/src/useradd.c
|
||||
index 36b9b8f..9da533a 100644
|
||||
--- a/src/useradd.c
|
||||
+++ b/src/useradd.c
|
||||
@@ -100,14 +100,14 @@ static const char Prog[] = "useradd";
|
||||
/*
|
||||
* These defaults are used if there is no defaults file.
|
||||
*/
|
||||
-static gid_t def_group = 1000;
|
||||
+static gid_t def_group = 100;
|
||||
static const char *def_groups = "";
|
||||
static const char *def_gname = "other";
|
||||
static const char *def_home = "/home";
|
||||
static const char *def_shell = "/bin/bash";
|
||||
static const char *def_template = SKEL_DIR;
|
||||
static const char *def_usrtemplate = USRSKELDIR;
|
||||
-static const char *def_create_mail_spool = "yes";
|
||||
+static const char *def_create_mail_spool = "no";
|
||||
static const char *def_log_init = "yes";
|
||||
|
||||
static long def_inactive = -1;
|
||||
46
debian/patches/debian/Recommend-using-adduser-and-deluser.patch
vendored
Normal file
46
debian/patches/debian/Recommend-using-adduser-and-deluser.patch
vendored
Normal file
@@ -0,0 +1,46 @@
|
||||
From: Shadow package maintainers <pkg-shadow-devel@lists.alioth.debian.org>
|
||||
Date: Sat, 22 Jun 2024 17:39:41 +0200
|
||||
Subject: Recommend using adduser and deluser
|
||||
|
||||
Fixes: #406046
|
||||
|
||||
Status wrt upstream: Debian specific patch.
|
||||
---
|
||||
man/useradd.8.xml | 6 ++++++
|
||||
man/userdel.8.xml | 6 ++++++
|
||||
2 files changed, 12 insertions(+)
|
||||
|
||||
diff --git a/man/useradd.8.xml b/man/useradd.8.xml
|
||||
index 69126ee..e198028 100644
|
||||
--- a/man/useradd.8.xml
|
||||
+++ b/man/useradd.8.xml
|
||||
@@ -82,6 +82,12 @@
|
||||
|
||||
<refsect1 id='description'>
|
||||
<title>DESCRIPTION</title>
|
||||
+ <para>
|
||||
+ <command>useradd</command> is a low level utility for adding
|
||||
+ users. On Debian, administrators should usually use
|
||||
+ <citerefentry><refentrytitle>adduser</refentrytitle>
|
||||
+ <manvolnum>8</manvolnum></citerefentry> instead.
|
||||
+ </para>
|
||||
<para>
|
||||
When invoked without the <option>-D</option> option, the
|
||||
<command>useradd</command> command creates a new user account using
|
||||
diff --git a/man/userdel.8.xml b/man/userdel.8.xml
|
||||
index 32851f1..4373cd8 100644
|
||||
--- a/man/userdel.8.xml
|
||||
+++ b/man/userdel.8.xml
|
||||
@@ -58,6 +58,12 @@
|
||||
|
||||
<refsect1 id='description'>
|
||||
<title>DESCRIPTION</title>
|
||||
+ <para>
|
||||
+ <command>userdel</command> is a low level utility for removing
|
||||
+ users. On Debian, administrators should usually use
|
||||
+ <citerefentry><refentrytitle>deluser</refentrytitle>
|
||||
+ <manvolnum>8</manvolnum></citerefentry> instead.
|
||||
+ </para>
|
||||
<para>
|
||||
The <command>userdel</command> command modifies the system account
|
||||
files, deleting all entries that refer to the user name <emphasis
|
||||
75
debian/patches/debian/Set-group-and-mode-for-g-shadow-files.patch
vendored
Normal file
75
debian/patches/debian/Set-group-and-mode-for-g-shadow-files.patch
vendored
Normal file
@@ -0,0 +1,75 @@
|
||||
From: Shadow package maintainers <pkg-shadow-devel@lists.alioth.debian.org>
|
||||
Date: Sat, 22 Jun 2024 17:39:41 +0200
|
||||
Subject: Set group and mode for [g]shadow files
|
||||
|
||||
Set group 'shadow' and mode 0400.
|
||||
|
||||
Fixes: #166793
|
||||
---
|
||||
lib/commonio.c | 12 ++++++++++++
|
||||
lib/sgroupio.c | 2 +-
|
||||
lib/shadowio.c | 2 +-
|
||||
3 files changed, 14 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/lib/commonio.c b/lib/commonio.c
|
||||
index 7304ec0..6b13f4a 100644
|
||||
--- a/lib/commonio.c
|
||||
+++ b/lib/commonio.c
|
||||
@@ -21,6 +21,7 @@
|
||||
#include <sys/stat.h>
|
||||
#include <stdlib.h>
|
||||
#include <utime.h>
|
||||
+#include <grp.h>
|
||||
|
||||
#include "alloc/malloc.h"
|
||||
#include "alloc/reallocf.h"
|
||||
@@ -949,12 +950,23 @@ int commonio_close (struct commonio_db *db)
|
||||
if (errors)
|
||||
goto fail;
|
||||
} else {
|
||||
+ struct group *grp;
|
||||
/*
|
||||
* Default permissions for new [g]shadow files.
|
||||
*/
|
||||
sb.st_mode = db->st_mode;
|
||||
sb.st_uid = db->st_uid;
|
||||
sb.st_gid = db->st_gid;
|
||||
+
|
||||
+ /*
|
||||
+ * Try to retrieve the shadow's GID, and fall back to GID 0.
|
||||
+ */
|
||||
+ if (sb.st_gid == 0) {
|
||||
+ if ((grp = getgrnam("shadow")) != NULL)
|
||||
+ sb.st_gid = grp->gr_gid;
|
||||
+ else
|
||||
+ sb.st_gid = 0;
|
||||
+ }
|
||||
}
|
||||
|
||||
if (SNPRINTF(buf, "%s+", db->filename) == -1)
|
||||
diff --git a/lib/sgroupio.c b/lib/sgroupio.c
|
||||
index ef82976..53e7ecd 100644
|
||||
--- a/lib/sgroupio.c
|
||||
+++ b/lib/sgroupio.c
|
||||
@@ -211,7 +211,7 @@ static struct commonio_db gshadow_db = {
|
||||
#ifdef WITH_SELINUX
|
||||
NULL, /* scontext */
|
||||
#endif
|
||||
- 0400, /* st_mode */
|
||||
+ 0440, /* st_mode */
|
||||
0, /* st_uid */
|
||||
0, /* st_gid */
|
||||
NULL, /* head */
|
||||
diff --git a/lib/shadowio.c b/lib/shadowio.c
|
||||
index 8b1c1d2..395d0c8 100644
|
||||
--- a/lib/shadowio.c
|
||||
+++ b/lib/shadowio.c
|
||||
@@ -87,7 +87,7 @@ static struct commonio_db shadow_db = {
|
||||
#ifdef WITH_SELINUX
|
||||
NULL, /* scontext */
|
||||
#endif /* WITH_SELINUX */
|
||||
- 0400, /* st_mode */
|
||||
+ 0440, /* st_mode */
|
||||
0, /* st_uid */
|
||||
0, /* st_gid */
|
||||
NULL, /* head */
|
||||
561
debian/patches/debian/Stop-building-programs-we-do-not-install.patch
vendored
Normal file
561
debian/patches/debian/Stop-building-programs-we-do-not-install.patch
vendored
Normal file
@@ -0,0 +1,561 @@
|
||||
From: Chris Hofstaedtler <zeha@debian.org>
|
||||
Date: Tue, 6 Aug 2024 00:27:13 +0200
|
||||
Subject: Stop building programs we do not install
|
||||
|
||||
---
|
||||
man/Makefile.am | 15 ---------------
|
||||
man/cs/Makefile.am | 9 ---------
|
||||
man/da/Makefile.am | 3 ---
|
||||
man/de/Makefile.am | 10 ----------
|
||||
man/fr/Makefile.am | 10 ----------
|
||||
man/hu/Makefile.am | 3 ---
|
||||
man/id/Makefile.am | 1 -
|
||||
man/it/Makefile.am | 10 ----------
|
||||
man/ja/Makefile.am | 8 --------
|
||||
man/ko/Makefile.am | 2 --
|
||||
man/pl/Makefile.am | 6 ------
|
||||
man/ru/Makefile.am | 9 ---------
|
||||
man/sv/Makefile.am | 8 --------
|
||||
man/tr/Makefile.am | 2 --
|
||||
man/uk/Makefile.am | 9 ---------
|
||||
man/zh_CN/Makefile.am | 10 ----------
|
||||
man/zh_TW/Makefile.am | 2 --
|
||||
src/Makefile.am | 7 +++----
|
||||
18 files changed, 3 insertions(+), 121 deletions(-)
|
||||
|
||||
diff --git a/man/Makefile.am b/man/Makefile.am
|
||||
index 2523e84..05a0c86 100644
|
||||
--- a/man/Makefile.am
|
||||
+++ b/man/Makefile.am
|
||||
@@ -13,8 +13,6 @@ man_MANS = \
|
||||
man8/chpasswd.8 \
|
||||
man1/chsh.1 \
|
||||
man1/expiry.1 \
|
||||
- man5/faillog.5 \
|
||||
- man8/faillog.8 \
|
||||
man3/getspnam.3 \
|
||||
man1/gpasswd.1 \
|
||||
man8/groupadd.8 \
|
||||
@@ -25,19 +23,14 @@ man_MANS = \
|
||||
man8/grpconv.8 \
|
||||
man8/grpunconv.8 \
|
||||
man5/gshadow.5 \
|
||||
- man1/login.1 \
|
||||
man5/login.defs.5 \
|
||||
- man8/logoutd.8 \
|
||||
- man1/newgrp.1 \
|
||||
man8/newusers.8 \
|
||||
- man8/nologin.8 \
|
||||
man1/passwd.1 \
|
||||
man5/passwd.5 \
|
||||
man8/pwck.8 \
|
||||
man8/pwconv.8 \
|
||||
man8/pwunconv.8 \
|
||||
man8/shadowconfig.8 \
|
||||
- man1/sg.1 \
|
||||
man3/shadow.3 \
|
||||
man5/shadow.5 \
|
||||
man8/useradd.8 \
|
||||
@@ -82,8 +75,6 @@ man_XMANS = \
|
||||
chpasswd.8.xml \
|
||||
chsh.1.xml \
|
||||
expiry.1.xml \
|
||||
- faillog.5.xml \
|
||||
- faillog.8.xml \
|
||||
getsubids.1.xml \
|
||||
gpasswd.1.xml \
|
||||
groupadd.8.xml \
|
||||
@@ -96,12 +87,9 @@ man_XMANS = \
|
||||
login.1.xml \
|
||||
login.access.5.xml \
|
||||
login.defs.5.xml \
|
||||
- logoutd.8.xml \
|
||||
newgidmap.1.xml \
|
||||
- newgrp.1.xml \
|
||||
newuidmap.1.xml \
|
||||
newusers.8.xml \
|
||||
- nologin.8.xml \
|
||||
passwd.1.xml \
|
||||
passwd.5.xml \
|
||||
porttime.5.xml \
|
||||
@@ -109,9 +97,6 @@ man_XMANS = \
|
||||
pwconv.8.xml \
|
||||
shadow.3.xml \
|
||||
shadow.5.xml \
|
||||
- sg.1.xml \
|
||||
- su.1.xml \
|
||||
- suauth.5.xml \
|
||||
subgid.5.xml \
|
||||
subuid.5.xml \
|
||||
useradd.8.xml \
|
||||
diff --git a/man/cs/Makefile.am b/man/cs/Makefile.am
|
||||
index 45aec38..e1f9f87 100644
|
||||
--- a/man/cs/Makefile.am
|
||||
+++ b/man/cs/Makefile.am
|
||||
@@ -3,25 +3,16 @@ mandir = @mandir@/cs
|
||||
|
||||
man_MANS = \
|
||||
man1/expiry.1 \
|
||||
- man5/faillog.5 \
|
||||
- man8/faillog.8 \
|
||||
man1/gpasswd.1 \
|
||||
man8/groupadd.8 \
|
||||
man8/groupdel.8 \
|
||||
man8/groupmod.8 \
|
||||
man8/grpck.8 \
|
||||
man5/gshadow.5 \
|
||||
- man8/nologin.8 \
|
||||
man5/passwd.5 \
|
||||
man5/shadow.5 \
|
||||
- man1/su.1 \
|
||||
man8/vipw.8
|
||||
|
||||
if ENABLE_LASTLOG
|
||||
man_MANS += man8/lastlog.8
|
||||
endif
|
||||
-
|
||||
-EXTRA_DIST = $(man_MANS) \
|
||||
- man8/groupmems.8 \
|
||||
- man8/logoutd.8
|
||||
-
|
||||
diff --git a/man/da/Makefile.am b/man/da/Makefile.am
|
||||
index c61b787..12234cb 100644
|
||||
--- a/man/da/Makefile.am
|
||||
+++ b/man/da/Makefile.am
|
||||
@@ -6,10 +6,7 @@ man_MANS = \
|
||||
man1/chfn.1 \
|
||||
man8/groupdel.8 \
|
||||
man5/gshadow.5 \
|
||||
- man8/logoutd.8 \
|
||||
man1/newgrp.1 \
|
||||
- man8/nologin.8 \
|
||||
- man1/sg.1 \
|
||||
man8/vigr.8 \
|
||||
man8/vipw.8
|
||||
|
||||
diff --git a/man/de/Makefile.am b/man/de/Makefile.am
|
||||
index d3a6d6c..59602aa 100644
|
||||
--- a/man/de/Makefile.am
|
||||
+++ b/man/de/Makefile.am
|
||||
@@ -8,34 +8,24 @@ man_MANS = \
|
||||
man8/chpasswd.8 \
|
||||
man1/chsh.1 \
|
||||
man1/expiry.1 \
|
||||
- man5/faillog.5 \
|
||||
- man8/faillog.8 \
|
||||
man3/getspnam.3 \
|
||||
man1/gpasswd.1 \
|
||||
man8/groupadd.8 \
|
||||
man8/groupdel.8 \
|
||||
- man8/groupmems.8 \
|
||||
man8/groupmod.8 \
|
||||
man8/grpck.8 \
|
||||
man8/grpconv.8 \
|
||||
man8/grpunconv.8 \
|
||||
man5/gshadow.5 \
|
||||
- man1/login.1 \
|
||||
man5/login.defs.5 \
|
||||
- man8/logoutd.8 \
|
||||
- man1/newgrp.1 \
|
||||
man8/newusers.8 \
|
||||
- man8/nologin.8 \
|
||||
man1/passwd.1 \
|
||||
man5/passwd.5 \
|
||||
man8/pwck.8 \
|
||||
man8/pwconv.8 \
|
||||
man8/pwunconv.8 \
|
||||
- man1/sg.1 \
|
||||
man3/shadow.3 \
|
||||
man5/shadow.5 \
|
||||
- man1/su.1 \
|
||||
- man5/suauth.5 \
|
||||
man8/useradd.8 \
|
||||
man8/userdel.8 \
|
||||
man8/usermod.8 \
|
||||
diff --git a/man/fr/Makefile.am b/man/fr/Makefile.am
|
||||
index 2365e23..6cbaadc 100644
|
||||
--- a/man/fr/Makefile.am
|
||||
+++ b/man/fr/Makefile.am
|
||||
@@ -8,34 +8,24 @@ man_MANS = \
|
||||
man8/chpasswd.8 \
|
||||
man1/chsh.1 \
|
||||
man1/expiry.1 \
|
||||
- man5/faillog.5 \
|
||||
- man8/faillog.8 \
|
||||
man3/getspnam.3 \
|
||||
man1/gpasswd.1 \
|
||||
man8/groupadd.8 \
|
||||
man8/groupdel.8 \
|
||||
- man8/groupmems.8 \
|
||||
man8/groupmod.8 \
|
||||
man8/grpck.8 \
|
||||
man8/grpconv.8 \
|
||||
man8/grpunconv.8 \
|
||||
man5/gshadow.5 \
|
||||
- man1/login.1 \
|
||||
man5/login.defs.5 \
|
||||
- man8/logoutd.8 \
|
||||
- man1/newgrp.1 \
|
||||
man8/newusers.8 \
|
||||
- man8/nologin.8 \
|
||||
man1/passwd.1 \
|
||||
man5/passwd.5 \
|
||||
man8/pwck.8 \
|
||||
man8/pwconv.8 \
|
||||
man8/pwunconv.8 \
|
||||
- man1/sg.1 \
|
||||
man3/shadow.3 \
|
||||
man5/shadow.5 \
|
||||
- man1/su.1 \
|
||||
- man5/suauth.5 \
|
||||
man8/useradd.8 \
|
||||
man8/userdel.8 \
|
||||
man8/usermod.8 \
|
||||
diff --git a/man/hu/Makefile.am b/man/hu/Makefile.am
|
||||
index 6bf68e8..2930da3 100644
|
||||
--- a/man/hu/Makefile.am
|
||||
+++ b/man/hu/Makefile.am
|
||||
@@ -4,11 +4,8 @@ mandir = @mandir@/hu
|
||||
man_MANS = \
|
||||
man1/chsh.1 \
|
||||
man1/gpasswd.1 \
|
||||
- man1/login.1 \
|
||||
- man1/newgrp.1 \
|
||||
man1/passwd.1 \
|
||||
man5/passwd.5 \
|
||||
- man1/sg.1 \
|
||||
man1/su.1
|
||||
|
||||
if ENABLE_LASTLOG
|
||||
diff --git a/man/id/Makefile.am b/man/id/Makefile.am
|
||||
index 21f3dbe..566fa8b 100644
|
||||
--- a/man/id/Makefile.am
|
||||
+++ b/man/id/Makefile.am
|
||||
@@ -3,7 +3,6 @@ mandir = @mandir@/id
|
||||
|
||||
man_MANS = \
|
||||
man1/chsh.1 \
|
||||
- man1/login.1 \
|
||||
man8/useradd.8
|
||||
|
||||
EXTRA_DIST = $(man_MANS)
|
||||
diff --git a/man/it/Makefile.am b/man/it/Makefile.am
|
||||
index 736576c..3312232 100644
|
||||
--- a/man/it/Makefile.am
|
||||
+++ b/man/it/Makefile.am
|
||||
@@ -8,34 +8,24 @@ man_MANS = \
|
||||
man8/chpasswd.8 \
|
||||
man1/chsh.1 \
|
||||
man1/expiry.1 \
|
||||
- man5/faillog.5 \
|
||||
- man8/faillog.8 \
|
||||
man3/getspnam.3 \
|
||||
man1/gpasswd.1 \
|
||||
man8/groupadd.8 \
|
||||
man8/groupdel.8 \
|
||||
- man8/groupmems.8 \
|
||||
man8/groupmod.8 \
|
||||
man8/grpck.8 \
|
||||
man8/grpconv.8 \
|
||||
man8/grpunconv.8 \
|
||||
man5/gshadow.5 \
|
||||
- man1/login.1 \
|
||||
man5/login.defs.5 \
|
||||
- man8/logoutd.8 \
|
||||
- man1/newgrp.1 \
|
||||
man8/newusers.8 \
|
||||
- man8/nologin.8 \
|
||||
man1/passwd.1 \
|
||||
man5/passwd.5 \
|
||||
man8/pwck.8 \
|
||||
man8/pwconv.8 \
|
||||
man8/pwunconv.8 \
|
||||
- man1/sg.1 \
|
||||
man3/shadow.3 \
|
||||
man5/shadow.5 \
|
||||
- man1/su.1 \
|
||||
- man5/suauth.5 \
|
||||
man8/useradd.8 \
|
||||
man8/userdel.8 \
|
||||
man8/usermod.8 \
|
||||
diff --git a/man/ja/Makefile.am b/man/ja/Makefile.am
|
||||
index b759726..1e22da2 100644
|
||||
--- a/man/ja/Makefile.am
|
||||
+++ b/man/ja/Makefile.am
|
||||
@@ -7,8 +7,6 @@ man_MANS = \
|
||||
man8/chpasswd.8 \
|
||||
man1/chsh.1 \
|
||||
man1/expiry.1 \
|
||||
- man5/faillog.5 \
|
||||
- man8/faillog.8 \
|
||||
man1/gpasswd.1 \
|
||||
man8/groupadd.8 \
|
||||
man8/groupdel.8 \
|
||||
@@ -16,20 +14,14 @@ man_MANS = \
|
||||
man8/grpck.8 \
|
||||
man8/grpconv.8 \
|
||||
man8/grpunconv.8 \
|
||||
- man1/login.1 \
|
||||
man5/login.defs.5 \
|
||||
- man8/logoutd.8 \
|
||||
- man1/newgrp.1 \
|
||||
man8/newusers.8 \
|
||||
man1/passwd.1 \
|
||||
man5/passwd.5 \
|
||||
man8/pwck.8 \
|
||||
man8/pwconv.8 \
|
||||
man8/pwunconv.8 \
|
||||
- man1/sg.1 \
|
||||
man5/shadow.5 \
|
||||
- man1/su.1 \
|
||||
- man5/suauth.5 \
|
||||
man8/useradd.8 \
|
||||
man8/userdel.8 \
|
||||
man8/usermod.8 \
|
||||
diff --git a/man/ko/Makefile.am b/man/ko/Makefile.am
|
||||
index 4f73651..0f17a17 100644
|
||||
--- a/man/ko/Makefile.am
|
||||
+++ b/man/ko/Makefile.am
|
||||
@@ -4,9 +4,7 @@ mandir = @mandir@/ko
|
||||
man_MANS = \
|
||||
man1/chfn.1 \
|
||||
man1/chsh.1 \
|
||||
- man1/login.1 \
|
||||
man5/passwd.5 \
|
||||
- man1/su.1 \
|
||||
man8/vigr.8 \
|
||||
man8/vipw.8
|
||||
# newgrp.1 must be updated
|
||||
diff --git a/man/pl/Makefile.am b/man/pl/Makefile.am
|
||||
index 2a015f3..02f4533 100644
|
||||
--- a/man/pl/Makefile.am
|
||||
+++ b/man/pl/Makefile.am
|
||||
@@ -6,17 +6,11 @@ man_MANS = \
|
||||
man1/chage.1 \
|
||||
man1/chsh.1 \
|
||||
man1/expiry.1 \
|
||||
- man5/faillog.5 \
|
||||
- man8/faillog.8 \
|
||||
man3/getspnam.3 \
|
||||
man8/groupadd.8 \
|
||||
man8/groupdel.8 \
|
||||
- man8/groupmems.8 \
|
||||
man8/groupmod.8 \
|
||||
man8/grpck.8 \
|
||||
- man8/logoutd.8 \
|
||||
- man1/newgrp.1 \
|
||||
- man1/sg.1 \
|
||||
man3/shadow.3 \
|
||||
man8/userdel.8 \
|
||||
man8/usermod.8 \
|
||||
diff --git a/man/ru/Makefile.am b/man/ru/Makefile.am
|
||||
index 845a603..9afcb22 100644
|
||||
--- a/man/ru/Makefile.am
|
||||
+++ b/man/ru/Makefile.am
|
||||
@@ -8,22 +8,16 @@ man_MANS = \
|
||||
man8/chpasswd.8 \
|
||||
man1/chsh.1 \
|
||||
man1/expiry.1 \
|
||||
- man5/faillog.5 \
|
||||
- man8/faillog.8 \
|
||||
man3/getspnam.3 \
|
||||
man1/gpasswd.1 \
|
||||
man8/groupadd.8 \
|
||||
man8/groupdel.8 \
|
||||
- man8/groupmems.8 \
|
||||
man8/groupmod.8 \
|
||||
man8/grpck.8 \
|
||||
man8/grpconv.8 \
|
||||
man8/grpunconv.8 \
|
||||
man5/gshadow.5 \
|
||||
- man1/login.1 \
|
||||
man5/login.defs.5 \
|
||||
- man8/logoutd.8 \
|
||||
- man1/newgrp.1 \
|
||||
man8/newusers.8 \
|
||||
man8/nologin.8 \
|
||||
man1/passwd.1 \
|
||||
@@ -31,11 +25,8 @@ man_MANS = \
|
||||
man8/pwck.8 \
|
||||
man8/pwconv.8 \
|
||||
man8/pwunconv.8 \
|
||||
- man1/sg.1 \
|
||||
man3/shadow.3 \
|
||||
man5/shadow.5 \
|
||||
- man1/su.1 \
|
||||
- man5/suauth.5 \
|
||||
man8/useradd.8 \
|
||||
man8/userdel.8 \
|
||||
man8/usermod.8 \
|
||||
diff --git a/man/sv/Makefile.am b/man/sv/Makefile.am
|
||||
index 1918af7..d572c36 100644
|
||||
--- a/man/sv/Makefile.am
|
||||
+++ b/man/sv/Makefile.am
|
||||
@@ -5,24 +5,16 @@ man_MANS = \
|
||||
man1/chage.1 \
|
||||
man1/chsh.1 \
|
||||
man1/expiry.1 \
|
||||
- man5/faillog.5 \
|
||||
- man8/faillog.8 \
|
||||
man3/getspnam.3 \
|
||||
man8/groupadd.8 \
|
||||
man8/groupdel.8 \
|
||||
- man8/groupmems.8 \
|
||||
man8/groupmod.8 \
|
||||
man8/grpck.8 \
|
||||
man5/gshadow.5 \
|
||||
- man8/logoutd.8 \
|
||||
- man1/newgrp.1 \
|
||||
- man8/nologin.8 \
|
||||
man1/passwd.1 \
|
||||
man5/passwd.5 \
|
||||
man8/pwck.8 \
|
||||
- man1/sg.1 \
|
||||
man3/shadow.3 \
|
||||
- man5/suauth.5 \
|
||||
man8/userdel.8 \
|
||||
man8/vigr.8 \
|
||||
man8/vipw.8
|
||||
diff --git a/man/tr/Makefile.am b/man/tr/Makefile.am
|
||||
index 8d8b916..8b2aa2d 100644
|
||||
--- a/man/tr/Makefile.am
|
||||
+++ b/man/tr/Makefile.am
|
||||
@@ -6,11 +6,9 @@ man_MANS = \
|
||||
man8/groupadd.8 \
|
||||
man8/groupdel.8 \
|
||||
man8/groupmod.8 \
|
||||
- man1/login.1 \
|
||||
man1/passwd.1 \
|
||||
man5/passwd.5 \
|
||||
man5/shadow.5 \
|
||||
- man1/su.1 \
|
||||
man8/useradd.8 \
|
||||
man8/userdel.8 \
|
||||
man8/usermod.8
|
||||
diff --git a/man/uk/Makefile.am b/man/uk/Makefile.am
|
||||
index a0f106d..f069eea 100644
|
||||
--- a/man/uk/Makefile.am
|
||||
+++ b/man/uk/Makefile.am
|
||||
@@ -8,34 +8,25 @@ man_MANS = \
|
||||
man8/chpasswd.8 \
|
||||
man1/chsh.1 \
|
||||
man1/expiry.1 \
|
||||
- man5/faillog.5 \
|
||||
- man8/faillog.8 \
|
||||
man3/getspnam.3 \
|
||||
man1/gpasswd.1 \
|
||||
man8/groupadd.8 \
|
||||
man8/groupdel.8 \
|
||||
- man8/groupmems.8 \
|
||||
man8/groupmod.8 \
|
||||
man8/grpck.8 \
|
||||
man8/grpconv.8 \
|
||||
man8/grpunconv.8 \
|
||||
man5/gshadow.5 \
|
||||
- man1/login.1 \
|
||||
man5/login.defs.5 \
|
||||
- man8/logoutd.8 \
|
||||
man1/newgrp.1 \
|
||||
man8/newusers.8 \
|
||||
- man8/nologin.8 \
|
||||
man1/passwd.1 \
|
||||
man5/passwd.5 \
|
||||
man8/pwck.8 \
|
||||
man8/pwconv.8 \
|
||||
man8/pwunconv.8 \
|
||||
- man1/sg.1 \
|
||||
man3/shadow.3 \
|
||||
man5/shadow.5 \
|
||||
- man1/su.1 \
|
||||
- man5/suauth.5 \
|
||||
man8/useradd.8 \
|
||||
man8/userdel.8 \
|
||||
man8/usermod.8 \
|
||||
diff --git a/man/zh_CN/Makefile.am b/man/zh_CN/Makefile.am
|
||||
index 59d1072..9402a9e 100644
|
||||
--- a/man/zh_CN/Makefile.am
|
||||
+++ b/man/zh_CN/Makefile.am
|
||||
@@ -8,34 +8,24 @@ man_MANS = \
|
||||
man8/chpasswd.8 \
|
||||
man1/chsh.1 \
|
||||
man1/expiry.1 \
|
||||
- man5/faillog.5 \
|
||||
- man8/faillog.8 \
|
||||
man3/getspnam.3 \
|
||||
man1/gpasswd.1 \
|
||||
man8/groupadd.8 \
|
||||
man8/groupdel.8 \
|
||||
- man8/groupmems.8 \
|
||||
man8/groupmod.8 \
|
||||
man8/grpck.8 \
|
||||
man8/grpconv.8 \
|
||||
man8/grpunconv.8 \
|
||||
man5/gshadow.5 \
|
||||
- man1/login.1 \
|
||||
man5/login.defs.5 \
|
||||
- man8/logoutd.8 \
|
||||
- man1/newgrp.1 \
|
||||
man8/newusers.8 \
|
||||
- man8/nologin.8 \
|
||||
man1/passwd.1 \
|
||||
man5/passwd.5 \
|
||||
man8/pwck.8 \
|
||||
man8/pwconv.8 \
|
||||
man8/pwunconv.8 \
|
||||
- man1/sg.1 \
|
||||
man3/shadow.3 \
|
||||
man5/shadow.5 \
|
||||
- man1/su.1 \
|
||||
- man5/suauth.5 \
|
||||
man8/useradd.8 \
|
||||
man8/userdel.8 \
|
||||
man8/usermod.8 \
|
||||
diff --git a/man/zh_TW/Makefile.am b/man/zh_TW/Makefile.am
|
||||
index c36ed2c..6fb6a15 100644
|
||||
--- a/man/zh_TW/Makefile.am
|
||||
+++ b/man/zh_TW/Makefile.am
|
||||
@@ -5,12 +5,10 @@ man_MANS = \
|
||||
man1/chfn.1 \
|
||||
man1/chsh.1 \
|
||||
man8/chpasswd.8 \
|
||||
- man1/newgrp.1 \
|
||||
man8/groupadd.8 \
|
||||
man8/groupdel.8 \
|
||||
man8/groupmod.8 \
|
||||
man5/passwd.5 \
|
||||
- man1/su.1 \
|
||||
man8/useradd.8 \
|
||||
man8/userdel.8 \
|
||||
man8/usermod.8
|
||||
diff --git a/src/Makefile.am b/src/Makefile.am
|
||||
index 6981815..5ca78ed 100644
|
||||
--- a/src/Makefile.am
|
||||
+++ b/src/Makefile.am
|
||||
@@ -26,8 +26,8 @@ AM_CFLAGS = $(LIBBSD_CFLAGS)
|
||||
# and installation would be much simpler (just two directories,
|
||||
# $prefix/bin and $prefix/sbin, no install-data hacks...)
|
||||
|
||||
-bin_PROGRAMS = login
|
||||
-sbin_PROGRAMS = nologin
|
||||
+bin_PROGRAMS =
|
||||
+sbin_PROGRAMS =
|
||||
ubin_PROGRAMS = faillog chage chfn chsh expiry gpasswd newgrp passwd
|
||||
if ENABLE_SUBIDS
|
||||
ubin_PROGRAMS += newgidmap newuidmap
|
||||
@@ -48,7 +48,6 @@ usbin_PROGRAMS = \
|
||||
grpck \
|
||||
grpconv \
|
||||
grpunconv \
|
||||
- logoutd \
|
||||
newusers \
|
||||
pwck \
|
||||
pwconv \
|
||||
@@ -59,7 +58,7 @@ usbin_PROGRAMS = \
|
||||
vipw
|
||||
|
||||
# sulogin from sysvinit
|
||||
-noinst_PROGRAMS = sulogin
|
||||
+noinst_PROGRAMS =
|
||||
|
||||
suidusbins =
|
||||
suidbins =
|
||||
104
debian/patches/debian/Warn-when-badname-and-variants-are-given.patch
vendored
Normal file
104
debian/patches/debian/Warn-when-badname-and-variants-are-given.patch
vendored
Normal file
@@ -0,0 +1,104 @@
|
||||
From: Chris Hofstaedtler <zeha@debian.org>
|
||||
Date: Mon, 17 Feb 2025 18:17:15 +0100
|
||||
Subject: Warn when --badname (and variants) are given
|
||||
|
||||
Upstream PR 1158 will remove them, probably in the forky timeframe.
|
||||
---
|
||||
src/newusers.c | 5 ++++-
|
||||
src/pwck.c | 5 ++++-
|
||||
src/useradd.c | 5 ++++-
|
||||
src/usermod.c | 5 ++++-
|
||||
4 files changed, 16 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/src/newusers.c b/src/newusers.c
|
||||
index 38cbddd..710c3e9 100644
|
||||
--- a/src/newusers.c
|
||||
+++ b/src/newusers.c
|
||||
@@ -128,7 +128,7 @@ static void usage (int status)
|
||||
"\n"
|
||||
"Options:\n"),
|
||||
Prog);
|
||||
- (void) fputs (_(" -b, --badname allow bad names\n"), usageout);
|
||||
+ (void) fputs (_(" -b, --badname allow bad names (DEPRECATED)\n"), usageout);
|
||||
#ifndef USE_PAM
|
||||
(void) fprintf (usageout,
|
||||
_(" -c, --crypt-method METHOD the crypt method (one of %s)\n"),
|
||||
@@ -661,6 +661,9 @@ static void process_flags (int argc, char **argv)
|
||||
switch (c) {
|
||||
case 'b':
|
||||
allow_bad_names = true;
|
||||
+ fprintf (stderr,
|
||||
+ _("%s: WARNING: -b and --badname are deprecated and will be removed\n"),
|
||||
+ Prog);
|
||||
break;
|
||||
#ifndef USE_PAM
|
||||
case 'c':
|
||||
diff --git a/src/pwck.c b/src/pwck.c
|
||||
index 6272839..a970e74 100644
|
||||
--- a/src/pwck.c
|
||||
+++ b/src/pwck.c
|
||||
@@ -134,7 +134,7 @@ usage (int status)
|
||||
"Options:\n"),
|
||||
Prog);
|
||||
}
|
||||
- (void) fputs (_(" -b, --badname allow bad names\n"), usageout);
|
||||
+ (void) fputs (_(" -b, --badname allow bad names (DEPRECATED)\n"), usageout);
|
||||
(void) fputs (_(" -h, --help display this help message and exit\n"), usageout);
|
||||
(void) fputs (_(" -q, --quiet report errors only\n"), usageout);
|
||||
(void) fputs (_(" -r, --read-only display errors and warnings\n"
|
||||
@@ -176,6 +176,9 @@ static void process_flags (int argc, char **argv)
|
||||
switch (c) {
|
||||
case 'b':
|
||||
allow_bad_names = true;
|
||||
+ fprintf (stderr,
|
||||
+ _("%s: WARNING: --badname is deprecated and will be removed\n"),
|
||||
+ Prog);
|
||||
break;
|
||||
case 'h':
|
||||
usage (E_SUCCESS);
|
||||
diff --git a/src/useradd.c b/src/useradd.c
|
||||
index 2f5df5f..73bf307 100644
|
||||
--- a/src/useradd.c
|
||||
+++ b/src/useradd.c
|
||||
@@ -874,7 +874,7 @@ static void usage (int status)
|
||||
"\n"
|
||||
"Options:\n"),
|
||||
Prog, Prog, Prog);
|
||||
- (void) fputs (_(" --badname do not check for bad names\n"), usageout);
|
||||
+ (void) fputs (_(" --badname do not check for bad names (DEPRECATED)\n"), usageout);
|
||||
(void) fputs (_(" -b, --base-dir BASE_DIR base directory for the home directory of the\n"
|
||||
" new account\n"), usageout);
|
||||
#ifdef WITH_BTRFS
|
||||
@@ -1197,6 +1197,9 @@ static void process_flags (int argc, char **argv)
|
||||
break;
|
||||
case 201:
|
||||
allow_bad_names = true;
|
||||
+ fprintf (stderr,
|
||||
+ _("%s: WARNING: --badname is deprecated and will be removed\n"),
|
||||
+ Prog);
|
||||
break;
|
||||
case 'c':
|
||||
if (!VALID (optarg)) {
|
||||
diff --git a/src/usermod.c b/src/usermod.c
|
||||
index a0f4d7d..2e04b09 100644
|
||||
--- a/src/usermod.c
|
||||
+++ b/src/usermod.c
|
||||
@@ -384,7 +384,7 @@ usage (int status)
|
||||
(void) fputs (_(" -a, --append append the user to the supplemental GROUPS\n"
|
||||
" mentioned by the -G option without removing\n"
|
||||
" the user from other groups\n"), usageout);
|
||||
- (void) fputs (_(" -b, --badname allow bad names\n"), usageout);
|
||||
+ (void) fputs (_(" -b, --badname allow bad names (DEPRECATED)\n"), usageout);
|
||||
(void) fputs (_(" -c, --comment COMMENT new value of the GECOS field\n"), usageout);
|
||||
(void) fputs (_(" -d, --home HOME_DIR new home directory for the user account\n"), usageout);
|
||||
(void) fputs (_(" -e, --expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE\n"), usageout);
|
||||
@@ -1052,6 +1052,9 @@ process_flags(int argc, char **argv)
|
||||
break;
|
||||
case 'b':
|
||||
allow_bad_names = true;
|
||||
+ fprintf (stderr,
|
||||
+ _("%s: WARNING: -b, --badname and --badnames are deprecated and will be removed\n"),
|
||||
+ Prog);
|
||||
break;
|
||||
case 'c':
|
||||
if (!VALID (optarg)) {
|
||||
23
debian/patches/debian/configure.ac-align-exec_prefix-with-prefix.patch
vendored
Normal file
23
debian/patches/debian/configure.ac-align-exec_prefix-with-prefix.patch
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
From: Chris Hofstaedtler <zeha@debian.org>
|
||||
Date: Mon, 24 Feb 2025 23:24:41 +0100
|
||||
Subject: configure.ac: align exec_prefix with prefix
|
||||
|
||||
Hopefully upstream will fix this one day.
|
||||
Reported as https://github.com/shadow-maint/shadow/issues/1229
|
||||
---
|
||||
configure.ac | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index bacce98..8746683 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -18,7 +18,7 @@ AC_SUBST([LIBSUBID_ABI], [libsubid_abi])
|
||||
|
||||
dnl Some hacks...
|
||||
test "$prefix" = "NONE" && prefix="/usr"
|
||||
-test "$prefix" = "/usr" && exec_prefix=""
|
||||
+test "$prefix" = "/usr" && exec_prefix="/usr"
|
||||
|
||||
AC_USE_SYSTEM_EXTENSIONS
|
||||
|
||||
89
debian/patches/debian/tests-disable-su.patch
vendored
Normal file
89
debian/patches/debian/tests-disable-su.patch
vendored
Normal file
@@ -0,0 +1,89 @@
|
||||
From: Serge Hallyn <serge@hallyn.com>
|
||||
Date: Thu, 27 Jun 2024 01:23:05 +0200
|
||||
Subject: upstream testsuite: disable su tests
|
||||
|
||||
Debian uses su from util-linux, pointless/impossible to test shadow's su
|
||||
here.
|
||||
---
|
||||
tests/run_some | 68 ----------------------------------------------------------
|
||||
1 file changed, 68 deletions(-)
|
||||
|
||||
diff --git a/tests/run_some b/tests/run_some
|
||||
index c58f59b..46317eb 100755
|
||||
--- a/tests/run_some
|
||||
+++ b/tests/run_some
|
||||
@@ -79,74 +79,6 @@ echo "-: test failed"
|
||||
find "${build_path}" -name "*.gcda" -delete
|
||||
# ignore the result of the first test. ~magic~
|
||||
run_test ./su/01/su_user.test ignore_failure
|
||||
-run_test ./su/01/su_user.test
|
||||
-run_test ./su/01/su_root.test
|
||||
-find "${build_path}" -name "*.gcda" -exec chmod a+rw {} \;
|
||||
-run_test ./su/02/env_FOO-options_--login
|
||||
-run_test ./su/02/env_FOO-options_--login_bash
|
||||
-run_test ./su/02/env_FOO-options_--preserve-environment
|
||||
-run_test ./su/02/env_FOO-options_--preserve-environment_bash
|
||||
-run_test ./su/02/env_FOO-options_-
|
||||
-run_test ./su/02/env_FOO-options_-_bash
|
||||
-run_test ./su/02/env_FOO-options_-l-m
|
||||
-run_test ./su/02/env_FOO-options_-l-m_bash
|
||||
-run_test ./su/02/env_FOO-options_-l
|
||||
-run_test ./su/02/env_FOO-options_-l_bash
|
||||
-run_test ./su/02/env_FOO-options_-m_bash
|
||||
-run_test ./su/02/env_FOO-options_-m
|
||||
-run_test ./su/02/env_FOO-options_-p
|
||||
-run_test ./su/02/env_FOO-options_-p_bash
|
||||
-run_test ./su/02/env_FOO-options__bash
|
||||
-run_test ./su/02/env_FOO-options_
|
||||
-run_test ./su/02/env_FOO-options_-p-
|
||||
-run_test ./su/02/env_FOO-options_-p-_bash
|
||||
-run_test ./su/02/env_special-options_-l-p
|
||||
-run_test ./su/02/env_special-options_-l
|
||||
-run_test ./su/02/env_special-options_-l-p_bash
|
||||
-run_test ./su/02/env_special-options_-l_bash
|
||||
-run_test ./su/02/env_special-options_-p
|
||||
-run_test ./su/02/env_special-options_-p_bash
|
||||
-run_test ./su/02/env_special-options_
|
||||
-run_test ./su/02/env_special-options__bash
|
||||
-run_test ./su/02/env_special_root-options_-l-p
|
||||
-run_test ./su/02/env_special_root-options_-l-p_bash
|
||||
-run_test ./su/02/env_special_root-options_-l
|
||||
-run_test ./su/02/env_special_root-options_-l_bash
|
||||
-run_test ./su/02/env_special_root-options_-p
|
||||
-run_test ./su/02/env_special_root-options_-p_bash
|
||||
-run_test ./su/02/env_special_root-options_
|
||||
-run_test ./su/02/env_special_root-options__bash
|
||||
-run_test ./su/03/su_run_command01.test
|
||||
-run_test ./su/03/su_run_command02.test
|
||||
-run_test ./su/03/su_run_command03.test
|
||||
-run_test ./su/03/su_run_command04.test
|
||||
-run_test ./su/03/su_run_command05.test
|
||||
-run_test ./su/03/su_run_command06.test
|
||||
-run_test ./su/03/su_run_command07.test
|
||||
-run_test ./su/03/su_run_command08.test
|
||||
-run_test ./su/03/su_run_command09.test
|
||||
-run_test ./su/03/su_run_command10.test
|
||||
-run_test ./su/03/su_run_command11.test
|
||||
-run_test ./su/03/su_run_command12.test
|
||||
-run_test ./su/03/su_run_command13.test
|
||||
-run_test ./su/03/su_run_command14.test
|
||||
-run_test ./su/03/su_run_command15.test
|
||||
-run_test ./su/03/su_run_command16.test
|
||||
-run_test ./su/03/su_run_command17.test
|
||||
-run_test ./su/04/su_wrong_user.test
|
||||
-run_test ./su/04/su_user_wrong_passwd.test
|
||||
-run_test ./su/04/su_user_wrong_passwd_syslog.test
|
||||
-run_test ./su/05/su_user_wrong_passwd_syslog.test
|
||||
-run_test ./su/06/su_user_syslog.test
|
||||
-run_test ./su/07/su_user_syslog.test
|
||||
-run_test ./su/08/env_special-options_
|
||||
-run_test ./su/08/env_special_root-options_
|
||||
-run_test ./su/09/env_special-options_
|
||||
-run_test ./su/09/env_special_root-options_
|
||||
-run_test ./su/10_su_sulog_success/su.test
|
||||
-run_test ./su/11_su_sulog_failure/su.test
|
||||
-run_test ./su/12_su_child_failure/su.test
|
||||
-run_test ./su/13_su_child_success/su.test
|
||||
run_test ./libsubid/01_list_ranges/list_ranges.test
|
||||
run_test ./libsubid/02_get_subid_owners/get_subid_owners.test
|
||||
run_test ./libsubid/03_add_remove/add_remove_subids.test
|
||||
12
debian/patches/series
vendored
Normal file
12
debian/patches/series
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
debian/Set-group-and-mode-for-g-shadow-files.patch
|
||||
debian/Keep-using-Debian-adduser-defaults.patch
|
||||
debian/Exclude-Debian-globally-allocated-UIDs-from-sys_uid-range.patch
|
||||
debian/Document-the-shadowconfig-utility.patch
|
||||
debian/Recommend-using-adduser-and-deluser.patch
|
||||
debian/tests-disable-su.patch
|
||||
debian/Adapt-login.defs-for-Debian.patch
|
||||
debian/Define-LOGIN_NAME_MAX-on-HURD.patch
|
||||
debian/Stop-building-programs-we-do-not-install.patch
|
||||
debian/Warn-when-badname-and-variants-are-given.patch
|
||||
debian/configure.ac-align-exec_prefix-with-prefix.patch
|
||||
Update-Dutch-translation.patch
|
||||
62
debian/rules
vendored
Executable file
62
debian/rules
vendored
Executable file
@@ -0,0 +1,62 @@
|
||||
#!/usr/bin/make -f
|
||||
# -*- mode: makefile; coding: utf-8 -*-
|
||||
|
||||
# Enable PIE, BINDNOW, and possible future flags.
|
||||
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
|
||||
DPKG_EXPORT_BUILDFLAGS = 1
|
||||
include /usr/share/dpkg/architecture.mk
|
||||
include /usr/share/dpkg/buildflags.mk
|
||||
include /usr/share/debhelper/dh_package_notes/package-notes.mk
|
||||
|
||||
# Adds extra options when calling the configure script:
|
||||
DEB_CONFIGURE_EXTRA_FLAGS := \
|
||||
--bindir=/usr/bin \
|
||||
--sbindir=/usr/sbin \
|
||||
--mandir=/usr/share/man \
|
||||
--with-libpam \
|
||||
--with-yescrypt \
|
||||
--enable-shadowgrp \
|
||||
--enable-subordinate-ids \
|
||||
--enable-lastlog=no \
|
||||
--enable-man \
|
||||
--disable-account-tools-setuid \
|
||||
--with-group-name-max-length=32 \
|
||||
--with-acl \
|
||||
--with-attr \
|
||||
--without-su \
|
||||
--without-tcb \
|
||||
|
||||
|
||||
ifeq ($(DEB_HOST_ARCH_OS),linux)
|
||||
DEB_CONFIGURE_EXTRA_FLAGS += --with-audit
|
||||
DEB_CONFIGURE_EXTRA_FLAGS += --with-btrfs
|
||||
endif
|
||||
|
||||
ifneq ($(filter nodoc,$(DEB_BUILD_PROFILES)),)
|
||||
DEB_CONFIGURE_EXTRA_FLAGS += --disable-man
|
||||
endif
|
||||
|
||||
DEB_CONFIGURE_EXTRA_FLAGS += SHELL=/bin/sh
|
||||
|
||||
# Set the default editor for vipw/vigr
|
||||
CFLAGS += -DDEFAULT_EDITOR="\"sensible-editor\""
|
||||
|
||||
%:
|
||||
dh $@
|
||||
|
||||
execute_after_dh_auto_clean:
|
||||
# rebuild lib/getdate.c
|
||||
rm -f lib/getdate.c
|
||||
|
||||
override_dh_auto_configure:
|
||||
dh_auto_configure -- $(DEB_CONFIGURE_EXTRA_FLAGS)
|
||||
|
||||
override_dh_installpam:
|
||||
# Distribute the pam.d files; unless for the commands with disabled PAM
|
||||
# support
|
||||
dh_installpam -p passwd --name=passwd
|
||||
dh_installpam -p passwd --name=chfn
|
||||
dh_installpam -p passwd --name=chsh
|
||||
dh_installpam -p passwd --name=chpasswd
|
||||
dh_installpam -p passwd --name=newusers
|
||||
|
||||
40
debian/salsa-ci.yml
vendored
Normal file
40
debian/salsa-ci.yml
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
---
|
||||
include: https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml
|
||||
|
||||
extract-source:
|
||||
extends: .provisioning-extract-source
|
||||
|
||||
variables:
|
||||
RELEASE: 'unstable'
|
||||
|
||||
build:
|
||||
extends: .build-package
|
||||
|
||||
test-build-any:
|
||||
extends: .test-build-package-any
|
||||
|
||||
test-build-all:
|
||||
extends: .test-build-package-all
|
||||
|
||||
lintian:
|
||||
extends: .test-lintian
|
||||
|
||||
autopkgtest:
|
||||
extends: .test-autopkgtest
|
||||
|
||||
blhc:
|
||||
extends: .test-blhc
|
||||
|
||||
reprotest:
|
||||
extends: .test-reprotest
|
||||
|
||||
variables:
|
||||
SALSA_CI_ENABLE_BUILD_PACKAGE_PROFILES: 1
|
||||
|
||||
test-build-profiles:
|
||||
extends: .test-build-package-profiles
|
||||
parallel:
|
||||
matrix:
|
||||
- BUILD_PROFILES: nocheck
|
||||
- BUILD_PROFILES: nodoc
|
||||
|
||||
56
debian/shadowconfig
vendored
Normal file
56
debian/shadowconfig
vendored
Normal file
@@ -0,0 +1,56 @@
|
||||
#!/bin/sh
|
||||
# turn shadow passwords on on a Debian system
|
||||
|
||||
set -e
|
||||
|
||||
shadowon () {
|
||||
set -e
|
||||
|
||||
if [ -n "$DPKG_ROOT" ] \
|
||||
&& cmp "${DPKG_ROOT}/etc/passwd" "${DPKG_ROOT}/usr/share/base-passwd/passwd.master" 2>/dev/null \
|
||||
&& cmp "${DPKG_ROOT}/etc/group" "${DPKG_ROOT}/usr/share/base-passwd/group.master" 2>/dev/null; then
|
||||
# If dpkg is run with --force-script-chrootless and if /etc/passwd
|
||||
# and /etc/group are unchanged, we avoid the chroot() call by manually
|
||||
# processing the files. This produces bit-by-bit identical results
|
||||
# compared to the normal case as shown by the CI setup at
|
||||
# https://salsa.debian.org/helmutg/dpkg-root-demo/-/jobs
|
||||
for f in passwd group; do
|
||||
cp -a "${DPKG_ROOT}/etc/$f" "${DPKG_ROOT}/etc/$f-"
|
||||
done
|
||||
chmod 600 "${DPKG_ROOT}/etc/passwd-"
|
||||
sed -i 's/^\([^:]\+\):\*:/\1:x:/' "${DPKG_ROOT}/etc/group" "${DPKG_ROOT}/etc/passwd"
|
||||
[ -n "$SOURCE_DATE_EPOCH" ] && epoch=$SOURCE_DATE_EPOCH || epoch=$(date +%s)
|
||||
sed "s/^\([^:]\+\):.*/\1:*:$((epoch/60/60/24)):0:99999:7:::/" "${DPKG_ROOT}/etc/passwd" > "${DPKG_ROOT}/etc/shadow"
|
||||
sed "s/^\([^:]\+\):.*/\1:*::/" "${DPKG_ROOT}/etc/group" > "${DPKG_ROOT}/etc/gshadow"
|
||||
touch "${DPKG_ROOT}/etc/.pwd.lock"
|
||||
chmod 600 "${DPKG_ROOT}/etc/.pwd.lock"
|
||||
else
|
||||
pwck -q -r
|
||||
grpck -r
|
||||
pwconv
|
||||
grpconv
|
||||
fi
|
||||
chown root:root "${DPKG_ROOT}/etc/passwd" "${DPKG_ROOT}/etc/group"
|
||||
chmod 644 "${DPKG_ROOT}/etc/passwd" "${DPKG_ROOT}/etc/group"
|
||||
chown root:shadow "${DPKG_ROOT}/etc/shadow" "${DPKG_ROOT}/etc/gshadow"
|
||||
chmod 640 "${DPKG_ROOT}/etc/shadow" "${DPKG_ROOT}/etc/gshadow"
|
||||
}
|
||||
|
||||
|
||||
case "$1" in
|
||||
"on")
|
||||
if shadowon ; then
|
||||
echo Shadow passwords are now on.
|
||||
else
|
||||
echo Please correct the error and rerun \`$0 on\'
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
"off")
|
||||
echo E: Turning shadow passwords off is no longer supported.
|
||||
exit 1
|
||||
;;
|
||||
*)
|
||||
echo Usage: $0 on
|
||||
;;
|
||||
esac
|
||||
1
debian/shlibs.local
vendored
Normal file
1
debian/shlibs.local
vendored
Normal file
@@ -0,0 +1 @@
|
||||
deb: libsubid 5 libsubid5 (= ${binary:Version})
|
||||
1
debian/source/format
vendored
Normal file
1
debian/source/format
vendored
Normal file
@@ -0,0 +1 @@
|
||||
3.0 (quilt)
|
||||
6
debian/source/lintian-overrides
vendored
Normal file
6
debian/source/lintian-overrides
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
# debputy does not need misc:Depends
|
||||
debhelper-but-no-misc-depends libsubid-dev
|
||||
debhelper-but-no-misc-depends libsubid5
|
||||
debhelper-but-no-misc-depends login.defs
|
||||
debhelper-but-no-misc-depends passwd
|
||||
debhelper-but-no-misc-depends uidmap
|
||||
10
debian/tests/control
vendored
Normal file
10
debian/tests/control
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
Tests: smoke
|
||||
Restrictions: needs-root, superficial
|
||||
|
||||
Tests: upstream
|
||||
Depends:
|
||||
expect,
|
||||
procps,
|
||||
@,
|
||||
@builddeps@
|
||||
Restrictions: needs-root, build-needed, breaks-testbed, allow-stderr, isolation-machine
|
||||
24
debian/tests/smoke
vendored
Executable file
24
debian/tests/smoke
vendored
Executable file
@@ -0,0 +1,24 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
|
||||
echo "Adding a user works"
|
||||
useradd shadow-test-user
|
||||
grep '^shadow-test-user:x:' /etc/passwd
|
||||
grep '^shadow-test-user:!:' /etc/shadow
|
||||
|
||||
# Regression test for #1096187. adduser uses this sequence.
|
||||
echo "Changing a users name and work phone number works"
|
||||
chfn "-f" "foo" "-r" "" shadow-test-user
|
||||
chfn -w "" shadow-test-user
|
||||
|
||||
# Regression test for #1095430
|
||||
TZ=Asia/Tokyo usermod --expiredate 1970-01-02 shadow-test-user
|
||||
TZ=Asia/Tokyo LC_ALL=C chage -l shadow-test-user | grep 'Account expires'
|
||||
# We expect 1970-01-02, as passed.
|
||||
TZ=Asia/Tokyo LC_ALL=C chage -l shadow-test-user | grep -P '^Account expires.*Jan 02, 1970'
|
||||
|
||||
echo "Removing a user works"
|
||||
userdel shadow-test-user
|
||||
! grep 'shadow-test-user' /etc/passwd
|
||||
! grep 'shadow-test-user' /etc/shadow
|
||||
15
debian/tests/upstream
vendored
Executable file
15
debian/tests/upstream
vendored
Executable file
@@ -0,0 +1,15 @@
|
||||
#!/bin/sh
|
||||
useradd ubuntu
|
||||
|
||||
export BUILD_BASE_DIR=$(pwd)
|
||||
|
||||
cd tests
|
||||
|
||||
cleanup() {
|
||||
cp testsuite.log $AUTOPKGTEST_ARTIFACTS/
|
||||
cat testsuite.log
|
||||
}
|
||||
|
||||
trap cleanup TERM EXIT
|
||||
|
||||
./run_some 2>&1
|
||||
3
debian/uidmap.install
vendored
Normal file
3
debian/uidmap.install
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
usr/bin/getsubids
|
||||
usr/bin/newgidmap
|
||||
usr/bin/newuidmap
|
||||
2
debian/uidmap.lintian-overrides
vendored
Normal file
2
debian/uidmap.lintian-overrides
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
uidmap: elevated-privileges 4755 root/root [usr/bin/newgidmap]
|
||||
uidmap: elevated-privileges 4755 root/root [usr/bin/newuidmap]
|
||||
5
debian/uidmap.manpages
vendored
Normal file
5
debian/uidmap.manpages
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
usr/share/man/*/man1/newgidmap.1
|
||||
usr/share/man/*/man1/newuidmap.1
|
||||
usr/share/man/man1/getsubids.1
|
||||
usr/share/man/man1/newgidmap.1
|
||||
usr/share/man/man1/newuidmap.1
|
||||
4
debian/upstream/metadata
vendored
Normal file
4
debian/upstream/metadata
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
---
|
||||
Bug-Database: https://github.com/shadow-maint/shadow/issues
|
||||
Bug-Submit: https://github.com/shadow-maint/shadow/issues/new
|
||||
Repository-Browse: https://github.com/shadow-maint/shadow
|
||||
1989
debian/upstream/signing-key.asc
vendored
Normal file
1989
debian/upstream/signing-key.asc
vendored
Normal file
File diff suppressed because it is too large
Load Diff
7
debian/watch
vendored
Normal file
7
debian/watch
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
version=4
|
||||
opts=downloadurlmangle=s/archive\/refs\/tags\/(.*)\.tar\.gz/releases\/download\/$1\/@PACKAGE@-$1\.tar\.xz/,\
|
||||
pgpsigurlmangle=s/$/.asc/,\
|
||||
versionmangle=s/-(alpha|beta|rc)/~$1/,\
|
||||
dversionmangle=s/\+dfsg1//,repacksuffix=+dfsg1 \
|
||||
https://github.com/shadow-maint/@PACKAGE@/tags \
|
||||
/shadow-maint/@PACKAGE@/archive/refs/tags/([^v].*)\.tar\.gz
|
||||
@@ -1751,7 +1751,7 @@
|
||||
}
|
||||
#ifdef HAS_SHADOW
|
||||
if ((pw->pw_passwd && pw->pw_passwd[0] == '@'
|
||||
&& pw_auth (pw->pw_passwd+1, pw->pw_name, PW_LOGIN, NULL))
|
||||
&& pw_auth(pw->pw_passwd+1, pw->pw_name))
|
||||
|| !valid (passwd, pw)) {
|
||||
return (UPAP_AUTHNAK);
|
||||
}
|
||||
|
||||
@@ -161,6 +161,7 @@ EGREP = @EGREP@
|
||||
ETAGS = @ETAGS@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
FILECMD = @FILECMD@
|
||||
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
|
||||
GMSGFMT = @GMSGFMT@
|
||||
GMSGFMT_015 = @GMSGFMT_015@
|
||||
@@ -251,8 +252,6 @@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
|
||||
XMLCATALOG = @XMLCATALOG@
|
||||
XML_CATALOG_FILE = @XML_CATALOG_FILE@
|
||||
XSLTPROC = @XSLTPROC@
|
||||
YACC = @YACC@
|
||||
YFLAGS = @YFLAGS@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
|
||||
@@ -250,6 +250,7 @@ EGREP = @EGREP@
|
||||
ETAGS = @ETAGS@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
FILECMD = @FILECMD@
|
||||
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
|
||||
GMSGFMT = @GMSGFMT@
|
||||
GMSGFMT_015 = @GMSGFMT_015@
|
||||
@@ -340,8 +341,6 @@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
|
||||
XMLCATALOG = @XMLCATALOG@
|
||||
XML_CATALOG_FILE = @XML_CATALOG_FILE@
|
||||
XSLTPROC = @XSLTPROC@
|
||||
YACC = @YACC@
|
||||
YFLAGS = @YFLAGS@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
|
||||
@@ -11,7 +11,6 @@ pamd_files = \
|
||||
passwd
|
||||
|
||||
pamd_acct_tools_files = \
|
||||
chage \
|
||||
chgpasswd \
|
||||
groupadd \
|
||||
groupdel \
|
||||
|
||||
@@ -193,6 +193,7 @@ EGREP = @EGREP@
|
||||
ETAGS = @ETAGS@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
FILECMD = @FILECMD@
|
||||
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
|
||||
GMSGFMT = @GMSGFMT@
|
||||
GMSGFMT_015 = @GMSGFMT_015@
|
||||
@@ -283,8 +284,6 @@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
|
||||
XMLCATALOG = @XMLCATALOG@
|
||||
XML_CATALOG_FILE = @XML_CATALOG_FILE@
|
||||
XSLTPROC = @XSLTPROC@
|
||||
YACC = @YACC@
|
||||
YFLAGS = @YFLAGS@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
@@ -342,7 +341,6 @@ top_srcdir = @top_srcdir@
|
||||
pamd_files = chpasswd chfn chsh groupmems login newusers passwd \
|
||||
$(am__append_2)
|
||||
pamd_acct_tools_files = \
|
||||
chage \
|
||||
chgpasswd \
|
||||
groupadd \
|
||||
groupdel \
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
#%PAM-1.0
|
||||
auth sufficient pam_rootok.so
|
||||
account required pam_permit.so
|
||||
password include system-auth
|
||||
@@ -158,6 +158,7 @@ EGREP = @EGREP@
|
||||
ETAGS = @ETAGS@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
FILECMD = @FILECMD@
|
||||
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
|
||||
GMSGFMT = @GMSGFMT@
|
||||
GMSGFMT_015 = @GMSGFMT_015@
|
||||
@@ -248,8 +249,6 @@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
|
||||
XMLCATALOG = @XMLCATALOG@
|
||||
XML_CATALOG_FILE = @XML_CATALOG_FILE@
|
||||
XSLTPROC = @XSLTPROC@
|
||||
YACC = @YACC@
|
||||
YFLAGS = @YFLAGS@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
|
||||
@@ -59,12 +59,8 @@ libshadow_la_SOURCES = \
|
||||
atoi/a2i/a2u_nc.h \
|
||||
atoi/getnum.c \
|
||||
atoi/getnum.h \
|
||||
atoi/str2i/str2i.c \
|
||||
atoi/str2i/str2i.h \
|
||||
atoi/str2i/str2s.c \
|
||||
atoi/str2i/str2s.h \
|
||||
atoi/str2i/str2u.c \
|
||||
atoi/str2i/str2u.h \
|
||||
atoi/str2i.c \
|
||||
atoi/str2i.h \
|
||||
atoi/strtoi/strtoi.c \
|
||||
atoi/strtoi/strtoi.h \
|
||||
atoi/strtoi/strtou.c \
|
||||
@@ -98,18 +94,21 @@ libshadow_la_SOURCES = \
|
||||
failure.h \
|
||||
fd.c \
|
||||
fields.c \
|
||||
fields.h \
|
||||
find_new_gid.c \
|
||||
find_new_uid.c \
|
||||
find_new_sub_gids.c \
|
||||
find_new_sub_uids.c \
|
||||
fputsx.c \
|
||||
fs/mkstemp/fmkomstemp.c \
|
||||
fs/mkstemp/fmkomstemp.h \
|
||||
fs/mkstemp/mkomstemp.c \
|
||||
fs/mkstemp/mkomstemp.h \
|
||||
fs/readlink/areadlink.c \
|
||||
fs/readlink/areadlink.h \
|
||||
fs/readlink/readlinknul.c \
|
||||
fs/readlink/readlinknul.h \
|
||||
get_pid.c \
|
||||
getdate.h \
|
||||
getdate.y \
|
||||
getdef.c \
|
||||
getdef.h \
|
||||
getgr_nam_gid.c \
|
||||
@@ -129,7 +128,6 @@ libshadow_la_SOURCES = \
|
||||
loginprompt.c \
|
||||
mail.c \
|
||||
motd.c \
|
||||
must_be.h \
|
||||
myname.c \
|
||||
nss.c \
|
||||
nscd.c \
|
||||
@@ -155,6 +153,14 @@ libshadow_la_SOURCES = \
|
||||
run_part.h \
|
||||
run_part.c \
|
||||
salt.c \
|
||||
search/cmp/cmp.c \
|
||||
search/cmp/cmp.h \
|
||||
search/l/lfind.c \
|
||||
search/l/lfind.h \
|
||||
search/l/lsearch.c \
|
||||
search/l/lsearch.h \
|
||||
search/sort/qsort.c \
|
||||
search/sort/qsort.h \
|
||||
selinux.c \
|
||||
semanage.c \
|
||||
setugid.c \
|
||||
@@ -164,7 +170,8 @@ libshadow_la_SOURCES = \
|
||||
sgetspent.c \
|
||||
sgroupio.c \
|
||||
sgroupio.h\
|
||||
shadow.c \
|
||||
shadow/grp/agetgroups.c \
|
||||
shadow/grp/agetgroups.h \
|
||||
shadowio.c \
|
||||
shadowio.h \
|
||||
shadowlog.c \
|
||||
@@ -176,24 +183,38 @@ libshadow_la_SOURCES = \
|
||||
spawn.c \
|
||||
sssd.c \
|
||||
sssd.h \
|
||||
string/ctype/strchrisascii/strchriscntrl.c \
|
||||
string/ctype/strchrisascii/strchriscntrl.h \
|
||||
string/ctype/strisascii/strisdigit.c \
|
||||
string/ctype/strisascii/strisdigit.h \
|
||||
string/ctype/strisascii/strisprint.c \
|
||||
string/ctype/strisascii/strisprint.h \
|
||||
string/ctype/strtoascii/strtolower.c \
|
||||
string/ctype/strtoascii/strtolower.h \
|
||||
string/memset/memzero.c \
|
||||
string/memset/memzero.h \
|
||||
string/sprintf/aprintf.c \
|
||||
string/sprintf/aprintf.h \
|
||||
string/sprintf/snprintf.c \
|
||||
string/sprintf/snprintf.h \
|
||||
string/sprintf/stpeprintf.c \
|
||||
string/sprintf/stpeprintf.h \
|
||||
string/sprintf/xasprintf.c \
|
||||
string/sprintf/xasprintf.h \
|
||||
string/sprintf/xaprintf.c \
|
||||
string/sprintf/xaprintf.h \
|
||||
string/strchr/strchrcnt.c \
|
||||
string/strchr/strchrcnt.h \
|
||||
string/strchr/stpspn.c \
|
||||
string/strchr/stpspn.h \
|
||||
string/strchr/strchrscnt.c \
|
||||
string/strchr/strchrscnt.h \
|
||||
string/strchr/strnul.c \
|
||||
string/strchr/strnul.h \
|
||||
string/strchr/strrspn.c \
|
||||
string/strchr/strrspn.h \
|
||||
string/strcmp/strcaseeq.c \
|
||||
string/strcmp/strcaseeq.h \
|
||||
string/strcmp/strcaseprefix.c \
|
||||
string/strcmp/strcaseprefix.h \
|
||||
string/strcmp/streq.c \
|
||||
string/strcmp/streq.h \
|
||||
string/strcmp/strprefix.c \
|
||||
string/strcmp/strprefix.h \
|
||||
string/strcpy/stpecpy.c \
|
||||
string/strcpy/stpecpy.h \
|
||||
string/strcpy/strncat.c \
|
||||
@@ -210,8 +231,26 @@ libshadow_la_SOURCES = \
|
||||
string/strdup/xstrndup.h \
|
||||
string/strftime.c \
|
||||
string/strftime.h \
|
||||
string/strspn/stpspn.c \
|
||||
string/strspn/stpspn.h \
|
||||
string/strspn/stprcspn.c \
|
||||
string/strspn/stprcspn.h \
|
||||
string/strspn/stprspn.c \
|
||||
string/strspn/stprspn.h \
|
||||
string/strspn/strrcspn.c \
|
||||
string/strspn/strrcspn.h \
|
||||
string/strspn/strrspn.c \
|
||||
string/strspn/strrspn.h \
|
||||
string/strtok/stpsep.c \
|
||||
string/strtok/stpsep.h \
|
||||
string/strtok/astrsep2ls.c \
|
||||
string/strtok/astrsep2ls.h \
|
||||
string/strtok/strsep2arr.c \
|
||||
string/strtok/strsep2arr.h \
|
||||
string/strtok/strsep2ls.c \
|
||||
string/strtok/strsep2ls.h \
|
||||
string/strtok/xastrsep2ls.c \
|
||||
string/strtok/xastrsep2ls.h \
|
||||
strtoday.c \
|
||||
sub.c \
|
||||
subordinateio.h \
|
||||
|
||||
839
lib/Makefile.in
839
lib/Makefile.in
File diff suppressed because it is too large
Load Diff
111
lib/addgrps.c
111
lib/addgrps.c
@@ -1,15 +1,14 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh
|
||||
* SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz
|
||||
* SPDX-FileCopyrightText: 2001 - 2006, Tomasz Kłoczko
|
||||
* SPDX-FileCopyrightText: 2007 - 2009, Nicolas François
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
// SPDX-FileCopyrightText: 1989-1994, Julianne Frances Haugh
|
||||
// SPDX-FileCopyrightText: 1996-1998, Marek Michałkiewicz
|
||||
// SPDX-FileCopyrightText: 2001-2006, Tomasz Kłoczko
|
||||
// SPDX-FileCopyrightText: 2007-2009, Nicolas François
|
||||
// SPDX-FileCopyrightText: 2024, Alejandro Colomar <alx@kernel.org>
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#if defined (HAVE_SETGROUPS) && ! defined (USE_PAM)
|
||||
#if !defined(USE_PAM)
|
||||
|
||||
#include "prototypes.h"
|
||||
#include "defines.h"
|
||||
@@ -18,12 +17,14 @@
|
||||
#include <grp.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#include "alloc/malloc.h"
|
||||
#include "alloc/reallocf.h"
|
||||
#include "search/l/lsearch.h"
|
||||
#include "shadow/grp/agetgroups.h"
|
||||
#include "shadowlog.h"
|
||||
#include "string/strchr/strchrscnt.h"
|
||||
|
||||
#ident "$Id$"
|
||||
|
||||
/*
|
||||
* Add groups with names from LIST (separated by commas or colons)
|
||||
@@ -33,48 +34,25 @@
|
||||
int
|
||||
add_groups(const char *list)
|
||||
{
|
||||
GETGROUPS_T *grouplist;
|
||||
size_t i;
|
||||
int ngroups;
|
||||
bool added;
|
||||
char *g, *p;
|
||||
char buf[1024];
|
||||
int ret;
|
||||
char *g, *p, *dup;
|
||||
FILE *shadow_logfd = log_get_logfd();
|
||||
gid_t *gids;
|
||||
size_t n;
|
||||
|
||||
if (strlen (list) >= sizeof (buf)) {
|
||||
errno = EINVAL;
|
||||
gids = agetgroups(&n);
|
||||
if (gids == NULL)
|
||||
return -1;
|
||||
}
|
||||
strcpy (buf, list);
|
||||
|
||||
i = 16;
|
||||
for (;;) {
|
||||
grouplist = MALLOC(i, GETGROUPS_T);
|
||||
if (NULL == grouplist) {
|
||||
return -1;
|
||||
}
|
||||
ngroups = getgroups (i, grouplist);
|
||||
if ( ( (-1 == ngroups)
|
||||
&& (EINVAL != errno))
|
||||
|| (i > (size_t)ngroups)) {
|
||||
/* Unexpected failure of getgroups or successful
|
||||
* reception of the groups */
|
||||
break;
|
||||
}
|
||||
/* not enough room, so try allocating a larger buffer */
|
||||
free (grouplist);
|
||||
i *= 2;
|
||||
}
|
||||
if (ngroups < 0) {
|
||||
free (grouplist);
|
||||
gids = REALLOCF(gids, n + strchrscnt(list, ",:") + 1, gid_t);
|
||||
if (gids == NULL)
|
||||
return -1;
|
||||
}
|
||||
|
||||
added = false;
|
||||
p = buf;
|
||||
p = dup = strdup(list);
|
||||
if (dup == NULL)
|
||||
goto free_gids;
|
||||
|
||||
while (NULL != (g = strsep(&p, ",:"))) {
|
||||
struct group *grp;
|
||||
struct group *grp;
|
||||
|
||||
grp = getgrnam(g); /* local, no need for xgetgrnam */
|
||||
if (NULL == grp) {
|
||||
@@ -82,35 +60,22 @@ add_groups(const char *list)
|
||||
continue;
|
||||
}
|
||||
|
||||
for (i = 0; i < (size_t)ngroups && grouplist[i] != grp->gr_gid; i++);
|
||||
LSEARCH(&grp->gr_gid, gids, &n);
|
||||
}
|
||||
free(dup);
|
||||
|
||||
if (i < (size_t)ngroups) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (ngroups >= sysconf (_SC_NGROUPS_MAX)) {
|
||||
fputs (_("Warning: too many groups\n"), shadow_logfd);
|
||||
break;
|
||||
}
|
||||
grouplist = REALLOCF(grouplist, (size_t) ngroups + 1, GETGROUPS_T);
|
||||
if (grouplist == NULL) {
|
||||
return -1;
|
||||
}
|
||||
grouplist[ngroups] = grp->gr_gid;
|
||||
ngroups++;
|
||||
added = true;
|
||||
if (setgroups(n, gids) == -1) {
|
||||
fprintf(shadow_logfd, "setgroups: %s\n", strerror(errno));
|
||||
goto free_gids;
|
||||
}
|
||||
|
||||
if (added) {
|
||||
ret = setgroups (ngroups, grouplist);
|
||||
free (grouplist);
|
||||
return ret;
|
||||
}
|
||||
|
||||
free (grouplist);
|
||||
free(gids);
|
||||
return 0;
|
||||
}
|
||||
#else /* HAVE_SETGROUPS && !USE_PAM */
|
||||
extern int ISO_C_forbids_an_empty_translation_unit;
|
||||
#endif /* HAVE_SETGROUPS && !USE_PAM */
|
||||
|
||||
free_gids:
|
||||
free(gids);
|
||||
return -1;
|
||||
}
|
||||
#else /* !USE_PAM */
|
||||
extern int ISO_C_forbids_an_empty_translation_unit;
|
||||
#endif /* !USE_PAM */
|
||||
|
||||
@@ -11,5 +11,3 @@
|
||||
|
||||
extern inline long addsl2(long a, long b);
|
||||
extern inline long addslN(size_t n, long addend[n]);
|
||||
|
||||
extern inline int cmpl(const void *p1, const void *p2);
|
||||
|
||||
24
lib/adds.h
24
lib/adds.h
@@ -1,4 +1,4 @@
|
||||
// SPDX-FileCopyrightText: 2023, Alejandro Colomar <alx@kernel.org>
|
||||
// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar <alx@kernel.org>
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
|
||||
@@ -11,8 +11,8 @@
|
||||
#include <errno.h>
|
||||
#include <limits.h>
|
||||
#include <stddef.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "search/sort/qsort.h"
|
||||
#include "sizeof.h"
|
||||
|
||||
|
||||
@@ -20,15 +20,13 @@
|
||||
({ \
|
||||
long addend_[] = {a, b, __VA_ARGS__}; \
|
||||
\
|
||||
addslN(NITEMS(addend_), addend_); \
|
||||
addslN(countof(addend_), addend_); \
|
||||
})
|
||||
|
||||
|
||||
inline long addsl2(long a, long b);
|
||||
inline long addslN(size_t n, long addend[n]);
|
||||
|
||||
inline int cmpl(const void *p1, const void *p2);
|
||||
|
||||
|
||||
inline long
|
||||
addsl2(long a, long b)
|
||||
@@ -57,7 +55,7 @@ addslN(size_t n, long addend[n])
|
||||
|
||||
e = errno;
|
||||
while (n > 1) {
|
||||
qsort(addend, n, sizeof(addend[0]), cmpl);
|
||||
QSORT(addend, n);
|
||||
|
||||
errno = 0;
|
||||
addend[0] = addsl2(addend[0], addend[--n]);
|
||||
@@ -69,18 +67,4 @@ addslN(size_t n, long addend[n])
|
||||
}
|
||||
|
||||
|
||||
inline int
|
||||
cmpl(const void *p1, const void *p2)
|
||||
{
|
||||
const long *l1 = p1;
|
||||
const long *l2 = p2;
|
||||
|
||||
if (*l1 < *l2)
|
||||
return -1;
|
||||
if (*l1 > *l2)
|
||||
return +1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
#endif // include guard
|
||||
|
||||
@@ -106,7 +106,7 @@ int expire (const struct passwd *pw, /*@null@*/const struct spwd *sp)
|
||||
* passwd to work just like it would had they executed
|
||||
* it from the command line while logged in.
|
||||
*/
|
||||
#if defined(HAVE_INITGROUPS) && ! defined(USE_PAM)
|
||||
#if !defined(USE_PAM)
|
||||
if (setup_uid_gid (pw, false) != 0)
|
||||
#else
|
||||
if (setup_uid_gid (pw) != 0)
|
||||
|
||||
@@ -8,49 +8,13 @@
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include "atoi/a2i/a2s_c.h"
|
||||
#include "atoi/a2i/a2s_nc.h"
|
||||
#include "atoi/a2i/a2i.h"
|
||||
|
||||
|
||||
#define a2sh(n, s, ...) \
|
||||
( \
|
||||
_Generic(s, \
|
||||
const char *: a2sh_c, \
|
||||
const void *: a2sh_c, \
|
||||
char *: a2sh_nc, \
|
||||
void *: a2sh_nc \
|
||||
)(n, s, __VA_ARGS__) \
|
||||
)
|
||||
|
||||
#define a2si(n, s, ...) \
|
||||
( \
|
||||
_Generic(s, \
|
||||
const char *: a2si_c, \
|
||||
const void *: a2si_c, \
|
||||
char *: a2si_nc, \
|
||||
void *: a2si_nc \
|
||||
)(n, s, __VA_ARGS__) \
|
||||
)
|
||||
|
||||
#define a2sl(n, s, ...) \
|
||||
( \
|
||||
_Generic(s, \
|
||||
const char *: a2sl_c, \
|
||||
const void *: a2sl_c, \
|
||||
char *: a2sl_nc, \
|
||||
void *: a2sl_nc \
|
||||
)(n, s, __VA_ARGS__) \
|
||||
)
|
||||
|
||||
#define a2sll(n, s, ...) \
|
||||
( \
|
||||
_Generic(s, \
|
||||
const char *: a2sll_c, \
|
||||
const void *: a2sll_c, \
|
||||
char *: a2sll_nc, \
|
||||
void *: a2sll_nc \
|
||||
)(n, s, __VA_ARGS__) \
|
||||
)
|
||||
#define a2sh(...) a2i(short, __VA_ARGS__)
|
||||
#define a2si(...) a2i(int, __VA_ARGS__)
|
||||
#define a2sl(...) a2i(long, __VA_ARGS__)
|
||||
#define a2sll(...) a2i(long long, __VA_ARGS__)
|
||||
|
||||
|
||||
#endif // include guard
|
||||
|
||||
@@ -8,49 +8,13 @@
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include "atoi/a2i/a2u_c.h"
|
||||
#include "atoi/a2i/a2u_nc.h"
|
||||
#include "atoi/a2i/a2i.h"
|
||||
|
||||
|
||||
#define a2uh(n, s, ...) \
|
||||
( \
|
||||
_Generic(s, \
|
||||
const char *: a2uh_c, \
|
||||
const void *: a2uh_c, \
|
||||
char *: a2uh_nc, \
|
||||
void *: a2uh_nc \
|
||||
)(n, s, __VA_ARGS__) \
|
||||
)
|
||||
|
||||
#define a2ui(n, s, ...) \
|
||||
( \
|
||||
_Generic(s, \
|
||||
const char *: a2ui_c, \
|
||||
const void *: a2ui_c, \
|
||||
char *: a2ui_nc, \
|
||||
void *: a2ui_nc \
|
||||
)(n, s, __VA_ARGS__) \
|
||||
)
|
||||
|
||||
#define a2ul(n, s, ...) \
|
||||
( \
|
||||
_Generic(s, \
|
||||
const char *: a2ul_c, \
|
||||
const void *: a2ul_c, \
|
||||
char *: a2ul_nc, \
|
||||
void *: a2ul_nc \
|
||||
)(n, s, __VA_ARGS__) \
|
||||
)
|
||||
|
||||
#define a2ull(n, s, ...) \
|
||||
( \
|
||||
_Generic(s, \
|
||||
const char *: a2ull_c, \
|
||||
const void *: a2ull_c, \
|
||||
char *: a2ull_nc, \
|
||||
void *: a2ull_nc \
|
||||
)(n, s, __VA_ARGS__) \
|
||||
)
|
||||
#define a2uh(...) a2i(unsigned short, __VA_ARGS__)
|
||||
#define a2ui(...) a2i(unsigned int, __VA_ARGS__)
|
||||
#define a2ul(...) a2i(unsigned long, __VA_ARGS__)
|
||||
#define a2ull(...) a2i(unsigned long long, __VA_ARGS__)
|
||||
|
||||
|
||||
#endif // include guard
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
// SPDX-FileCopyrightText: 2007-2009, Nicolas François
|
||||
// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar <alx@kernel.org>
|
||||
// SPDX-FileCopyrightText: 2023-2025, Alejandro Colomar <alx@kernel.org>
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include "atoi/str2i/str2i.h"
|
||||
#include "atoi/str2i.h"
|
||||
31
lib/atoi/str2i.h
Normal file
31
lib/atoi/str2i.h
Normal file
@@ -0,0 +1,31 @@
|
||||
// SPDX-FileCopyrightText: 2007-2009, Nicolas François
|
||||
// SPDX-FileCopyrightText: 2023-2025, Alejandro Colomar <alx@kernel.org>
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
|
||||
#ifndef SHADOW_INCLUDE_LIB_ATOI_STR2I_H_
|
||||
#define SHADOW_INCLUDE_LIB_ATOI_STR2I_H_
|
||||
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
#include "atoi/a2i/a2i.h"
|
||||
#include "typetraits.h"
|
||||
|
||||
|
||||
#define str2i(T, ...) a2i(T, __VA_ARGS__, NULL, 0, type_min(T), type_max(T))
|
||||
|
||||
#define str2sh(...) str2i(short, __VA_ARGS__)
|
||||
#define str2si(...) str2i(int, __VA_ARGS__)
|
||||
#define str2sl(...) str2i(long, __VA_ARGS__)
|
||||
#define str2sll(...) str2i(long long, __VA_ARGS__)
|
||||
|
||||
#define str2uh(...) str2i(unsigned short, __VA_ARGS__)
|
||||
#define str2ui(...) str2i(unsigned int, __VA_ARGS__)
|
||||
#define str2ul(...) str2i(unsigned long, __VA_ARGS__)
|
||||
#define str2ull(...) str2i(unsigned long long, __VA_ARGS__)
|
||||
|
||||
|
||||
#endif // include guard
|
||||
@@ -1,31 +0,0 @@
|
||||
// SPDX-FileCopyrightText: 2007-2009, Nicolas François
|
||||
// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar <alx@kernel.org>
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
|
||||
#ifndef SHADOW_INCLUDE_LIB_ATOI_STR2I_STR2I_H_
|
||||
#define SHADOW_INCLUDE_LIB_ATOI_STR2I_STR2I_H_
|
||||
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include "atoi/str2i/str2s.h"
|
||||
#include "atoi/str2i/str2u.h"
|
||||
|
||||
|
||||
#define str2i(TYPE, ...) \
|
||||
( \
|
||||
_Generic((TYPE) 0, \
|
||||
short: str2sh, \
|
||||
int: str2si, \
|
||||
long: str2sl, \
|
||||
long long: str2sll, \
|
||||
unsigned short: str2uh, \
|
||||
unsigned int: str2ui, \
|
||||
unsigned long: str2ul, \
|
||||
unsigned long long: str2ull \
|
||||
)(__VA_ARGS__) \
|
||||
)
|
||||
|
||||
|
||||
#endif // include guard
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user