utempter na 64-bitach

Adam Osuchowski adwol w zonk.pl
Czw, 23 Wrz 2010, 18:06:38 CEST


Arkadiusz Miskiewicz wrote:
> ... a jak si komu chce to rm -rf utempter i dokoczy libutempter.spec

Troch poprawione pliki w zaczniku (przynajmniej si kompiluje).
-------------- nastpna cz ---------
# $Revision: 1.63 $, $Date: 2010/09/21 12:19:31 $
Summary:	Privileged helper for utmpx updates
Summary(es.UTF-8):	Programa para actualización del utmp/wtmp
Summary(pl.UTF-8):	Program pozwalający na zapisywanie w utmpx
Summary(pt_BR.UTF-8):	Programa para atualização do utmp/wtmp
Summary(ru.UTF-8):	Привилегированная программа для изменений в utmp/wtmp
Summary(uk.UTF-8):	Привілейована програма для внесення змін до utmp/wtmp
%define	utempter_compat_ver	0.5.5
Name:		libutempter
Version:	1.1.5
Release:	0.1
License:	MIT or LGPL
Group:		Base
Source0:	ftp://ftp.altlinux.org/pub/people/ldv/utempter/%{name}-%{version}.tar.bz2
# Source0-md5:	d62a93ba9f3796a91cf03be5ef25a9a1
Patch0:		%{name}-lastlog.patch
Patch1:		%{name}-utmp-cleanup.patch
BuildRequires:	rpmbuild(macros) >= 1.202
Requires(pre):	/usr/bin/getgid
Requires(pre):	/usr/sbin/groupadd
Requires(post,postun):	/sbin/ldconfig
Requires(postun):	/usr/sbin/groupdel
Provides:	group(utmp)
Provides:	utempter = %{utempter_compat_ver}
Obsoletes:	libutempter0
Obsoletes:	utempter
BuildRoot:	%{tmpdir}/%{name}-%{version}-root-%(id -u -n)

%description
Utempter is a utility which allows programs to log information to a
privileged file (/var/run/utmpx), without compromising system
security. It accomplishes this task by acting as a buffer between root
and the programs.

%description -l es.UTF-8
Programa para actualización del utmp/wtmp.

%description -l pl.UTF-8
Utempter jest programem pozwalającym użytkownikom na zapisywanie do
pliku /var/run/utmpx bez naruszania bezpieczeństwa systemu.

%description -l pt_BR.UTF-8
O Utempter é um utilitários que permite a programas guardar informação
à arquivos privilegiados (/var/run/utmp), sem comprometer a segurança
do sistema. Ele faz esta tarefa atuando como um "buffer" entre o
usuário root e os programas.

%description -l ru.UTF-8
Utempter - это утилита, которая позволяет программам записывать
информацию в привилегированный файл (/var/run/utmp) без нарушения
системной безопасности. Она исполняет эту задачу, выступая буфером
между root'ом и пользовательскими программами.

%description -l uk.UTF-8
Utempter - це утиліта, що дозволяє програмам записувати інформацію в
привілейований файл (/var/run/utmp) без порушення системної безпеки.
Вона виконує цю задачу, виступаючи буфером між root'ом та програмами
користувача.

%package devel
Summary:	Header file for utempter library
Summary(pl.UTF-8):	Plik nagłówkowy biblioteki utemptera
Group:		Development/Libraries
Requires:	%{name} = %{version}-%{release}
Obsoletes:	libutempter0-devel
Obsoletes:	utempter-devel

%description devel
Header file for utempter library.

%description devel -l pl.UTF-8
Plik nagłówkowy biblioteki utemptera.

%package static
Summary:	Static utempter library
Summary(pl.UTF-8):	Statyczna biblioteka utemptera
Group:		Development/Libraries
Requires:	%{name}-devel = %{version}-%{release}

%description static
Static utempter library.

%description static -l pl.UTF-8
Statyczna biblioteka utemptera

%prep
%setup -q
%patch0 -p1
%patch1 -p1

%build
%{__make} \
	CC="%{__cc}" \
	RPM_OPT_FLAGS="%{rpmcppflags} %{rpmcflags}" \
	libdir="%{_libdir}" \
	libexecdir="%{_libexecdir}"

%install
rm -rf $RPM_BUILD_ROOT

%{__make} install \
	libdir="%{_libdir}" \
	libexecdir="%{_libexecdir}" \
	DESTDIR=$RPM_BUILD_ROOT

install -d $RPM_BUILD_ROOT%{_sbindir}
ln -s %{_libdir}/utempter/utempter $RPM_BUILD_ROOT%{_sbindir}
ln -s %{_libdir}/utempter/utmp-cleanup $RPM_BUILD_ROOT%{_sbindir}

install -d $RPM_BUILD_ROOT/var/run
:> $RPM_BUILD_ROOT/var/run/utmpx

%clean
rm -rf $RPM_BUILD_ROOT

%pre
%groupadd -g 22 utmp

%post
/sbin/ldconfig
if [ ! -f /var/run/utmpx ]; then
	umask 002
	touch /var/run/utmpx
	chown root:utmp /var/run/utmpx
	chmod 0664 /var/run/utmpx
fi

%postun
/sbin/ldconfig
if [ "$1" = "0" ]; then
	%groupremove utmp
fi

%files
%defattr(644,root,root,755)
%dir %{_libdir}/utempter
%attr(2755,root,utmp) %{_libdir}/utempter/utempter
%{_sbindir}/utempter
%attr(755,root,root) %{_libdir}/utempter/utmp-cleanup
%{_sbindir}/utmp-cleanup
%attr(755,root,root) %{_libdir}/lib*.so.*.*.*
%attr(755,root,root) %ghost %{_libdir}/lib*.so.0
%attr(664,root,utmp) %ghost /var/run/utmpx

%files devel
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/lib*.so
%{_includedir}/utempter.h

%files static
%defattr(644,root,root,755)
%{_libdir}/lib*.a

%define date	%(echo `LC_ALL="C" date +"%a %b %d %Y"`)
%changelog
* %{date} PLD Team <feedback w pld-linux.org>
All persons listed below can be reached at <cvs_login>@pld-linux.org

$Log: libutempter.spec,v $
Revision 1.63  2010/09/21 12:19:31  arekm
- replacement for utempter (unfinished)


-------------- nastpna cz ---------
--- libutempter-1.1.5/utempter.c.org	2010-09-21 14:12:11.474543375 +0200
+++ libutempter-1.1.5/utempter.c	2010-09-21 14:13:35.669584497 +0200
@@ -113,20 +113,27 @@
 {
 	struct utmp ut;
 	struct timeval tv;
+	int fd;
+	struct lastlog ll;
 
 #ifdef __GLIBC__
 	int     offset;
 #endif
 
 	memset(&ut, 0, sizeof(ut));
+	memset(&ll, 0, sizeof(ll));
 
 	memset(&tv, 0, sizeof(tv));
 	(void) gettimeofday(&tv, 0);
+	ll.ll_time = time(NULL);
 
 	strncpy(ut.ut_name, user, sizeof(ut.ut_name));
 	strncpy(ut.ut_line, term, sizeof(ut.ut_line));
-	if (host)
+	strncpy(ll.ll_line, term, sizeof(ll.ll_line));
+	if (host) {
 		strncpy(ut.ut_host, host, sizeof(ut.ut_host));
+		strncpy(ll.ll_host, host, sizeof(ll.ll_host));
+	}
 
 #ifdef __GLIBC__
 
@@ -156,6 +163,11 @@
 	endutent();
 
 	(void) updwtmp(_PATH_WTMP, &ut);
+	if ((fd = open(_PATH_LASTLOG, O_RDWR)) != -1) {
+		lseek(fd, (off_t) ((long)getuid() * sizeof(ll)), SEEK_SET);
+		write(fd, &ll, sizeof(ll));
+		close(fd);
+	}
 
 #elif defined(__FreeBSD__)
 


Wicej informacji o licie dyskusyjnej pld-devel-pl