Witam!
Po pewnym czasie pracy z pakietem opie przesyłam kilka poprawek.
Pakiet buduję się i działa.
Proszę kogoś(TM) o dodanie tych poprawek do CVSu.
opie.diff - patch do speca,
opie-libopie.patch - patch poprawiający prawa do pliku i likwidujący
błąd przy zmianie seeda.
opie-opieinfo.patch - patch przystosowujący pakiet do działania przy
prawach 700 do pliku /etc/opie/keys
opie-opiepasswd-patch - patch zabraniający użytkownikom samodzielnego
dodawania i usuwania się z bazy; dodatkowo workaround segfaulta, gdyż
opiepasswd przy długości seeda > 12 segfaultuje i zachowuje się
bardzo dziwnie przy autoryzacji(czyt. nie działa:))
Pozdrawiam
--
Artur Makutunowicz <nail2k%freeco.pl> | GSM +48508912928
GG #4657066 | Linux User #324974 | http://www.nail2k.int.pl
Linux 2.6.8 AMD_Athlon(tm)_XP_2000+ PLD Linux
--- opie.spec.dist 2005-01-15 17:14:09.000000000 +0100
+++ opie.spec 2005-01-18 11:27:42.037843600 +0100
@@ -3,7 +3,7 @@
Summary(pl): Zestaw programów do OPIE
Name: opie
Version: 2.4
-Release: 8
+Release: 9
Epoch: 1
License: NRL/TIN
Group: Applications/System
@@ -16,7 +16,10 @@
Patch4: %{name}-errno.patch
Patch5: %{name}-suse.patch
Patch6: %{name}-uint4.patch
-URL: http://inner.net/opie/
+Patch7: %{name}-opieinfo.patch
+Patch8: %{name}-opiepasswd.patch
+Patch9: %{name}-libopie.patch
+URL: http://inner.net/opie
BuildRequires: autoconf >= 2.52
BuildRequires: bison
Requires: %{name}-libs = %{epoch}:%{version}
@@ -87,13 +90,17 @@
%patch4 -p1
%patch5 -p1
%patch6 -p0
+%patch7 -p0
+%patch8 -p0
+%patch9 -p0
%build
%{__autoconf}
%configure \
--enable-access-file=%{_sysconfdir}/opie/access \
- --enable-user-locking=/var/lib/opie
-
+ --enable-user-locking=/var/lib/opie \
+ --enable-insecure-override
+
%{__make} DEBUG="%{rpmcflags} " \
KEY_FILE=%{_sysconfdir}/opie/keys
@@ -115,7 +122,7 @@
%files
%defattr(644,root,root,755)
-%attr(0755,root,root) %{_bindir}/opieinfo
+%attr(4755,root,root) %{_bindir}/opieinfo
%attr(0755,root,root) %{_bindir}/opiekey
%attr(0755,root,root) %{_bindir}/otp-*
%attr(4755,root,root) %{_bindir}/opiepasswd
@@ -129,8 +136,8 @@
%defattr(644,root,root,755)
%doc BUG-REPORT README COPYRIGHT.NRL License.TIN
%attr(755,root,root) %{_libdir}/lib*.so.*.*
-%dir %{_sysconfdir}/opie
-%attr(444,root,root) %{_sysconfdir}/opie/keys
+%dir %attr(700,root,root) %{_sysconfdir}/opie
+%config(noreplace) %verify(not md5 size mtime) %attr(600,root,root) %{_sysconfdir}/opie/keys
%files devel
%defattr(644,root,root,755)
--- ../opie-2.4/opieinfo.c 2005-01-17 19:18:02.381892840 +0100
+++ opieinfo.c 2005-01-17 19:28:52.875002856 +0100
@@ -73,9 +73,13 @@
}
}
- if (optind < argc)
- username = argv[optind];
- else
+ if (optind < argc){
+ if(getuid()){
+ printf("Only root can do that\n");
+ exit(1);
+ }
+ username = argv[optind];
+ } else
username = getusername();
if ((i = opielookup(&opie, username)) && (i != 2)) {
diff -urN ../opie-2.4/libopie/newseed.c libopie/newseed.c
--- ../opie-2.4/libopie/newseed.c 2005-01-17 19:18:02.353897096 +0100
+++ libopie/newseed.c 2005-01-17 19:23:18.257872392 +0100
@@ -55,7 +55,7 @@
if (++i >= max)
i = 1;
- snprintf(c, end - c, "%d", i);
+ snprintf(c, end - c + 2, "%d", i);
seed[OPIE_SEED_MAX] = 0;
return 0;
}
diff -urN ../opie-2.4/libopie/readrec.c libopie/readrec.c
--- ../opie-2.4/libopie/readrec.c 2005-01-17 19:18:02.352897248 +0100
+++ libopie/readrec.c 2005-01-17 19:23:38.144849112 +0100
@@ -95,7 +95,7 @@
FILE *f = NULL;
int rval = -1;
- if (!(f = __opieopen(KEY_FILE, 0, 0644))) {
+ if (!(f = __opieopen(KEY_FILE, 0, 0600))) {
#if DEBUG
syslog(LOG_DEBUG, "__opiereadrec: __opieopen(KEY_FILE..) failed!");
#endif /* DEBUG */
diff -urN ../opie-2.4/libopie/writerec.c libopie/writerec.c
--- ../opie-2.4/libopie/writerec.c 2005-01-17 19:18:02.327901048 +0100
+++ libopie/writerec.c 2005-01-17 19:23:31.548851856 +0100
@@ -65,13 +65,13 @@
switch(i) {
case 0:
- if (!(f = __opieopen(KEY_FILE, 1, 0644)))
+ if (!(f = __opieopen(KEY_FILE, 1, 0600)))
return -1;
if (fseek(f, opie->opie_recstart, SEEK_SET))
return -1;
break;
case 1:
- if (!(f = __opieopen(KEY_FILE, 2, 0644)))
+ if (!(f = __opieopen(KEY_FILE, 2, 0600)))
return -1;
break;
default:
--- ../opie-2.4/opiepasswd.c 2005-01-17 19:18:02.370894512 +0100
+++ opiepasswd.c 2005-01-17 19:50:12.180518856 +0100
@@ -187,6 +187,10 @@
printf("Updating %s:\n", pp->pw_name);
break;
case 1:
+ if(getuid()){
+ printf("Only root can add users\n");
+ exit(1);
+ }
printf("Adding %s:\n", pp->pw_name);
break;
case 2:
@@ -199,8 +203,8 @@
if (seed[0]) {
i = strlen(seed);
- if (i > OPIE_SEED_MAX) {
- fprintf(stderr, "Seeds must be less than %d characters long.", OPIE_SEED_MAX);
+ if (i > OPIE_SEED_MAX - 4) {
+ fprintf(stderr, "Seeds must be less than %d characters long.\n", OPIE_SEED_MAX - 3);
finish(NULL);
}
if (i < OPIE_SEED_MIN) {
@@ -414,7 +418,10 @@
for (i = 0;; i++) {
if (i > 2)
finish(NULL);
-
+ if(getuid()){
+ printf("Only root can disable OTP access\n");
+ exit(1);
+ }
printf("Disable %s's OTP access? (yes or no) ", pp->pw_name);
if (!opiereadpass(tmp, sizeof(tmp), 1)) {
fprintf(stderr, "Error reading entry.\n");
_______________________________________________
pld-devel-pl mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-devel-pl