[SCM] Samba Shared Repository - branch v3-3-test updated -
release-3-2-0pre2-3266-gc633f10
simo
idra at samba.org
Thu Jul 17 04:22:59 GMT 2008
On Wed, 2008-07-16 at 19:28 -0500, Jeremy Allison wrote:
> The branch, v3-3-test has been updated
> via c633f10d9e78327664e6bca51f66756bcf0505a6 (commit)
> from 654f8de8497aff29f9b1f1822b6a8e734ff329e0 (commit)
>
> http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-3-test
>
>
> - Log -----------------------------------------------------------------
> commit c633f10d9e78327664e6bca51f66756bcf0505a6
> Author: Jeremy Allison <jra at samba.org>
^^^^
Jeremy you should use --author when you commit a patch whose author is
someone else, this way attribution will be correct.
> Date: Wed Jul 16 17:27:05 2008 -0700
>
> This patchset comprises a number of cleanups for the cifs upcall
> binary. The biggest change is that it renames it from cifs.spnego
> to cifs.upcall since the cifs.spnego name really isn't applicable
> anymore.
>
> It also fixes a segfault when the program is run without any args
> and adds a manpage. Comments and/or suggestions appreciated.
>
> This set should apply cleanly to the 3.3 test branch.
>
> Signed-off-by: Jeff Layton <jlayton at redhat.com>
> Jeremy.
>
> -----------------------------------------------------------------------
>
> Summary of changes:
> docs-xml/manpages-3/cifs.upcall.8.xml | 115 ++++++++++++++++++++++++
> source/Makefile.in | 20 ++--
> source/client/{cifs.spnego.c => cifs.upcall.c} | 31 ++++---
> source/configure.in | 32 ++++----
> 4 files changed, 161 insertions(+), 37 deletions(-)
> create mode 100644 docs-xml/manpages-3/cifs.upcall.8.xml
> rename source/client/{cifs.spnego.c => cifs.upcall.c} (94%)
>
>
> Changeset truncated at 500 lines:
>
> diff --git a/docs-xml/manpages-3/cifs.upcall.8.xml b/docs-xml/manpages-3/cifs.upcall.8.xml
> new file mode 100644
> index 0000000..8df776b
> --- /dev/null
> +++ b/docs-xml/manpages-3/cifs.upcall.8.xml
> @@ -0,0 +1,115 @@
> +<?xml version="1.0" encoding="iso-8859-1"?>
> +<!DOCTYPE refentry PUBLIC "-//Samba-Team//DTD DocBook V4.2-Based Variant V1.0//EN" "http://www.samba.org/samba/DTD/samba-doc">
> +<refentry id="cifs.upcall.8">
> +
> +
> +<refmeta>
> + <refentrytitle>cifs.upcall</refentrytitle>
> + <manvolnum>8</manvolnum>
> + <refmiscinfo class="source">Samba</refmiscinfo>
> + <refmiscinfo class="manual">System Administration tools</refmiscinfo>
> + <refmiscinfo class="version">3.2</refmiscinfo>
> +</refmeta>
> +
> +<refnamediv>
> + <refname>cifs.upcall</refname>
> + <refpurpose>Userspace upcall helper for Common Internet File System (CIFS)</refpurpose>
> +</refnamediv>
> +
> +<refsynopsisdiv>
> + <cmdsynopsis>
> + <command>cifs.upcall</command>
> + <arg choice="opt">-c</arg>
> + <arg choice="opt">-v</arg>
> + <arg choice="req">keyid</arg>
> + </cmdsynopsis>
> +</refsynopsisdiv>
> +
> +
> +<refsect1>
> + <title>DESCRIPTION</title>
> +
> + <para>This tool is part of the <citerefentry><refentrytitle>samba</refentrytitle>
> + <manvolnum>7</manvolnum></citerefentry> suite.</para>
> +
> +<para>cifs.upcall is a userspace helper program for the linux CIFS client
> +filesystem. There are a number of activities that the kernel cannot easily
> +do itself. This program is a callout program that does these things for the
> +kernel and then returns the result.</para>
> +
> +<para>cifs.upcall is generally intended to be run when the kernel calls
> +request-key<manvolnum>8</manvolnum> for a particular key type. While it
> +can be run directly from the command-line, it's not generally intended
> +to be run that way.</para>
> +</refsect1>
> +
> +<refsect1>
> + <title>OPTIONS</title>
> + <variablelist>
> + <varlistentry>
> + <term>-c</term>
> + <listitem><para>When handling a kerberos upcall, use a service principal that starts with "cifs/". The default is to use the "host/" service principal.
> + </para></listitem>
> + </varlistentry>
> +
> + <varlistentry>
> + <term>-v</term>
> + <listitem><para>Print version number and exit.
> + </para></listitem>
> + </varlistentry>
> + </variablelist>
> +</refsect1>
> +
> +<refsect1>
> + <title>CONFIGURATION FOR KEYCTL</title>
> + <para>cifs.upcall is designed to be called from the kernel via the request-key callout program. This requres that request-key be told where and how to call this program. The current cifs.upcall program handles two different key types:</para>
> +
> + <variablelist>
> + <varlistentry>
> + <term>cifs.spnego</term>
> + <listitem><para>This keytype is for retrieving kerberos session keys
> + </para></listitem>
> + </varlistentry>
> +
> + <varlistentry>
> + <term>cifs.resolve</term>
> + <listitem><para>This key type is for resolving hostnames into IP addresses
> + </para></listitem>
> + </varlistentry>
> + </variablelist>
> +
> + <para>To make this program useful for CIFS, you'll need to set up entries for them in request-key.conf<manvolnum>5</manvolnum>. Here's an example of an entry for each key type:</para>
> +<programlisting>
> +#OPERATION TYPE D C PROGRAM ARG1 ARG2...
> +#========= ============= = = ==========================================
> +create cifs.spnego * * /usr/local/sbin/cifs.upcall -c %k
> +create cifs.resolver * * /usr/local/sbin/cifs.upcall %k
> +</programlisting>
> +<para>
> +See <citerefentry><refentrytitle>request-key.conf<manvolnum>5</manvolnum></refentrytitle></citerefentry> for more info on each field.
> +</para>
> +</refsect1>
> +
> +<refsect1>
> + <title>SEE ALSO</title>
> + <para>
> + <citerefentry><refentrytitle>request-key.conf</refentrytitle>
> + <manvolnum>5</manvolnum></citerefentry>,
> + <citerefentry><refentrytitle>mount.cifs</refentrytitle>
> + <manvolnum>8</manvolnum></citerefentry>
> + </para>
> +</refsect1>
> +
> +<refsect1>
> + <title>AUTHOR</title>
> +
> + <para>Igor Mammedov wrote the cifs.upcall program.</para>
> + <para>Jeff Layton authored this manpage.</para>
> + <para>The maintainer of the Linux CIFS VFS is Steve French.</para>
> + <para>The <ulink url="mailto:linux-cifs-client at lists.samba.org">Linux
> + CIFS Mailing list</ulink> is the preferred place to ask
> + questions regarding these programs.
> + </para>
> +</refsect1>
> +
> +</refentry>
> diff --git a/source/Makefile.in b/source/Makefile.in
> index cd70183..85837a8 100644
> --- a/source/Makefile.in
> +++ b/source/Makefile.in
> @@ -178,7 +178,7 @@ PATH_FLAGS = -DSMB_PASSWD_FILE=\"$(SMB_PASSWD_FILE)\" \
>
> SBIN_PROGS = bin/smbd at EXEEXT@ bin/nmbd at EXEEXT@ @SWAT_SBIN_TARGETS@ @EXTRA_SBIN_PROGS@
>
> -ROOT_SBIN_PROGS = @CIFSMOUNT_PROGS@ @CIFSSPNEGO_PROGS@
> +ROOT_SBIN_PROGS = @CIFSMOUNT_PROGS@ @CIFSUPCALL_PROGS@
>
> BIN_PROGS1 = bin/smbclient at EXEEXT@ bin/net at EXEEXT@ bin/smbspool at EXEEXT@ \
> bin/testparm at EXEEXT@ bin/smbstatus at EXEEXT@ bin/smbget at EXEEXT@
> @@ -878,7 +878,7 @@ CIFS_MOUNT_OBJ = client/mount.cifs.o
>
> CIFS_UMOUNT_OBJ = client/umount.cifs.o
>
> -CIFS_SPNEGO_OBJ = client/cifs.spnego.o
> +CIFS_UPCALL_OBJ = client/cifs.upcall.o
>
> NMBLOOKUP_OBJ = utils/nmblookup.o $(PARAM_OBJ) $(LIBNMB_OBJ) \
> $(LIB_NONSMBD_OBJ) $(POPT_LIB_OBJ) $(LIBSAMBA_OBJ)
> @@ -1340,9 +1340,9 @@ bin/umount.cifs at EXEEXT@: $(BINARY_PREREQS) $(CIFS_UMOUNT_OBJ) @BUILD_POPT@
> @echo Linking $@
> @$(CC) $(FLAGS) -o $@ $(CIFS_UMOUNT_OBJ) $(DYNEXP) $(LDFLAGS) $(POPT_LIBS)
>
> -bin/cifs.spnego at EXEEXT@: $(BINARY_PREREQS) $(CIFS_SPNEGO_OBJ) $(LIBSMBCLIENT_OBJ1) @BUILD_POPT@ @LIBTALLOC_SHARED@ @LIBTDB_SHARED@ @LIBWBCLIENT_SHARED@
> +bin/cifs.upcall at EXEEXT@: $(BINARY_PREREQS) $(CIFS_UPCALL_OBJ) $(LIBSMBCLIENT_OBJ1) @BUILD_POPT@ @LIBTALLOC_SHARED@ @LIBTDB_SHARED@ @LIBWBCLIENT_SHARED@
> @echo Linking $@
> - @$(CC) $(FLAGS) -o $@ $(CIFS_SPNEGO_OBJ) $(DYNEXP) $(LDFLAGS) \
> + @$(CC) $(FLAGS) -o $@ $(CIFS_UPCALL_OBJ) $(DYNEXP) $(LDFLAGS) \
> -lkeyutils $(LIBS) $(LIBSMBCLIENT_OBJ1) $(KRB5LIBS) \
> $(LDAP_LIBS) $(POPT_LIBS) $(LIBTALLOC_LIBS) $(WINBIND_LIBS) \
> $(LIBTDB_LIBS)
> @@ -2449,7 +2449,7 @@ bin/rpc_open_tcp at EXEEXT@: $(BINARY_PREREQS) $(RPC_OPEN_TCP_OBJ) @LIBTALLOC_SHARE
> $(LIBS) $(LIBTALLOC_LIBS) @LIBTDB_SHARED@ $(WINBIND_LIBS) \
> $(LDAP_LIBS) $(KRB5LIBS) $(NSCD_LIBS)
>
> -install:: installservers installbin @INSTALL_CIFSMOUNT@ @INSTALL_CIFSSPNEGO@ installman \
> +install:: installservers installbin @INSTALL_CIFSMOUNT@ @INSTALL_CIFSUPCALL@ installman \
> installscripts installdat installmodules @SWAT_INSTALL_TARGETS@ \
> @INSTALL_PAM_MODULES@ installlibs
>
> @@ -2476,9 +2476,9 @@ installcifsmount:: @CIFSMOUNT_PROGS@
> @$(SHELL) $(srcdir)/script/installdirs.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(ROOTSBINDIR)
> @$(SHELL) script/installbin.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(ROOTSBINDIR) @CIFSMOUNT_PROGS@
>
> -installcifsspnego:: @CIFSSPNEGO_PROGS@
> +installcifsupcall:: @CIFSUPCALL_PROGS@
> @$(SHELL) $(srcdir)/script/installdirs.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(ROOTSBINDIR)
> - @$(SHELL) script/installbin.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(ROOTSBINDIR) @CIFSSPNEGO_PROGS@
> + @$(SHELL) script/installbin.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(ROOTSBINDIR) @CIFSUPCALL_PROGS@
>
> # Some symlinks are required for the 'probing' of modules.
> # This mechanism should go at some point..
> @@ -2545,7 +2545,7 @@ showlayout::
> @echo " swatdir: $(SWATDIR)"
>
>
> -uninstall:: uninstallman uninstallservers uninstallbin @UNINSTALL_CIFSMOUNT@ @UNINSTALL_CIFSSPNEGO@ uninstallscripts uninstalldat uninstallswat uninstallmodules uninstalllibs @UNINSTALL_PAM_MODULES@
> +uninstall:: uninstallman uninstallservers uninstallbin @UNINSTALL_CIFSMOUNT@ @UNINSTALL_CIFSUPCALL@ uninstallscripts uninstalldat uninstallswat uninstallmodules uninstalllibs @UNINSTALL_PAM_MODULES@
>
> uninstallman::
> @$(SHELL) $(srcdir)/script/uninstallman.sh $(DESTDIR)$(MANDIR) $(srcdir) C
> @@ -2559,8 +2559,8 @@ uninstallbin::
> uninstallcifsmount::
> @$(SHELL) script/uninstallbin.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(ROOTSBINDIR) @CIFSMOUNT_PROGS@
>
> -uninstallcifsspnego::
> - @$(SHELL) script/uninstallbin.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(ROOTSBINDIR) @CIFSSPNEGO_PROGS@
> +uninstallcifsupcall::
> + @$(SHELL) script/uninstallbin.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(ROOTSBINDIR) @CIFSUPCALL_PROGS@
>
> uninstallmodules::
> @$(SHELL) $(srcdir)/script/uninstallmodules.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(VFSLIBDIR) $(VFS_MODULES)
> diff --git a/source/client/cifs.spnego.c b/source/client/cifs.upcall.c
> similarity index 94%
> rename from source/client/cifs.spnego.c
> rename to source/client/cifs.upcall.c
> index d10d19d..3860f33 100644
> --- a/source/client/cifs.spnego.c
> +++ b/source/client/cifs.upcall.c
> @@ -1,5 +1,5 @@
> /*
> -* CIFS SPNEGO user-space helper.
> +* CIFS user-space helper.
> * Copyright (C) Igor Mammedov (niallain at gmail.com) 2007
> *
> * Used by /sbin/request-key for handling
> @@ -8,8 +8,8 @@
> * You should have keyutils installed and add following line to
> * /etc/request-key.conf file
>
> -create cifs.spnego * * /usr/local/sbin/cifs.spnego [-v][-c] %k
> -create cifs.resolver * * /usr/local/sbin/cifs.spnego [-v] %k
> +create cifs.spnego * * /usr/local/sbin/cifs.upcall [-v][-c] %k
> +create cifs.resolver * * /usr/local/sbin/cifs.upcall [-v] %k
>
> * 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
> @@ -30,7 +30,7 @@ create cifs.resolver * * /usr/local/sbin/cifs.spnego [-v] %k
> #include "cifs_spnego.h"
>
> const char *CIFSSPNEGO_VERSION = "1.1";
> -static const char *prog = "cifs.spnego";
> +static const char *prog = "cifs.upcall";
> typedef enum _secType {
> KRB5,
> MS_KRB5
> @@ -200,6 +200,13 @@ int cifs_resolver(const key_serial_t key, const char *key_descr)
> return 0;
> }
>
> +void
> +usage(const char *prog)
> +{
> + syslog(LOG_WARNING, "Usage: %s [-c] [-v] key_serial", prog);
> + fprintf(stderr, "Usage: %s [-c] [-v] key_serial\n", prog);
> +}
> +
> int main(const int argc, char *const argv[])
> {
> struct cifs_spnego_msg *keydata = NULL;
> @@ -215,10 +222,6 @@ int main(const int argc, char *const argv[])
> char *buf, *hostname = NULL;
>
> openlog(prog, 0, LOG_DAEMON);
> - if (argc < 1) {
> - syslog(LOG_WARNING, "Usage: %s [-c] key_serial", prog);
> - goto out;
> - }
>
> while ((c = getopt(argc, argv, "cv")) != -1) {
> switch (c) {
> @@ -227,9 +230,8 @@ int main(const int argc, char *const argv[])
> break;
> }
> case 'v':{
> - syslog(LOG_WARNING, "version: %s", CIFSSPNEGO_VERSION);
> - fprintf(stderr, "version: %s", CIFSSPNEGO_VERSION);
> - break;
> + printf("version: %s\n", CIFSSPNEGO_VERSION);
> + goto out;
> }
> default:{
> syslog(LOG_WARNING, "unknow option: %c", c);
> @@ -237,6 +239,13 @@ int main(const int argc, char *const argv[])
> }
> }
> }
> +
> + /* is there a key? */
> + if (argc <= optind) {
> + usage(prog);
> + goto out;
> + }
> +
> /* get key and keyring values */
> errno = 0;
> key = strtol(argv[optind], NULL, 10);
> diff --git a/source/configure.in b/source/configure.in
> index 2ae5e35..cb0e37e 100644
> --- a/source/configure.in
> +++ b/source/configure.in
> @@ -109,9 +109,9 @@ AC_SUBST(EXTRA_BIN_PROGS)
> AC_SUBST(CIFSMOUNT_PROGS)
> AC_SUBST(INSTALL_CIFSMOUNT)
> AC_SUBST(UNINSTALL_CIFSMOUNT)
> -AC_SUBST(CIFSSPNEGO_PROGS)
> -AC_SUBST(INSTALL_CIFSSPNEGO)
> -AC_SUBST(UNINSTALL_CIFSSPNEGO)
> +AC_SUBST(CIFSUPCALL_PROGS)
> +AC_SUBST(INSTALL_CIFSUPCALL)
> +AC_SUBST(UNINSTALL_CIFSUPCALL)
> AC_SUBST(EXTRA_SBIN_PROGS)
> AC_SUBST(EXTRA_ALL_TARGETS)
> AC_SUBST(CONFIG_LIBS)
> @@ -4035,14 +4035,14 @@ AC_ARG_WITH(cifsmount,
> )
>
> #################################################
> -# check for cifs.spnego support
> +# check for cifs.upcall support
> AC_CHECK_HEADERS([keyutils.h], [HAVE_KEYUTILS_H=1], [HAVE_KEYUTILS_H=0])
> -CIFSSPNEGO_PROGS=""
> -INSTALL_CIFSSPNEGO=""
> -UNINSTALL_CIFSSPNEGO=""
> -AC_MSG_CHECKING(whether to build cifs.spnego)
> -AC_ARG_WITH(cifsspnego,
> -[AS_HELP_STRING([--with-cifsspnego], [Include cifs.spnego (Linux only) support (default=no)])],
> +CIFSUPCALL_PROGS=""
> +INSTALL_CIFSUPCALL=""
> +UNINSTALL_CIFSUPCALL=""
> +AC_MSG_CHECKING(whether to build cifs.upcall)
> +AC_ARG_WITH(cifsupcall,
> +[AS_HELP_STRING([--with-cifsupcall], [Include cifs.upcall (Linux only) support (default=no)])],
> [ case "$withval" in
> no)
> AC_MSG_RESULT(no)
> @@ -4051,15 +4051,15 @@ AC_ARG_WITH(cifsspnego,
> case "$host_os" in
> *linux*)
> if test x"$use_ads" != x"yes"; then
> - AC_MSG_ERROR(ADS support should be enabled for building cifs.spnego)
> + AC_MSG_ERROR(ADS support should be enabled for building cifs.upcall)
> elif test x"$HAVE_KEYUTILS_H" != "x1"; then
> - AC_MSG_ERROR(keyutils package is required for cifs.spnego)
> + AC_MSG_ERROR(keyutils package is required for cifs.upcall)
> else
> AC_MSG_RESULT(yes)
> - AC_DEFINE(WITH_CIFSSPNEGO,1,[whether to build cifs.spnego])
> - CIFSSPNEGO_PROGS="bin/cifs.spnego"
> - INSTALL_CIFSSPNEGO="installcifsspnego"
> - UNINSTALL_CIFSSPNEGO="uninstallcifsspnego"
> + AC_DEFINE(WITH_CIFSUPCALL,1,[whether to build cifs.upcall])
> + CIFSUPCALL_PROGS="bin/cifs.upcall"
> + INSTALL_CIFSUPCALL="installcifsupcall"
> + UNINSTALL_CIFSUPCALL="uninstallcifsupcall"
> fi
> ;;
> *)
>
>
--
Simo Sorce
Samba Team GPL Compliance Officer <simo at samba.org>
Senior Software Engineer at Red Hat Inc. <ssorce at redhat.com>
More information about the samba-technical
mailing list