diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-05 17:47:29 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-05 17:47:29 +0000 |
commit | 4f5791ebd03eaec1c7da0865a383175b05102712 (patch) | |
tree | 8ce7b00f7a76baa386372422adebbe64510812d4 /docs-xml | |
parent | Initial commit. (diff) | |
download | samba-4f5791ebd03eaec1c7da0865a383175b05102712.tar.xz samba-4f5791ebd03eaec1c7da0865a383175b05102712.zip |
Adding upstream version 2:4.17.12+dfsg.upstream/2%4.17.12+dfsgupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'docs-xml')
701 files changed, 55541 insertions, 0 deletions
diff --git a/docs-xml/.gitignore b/docs-xml/.gitignore new file mode 100644 index 0000000..945bea4 --- /dev/null +++ b/docs-xml/.gitignore @@ -0,0 +1,29 @@ +Makefile.settings +Samba3-Developers-Guide-attributions.xml +autom4te.cache +config.log +config.status +configure +test.d +tmp +smbdotconf/parameters.all.xml +*.d +output/manpages +Samba3-Developers-Guide.tex +xslt/figures/*.pdf +output/*.pdf +*.lof +*.out +*.log +*.aux +*.ind +*.ilg +*.tpt +*.idx +*.glo +*.loe +*.lot +*.toc +Samba3-Developers-Guide.pdf +test.pdf +test.tex diff --git a/docs-xml/Makefile b/docs-xml/Makefile new file mode 100644 index 0000000..ae50b14 --- /dev/null +++ b/docs-xml/Makefile @@ -0,0 +1,232 @@ +################################################################# +# Makefile for Samba Documentation +# Authors: +# James Moore <jmoore@php.net> +# Gerald Carter <jerry@samba.org> +# Jelmer Vernooij <jelmer@samba.org> +include Makefile.settings + +export XML_CATALOG_FILES := $(XML_CATALOG_FILES) /etc/xml/catalog $(shell pwd)/build/catalog.xml + +# Docs to build +MAIN_DOCS = $(patsubst %/index.xml,%,$(wildcard */index.xml)) +MANPAGES = $(sort $(wildcard $(MANPAGEDIR)/*.?.xml)) + +# Lists of files to process +DBLATEX_OPTIONS = -p xslt/latex.xsl -i xslt/latex + +DATETIME := $(shell date +%Y%m%d%H%M%S) + +XSLTPROC_DEPS = build/catalog.xml build/DTD/samba.build.version build/DTD/samba.build.pathconfig + +ifeq ($(PROFILE), Y) +XSLTPROC += --profile --load-trace --timing +endif + +ifndef OUTPUTDIR +Makefile.settings: configure + ./configure + +configure: configure.ac + autoreconf +endif + +help: + @echo "Supported make targets:" + @echo " release - Build the docs needed for a Samba release" + @echo " all - Build all docs that can be build using the utilities found by configure" + @echo " everything - Build all of the above" + @echo " pdf,tex,ps,manpages,htmlhelp - Build specific output format" + @echo " html - Build multi-file HTML versions" + @echo " html-single - Build single-file HTML versions" + @echo " htmlman - Build HTML version of manpages" + +$(PDFDIR)/Samba3-Developers-Guide.pdf $(PSDIR)/Samba3-Developers-Guide.ps $(DOCBOOKDIR)/Samba3-Developers-Guide.xml Samba3-Developers-Guide.tex: $(wildcard Samba3-Developers-Guide/*.xml) Samba3-Developers-Guide-attributions.xml + +# Pseudo targets +all:: $(TARGETS) +everything:: manpages pdf html-single html htmlman ps fo htmlhelp +release:: manpages htmlman html pdf +clean:: + @echo "Cleaning up..." + rm -rf $(OUTPUTDIR)/* $(DOCBOOKDIR) + rm -f *-attributions.xml + rm -f *-attributions.xml *.d *.tpt *.tex *.loc *.toc *.lof *.glo *.idx *.aux + rm -f *-images-html* + rm -f *-images-latex-* $(LATEX_FIGURES) + rm -f xslt/figures/*pdf + rm -f $(SMBDOTCONFDOC)/parameters.*.xml + rm -f build/catalog.xml + rm -f DTD/samba.build.pathconfig + +# Output format targets +pdf:: $(patsubst %,$(PDFDIR)/%.pdf,$(MAIN_DOCS)) +ps:: $(patsubst %,$(PSDIR)/%.ps,$(MAIN_DOCS)) +tex:: $(addsuffix .tex,$(MAIN_DOCS)) +manpages:: $(patsubst $(MANPAGEDIR)/%.xml,$(OUTPUTDIR)/manpages/%,$(MANPAGES)) +htmlman:: $(patsubst $(MANPAGEDIR)/%.xml,$(HTMLDIR)/manpages/%.html,$(MANPAGES)) $(HTMLDIR)/manpages/index.html +html-single:: $(patsubst %,$(HTMLDIR)/%.html,$(MAIN_DOCS)) +html:: $(patsubst %,$(HTMLDIR)/%/index.html,$(MAIN_DOCS)) $(HTMLDIR)/index.html +htmlhelp:: $(addprefix $(HTMLHELPDIR)/,$(MAIN_DOCS)) +validate:: $(addsuffix -validate,$(MAIN_DOCS)) + +test:: validate +check:: validate + +.PHONY: test check validate manpages + +# Intermediate docbook docs +# +$(DOCBOOKDIR)/%.xml: %/index.xml xslt/expand-sambadoc.xsl $(XSLTPROC_DEPS) + @echo "Converting Samba-specific tags for $*..." + @mkdir -p $(@D) + @$(XSLTPROC) --stringparam latex.imagebasedir "$*/" --stringparam noreference 0 --xinclude --output $@ xslt/expand-sambadoc.xsl $< + +$(DOCBOOKDIR)/manpages/%.xml: $(MANPAGEDIR)/%.xml xslt/expand-sambadoc.xsl Makefile.settings $(XSLTPROC_DEPS) + @mkdir -p $(@D) + $(XSLTPROC) --xinclude --stringparam noreference 0 --output $@ xslt/expand-sambadoc.xsl $< + +$(DOCBOOKDIR)/manpages/index.xml: $(MANPAGES) xslt/manpage-summary.xsl $(XSLTPROC_DEPS) + @mkdir -p $(@D) + echo "<article><variablelist>" > $@ + $(XSLTPROC) xslt/manpage-summary.xsl $(MANPAGES) >> $@ + @echo "</variablelist></article>" >> $@ + +# HTML docs +$(HTMLDIR)/index.html: htmldocs.html + @mkdir -p $(@D) + cp $< $@ + +$(HTMLDIR)/%/index.html: $(DOCBOOKDIR)/%.xml $(HTMLDIR)/%/samba.css xslt/html-chunk.xsl %-images-html-chunks $(XSLTPROC_DEPS) + @mkdir -p $(@D) + $(XSLTPROC) --stringparam base.dir "$(HTMLDIR)/$*/" xslt/html-chunk.xsl $< + +# Single large HTML files +$(OUTPUTDIR)/%/samba.css: xslt/html/samba.css $(XSLTPROC_DEPS) + @mkdir -p $(@D) + cp $< $@ + +$(patsubst %,$(HTMLDIR)/%.html,$(MAIN_DOCS)): $(HTMLDIR)/%.html: %-images-html-single + +$(HTMLDIR)/%.html: $(DOCBOOKDIR)/%.xml $(HTMLDIR)/samba.css xslt/html.xsl $(XSLTPROC_DEPS) + $(XSLTPROC) --output $@ xslt/html.xsl $< + +# Attributions +%-attributions.xml: $(XSLTPROC_DEPS) + @echo "Generating attributions file $@ from $*/" + @cp -f templates/attributions.xml $@ + @$(XSLTPROC) --xinclude -o $@ xslt/generate-attributions.xsl $*/index.xml + +# Tex files +%.tex: %/index.xml xslt/latex.xsl + @echo "Generating $@..." + @mkdir -p $(@D) + @$(DBLATEX) $(DBLATEX_OPTIONS) -t tex -o $@ $< + +# Dependency files +%.d: $(DOCBOOKDIR)/%.xml xslt/generate-dependencies.xsl $(XSLTPROC_DEPS) + @echo "Generating dependency file for $*" + @$(XSLTPROC) --novalid \ + --stringparam target "$*" \ + -o $@ xslt/generate-dependencies.xsl $< + @echo "$*-images-latex-eps: \$$(addsuffix .eps, \$$($*-images-latex))" >> $@ + + @echo >> $@ + @echo "\$$(HTMLDIR)/%: $*/%" >> $@ + @echo " @mkdir -p \$$(@D)" >> $@ + @echo " @cp \$$< \$$@" >> $@ + @echo >> $@ + @echo "\$$(HTMLDIR)/$*/%: $*/%" >> $@ + @echo " @mkdir -p \$$(@D)" >> $@ + @echo " @cp \$$< \$$@" >> $@ + @echo >> $@ + @echo "\$$(HTMLHELPDIR)/$*/%: $*/%" >> $@ + @echo " @mkdir -p \$$(@D)" >> $@ + @echo " @cp \$$< \$$@" >> $@ + @echo >> $@ + @echo "$*-images-html-single: \$$(addprefix \$$(HTMLDIR)/, \$$($*-images-html))" >> $@ + @echo "$*-images-html-chunks: \$$(addprefix \$$(HTMLDIR)/$*/, \$$($*-images-html))" >> $@ + @echo "$*-images-htmlhelp: \$$(addprefix \$$(HTMLHELPDIR)/$*/, \$$($*-images-html))" >> $@ + +ifdef OUTPUTDIR +ifneq ($(MAKECMDGOALS),clobber) +-include $(addsuffix .d,$(MAIN_DOCS)) +endif +endif + +# Adobe PDF files +$(PDFDIR)/%.pdf: %/index.xml $(PDFDIR) xslt/latex.xsl %-images-latex-png %-images-latex-pdf + $(DBLATEX) $(DBLATEX_OPTIONS) -I $*/images -t pdf -o $@ $< + +# PostScript files +$(PSDIR)/%.ps: %/index.xml $(PSDIR) xslt/latex.xsl %-images-latex-eps + $(DBLATEX) $(DBLATEX_OPTIONS) -I $*/images -t ps -o $@ $< + +%.eps: %.png + $(PNGTOPNM) $< | $(PNMTOPS) > $@ + +$(HTMLHELPDIR)/%: $(DOCBOOKDIR)/%.xml %-images-htmlhelp $(XSLTPROC_DEPS) + $(XSLTPROC) --stringparam htmlhelp.chm $*.chm \ + --stringparam manifest.in.base.dir "$@/" \ + --stringparam base.dir "$@/" \ + http://docbook.sourceforge.net/release/xsl/current/htmlhelp/htmlhelp.xsl $< + +# Manpages +$(MANPAGEDIR)/smb.conf.5.xml: parameters + +# The phony parameters target exists in order to always create the +# the parameters xml files. Otherwise, when parameters.*.xml does not exist +# yet, the parameters are not generated when smb.conf.5.xml is newer than +# any smbdotconf/*/*.xml file ... +.PHONY: parameters pathconf + +parameters: $(SMBDOTCONFDOC)/parameters.all.xml + +pathconf: build/DTD/samba.build.pathconfig + +$(SMBDOTCONFDOC)/parameters.all.xml: $(wildcard $(SMBDOTCONFDOC)/*/*.xml) $(SMBDOTCONFDOC)/generate-file-list.sh + $(SMBDOTCONFDOC)/generate-file-list.sh $(SMBDOTCONFDOC) > $@ + +build/DTD/samba.build.pathconfig: generate-pathconf-entities.sh + ./generate-pathconf-entities.sh > $@ + +$(OUTPUTDIR): + test -d $@ || mkdir $@ + +$(OUTPUTDIR)/%: $(DOCBOOKDIR)/%.xml xslt/man.xsl + @mkdir -p $(@D) + $(XSLTPROC) --output $@ xslt/man.xsl $< + +# Individual smb.conf parameters +smb.conf-chunks: $(patsubst $(SMBDOTCONFDOC)/%.xml,$(HTMLDIR)/smb.conf/%.html,$(wildcard $(SMBDOTCONFDOC)/*/*.xml)) + +$(HTMLDIR)/smb.conf/%.html: $(SMBDOTCONFDOC)/%.xml + @mkdir -p $(@D) + $(XSLTPROC) --output $@ xslt/smb.conf-html.xsl $< + +# Validation verification +%-validate: %/index.xml + cd $(<D) && $(XMLLINT) --xinclude --noent --postvalid --noout $(<F) + +build/catalog.xml: build/catalog.xml.in + sed -e "s|@abs_top_srcdir@|`pwd`|g;s|@abs_top_builddir@|`pwd`|g" < build/catalog.xml.in > build/catalog.xml + +# XSL scripts +xslt/html.xsl: xslt/html-common.xsl +xslt/html-chunk.xsl: xslt/html-common.xsl +xslt/latex.xsl: +xslt/expand-sambadoc.xsl: +xslt/generate-attributions.xsl: +xslt/man.xsl: + +distclean clobber:: clean + rm -f Makefile.settings config.status config.log + +realdistclean:: distclean + rm -f configure + rm -rf autom4te.cache + rm -rf output + +# Always keep intermediate files if we can +.SECONDARY: +.PHONY: clean clobber release everything all diff --git a/docs-xml/Makefile.settings.in b/docs-xml/Makefile.settings.in new file mode 100644 index 0000000..7898b6b --- /dev/null +++ b/docs-xml/Makefile.settings.in @@ -0,0 +1,25 @@ +# Programs +XSLTPROC = @XSLTPROC@ --nonet +XMLLINT = @XMLLINT@ +PNGTOPNM = @PNGTOPNM@ +PNMTOPS = @PNMTOPS@ +MAKEINFO = @MAKEINFO@ +DBLATEX = @DBLATEX@ +RM = @RM@ +PERL = @PERL@ + +# Paths +OUTPUTDIR = output +ARCHIVEDIR = archive +TEXINFODIR = $(OUTPUTDIR)/texi +SRCDIR = ../ +MANPAGEDIR = manpages +SMBDOTCONFDOC = smbdotconf +DOCBOOKDIR = tmp +PSDIR = $(OUTPUTDIR) +PDFDIR = $(OUTPUTDIR) +HTMLHELPDIR = $(OUTPUTDIR)/htmlhelp +HTMLDIR=$(OUTPUTDIR)/htmldocs +DB2LATEX_ARGS = --stringparam latex.documentclass.book @LATEX_DOCUMENTCLASS_OPTIONS@ + +TARGETS = @TARGETS@ diff --git a/docs-xml/README b/docs-xml/README new file mode 100644 index 0000000..4affbee --- /dev/null +++ b/docs-xml/README @@ -0,0 +1,107 @@ +!== +!== docbook.txt for Samba 3.0 +!== +!== Author: David Bannon, D.Bannon@latrobe.edu.au November, 2000 +!== Updates: Gerald (Jerry) Carter, jerry@samba.org, Feb. 2001 +!== Updates: Jelmer Vernooij, jelmer@samba.org, Aug, 2002 +!== Updates: Jelmer Vernooij, jelmer@samba.org, Jun, 2003 +!== Updates: Jelmer Vernooij, jelmer@samba.org, May, 2004 +!== Updates: Jelmer Vernooij, jelmer@samba.org, May, 2005 + +Quick start +----------- + +Run: + +$ make all + +or to see what is possible: + +$ make help + +What are DocBook documents doing in the Samba Distribution ? +----------------------------------------------------------- + +We have converted all samba docs to XML/DocBook V4.2 +in order to make them easier to maintain and produce a nicer looking +product. + +This short note (strange isn't it how it always starts out as a short note +and becomes a long one ?) will explain very briefly how and why we have +done this. + + +The format +---------- + +If you are new to xml, regard an xml file as 'source code'. You don't +read it directly, but use it to create other formats (like the html +included in ../htmldocs). + +Docbook is a particular XML style, particularly suited to producing +technical manuals. + +For more information on DocBook tags and format, see "DocBook: The +Definitive Guide" by Walsh and Muellner, (c) O'Reilly Publishing. +This book covers DocBook V4.2 and is available on-line +at http://www.docbook.org/ + +The Output +---------- +The current Samba Subversion tree contains the XML/DocBook source files. + +A regularly generated version can be found at https://www.samba.org/samba/docs/. + +The Tools +--------- + +To generate the docs, you need to have the following packages installed: + + * GNU Make + * GNU autoconf + * xsltproc + +For generating PDF and PostScript (thru LaTeX): + * dblatex (from http://dblatex.sf.net/) + +For generating PDF (thru FO): + * fop (http://xml.apache.org/fop/) + +For generating ASCII: + * html2text + +For generating texi files: + * docbook2x-texi + * makeinfo + +For validating: + * xmllint + +This directory now contains a ./configure script and Makefile to +support the automated building of man pages (including HTML versions), and +the building of the Samba-HOWTO-Collection and the +Samba Developers Guide (HTML,TeX,PDF,PS,Text versions). + +The configure script detects which of the required utilities are installed +and builds as much docs as it can using these tools. + +Help! Building the docs generates a lot of HTTP traffic... +---------------------------------------------------------- + +To be able to build the docs without an internet connection (or faster with +a slow internet connection), you need to set up "catalogs". + +For the Pearson DTD, add something like: + + <public publicId="-//Pearson//DTD Books//DE" uri="file:///home/jelmer/Xml_dtd_1.1/pearson.dtd"/> + +For the Samba DTD's, add something like: + <rewriteURI uriStartString="http://www.samba.org/samba/DTD" rewritePrefix="file:///home/jelmer/samba-web/DTD"/> + +catalog entries for the other DTD's and XSL scripts should be present on your +system already. + +Windows Help files +---------- + +http://htmlhelp.berlios.de/howto/mshh4wine.php diff --git a/docs-xml/Samba-Developers-Guide/CodingSuggestions.xml b/docs-xml/Samba-Developers-Guide/CodingSuggestions.xml new file mode 100644 index 0000000..4adb8cb --- /dev/null +++ b/docs-xml/Samba-Developers-Guide/CodingSuggestions.xml @@ -0,0 +1,239 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!DOCTYPE chapter PUBLIC "-//Samba-Team//DTD DocBook V4.2-Based Variant V1.0//EN" "http://www.samba.org/samba/DTD/samba-doc"> +<chapter id="CodingSuggestions"> +<chapterinfo> + <author> + <firstname>Steve</firstname><surname>French</surname> + </author> + <author> + <firstname>Simo</firstname><surname>Sorce</surname> + </author> + <author> + <firstname>Andrew</firstname><surname>Bartlett</surname> + </author> + <author> + <firstname>Tim</firstname><surname>Potter</surname> + </author> + <author> + <firstname>Martin</firstname><surname>Pool</surname> + </author> +</chapterinfo> + +<title>Coding Suggestions</title> + +<para> +So you want to add code to Samba ... +</para> + +<para> +One of the daunting tasks facing a programmer attempting to write code for +Samba is understanding the various coding conventions used by those most +active in the project. These conventions were mostly unwritten and helped +improve either the portability, stability or consistency of the code. This +document will attempt to document a few of the more important coding +practices used at this time on the Samba project. The coding practices are +expected to change slightly over time, and even to grow as more is learned +about obscure portability considerations. Two existing documents +<filename>samba/source/internals.doc</filename> and +<filename>samba/source/architecture.doc</filename> provide +additional information. +</para> + +<para> +The loosely related question of coding style is very personal and this +document does not attempt to address that subject, except to say that I +have observed that eight character tabs seem to be preferred in Samba +source. If you are interested in the topic of coding style, two oft-quoted +documents are: +</para> + +<para> +<ulink url="http://lxr.linux.no/source/Documentation/CodingStyle">http://lxr.linux.no/source/Documentation/CodingStyle</ulink> +</para> + +<para> +<ulink url="http://www.fsf.org/prep/standards_toc.html">http://www.fsf.org/prep/standards_toc.html</ulink> +</para> + +<para> +But note that coding style in Samba varies due to the many different +programmers who have contributed. +</para> + +<para> +Following are some considerations you should use when adding new code to +Samba. First and foremost remember that: +</para> + +<para> +Portability is a primary consideration in adding function, as is network +compatibility with de facto, existing, real world CIFS/SMB implementations. +There are lots of platforms that Samba builds on so use caution when adding +a call to a library function that is not invoked in existing Samba code. +Also note that there are many quite different SMB/CIFS clients that Samba +tries to support, not all of which follow the SNIA CIFS Technical Reference +(or the earlier Microsoft reference documents or the X/Open book on the SMB +Standard) perfectly. +</para> + +<para> +Here are some other suggestions: +</para> + +<orderedlist> + +<listitem><para> + use d_printf instead of printf for display text + reason: enable auto-substitution of translated language text +</para></listitem> + +<listitem><para> + use SAFE_FREE instead of free + reason: reduce traps due to null pointers +</para></listitem> + +<listitem><para> + don't use bzero use memset, or ZERO_STRUCT and ZERO_STRUCTP macros + reason: not POSIX +</para></listitem> + +<listitem><para> + don't use strcpy and strlen (use safe_* equivalents) + reason: to avoid traps due to buffer overruns +</para></listitem> + +<listitem><para> + don't use getopt_long, use popt functions instead + reason: portability +</para></listitem> + +<listitem><para> + explicitly add const qualifiers on parm passing in functions where parm + is input only (somewhat controversial but const can be #defined away) +</para></listitem> + +<listitem><para> + when passing a va_list as an arg, or assigning one to another + please use the VA_COPY() macro + reason: on some platforms, va_list is a struct that must be + initialized in each function...can SEGV if you don't. +</para></listitem> + +<listitem><para> + discourage use of threads + reason: portability (also see architecture.doc) +</para></listitem> + +<listitem><para> + don't explicitly include new header files in C files - new h files + should be included by adding them once to includes.h + reason: consistency +</para></listitem> + +<listitem><para> + don't explicitly extern functions (they are autogenerated by + "make proto" into proto.h) + reason: consistency +</para></listitem> + +<listitem><para> + use endian safe macros when unpacking SMBs (see byteorder.h and + internals.doc) + reason: not everyone uses Intel +</para></listitem> + +<listitem><para> + Note Unicode implications of charset handling (see internals.doc). See + pull_* and push_* and convert_string functions. + reason: Internationalization +</para></listitem> + +<listitem><para> + Don't assume English only + reason: See above +</para></listitem> + +<listitem><para> + Try to avoid using in/out parameters (functions that return data which + overwrites input parameters) + reason: Can cause stability problems +</para></listitem> + +<listitem><para> + Ensure copyright notices are correct, don't append Tridge's name to code + that he didn't write. If you did not write the code, make sure that it + can coexist with the rest of the Samba GPLed code. +</para></listitem> + +<listitem><para> + Consider usage of DATA_BLOBs for length specified byte-data. + reason: stability +</para></listitem> + +<listitem><para> + Take advantage of tdbs for database like function + reason: consistency +</para></listitem> + +<listitem><para> + Don't access the SAM_ACCOUNT structure directly, they should be accessed + via pdb_get...() and pdb_set...() functions. + reason: stability, consistency +</para></listitem> + +<listitem><para> + Don't check a password directly against the passdb, always use the + check_password() interface. + reason: long term pluggability +</para></listitem> + +<listitem><para> + Try to use asprintf rather than pstrings and fstrings where possible +</para></listitem> + +<listitem><para> + Use normal C comments / * instead of C++ comments // like + this. Although the C++ comment format is part of the C99 + standard, some older vendor C compilers do not accept it. +</para></listitem> + +<listitem><para> + Try to write documentation for API functions and structures + explaining the point of the code, the way it should be used, and + any special conditions or results. Mark these with a double-star + comment start / ** so that they can be picked up by Doxygen, as in + this file. +</para></listitem> + +<listitem><para> + Keep the scope narrow. This means making functions/variables + static whenever possible. We don't want our namespace + polluted. Each module should have a minimal number of externally + visible functions or variables. +</para></listitem> + +<listitem><para> + Use function pointers to keep knowledge about particular pieces of + code isolated in one place. We don't want a particular piece of + functionality to be spread out across lots of places - that makes + for fragile, hand to maintain code. Instead, design an interface + and use tables containing function pointers to implement specific + functionality. This is particularly important for command + interpreters. +</para></listitem> + +<listitem><para> + Think carefully about what it will be like for someone else to add + to and maintain your code. If it would be hard for someone else to + maintain then do it another way. +</para></listitem> + +</orderedlist> + +<para> +The suggestions above are simply that, suggestions, but the information may +help in reducing the routine rework done on new code. The preceding list +is expected to change routinely as new support routines and macros are +added. +</para> +</chapter> diff --git a/docs-xml/Samba-Developers-Guide/Tracing.xml b/docs-xml/Samba-Developers-Guide/Tracing.xml new file mode 100644 index 0000000..50ad2ee --- /dev/null +++ b/docs-xml/Samba-Developers-Guide/Tracing.xml @@ -0,0 +1,131 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!DOCTYPE chapter PUBLIC "-//Samba-Team//DTD DocBook V4.2-Based Variant V1.0//EN" "http://www.samba.org/samba/DTD/samba-doc"> +<chapter id="tracing"> +<chapterinfo> + <author> + <firstname>Andrew</firstname><surname>Tridgell</surname> + <affiliation> + <orgname>Samba Team</orgname> + </affiliation> + </author> +</chapterinfo> + +<title>Tracing samba system calls</title> + +<para> +This file describes how to do a system call trace on Samba to work out +what its doing wrong. This is not for the faint of heart, but if you +are reading this then you are probably desperate. +</para> + +<para> +Actually its not as bad as the the above makes it sound, just don't +expect the output to be very pretty :-) +</para> + +<para> +Ok, down to business. One of the big advantages of unix systems is +that they nearly all come with a system trace utility that allows you +to monitor all system calls that a program is making. This is +extremely using for debugging and also helps when trying to work out +why something is slower than you expect. You can use system tracing +without any special compilation options. +</para> + +<para> +The system trace utility is called different things on different +systems. On Linux systems its called strace. Under SunOS 4 its called +trace. Under SVR4 style systems (including solaris) its called +truss. Under many BSD systems its called ktrace. +</para> + +<para> +The first thing you should do is read the man page for your native +system call tracer. In the discussion below I'll assume its called +strace as strace is the only portable system tracer (its available for +free for many unix types) and its also got some of the nicest +features. +</para> + +<para> +Next, try using strace on some simple commands. For example, <command>strace +ls</command> or <command>strace echo hello</command>. +</para> + +<para> +You'll notice that it produces a LOT of output. It is showing you the +arguments to every system call that the program makes and the +result. Very little happens in a program without a system call so you +get lots of output. You'll also find that it produces a lot of +"preamble" stuff showing the loading of shared libraries etc. Ignore +this (unless its going wrong!) +</para> + +<para> +For example, the only line that really matters in the <command>strace echo +hello</command> output is: +</para> + +<para><programlisting> +write(1, "hello\n", 6) = 6 +</programlisting></para> + +<para>all the rest is just setting up to run the program.</para> + +<para> +Ok, now you're familiar with strace. To use it on Samba you need to +strace the running smbd daemon. The way I tend to use it is to first +login from my Windows PC to the Samba server, then use smbstatus to +find which process ID that client is attached to, then as root I do +<command>strace -p PID</command> to attach to that process. I normally redirect the +stderr output from this command to a file for later perusal. For +example, if I'm using a csh style shell: +</para> + +<para><command>strace -f -p 3872 >& strace.out</command></para> + +<para>or with a sh style shell:</para> + +<para><command>strace -f -p 3872 > strace.out 2>&1</command></para> + +<para> +Note the "-f" option. This is only available on some systems, and +allows you to trace not just the current process, but any children it +forks. This is great for finding printing problems caused by the +"print command" being wrong. +</para> + +<para> +Once you are attached you then can do whatever it is on the client +that is causing problems and you will capture all the system calls +that smbd makes. +</para> + +<para> +So how do you interpret the results? Generally I search through the +output for strings that I know will appear when the problem +happens. For example, if I am having trouble with permissions on a file +I would search for that files name in the strace output and look at +the surrounding lines. Another trick is to match up file descriptor +numbers and "follow" what happens to an open file until it is closed. +</para> + +<para> +Beyond this you will have to use your initiative. To give you an idea +of what you are looking for here is a piece of strace output that +shows that <filename>/dev/null</filename> is not world writeable, which +causes printing to fail with Samba: +</para> + +<para><programlisting> +[pid 28268] open("/dev/null", O_RDWR) = -1 EACCES (Permission denied) +[pid 28268] open("/dev/null", O_WRONLY) = -1 EACCES (Permission denied) +</programlisting></para> + +<para> +The process is trying to first open <filename>/dev/null</filename> read-write +then read-only. Both fail. This means <filename>/dev/null</filename> has +incorrect permissions. +</para> + +</chapter> diff --git a/docs-xml/Samba-Developers-Guide/architecture.xml b/docs-xml/Samba-Developers-Guide/architecture.xml new file mode 100644 index 0000000..f1ec70c --- /dev/null +++ b/docs-xml/Samba-Developers-Guide/architecture.xml @@ -0,0 +1,186 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!DOCTYPE chapter PUBLIC "-//Samba-Team//DTD DocBook V4.2-Based Variant V1.0//EN" "http://www.samba.org/samba/DTD/samba-doc"> +<chapter id="architecture"> +<chapterinfo> + <author> + <firstname>Dan</firstname><surname>Shearer</surname> + </author> + <pubdate> November 1997</pubdate> +</chapterinfo> + +<title>Samba Architecture</title> + +<sect1> +<title>Introduction</title> + +<para> +This document gives a general overview of how Samba works +internally. The Samba Team has tried to come up with a model which is +the best possible compromise between elegance, portability, security +and the constraints imposed by the very messy SMB and CIFS +protocol. +</para> + +<para> +It also tries to answer some of the frequently asked questions such as: +</para> + +<orderedlist> +<listitem><para> + Is Samba secure when running on Unix? The xyz platform? + What about the root privileges issue? +</para></listitem> + +<listitem><para>Pros and cons of multithreading in various parts of Samba</para></listitem> + +<listitem><para>Why not have a separate process for name resolution, WINS, and browsing?</para></listitem> + +</orderedlist> + +</sect1> + +<sect1> +<title>Multithreading and Samba</title> + +<para> +People sometimes tout threads as a uniformly good thing. They are very +nice in their place but are quite inappropriate for smbd. nmbd is +another matter, and multi-threading it would be very nice. +</para> + +<para> +The short version is that smbd is not multithreaded, and alternative +servers that take this approach under Unix (such as Syntax, at the +time of writing) suffer tremendous performance penalties and are less +robust. nmbd is not threaded either, but this is because it is not +possible to do it while keeping code consistent and portable across 35 +or more platforms. (This drawback also applies to threading smbd.) +</para> + +<para> +The longer versions is that there are very good reasons for not making +smbd multi-threaded. Multi-threading would actually make Samba much +slower, less scalable, less portable and much less robust. The fact +that we use a separate process for each connection is one of Samba's +biggest advantages. +</para> + +</sect1> + +<sect1> +<title>Threading smbd</title> + +<para> +A few problems that would arise from a threaded smbd are: +</para> + +<orderedlist> +<listitem><para> + It's not only to create threads instead of processes, but you + must care about all variables if they have to be thread specific + (currently they would be global). +</para></listitem> + +<listitem><para> + if one thread dies (eg. a seg fault) then all threads die. We can + immediately throw robustness out the window. +</para></listitem> + +<listitem><para> + many of the system calls we make are blocking. Non-blocking + equivalents of many calls are either not available or are awkward (and + slow) to use. So while we block in one thread all clients are + waiting. Imagine if one share is a slow NFS filesystem and the others + are fast, we will end up slowing all clients to the speed of NFS. +</para></listitem> + +<listitem><para> + you can't run as a different uid in different threads. This means + we would have to switch uid/gid on _every_ SMB packet. It would be + horrendously slow. +</para></listitem> + +<listitem><para> + the per process file descriptor limit would mean that we could only + support a limited number of clients. +</para></listitem> + +<listitem><para> + we couldn't use the system locking calls as the locking context of + fcntl() is a process, not a thread. +</para></listitem> + +</orderedlist> + +</sect1> + +<sect1> +<title>Threading nmbd</title> + +<para> +This would be ideal, but gets sunk by portability requirements. +</para> + +<para> +Andrew tried to write a test threads library for nmbd that used only +ansi-C constructs (using setjmp and longjmp). Unfortunately some OSes +defeat this by restricting longjmp to calling addresses that are +shallower than the current address on the stack (apparently AIX does +this). This makes a truly portable threads library impossible. So to +support all our current platforms we would have to code nmbd both with +and without threads, and as the real aim of threads is to make the +code clearer we would not have gained anything. (it is a myth that +threads make things faster. threading is like recursion, it can make +things clear but the same thing can always be done faster by some +other method) +</para> + +<para> +Chris tried to spec out a general design that would abstract threading +vs separate processes (vs other methods?) and make them accessible +through some general API. This doesn't work because of the data +sharing requirements of the protocol (packets in the future depending +on packets now, etc.) At least, the code would work but would be very +clumsy, and besides the fork() type model would never work on Unix. (Is there an OS that it would work on, for nmbd?) +</para> + +<para> +A fork() is cheap, but not nearly cheap enough to do on every UDP +packet that arrives. Having a pool of processes is possible but is +nasty to program cleanly due to the enormous amount of shared data (in +complex structures) between the processes. We can't rely on each +platform having a shared memory system. +</para> + +</sect1> + +<sect1> +<title>nbmd Design</title> + +<para> +Originally Andrew used recursion to simulate a multi-threaded +environment, which use the stack enormously and made for really +confusing debugging sessions. Luke Leighton rewrote it to use a +queuing system that keeps state information on each packet. The +first version used a single structure which was used by all the +pending states. As the initialisation of this structure was +done by adding arguments, as the functionality developed, it got +pretty messy. So, it was replaced with a higher-order function +and a pointer to a user-defined memory block. This suddenly +made things much simpler: large numbers of functions could be +made static, and modularised. This is the same principle as used +in NT's kernel, and achieves the same effect as threads, but in +a single process. +</para> + +<para> +Then Jeremy rewrote nmbd. The packet data in nmbd isn't what's on the +wire. It's a nice format that is very amenable to processing but still +keeps the idea of a distinct packet. See "struct packet_struct" in +nameserv.h. It has all the detail but none of the on-the-wire +mess. This makes it ideal for using in disk or memory-based databases +for browsing and WINS support. +</para> + +</sect1> +</chapter> diff --git a/docs-xml/Samba-Developers-Guide/cifsntdomain.xml b/docs-xml/Samba-Developers-Guide/cifsntdomain.xml new file mode 100644 index 0000000..a302fb1 --- /dev/null +++ b/docs-xml/Samba-Developers-Guide/cifsntdomain.xml @@ -0,0 +1,2934 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!DOCTYPE chapter PUBLIC "-//Samba-Team//DTD DocBook V4.2-Based Variant V1.0//EN" "http://www.samba.org/samba/DTD/samba-doc"> +<chapter id="ntdomain"> +<chapterinfo> + <author> + <firstname>Luke</firstname><surname>Leighton</surname> + <affiliation><address><email>lkcl@switchboard.net</email></address></affiliation> + </author> + <author> + <firstname>Paul</firstname><surname>Ashton</surname> + <affiliation><address><email>paul@argo.demon.co.uk</email></address></affiliation> + </author> + <author> + <firstname>Duncan</firstname><surname>Stansfield</surname> + <affiliation><address><email>duncans@sco.com</email></address></affiliation> + </author> + + <pubdate>01 November 97(version 0.0.24)</pubdate> +</chapterinfo> + +<title>NT Domain RPC's</title> + +<sect1> +<title>Introduction</title> + + +<para> +This document contains information to provide an NT workstation with login +services, without the need for an NT server. It is the sgml version of <ulink url="http://mailhost.cb1.com/~lkcl/cifsntdomain.txt">http://mailhost.cb1.com/~lkcl/cifsntdomain.txt</ulink>, controlled by Luke. +</para> + +<para> +It should be possible to select a domain instead of a workgroup (in the NT +workstation's TCP/IP settings) and after the obligatory reboot, type in a +username, password, select a domain and successfully log in. I would +appreciate any feedback on your experiences with this process, and any +comments, corrections and additions to this document. +</para> + +<para> +The packets described here can be easily derived from (and are probably +better understood using) Netmon.exe. You will need to use the version +of Netmon that matches your system, in order to correctly decode the +NETLOGON, lsarpc and srvsvc Transact pipes. This document is derived from +NT Service Pack 1 and its corresponding version of Netmon. It is intended +that an annotated packet trace be produced, which will likely be more +instructive than this document. +</para> + +<para> +Also needed, to fully implement NT Domain Login Services, is the +document describing the cryptographic part of the NT authentication. +This document is available from comp.protocols.smb; from the ntsecurity.net +digest and from the samba digest, amongst other sources. +</para> + +<para> +A copy is available from: +</para> + +<para><ulink url="http://ntbugtraq.rc.on.ca/SCRIPTS/WA.EXE?A2=ind9708;L=ntbugtraq;O=A;P=2935">http://ntbugtraq.rc.on.ca/SCRIPTS/WA.EXE?A2=ind9708;L=ntbugtraq;O=A;P=2935</ulink></para> + +<para><ulink url="http://mailhost.cb1.com/~lkcl/crypt.html">http://mailhost.cb1.com/~lkcl/crypt.html</ulink></para> + +<para> +A c-code implementation, provided by <ulink url="mailto:linus@incolumitas.se">Linus Nordberg</ulink> +of this protocol is available from: +</para> + +<para><ulink url="https://www.samba.org/cgi-bin/mfs/01/digest/1997/97aug/0391.html">https://www.samba.org/cgi-bin/mfs/01/digest/1997/97aug/0391.html</ulink></para> +<para><ulink url="http://mailhost.cb1.com/~lkcl/crypt.txt">http://mailhost.cb1.com/~lkcl/crypt.txt</ulink></para> + +<para> +Also used to provide debugging information is the Check Build version of +NT workstation, and enabling full debugging in NETLOGON. This is +achieved by setting the following REG_SZ registry key to 0x1ffffff: +</para> + +<para><filename>HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters</filename></para> + +<para><emphasis>Incorrect direct editing of the registry can cause your +machine to fail. Then again, so can incorrect implementation of this +protocol. See "Liability:" above.</emphasis></para> + +<para> +Bear in mind that each packet over-the-wire will have its origin in an +API call. Therefore, there are likely to be structures, enumerations +and defines that are usefully documented elsewhere. +</para> + +<para> +This document is by no means complete or authoritative. Missing sections +include, but are not limited to: +</para> + + +<orderedlist> + +<listitem><para>Mappings of RIDs to usernames (and vice-versa).</para></listitem> + +<listitem><para>What a User ID is and what a Group ID is.</para></listitem> + +<listitem><para>The exact meaning/definition of various magic constants or enumerations.</para></listitem> + +<listitem><para>The reply error code and use of that error code when a +workstation becomes a member of a domain (to be described later). +Failure to return this error code will make the workstation report +that it is already a member of the domain.</para></listitem> + +<listitem><para>the cryptographic side of the NetrServerPasswordSet command, +which would allow the workstation to change its password. This password is +used to generate the long-term session key. [It is possible to reject this +command, and keep the default workstation password].</para></listitem> + +</orderedlist> + +<sect2> +<title>Sources</title> + +<simplelist> +<member>cket Traces from Netmonitor (Service Pack 1 and above)</member> +<member>ul Ashton and Luke Leighton's other "NT Domain" doc.</member> +<member>FS documentation - cifs6.txt</member> +<member>FS documentation - cifsrap2.txt</member> +</simplelist> + +</sect2> + +<sect2> +<title>Credits</title> + +<simplelist> +<member>Paul Ashton: loads of work with Net Monitor; understanding the NT authentication system; reference implementation of the NT domain support on which this document is originally based.</member> +<member>Duncan Stansfield: low-level analysis of MSRPC Pipes.</member> +<member>Linus Nordberg: producing c-code from Paul's crypto spec.</member> +<member>Windows Sourcer development team</member> +</simplelist> + +</sect2> + +</sect1> + +<sect1> +<title>Notes and Structures</title> + +<sect2> +<title>Notes</title> + +<orderedlist> +<listitem><para> +In the SMB Transact pipes, some "Structures", described here, appear to be +4-byte aligned with the SMB header, at their start. Exactly which +"Structures" need aligning is not precisely known or documented. +</para></listitem> + +<listitem><para> +In the UDP NTLOGON Mailslots, some "Structures", described here, appear to be +2-byte aligned with the start of the mailslot, at their start. +</para></listitem> + +<listitem><para> +Domain SID is of the format S-revision-version-auth1-auth2...authN. +e.g S-1-5-123-456-789-123-456. the 5 could be a sub-revision. +</para></listitem> + +<listitem><para> +any undocumented buffer pointers must be non-zero if the string buffer it +refers to contains characters. exactly what value they should be is unknown. +0x0000 0002 seems to do the trick to indicate that the buffer exists. a +NULL buffer pointer indicates that the string buffer is of zero length. +If the buffer pointer is NULL, then it is suspected that the structure it +refers to is NOT put into (or taken out of) the SMB data stream. This is +empirically derived from, for example, the LSA SAM Logon response packet, +where if the buffer pointer is NULL, the user information is not inserted +into the data stream. Exactly what happens with an array of buffer pointers +is not known, although an educated guess can be made. +</para></listitem> + +<listitem><para> +an array of structures (a container) appears to have a count and a pointer. +if the count is zero, the pointer is also zero. no further data is put +into or taken out of the SMB data stream. if the count is non-zero, then +the pointer is also non-zero. immediately following the pointer is the +count again, followed by an array of container sub-structures. the count +appears a third time after the last sub-structure. +</para></listitem> +</orderedlist> + +</sect2> + +<sect2> +<title>Enumerations</title> + +<sect3> +<title>MSRPC Header type</title> +<para>command number in the msrpc packet header</para> + +<variablelist> +<varlistentry> + <term>MSRPC_Request:</term> + <listitem><para>0x00</para></listitem> +</varlistentry> +<varlistentry> + <term>MSRPC_Response:</term> + <listitem><para>0x02</para></listitem> +</varlistentry> +<varlistentry> + <term>MSRPC_Bind:</term> + <listitem><para>0x0B</para></listitem> +</varlistentry> +<varlistentry> + <term>MSRPC_BindAck:</term> + <listitem><para>0x0C</para></listitem> +</varlistentry> +</variablelist> +</sect3> + +<sect3> +<title>MSRPC Packet info</title> + +<para>The meaning of these flags is undocumented</para> + +<variablelist> +<varlistentry> + <term>FirstFrag:</term> + <listitem><para>0x01 </para></listitem> +</varlistentry> +<varlistentry> + <term>LastFrag:</term> + <listitem><para>0x02 </para></listitem> +</varlistentry> +<varlistentry> + <term>NotaFrag:</term> + <listitem><para>0x04 </para></listitem> +</varlistentry> +<varlistentry> + <term>RecRespond:</term> + <listitem><para>0x08 </para></listitem> +</varlistentry> +<varlistentry> + <term>NoMultiplex:</term> + <listitem><para>0x10 </para></listitem> +</varlistentry> +<varlistentry> + <term>NotForIdemp:</term> + <listitem><para>0x20 </para></listitem> +</varlistentry> +<varlistentry> + <term>NotforBcast:</term> + <listitem><para>0x40 </para></listitem> +</varlistentry> +<varlistentry> + <term>NoUuid:</term> + <listitem><para>0x80 </para></listitem> +</varlistentry> +</variablelist> + +</sect3> + +</sect2> + +<sect2> +<title>Structures</title> + +<sect3><title>VOID *</title> +<para>sizeof VOID* is 32 bits.</para> +</sect3> + +<sect3><title>char</title> +<para>sizeof char is 8 bits.</para> +</sect3> + +<sect3><title>UTIME</title> +<para>UTIME is 32 bits, indicating time in seconds since 01jan1970. documented in cifs6.txt (section 3.5 page, page 30).</para> +</sect3> + +<sect3><title>NTTIME</title> +<para>NTTIME is 64 bits. documented in cifs6.txt (section 3.5 page, page 30).</para> +</sect3> + +<sect3> +<title>DOM_SID (domain SID structure)</title> + +<variablelist> + +<varlistentry> + <term>UINT32</term> + <listitem><para>num of sub-authorities in domain SID</para></listitem> +</varlistentry> + +<varlistentry> + <term>UINT8</term> + <listitem><para>SID revision number</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT8</term> + <listitem><para>num of sub-authorities in domain SID</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT8[6]</term> + <listitem><para>6 bytes for domain SID - Identifier Authority.</para></listitem> +</varlistentry> + +<varlistentry> + <term>UINT16[n_subauths]</term> + <listitem><para>domain SID sub-authorities</para></listitem> +</varlistentry> + +</variablelist> + +<para><emphasis>Note: the domain SID is documented elsewhere.</emphasis> +</para> + +</sect3> + +<sect3> +<title>STR (string)</title> + +<para>STR (string) is a char[] : a null-terminated string of ascii characters.</para> + +</sect3> + +<sect3> +<title>UNIHDR (unicode string header) </title> + +<variablelist> + +<varlistentry> + <term>UINT16</term> + <listitem><para>length of unicode string</para></listitem> +</varlistentry> + +<varlistentry> + <term>UINT16</term> + <listitem><para>max length of unicode string</para></listitem> +</varlistentry> + +<varlistentry> + <term>UINT32</term> + <listitem><para>4 - undocumented.</para></listitem> +</varlistentry> + +</variablelist> + +</sect3> + +<sect3> +<title>UNIHDR2 (unicode string header plus buffer pointer)</title> + +<variablelist> + +<varlistentry> + <term>UNIHDR</term> + <listitem><para>unicode string header</para></listitem> +</varlistentry> + + +<varlistentry> + <term>VOID*</term> + <listitem><para>undocumented buffer pointer</para></listitem> +</varlistentry> + +</variablelist> + +</sect3> + +<sect3> +<title>UNISTR (unicode string)</title> + +<variablelist> + +<varlistentry> + <term>UINT16[]</term> + <listitem><para>null-terminated string of unicode characters.</para></listitem> +</varlistentry> + +</variablelist> + +</sect3> + +<sect3> +<title>NAME (length-indicated unicode string)</title> + +<variablelist> + +<varlistentry> + <term>UINT32</term> + <listitem><para>length of unicode string</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT16[]</term> + <listitem><para>null-terminated string of unicode characters.</para></listitem> +</varlistentry> + +</variablelist> + +</sect3> + +<sect3> +<title>UNISTR2 (aligned unicode string)</title> + +<variablelist> +<varlistentry> + <term>UINT8[]</term> + <listitem><para>padding to get unicode string 4-byte aligned with the start of the SMB header.</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>max length of unicode string</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>0 - undocumented</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>length of unicode string</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT16[]</term> + <listitem><para>string of uncode characters</para></listitem> +</varlistentry> + +</variablelist> + +</sect3> + +<sect3> +<title>OBJ_ATTR (object attributes)</title> + +<variablelist> +<varlistentry> + <term>UINT32</term> +<listitem><para>0x18 - length (in bytes) including the length field.</para></listitem></varlistentry> +<varlistentry> + <term>VOID*</term> +<listitem><para>0 - root directory (pointer)</para></listitem></varlistentry> +<varlistentry> + <term>VOID*</term> +<listitem><para>0 - object name (pointer)</para></listitem></varlistentry> +<varlistentry> + <term>UINT32</term> +<listitem><para>0 - attributes (undocumented)</para></listitem></varlistentry> +<varlistentry> + <term>VOID*</term> +<listitem><para>0 - security descriptor (pointer)</para></listitem></varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>0 - security quality of service</para></listitem> +</varlistentry> + +</variablelist> + +</sect3> + +<sect3> +<title>POL_HND (LSA policy handle)</title> + +<variablelist> +<varlistentry> + <term>char[20]</term> + <listitem><para>policy handle</para></listitem> +</varlistentry> +</variablelist> + +</sect3> + +<sect3> +<title>DOM_SID2 (domain SID structure, SIDS stored in unicode)</title> + +<variablelist> +<varlistentry> + <term>UINT32</term> + <listitem><para>5 - SID type</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>0 - undocumented</para></listitem> +</varlistentry> +<varlistentry> + <term>UNIHDR2</term> + <listitem><para>domain SID unicode string header</para></listitem> +</varlistentry> +<varlistentry> + <term>UNISTR</term> + <listitem><para>domain SID unicode string</para></listitem> +</varlistentry> +</variablelist> + +<para><emphasis>Note: there is a conflict between the unicode string header and the unicode string itself as to which to use to indicate string length. this will need to be resolved.</emphasis></para> + +<para><emphasis>Note: the SID type indicates, for example, an alias; a well-known group etc. this is documented somewhere.</emphasis></para> + +</sect3> + +<sect3> +<title>DOM_RID (domain RID structure)</title> + +<variablelist> +<varlistentry> + <term>UINT32</term> +<listitem><para>5 - well-known SID. 1 - user SID (see ShowACLs)</para></listitem></varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>5 - undocumented</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>domain RID </para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>0 - domain index out of above reference domains</para></listitem> +</varlistentry> +</variablelist> + +</sect3> + +<sect3> +<title>LOG_INFO (server, account, client structure)</title> + +<para><emphasis>Note: logon server name starts with two '\' characters and is upper case.</emphasis></para> + +<para><emphasis>Note: account name is the logon client name from the LSA Request Challenge, with a $ on the end of it, in upper case.</emphasis></para> + +<variablelist> +<varlistentry> + <term>VOID*</term> + <listitem><para>undocumented buffer pointer</para></listitem> +</varlistentry> +<varlistentry> + <term>UNISTR2</term> + <listitem><para>logon server unicode string</para></listitem> +</varlistentry> +<varlistentry> + <term>UNISTR2</term> + <listitem><para>account name unicode string</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT16</term> + <listitem><para>sec_chan - security channel type</para></listitem> +</varlistentry> +<varlistentry> + <term>UNISTR2</term> + <listitem><para>logon client machine unicode string</para></listitem> +</varlistentry> +</variablelist> + +</sect3> + +<sect3> +<title>CLNT_SRV (server, client names structure)</title> + +<para><emphasis>Note: logon server name starts with two '\' characters and is upper case.</emphasis></para> + +<variablelist> +<varlistentry> + <term>VOID*</term> + <listitem><para>undocumented buffer pointer</para></listitem> +</varlistentry> +<varlistentry> + <term>UNISTR2</term> + <listitem><para>logon server unicode string</para></listitem> +</varlistentry> +<varlistentry> + <term>VOID*</term> + <listitem><para>undocumented buffer pointer</para></listitem> +</varlistentry> +<varlistentry> + <term>UNISTR2</term> + <listitem><para>logon client machine unicode string</para></listitem> +</varlistentry> +</variablelist> + +</sect3> + +<sect3> +<title>CREDS (credentials + time stamp)</title> + +<variablelist> +<varlistentry> + <term>char[8]</term> + <listitem><para>credentials</para></listitem> +</varlistentry> +<varlistentry> + <term>UTIME</term> + <listitem><para>time stamp</para></listitem> +</varlistentry> +</variablelist> + +</sect3> + +<sect3> +<title>CLNT_INFO2 (server, client structure, client credentials)</title> + +<para><emphasis>Note: whenever this structure appears in a request, you must take a copy of the client-calculated credentials received, because they will beused in subsequent credential checks. the presumed intention is to + maintain an authenticated request/response trail.</emphasis></para> + +<variablelist> +<varlistentry> + <term>CLNT_SRV</term> + <listitem><para>client and server names</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT8[]</term> + <listitem><para>???? padding, for 4-byte alignment with SMB header.</para></listitem> +</varlistentry> +<varlistentry> + <term>VOID*</term> + <listitem><para>pointer to client credentials.</para></listitem> +</varlistentry> +<varlistentry> + <term>CREDS</term> + <listitem><para>client-calculated credentials + client time</para></listitem> +</varlistentry> +</variablelist> + +</sect3> + +<sect3> +<title>CLNT_INFO (server, account, client structure, client credentials)</title> +<para><emphasis>Note: whenever this structure appears in a request, you must take a copy of the client-calculated credentials received, because they will be used in subsequent credential checks. the presumed intention is to maintain an authenticated request/response trail.</emphasis></para> + +<variablelist> +<varlistentry> + <term>LOG_INFO</term> + <listitem><para>logon account info</para></listitem> +</varlistentry> +<varlistentry> + <term>CREDS</term> + <listitem><para>client-calculated credentials + client time</para></listitem> +</varlistentry> +</variablelist> + +</sect3> + +<sect3> +<title>ID_INFO_1 (id info structure, auth level 1)</title> + +<variablelist> +<varlistentry> + <term>VOID*</term> + <listitem><para>ptr_id_info_1</para></listitem> +</varlistentry> +<varlistentry> + <term>UNIHDR</term> + <listitem><para>domain name unicode header</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>param control</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT64</term> + <listitem><para>logon ID</para></listitem> +</varlistentry> +<varlistentry> + <term>UNIHDR</term> + <listitem><para>user name unicode header</para></listitem> +</varlistentry> +<varlistentry> + <term>UNIHDR</term> + <listitem><para>workgroup name unicode header</para></listitem> +</varlistentry> +<varlistentry> + <term>char[16]</term> + <listitem><para>arc4 LM OWF Password</para></listitem> +</varlistentry> +<varlistentry> + <term>char[16]</term> + <listitem><para>arc4 NT OWF Password</para></listitem> +</varlistentry> +<varlistentry> + <term>UNISTR2</term> + <listitem><para>domain name unicode string</para></listitem> +</varlistentry> +<varlistentry> + <term>UNISTR2</term> + <listitem><para>user name unicode string</para></listitem> +</varlistentry> +<varlistentry> + <term>UNISTR2</term> + <listitem><para>workstation name unicode string</para></listitem> +</varlistentry> +</variablelist> + +</sect3> + +<sect3> +<title>SAM_INFO (sam logon/logoff id info structure)</title> + +<para><emphasis>Note: presumably, the return credentials is supposedly for the server to verify that the credential chain hasn't been compromised.</emphasis></para> + +<variablelist> +<varlistentry> + <term>CLNT_INFO2</term> + <listitem><para>client identification/authentication info</para></listitem> +</varlistentry> +<varlistentry> + <term>VOID*</term> + <listitem><para>pointer to return credentials.</para></listitem> +</varlistentry> +<varlistentry> + <term>CRED</term> + <listitem><para>return credentials - ignored.</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT16</term> + <listitem><para>logon level</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT16</term> + <listitem><para>switch value</para></listitem> +</varlistentry> + +</variablelist> + +<para><programlisting> + switch (switch_value) + case 1: + { + ID_INFO_1 id_info_1; + } +</programlisting></para> + +</sect3> + +<sect3> +<title>GID (group id info)</title> + +<variablelist> +<varlistentry> + <term>UINT32</term> +<listitem><para>group id</para></listitem></varlistentry> +<varlistentry> + <term>UINT32</term> +<listitem><para>user attributes (only used by NT 3.1 and 3.51)</para></listitem></varlistentry> +</variablelist> + +</sect3> + +<sect3> +<title>DOM_REF (domain reference info)</title> + +<variablelist> +<varlistentry> + <term>VOID*</term> + <listitem><para>undocumented buffer pointer.</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>num referenced domains?</para></listitem> +</varlistentry> +<varlistentry> + <term>VOID*</term> + <listitem><para>undocumented domain name buffer pointer.</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>32 - max number of entries</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>4 - num referenced domains?</para></listitem> +</varlistentry> +<varlistentry> + <term>UNIHDR2</term> + <listitem><para>domain name unicode string header</para></listitem> +</varlistentry> +<varlistentry> + <term>UNIHDR2[num_ref_doms-1]</term> + <listitem><para>referenced domain unicode string headers</para></listitem> +</varlistentry> +<varlistentry> + <term>UNISTR</term> + <listitem><para>domain name unicode string</para></listitem> +</varlistentry> +<varlistentry> + <term>DOM_SID[num_ref_doms]</term> + <listitem><para>referenced domain SIDs</para></listitem> +</varlistentry> +</variablelist> + +</sect3> + +<sect3> +<title>DOM_INFO (domain info, levels 3 and 5 are the same))</title> + +<variablelist> +<varlistentry> + <term>UINT8[]</term> + <listitem><para>??? padding to get 4-byte alignment with start of SMB header</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT16</term> + <listitem><para>domain name string length * 2</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT16</term> + <listitem><para>domain name string length * 2</para></listitem> +</varlistentry> +<varlistentry> + <term>VOID*</term> + <listitem><para>undocumented domain name string buffer pointer</para></listitem> +</varlistentry> +<varlistentry> + <term>VOID*</term> +<listitem><para>undocumented domain SID string buffer pointer</para></listitem></varlistentry> +<varlistentry> + <term>UNISTR2</term> +<listitem><para>domain name (unicode string)</para></listitem></varlistentry> +<varlistentry> + <term>DOM_SID</term> + <listitem><para>domain SID</para></listitem> +</varlistentry> +</variablelist> + +</sect3> + +<sect3> +<title>USER_INFO (user logon info)</title> + +<para><emphasis>Note: it would be nice to know what the 16 byte user session key is for.</emphasis></para> + +<variablelist> +<varlistentry> + <term>NTTIME</term> + <listitem><para>logon time</para></listitem> +</varlistentry> +<varlistentry> + <term>NTTIME</term> + <listitem><para>logoff time</para></listitem> +</varlistentry> +<varlistentry> + <term>NTTIME</term> + <listitem><para>kickoff time</para></listitem> +</varlistentry> +<varlistentry> + <term>NTTIME</term> + <listitem><para>password last set time</para></listitem> +</varlistentry> +<varlistentry> + <term>NTTIME</term> + <listitem><para>password can change time</para></listitem> +</varlistentry> +<varlistentry> + <term>NTTIME</term> + <listitem><para>password must change time</para></listitem> +</varlistentry> +<varlistentry> + <term>UNIHDR</term> + <listitem><para>username unicode string header</para></listitem> +</varlistentry> +<varlistentry> + <term>UNIHDR</term> + <listitem><para>user's full name unicode string header</para></listitem> +</varlistentry> +<varlistentry> + <term>UNIHDR</term> + <listitem><para>logon script unicode string header</para></listitem> +</varlistentry> +<varlistentry> + <term>UNIHDR</term> + <listitem><para>profile path unicode string header</para></listitem> +</varlistentry> +<varlistentry> + <term>UNIHDR</term> + <listitem><para>home directory unicode string header</para></listitem> +</varlistentry> +<varlistentry> + <term>UNIHDR</term> + <listitem><para>home directory drive unicode string header</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT16</term> + <listitem><para>logon count</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT16</term> + <listitem><para>bad password count</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>User ID</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>Group ID</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>num groups</para></listitem> +</varlistentry> +<varlistentry> + <term>VOID*</term> + <listitem><para>undocumented buffer pointer to groups.</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>user flags</para></listitem> +</varlistentry> +<varlistentry> + <term>char[16]</term> + <listitem><para>user session key</para></listitem> +</varlistentry> +<varlistentry> + <term>UNIHDR</term> + <listitem><para>logon server unicode string header</para></listitem> +</varlistentry> +<varlistentry> + <term>UNIHDR</term> + <listitem><para>logon domain unicode string header</para></listitem> +</varlistentry> +<varlistentry> + <term>VOID*</term> + <listitem><para>undocumented logon domain id pointer</para></listitem> +</varlistentry> +<varlistentry> + <term>char[40]</term> + <listitem><para>40 undocumented padding bytes. future expansion?</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>0 - num_other_sids?</para></listitem> +</varlistentry> +<varlistentry> + <term>VOID*</term> + <listitem><para>NULL - undocumented pointer to other domain SIDs.</para></listitem> +</varlistentry> +<varlistentry> + <term>UNISTR2</term> + <listitem><para>username unicode string</para></listitem> +</varlistentry> +<varlistentry> + <term>UNISTR2</term> + <listitem><para>user's full name unicode string</para></listitem> +</varlistentry> +<varlistentry> + <term>UNISTR2</term> + <listitem><para>logon script unicode string</para></listitem> +</varlistentry> +<varlistentry> + <term>UNISTR2</term> + <listitem><para>profile path unicode string</para></listitem> +</varlistentry> +<varlistentry> + <term>UNISTR2</term> + <listitem><para>home directory unicode string</para></listitem> +</varlistentry> +<varlistentry> + <term>UNISTR2</term> + <listitem><para>home directory drive unicode string</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>num groups</para></listitem> +</varlistentry> +<varlistentry> + <term>GID[num_groups]</term> + <listitem><para>group info</para></listitem> +</varlistentry> +<varlistentry> + <term>UNISTR2</term> + <listitem><para>logon server unicode string</para></listitem> +</varlistentry> +<varlistentry> + <term>UNISTR2</term> + <listitem><para>logon domain unicode string</para></listitem> +</varlistentry> +<varlistentry> + <term>DOM_SID</term> + <listitem><para>domain SID</para></listitem> +</varlistentry> +<varlistentry> + <term>DOM_SID[num_sids]</term> + <listitem><para>other domain SIDs?</para></listitem> +</varlistentry> +</variablelist> + +</sect3> + +<sect3> +<title>SH_INFO_1_PTR (pointers to level 1 share info strings)</title> + +<para><emphasis>Note: see cifsrap2.txt section5, page 10.</emphasis></para> + +<simplelist> +<member>0 for shi1_type indicates a Disk.</member> +<member>1 for shi1_type indicates a Print Queue.</member> +<member>2 for shi1_type indicates a Device.</member> +<member>3 for shi1_type indicates an IPC pipe.</member> +<member>0x8000 0000 (top bit set in shi1_type) indicates a hidden share.</member> +</simplelist> + +<variablelist> + +<varlistentry> + <term>VOID*</term> + <listitem><para>shi1_netname - pointer to net name</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>shi1_type - type of share. 0 - undocumented.</para></listitem> +</varlistentry> +<varlistentry> + <term>VOID*</term> + <listitem><para>shi1_remark - pointer to comment.</para></listitem> +</varlistentry> + +</variablelist> + +</sect3> + +<sect3> +<title>SH_INFO_1_STR (level 1 share info strings)</title> + +<variablelist> +<varlistentry> + <term>UNISTR2</term> + <listitem><para>shi1_netname - unicode string of net name</para></listitem> +</varlistentry> +<varlistentry> + <term>UNISTR2</term> + <listitem><para>shi1_remark - unicode string of comment.</para></listitem> +</varlistentry> +</variablelist> + +</sect3> + +<sect3> +<title>SHARE_INFO_1_CTR</title> + +<para>share container with 0 entries:</para> + +<variablelist> +<varlistentry> + <term>UINT32</term> + <listitem><para>0 - EntriesRead</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>0 - Buffer</para></listitem> +</varlistentry> +</variablelist> + +<para>share container with > 0 entries:</para> + +<variablelist> +<varlistentry> + <term>UINT32</term> + <listitem><para>EntriesRead</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>non-zero - Buffer</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>EntriesRead</para></listitem> +</varlistentry> +<varlistentry> + <term>SH_INFO_1_PTR[EntriesRead]</term> + <listitem><para>share entry pointers</para></listitem> +</varlistentry> +<varlistentry> + <term>SH_INFO_1_STR[EntriesRead]</term> + <listitem><para>share entry strings</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT8[]</term> + <listitem><para>padding to get unicode string 4-byte aligned with start of the SMB header.</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>EntriesRead</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>0 - padding</para></listitem> +</varlistentry> + +</variablelist> + +</sect3> + +<sect3> +<title>SERVER_INFO_101</title> + +<para><emphasis>Note: see cifs6.txt section 6.4 - the fields described therein will be of assistance here. for example, the type listed below is the same as fServerType, which is described in 6.4.1. </emphasis></para> + +<variablelist> +<varlistentry> + <term>SV_TYPE_WORKSTATION</term> + <listitem><para>0x00000001 All workstations</para></listitem> +</varlistentry> +<varlistentry> + <term>SV_TYPE_SERVER</term> + <listitem><para>0x00000002 All servers</para></listitem> +</varlistentry> +<varlistentry> + <term>SV_TYPE_SQLSERVER</term> + <listitem><para>0x00000004 Any server running with SQL server</para></listitem> +</varlistentry> +<varlistentry> + <term>SV_TYPE_DOMAIN_CTRL</term> + <listitem><para>0x00000008 Primary domain controller</para></listitem> +</varlistentry> +<varlistentry> + <term>SV_TYPE_DOMAIN_BAKCTRL</term> + <listitem><para>0x00000010 Backup domain controller</para></listitem> +</varlistentry> +<varlistentry> + <term>SV_TYPE_TIME_SOURCE</term> + <listitem><para>0x00000020 Server running the timesource service</para></listitem> +</varlistentry> +<varlistentry> + <term>SV_TYPE_AFP</term> + <listitem><para>0x00000040 Apple File Protocol servers</para></listitem> +</varlistentry> +<varlistentry> + <term>SV_TYPE_NOVELL</term> + <listitem><para>0x00000080 Novell servers</para></listitem> +</varlistentry> +<varlistentry> + <term>SV_TYPE_DOMAIN_MEMBER</term> + <listitem><para>0x00000100 Domain Member</para></listitem> +</varlistentry> +<varlistentry> + <term>SV_TYPE_PRINTQ_SERVER</term> + <listitem><para>0x00000200 Server sharing print queue</para></listitem> +</varlistentry> +<varlistentry> + <term>SV_TYPE_DIALIN_SERVER</term> + <listitem><para>0x00000400 Server running dialin service.</para></listitem> +</varlistentry> +<varlistentry> + <term>SV_TYPE_XENIX_SERVER</term> + <listitem><para>0x00000800 Xenix server</para></listitem> +</varlistentry> +<varlistentry> + <term>SV_TYPE_NT</term> + <listitem><para>0x00001000 NT server</para></listitem> +</varlistentry> +<varlistentry> + <term>SV_TYPE_WFW</term> + <listitem><para>0x00002000 Server running Windows for </para></listitem> +</varlistentry> +<varlistentry> + <term>SV_TYPE_SERVER_NT</term> + <listitem><para>0x00008000 Windows NT non DC server</para></listitem> +</varlistentry> +<varlistentry> + <term>SV_TYPE_POTENTIAL_BROWSER</term> + <listitem><para>0x00010000 Server that can run the browser service</para></listitem> +</varlistentry> +<varlistentry> + <term>SV_TYPE_BACKUP_BROWSER</term> + <listitem><para>0x00020000 Backup browser server</para></listitem> +</varlistentry> +<varlistentry> + <term>SV_TYPE_MASTER_BROWSER</term> + <listitem><para>0x00040000 Master browser server</para></listitem> +</varlistentry> +<varlistentry> + <term>SV_TYPE_DOMAIN_MASTER</term> + <listitem><para>0x00080000 Domain Master Browser server</para></listitem> +</varlistentry> +<varlistentry> + <term>SV_TYPE_LOCAL_LIST_ONLY</term> + <listitem><para>0x40000000 Enumerate only entries marked "local"</para></listitem> +</varlistentry> +<varlistentry> + <term>SV_TYPE_DOMAIN_ENUM</term> + <listitem><para>0x80000000 Enumerate Domains. The pszServer and pszDomain parameters must be NULL.</para></listitem> +</varlistentry> + +</variablelist> + +<variablelist> +<varlistentry> + <term>UINT32</term> + <listitem><para>500 - platform_id</para></listitem> +</varlistentry> +<varlistentry> + <term>VOID*</term> + <listitem><para>pointer to name</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>5 - major version</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> +<listitem><para>4 - minor version</para></listitem></varlistentry> +<varlistentry> + <term>UINT32</term> +<listitem><para>type (SV_TYPE_... bit field)</para></listitem></varlistentry> +<varlistentry> + <term>VOID*</term> + <listitem><para>pointer to comment</para></listitem> +</varlistentry> +<varlistentry> + <term>UNISTR2</term> + <listitem><para>sv101_name - unicode string of server name</para></listitem> +</varlistentry> +<varlistentry> + <term>UNISTR2</term> + <listitem><para>sv_101_comment - unicode string of server comment.</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT8[]</term> + <listitem><para>padding to get unicode string 4-byte aligned with start of the SMB header.</para></listitem> +</varlistentry> +</variablelist> + +</sect3> +</sect2> +</sect1> + +<sect1> +<title>MSRPC over Transact Named Pipe</title> + +<para>For details on the SMB Transact Named Pipe, see cifs6.txt</para> + +<sect2> +<title>MSRPC Pipes</title> + +<para> +The MSRPC is conducted over an SMB Transact Pipe with a name of +<filename>\PIPE\</filename>. You must first obtain a 16 bit file handle, by +sending a SMBopenX with the pipe name <filename>\PIPE\srvsvc</filename> for +example. You can then perform an SMB Trans, +and must carry out an SMBclose on the file handle once you are finished. +</para> + +<para> +Trans Requests must be sent with two setup UINT16s, no UINT16 params (none +known about), and UINT8 data parameters sufficient to contain the MSRPC +header, and MSRPC data. The first UINT16 setup parameter must be either +0x0026 to indicate an RPC, or 0x0001 to indicate Set Named Pipe Handle +state. The second UINT16 parameter must be the file handle for the pipe, +obtained above. +</para> + +<para> +The Data section for an API Command of 0x0026 (RPC pipe) in the Trans +Request is the RPC Header, followed by the RPC Data. The Data section for +an API Command of 0x0001 (Set Named Pipe Handle state) is two bytes. The +only value seen for these two bytes is 0x00 0x43. +</para> + +<para> +MSRPC Responses are sent as response data inside standard SMB Trans +responses, with the MSRPC Header, MSRPC Data and MSRPC tail. +</para> + +<para> +It is suspected that the Trans Requests will need to be at least 2-byte +aligned (probably 4-byte). This is standard practice for SMBs. It is also +independent of the observed 4-byte alignments with the start of the MSRPC +header, including the 4-byte alignment between the MSRPC header and the +MSRPC data. +</para> + +<para> +First, an SMBtconX connection is made to the IPC$ share. The connection +must be made using encrypted passwords, not clear-text. Then, an SMBopenX +is made on the pipe. Then, a Set Named Pipe Handle State must be sent, +after which the pipe is ready to accept API commands. Lastly, and SMBclose +is sent. +</para> + +<para> +To be resolved: +</para> + +<para> +lkcl/01nov97 there appear to be two additional bytes after the null-terminated \PIPE\ name for the RPC pipe. Values seen so far are +listed below:</para> + +<para><programlisting> + initial SMBopenX request: RPC API command 0x26 params: + "\\PIPE\\lsarpc" 0x65 0x63; 0x72 0x70; 0x44 0x65; + "\\PIPE\\srvsvc" 0x73 0x76; 0x4E 0x00; 0x5C 0x43; +</programlisting></para> + +</sect2> + +<sect2> +<title>Header</title> + +<para>[section to be rewritten, following receipt of work by Duncan Stansfield]</para> + +<para>Interesting note: if you set packed data representation to 0x0100 0000 +then all 4-byte and 2-byte word ordering is turned around!</para> + +<para>The start of each of the NTLSA and NETLOGON named pipes begins with:</para> + +<segmentedlist> +<segtitle>offset</segtitle><segtitle>Variable type</segtitle><segtitle>Variable data</segtitle> +<seglistitem><seg>00</seg><seg>UINT8</seg><seg>5 - RPC major version</seg></seglistitem> +<seglistitem><seg>01</seg><seg>UINT8</seg><seg>0 - RPC minor version</seg></seglistitem> +<seglistitem><seg>02</seg><seg>UINT8</seg><seg>2 - RPC response packet</seg></seglistitem> +<seglistitem><seg>03</seg><seg>UINT8</seg><seg>3 - (FirstFrag bit-wise or with LastFrag)</seg></seglistitem> +<seglistitem><seg>04</seg><seg>UINT32</seg><seg>0x1000 0000 - packed data representation</seg></seglistitem> +<seglistitem><seg>08</seg><seg>UINT16</seg><seg>fragment length - data size (bytes) inc header and tail.</seg></seglistitem> +<seglistitem><seg>0A</seg><seg>UINT16</seg><seg>0 - authentication length </seg></seglistitem> +<seglistitem><seg>0C</seg><seg>UINT32</seg><seg>call identifier. matches 12th UINT32 of incoming RPC data.</seg></seglistitem> +<seglistitem><seg>10</seg><seg>UINT32</seg><seg>allocation hint - data size (bytes) minus header and tail.</seg></seglistitem> +<seglistitem><seg>14</seg><seg>UINT16</seg><seg>0 - presentation context identifier</seg></seglistitem> +<seglistitem><seg>16</seg><seg>UINT8</seg><seg>0 - cancel count</seg></seglistitem> +<seglistitem><seg>17</seg><seg>UINT8</seg><seg>in replies: 0 - reserved; in requests: opnum - see #defines.</seg></seglistitem> +<seglistitem><seg>18</seg><seg>......</seg><seg>start of data (goes on for allocation_hint bytes)</seg></seglistitem> +</segmentedlist> + +<sect3> +<title>RPC_Packet for request, response, bind and bind acknowledgement</title> + +<variablelist> +<varlistentry> + <term>UINT8 versionmaj</term> +<listitem><para>reply same as request (0x05)</para></listitem></varlistentry> +<varlistentry> + <term>UINT8 versionmin</term> +<listitem><para>reply same as request (0x00)</para></listitem></varlistentry> +<varlistentry> + <term>UINT8 type</term> +<listitem><para>one of the MSRPC_Type enums</para></listitem></varlistentry> +<varlistentry> + <term>UINT8 flags</term> +<listitem><para>reply same as request (0x00 for Bind, 0x03 for Request)</para></listitem></varlistentry> +<varlistentry> + <term>UINT32 representation</term> +<listitem><para>reply same as request (0x00000010)</para></listitem></varlistentry> +<varlistentry> + <term>UINT16 fraglength</term> +<listitem><para>the length of the data section of the SMB trans packet</para></listitem></varlistentry> +<varlistentry> + <term>UINT16 authlength</term> + <listitem><para></para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32 callid</term> +<listitem><para>call identifier. (e.g. 0x00149594)</para></listitem></varlistentry> +<varlistentry> + <term>* stub USE TvPacket</term> +<listitem><para>the remainder of the packet depending on the "type"</para></listitem></varlistentry> +</variablelist> + +</sect3> + +<sect3> +<title>Interface identification</title> + +<para>the interfaces are numbered. as yet I haven't seen more than one interface used on the same pipe name srvsvc</para> + +<para><programlisting> +abstract (0x4B324FC8, 0x01D31670, 0x475A7812, 0x88E16EBF, 0x00000003) +transfer (0x8A885D04, 0x11C91CEB, 0x0008E89F, 0x6048102B, 0x00000002) +</programlisting></para> + +</sect3> + +<sect3> +<title>RPC_Iface RW</title> + +<variablelist> +<varlistentry> + <term>UINT8 byte[16]</term> +<listitem><para>16 bytes of number</para></listitem></varlistentry> +<varlistentry> + <term>UINT32 version</term> +<listitem><para>the interface number</para></listitem></varlistentry> +</variablelist> + + +</sect3> + +<sect3> +<title>RPC_ReqBind RW</title> + +<para>the remainder of the packet after the header if "type" was Bind in the response header, "type" should be BindAck</para> + +<variablelist> +<varlistentry> + <term>UINT16 maxtsize</term> +<listitem><para>maximum transmission fragment size (0x1630)</para></listitem></varlistentry> +<varlistentry> + <term>UINT16 maxrsize</term> +<listitem><para>max receive fragment size (0x1630)</para></listitem></varlistentry> +<varlistentry> + <term>UINT32 assocgid</term> +<listitem><para>associated group id (0x0)</para></listitem></varlistentry> +<varlistentry> + <term>UINT32 numelements</term> +<listitem><para>the number of elements (0x1)</para></listitem></varlistentry> +<varlistentry> + <term>UINT16 contextid</term> +<listitem><para>presentation context identifier (0x0)</para></listitem></varlistentry> +<varlistentry> + <term>UINT8 numsyntaxes</term> +<listitem><para>the number of syntaxes (has always been 1?)(0x1)</para></listitem></varlistentry> +<varlistentry> + <term>UINT8[]</term> +<listitem><para>4-byte alignment padding, against SMB header</para></listitem></varlistentry> +<varlistentry> + <term>* abstractint USE RPC_Iface</term> +<listitem><para>num and vers. of interface client is using</para></listitem></varlistentry> +<varlistentry> + <term>* transferint USE RPC_Iface</term> + <listitem><para>num and vers. of interface to use for replies</para></listitem> +</varlistentry> +</variablelist> + +</sect3> + +<sect3> +<title>RPC_Address RW</title> + +<variablelist> +<varlistentry> + <term>UINT16 length</term> +<listitem><para>length of the string including null terminator</para></listitem></varlistentry> +<varlistentry> + <term>* port USE string</term> +<listitem><para>the string above in single byte, null terminated form</para></listitem></varlistentry> +</variablelist> + +</sect3> + +<sect3> +<title>RPC_ResBind RW</title> + +<para>the response to place after the header in the reply packet</para> + +<variablelist> +<varlistentry> + <term>UINT16 maxtsize</term> +<listitem><para>same as request</para></listitem></varlistentry> +<varlistentry> + <term>UINT16 maxrsize</term> +<listitem><para>same as request</para></listitem></varlistentry> +<varlistentry> + <term>UINT32 assocgid</term> +<listitem><para>zero</para></listitem></varlistentry> +<varlistentry> + <term>* secondaddr USE RPC_Address</term> +<listitem><para>the address string, as described earlier</para></listitem></varlistentry> +<varlistentry> + <term>UINT8[]</term> +<listitem><para>4-byte alignment padding, against SMB header</para></listitem></varlistentry> +<varlistentry> + <term>UINT8 numresults</term> +<listitem><para>the number of results (0x01)</para></listitem></varlistentry> +<varlistentry> + <term>UINT8[]</term> +<listitem><para>4-byte alignment padding, against SMB header</para></listitem></varlistentry> +<varlistentry> + <term>UINT16 result</term> +<listitem><para>result (0x00 = accept)</para></listitem></varlistentry> +<varlistentry> + <term>UINT16 reason</term> +<listitem><para>reason (0x00 = no reason specified)</para></listitem></varlistentry> +<varlistentry> + <term>* transfersyntax USE RPC_Iface</term> +<listitem><para>the transfer syntax from the request</para></listitem></varlistentry> +</variablelist> + +</sect3> + +<sect3> +<title>RPC_ReqNorm RW</title> + +<para>the remainder of the packet after the header for every other other request</para> + +<variablelist> +<varlistentry> + <term>UINT32 allochint</term> +<listitem><para>the size of the stub data in bytes</para></listitem></varlistentry> +<varlistentry> + <term>UINT16 prescontext</term> +<listitem><para>presentation context identifier (0x0)</para></listitem></varlistentry> +<varlistentry> + <term>UINT16 opnum</term> +<listitem><para>operation number (0x15)</para></listitem></varlistentry> +<varlistentry> + <term>* stub USE TvPacket</term> +<listitem><para>a packet dependent on the pipe name (probably the interface) and the op number)</para></listitem></varlistentry> +</variablelist> + +</sect3> + +<sect3> +<title>RPC_ResNorm RW</title> + +<variablelist> +<varlistentry> + <term>UINT32 allochint</term> +<listitem><para># size of the stub data in bytes</para></listitem></varlistentry> +<varlistentry> + <term>UINT16 prescontext</term> +<listitem><para># presentation context identifier (same as request)</para></listitem></varlistentry> +<varlistentry> + <term>UINT8 cancelcount</term> +<listitem><para># cancel count? (0x0)</para></listitem></varlistentry> +<varlistentry> + <term>UINT8 reserved</term> +<listitem><para># 0 - one byte padding</para></listitem></varlistentry> +<varlistentry> + <term>* stub USE TvPacket</term> +<listitem><para># the remainder of the reply</para></listitem></varlistentry> +</variablelist> +</sect3> + +</sect2> + +<sect2> +<title>Tail</title> + +<para>The end of each of the NTLSA and NETLOGON named pipes ends with:</para> + +<variablelist> +<varlistentry> + <term>......</term> + <listitem><para>end of data</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>return code</para></listitem> +</varlistentry> +</variablelist> + +</sect2> + +<sect2> +<title>RPC Bind / Bind Ack</title> + +<para> +RPC Binds are the process of associating an RPC pipe (e.g \PIPE\lsarpc) +with a "transfer syntax" (see RPC_Iface structure). The purpose for doing +this is unknown. +</para> + +<para><emphasis>Note: The RPC_ResBind SMB Transact request is sent with two uint16 setup parameters. The first is 0x0026; the second is the file handle + returned by the SMBopenX Transact response.</emphasis></para> + +<para><emphasis>Note: The RPC_ResBind members maxtsize, maxrsize and assocgid are the same in the response as the same members in the RPC_ReqBind. The + RPC_ResBind member transfersyntax is the same in the response as + the</emphasis></para> + +<para><emphasis>Note: The RPC_ResBind response member secondaddr contains the name of what is presumed to be the service behind the RPC pipe. The + mapping identified so far is:</emphasis></para> + +<variablelist> + +<varlistentry> + <term>initial SMBopenX request:</term> + <listitem><para>RPC_ResBind response:</para></listitem> +</varlistentry> + +<varlistentry> + <term>"\\PIPE\\srvsvc"</term> + <listitem><para>"\\PIPE\\ntsvcs"</para></listitem> +</varlistentry> +<varlistentry> + <term>"\\PIPE\\samr"</term> + <listitem><para>"\\PIPE\\lsass"</para></listitem> +</varlistentry> +<varlistentry> + <term>"\\PIPE\\lsarpc"</term> + <listitem><para>"\\PIPE\\lsass"</para></listitem> +</varlistentry> +<varlistentry> + <term>"\\PIPE\\wkssvc"</term> + <listitem><para>"\\PIPE\\wksvcs"</para></listitem> +</varlistentry> +<varlistentry> + <term>"\\PIPE\\NETLOGON"</term> + <listitem><para>"\\PIPE\\NETLOGON"</para></listitem> +</varlistentry> +</variablelist> + +<para><emphasis>Note: The RPC_Packet fraglength member in both the Bind Request and Bind Acknowledgment must contain the length of the entire RPC data, including the RPC_Packet header.</emphasis></para> + +<para>Request:</para> + +<simplelist> +<member>RPC_Packet</member> +<member>RPC_ReqBind</member> +</simplelist> + +<para>Response:</para> +<simplelist> +<member>RPC_Packet</member> +<member>RPC_ResBind</member> +</simplelist> + +</sect2> + +<sect2> +<title>NTLSA Transact Named Pipe</title> + +<para>The sequence of actions taken on this pipe are:</para> + +<simplelist> +<member>Establish a connection to the IPC$ share (SMBtconX). use encrypted passwords.</member> +<member>Open an RPC Pipe with the name "\\PIPE\\lsarpc". Store the file handle.</member> +<member>Using the file handle, send a Set Named Pipe Handle state to 0x4300.</member> +<member>Send an LSA Open Policy request. Store the Policy Handle.</member> +<member>Using the Policy Handle, send LSA Query Info Policy requests, etc.</member> +<member>Using the Policy Handle, send an LSA Close.</member> +<member>Close the IPC$ share.</member> +</simplelist> + +<para>Defines for this pipe, identifying the query are:</para> +<variablelist> +<varlistentry> + <term>LSA Open Policy:</term> + <listitem><para>0x2c</para></listitem> +</varlistentry> +<varlistentry> + <term>LSA Query Info Policy:</term> + <listitem><para>0x07</para></listitem> +</varlistentry> +<varlistentry> + <term>LSA Enumerate Trusted Domains:</term> + <listitem><para>0x0d</para></listitem> +</varlistentry> +<varlistentry> + <term>LSA Open Secret:</term> + <listitem><para>0xff</para></listitem> +</varlistentry> +<varlistentry> + <term>LSA Lookup SIDs:</term> + <listitem><para>0xfe</para></listitem> +</varlistentry> +<varlistentry> + <term>LSA Lookup Names:</term> + <listitem><para>0xfd</para></listitem> +</varlistentry> +<varlistentry> + <term>LSA Close:</term> + <listitem><para>0x00</para></listitem> +</varlistentry> +</variablelist> + +</sect2> + +<sect2> +<title>LSA Open Policy</title> + +<para><emphasis>Note: The policy handle can be anything you like.</emphasis></para> + +<sect3> +<title>Request</title> + +<variablelist> +<varlistentry> + <term>VOID*</term> + <listitem><para>buffer pointer</para></listitem> +</varlistentry> +<varlistentry> + <term>UNISTR2</term> + <listitem><para>server name - unicode string starting with two '\'s</para></listitem> +</varlistentry> +<varlistentry> + <term>OBJ_ATTR</term> + <listitem><para>object attributes</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>1 - desired access</para></listitem> +</varlistentry> +</variablelist> + +</sect3> + +<sect3> +<title>Response</title> + +<variablelist> + +<varlistentry> + <term>POL_HND</term> + <listitem><para>LSA policy handle</para></listitem> +</varlistentry> + +<varlistentry> + <term>return</term> + <listitem><para>0 - indicates success</para></listitem> +</varlistentry> + +</variablelist> + +</sect3> + +</sect2> + +<sect2> +<title>LSA Query Info Policy</title> + +<para><emphasis>Note: The info class in response must be the same as that in the request.</emphasis></para> + +<sect3> +<title>Request</title> + +<variablelist> +<varlistentry> + <term>POL_HND</term> +<listitem><para>LSA policy handle</para></listitem></varlistentry> +<varlistentry> + <term>UINT16</term> +<listitem><para>info class (also a policy handle?)</para></listitem></varlistentry> +</variablelist> + +</sect3> + +<sect3> +<title>Response</title> + +<variablelist> +<varlistentry> + <term>VOID*</term> + <listitem><para>undocumented buffer pointer</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT16</term> + <listitem><para>info class (same as info class in request).</para></listitem> +</varlistentry> + +</variablelist> + +<para><programlisting> +switch (info class) +case 3: +case 5: +{ +DOM_INFO domain info, levels 3 and 5 (are the same). +} + +return 0 - indicates success +</programlisting></para> + +</sect3> + +</sect2> + +<sect2> +<title>LSA Enumerate Trusted Domains</title> + +<sect3> +<title>Request</title> + +<para>no extra data</para> + +</sect3> + +<sect3> +<title>Response</title> + +<variablelist> +<varlistentry> + <term>UINT32</term> + <listitem><para>0 - enumeration context</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>0 - entries read</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>0 - trust information</para></listitem> +</varlistentry> +<varlistentry> + <term>return</term> + <listitem><para>0x8000 001a - "no trusted domains" success code</para></listitem> +</varlistentry> +</variablelist> + +</sect3> +</sect2> + +<sect2> +<title>LSA Open Secret</title> + +<sect3> +<title>Request</title> + +<para>no extra data</para> + +</sect3> + +<sect3> +<title>Response</title> + +<variablelist> +<varlistentry> + <term>UINT32</term> + <listitem><para>0 - undocumented</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>0 - undocumented</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>0 - undocumented</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>0 - undocumented</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>0 - undocumented</para></listitem> +</varlistentry> +</variablelist> + +<para>return 0x0C00 0034 - "no such secret" success code</para> + +</sect3> + +</sect2> + +<sect2> +<title>LSA Close</title> + +<sect3> +<title>Request</title> + +<variablelist> +<varlistentry> + <term>POL_HND</term> + <listitem><para>policy handle to be closed</para></listitem> +</varlistentry> +</variablelist> + +</sect3> + +<sect3> +<title>Response</title> + +<variablelist> +<varlistentry> + <term>POL_HND</term> +<listitem><para>0s - closed policy handle (all zeros)</para></listitem></varlistentry> +</variablelist> + +<para>return 0 - indicates success</para> + +</sect3> +</sect2> + +<sect2> +<title>LSA Lookup SIDS</title> + +<para><emphasis>Note: num_entries in response must be same as num_entries in request.</emphasis></para> + +<sect3> +<title>Request</title> + +<variablelist> +<varlistentry> + <term>POL_HND</term> + <listitem><para>LSA policy handle</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>num_entries</para></listitem> +</varlistentry> +<varlistentry> + <term>VOID*</term> + <listitem><para>undocumented domain SID buffer pointer</para></listitem> +</varlistentry> +<varlistentry> + <term>VOID*</term> + <listitem><para>undocumented domain name buffer pointer</para></listitem> +</varlistentry> +<varlistentry> + <term>VOID*[num_entries] undocumented domain SID pointers to be looked up. +</term> +<listitem><para>DOM_SID[num_entries] domain SIDs to be looked up.</para></listitem></varlistentry> +<varlistentry> + <term>char[16]</term> + <listitem><para>completely undocumented 16 bytes.</para></listitem> +</varlistentry> +</variablelist> + +</sect3> + +<sect3> +<title>Response</title> + +<variablelist> +<varlistentry> + <term>DOM_REF</term> +<listitem><para>domain reference response</para></listitem></varlistentry> +<varlistentry> + <term>UINT32</term> +<listitem><para>num_entries (listed above)</para></listitem></varlistentry> +<varlistentry> + <term>VOID*</term> +<listitem><para>undocumented buffer pointer</para></listitem></varlistentry> +<varlistentry> + <term>UINT32</term> +<listitem><para>num_entries (listed above)</para></listitem></varlistentry> +<varlistentry> + <term>DOM_SID2[num_entries]</term> +<listitem><para>domain SIDs (from Request, listed above).</para></listitem></varlistentry> +<varlistentry> + <term>UINT32</term> +<listitem><para>num_entries (listed above)</para></listitem></varlistentry> +</variablelist> + +<para>return 0 - indicates success</para> + +</sect3> + +</sect2> + +<sect2> +<title>LSA Lookup Names</title> + +<para><emphasis>Note: num_entries in response must be same as num_entries in request.</emphasis></para> + +<sect3> +<title>Request</title> + +<variablelist> +<varlistentry> + <term>POL_HND</term> + <listitem><para>LSA policy handle</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>num_entries</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>num_entries</para></listitem> +</varlistentry> +<varlistentry> + <term>VOID*</term> + <listitem><para>undocumented domain SID buffer pointer</para></listitem> +</varlistentry> +<varlistentry> + <term>VOID*</term> + <listitem><para>undocumented domain name buffer pointer</para></listitem> +</varlistentry> +<varlistentry> + <term>NAME[num_entries]</term> + <listitem><para>names to be looked up.</para></listitem> +</varlistentry> +<varlistentry> + <term>char[]</term> + <listitem><para>undocumented bytes - falsely translated SID structure?</para></listitem> +</varlistentry> +</variablelist> + +</sect3> + +<sect3> +<title>Response</title> + +<variablelist> +<varlistentry> + <term>DOM_REF</term> +<listitem><para>domain reference response</para></listitem></varlistentry> +<varlistentry> + <term>UINT32</term> +<listitem><para>num_entries (listed above)</para></listitem></varlistentry> +<varlistentry> + <term>VOID*</term> +<listitem><para>undocumented buffer pointer</para></listitem></varlistentry> +<varlistentry> + <term>UINT32</term> +<listitem><para>num_entries (listed above)</para></listitem></varlistentry> +<varlistentry> + <term>DOM_RID[num_entries]</term> +<listitem><para>domain SIDs (from Request, listed above).</para></listitem></varlistentry> +<varlistentry> + <term>UINT32</term> +<listitem><para>num_entries (listed above)</para></listitem></varlistentry> +</variablelist> + +<para>return 0 - indicates success</para> + +</sect3> +</sect2> +</sect1> + +<sect1> +<title>NETLOGON rpc Transact Named Pipe</title> + +<para>The sequence of actions taken on this pipe are:</para> + +<simplelist> +<member>tablish a connection to the IPC$ share (SMBtconX). use encrypted passwords.</member> +<member>en an RPC Pipe with the name "\\PIPE\\NETLOGON". Store the file handle.</member> +<member>ing the file handle, send a Set Named Pipe Handle state to 0x4300.</member> +<member>eate Client Challenge. Send LSA Request Challenge. Store Server Challenge.</member> +<member>lculate Session Key. Send an LSA Auth 2 Challenge. Store Auth2 Challenge.</member> +<member>lc/Verify Client Creds. Send LSA Srv PW Set. Calc/Verify Server Creds.</member> +<member>lc/Verify Client Creds. Send LSA SAM Logon . Calc/Verify Server Creds.</member> +<member>lc/Verify Client Creds. Send LSA SAM Logoff. Calc/Verify Server Creds.</member> +<member>ose the IPC$ share.</member> +</simplelist> + +<para>Defines for this pipe, identifying the query are</para> + +<variablelist> +<varlistentry> + <term>LSA Request Challenge:</term> + <listitem><para>0x04</para></listitem> +</varlistentry> +<varlistentry> + <term>LSA Server Password Set:</term> + <listitem><para>0x06</para></listitem> +</varlistentry> +<varlistentry> + <term>LSA SAM Logon:</term> + <listitem><para>0x02</para></listitem> +</varlistentry> +<varlistentry> + <term>LSA SAM Logoff:</term> + <listitem><para>0x03</para></listitem> +</varlistentry> +<varlistentry> + <term>LSA Auth 2:</term> + <listitem><para>0x0f</para></listitem> +</varlistentry> +<varlistentry> + <term>LSA Logon Control:</term> + <listitem><para>0x0e</para></listitem> +</varlistentry> +</variablelist> + +<sect2> +<title>LSA Request Challenge</title> + +<para><emphasis>Note: logon server name starts with two '\' characters and is upper case.</emphasis></para> + +<para><emphasis>Note: logon client is the machine, not the user.</emphasis></para> + +<para><emphasis>Note: the initial LanManager password hash, against which the challenge is issued, is the machine name itself (lower case). there will becalls issued (LSA Server Password Set) which will change this, later. refusing these calls allows you to always deal with the same password (i.e the LM# of the machine name in lower case).</emphasis></para> + +<sect3> +<title>Request</title> + +<variablelist> +<varlistentry> + <term>VOID*</term> + <listitem><para>undocumented buffer pointer</para></listitem> +</varlistentry> +<varlistentry> + <term>UNISTR2</term> + <listitem><para>logon server unicode string</para></listitem> +</varlistentry> +<varlistentry> + <term>UNISTR2</term> + <listitem><para>logon client unicode string</para></listitem> +</varlistentry> +<varlistentry> + <term>char[8]</term> + <listitem><para>client challenge</para></listitem> +</varlistentry> +</variablelist> + +</sect3> + +<sect3> +<title>Response</title> + +<variablelist> +<varlistentry> + <term>char[8]</term> + <listitem><para>server challenge</para></listitem> +</varlistentry> +</variablelist> + +<para>return 0 - indicates success</para> + +</sect3> + +</sect2> + +<sect2> +<title>LSA Authenticate 2</title> + +<para><emphasis>Note: in between request and response, calculate the client credentials, and check them against the client-calculated credentials (this process uses the previously received client credentials).</emphasis></para> + +<para><emphasis>Note: neg_flags in the response is the same as that in the request.</emphasis></para> + +<para><emphasis>Note: you must take a copy of the client-calculated credentials received here, because they will be used in subsequent authentication packets.</emphasis></para> + +<sect3> +<title>Request</title> + +<variablelist> +<varlistentry> + <term>LOG_INFO</term> + <listitem><para>client identification info</para></listitem> +</varlistentry> +<varlistentry> + <term>char[8]</term> + <listitem><para>client-calculated credentials</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT8[]</term> +<listitem><para>padding to 4-byte align with start of SMB header.</para></listitem></varlistentry> +<varlistentry> + <term>UINT32</term> +<listitem><para>neg_flags - negotiated flags (usual value is 0x0000 01ff)</para></listitem></varlistentry> +</variablelist> + +</sect3> + +<sect3> +<title>Response</title> + +<variablelist> +<varlistentry> + <term>char[8]</term> + <listitem><para>server credentials.</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>neg_flags - same as neg_flags in request.</para></listitem> +</varlistentry> +</variablelist> + +<para>return 0 - indicates success. failure value unknown.</para> + +</sect3> + +</sect2> + +<sect2> +<title>LSA Server Password Set</title> + +<para><emphasis>Note: the new password is suspected to be a DES encryption using the old password to generate the key.</emphasis></para> + +<para><emphasis>Note: in between request and response, calculate the client credentials, and check them against the client-calculated credentials (this process uses the previously received client credentials).</emphasis></para> + +<para><emphasis>Note: the server credentials are constructed from the client-calculated credentials and the client time + 1 second.</emphasis></para> + +<para><emphasis>Note: you must take a copy of the client-calculated credentials received here, because they will be used in subsequent authentication packets.</emphasis></para> + +<sect3> +<title>Request</title> + +<variablelist> +<varlistentry> + <term>CLNT_INFO</term> + <listitem><para>client identification/authentication info</para></listitem> +</varlistentry> +<varlistentry> + <term>char[]</term> + <listitem><para>new password - undocumented.</para></listitem> +</varlistentry> +</variablelist> + +</sect3> + +<sect3> +<title>Response</title> + +<variablelist> +<varlistentry> + <term>CREDS</term> + <listitem><para>server credentials. server time stamp appears to be ignored.</para></listitem> +</varlistentry> +</variablelist> + +<para>return 0 - indicates success; 0xC000 006a indicates failure</para> + +</sect3> +</sect2> + +<sect2> +<title>LSA SAM Logon</title> + +<para><emphasis> +Note: valid_user is True iff the username and password hash are valid for + the requested domain. +</emphasis></para> + +<sect3> +<title>Request</title> +<variablelist> +<varlistentry> + <term>SAM_INFO</term> + <listitem><para>sam_id structure</para></listitem> +</varlistentry> +</variablelist> + +</sect3> + +<sect3> +<title>Response</title> + +<variablelist> +<varlistentry> + <term>VOID*</term> + <listitem><para>undocumented buffer pointer</para></listitem> +</varlistentry> +<varlistentry> + <term>CREDS</term> + <listitem><para>server credentials. server time stamp appears to be ignored.</para></listitem> +</varlistentry> +</variablelist> + +<para><programlisting> +if (valid_user) +{ + UINT16 3 - switch value indicating USER_INFO structure. + VOID* non-zero - pointer to USER_INFO structure + USER_INFO user logon information + + UINT32 1 - Authoritative response; 0 - Non-Auth? + + return 0 - indicates success +} +else +{ + UINT16 0 - switch value. value to indicate no user presumed. + VOID* 0x0000 0000 - indicates no USER_INFO structure. + + UINT32 1 - Authoritative response; 0 - Non-Auth? + + return 0xC000 0064 - NT_STATUS_NO_SUCH_USER. +} +</programlisting></para> + +</sect3> + +</sect2> + +<sect2> +<title>LSA SAM Logoff</title> + +<para><emphasis> +Note: presumably, the SAM_INFO structure is validated, and a (currently + undocumented) error code returned if the Logoff is invalid. +</emphasis></para> + +<sect3> +<title>Request</title> + +<variablelist> +<varlistentry> + <term>SAM_INFO</term> + <listitem><para>sam_id structure</para></listitem> +</varlistentry> +</variablelist> + +</sect3> + +<sect3> +<title>Response</title> + +<variablelist> +<varlistentry> + <term>VOID*</term> + <listitem><para>undocumented buffer pointer</para></listitem> +</varlistentry> +<varlistentry> + <term>CREDS</term> + <listitem><para>server credentials. server time stamp appears to be ignored.</para></listitem> +</varlistentry> +</variablelist> + +<para>return 0 - indicates success. undocumented failure indication.</para> + +</sect3> +</sect2> +</sect1> + +<sect1> +<title>\\MAILSLOT\NET\NTLOGON</title> + +<para><emphasis> +Note: mailslots will contain a response mailslot, to which the response + should be sent. the target NetBIOS name is REQUEST_NAME<20>, where + REQUEST_NAME is the name of the machine that sent the request. +</emphasis></para> + +<sect2> +<title>Query for PDC</title> + +<para><emphasis>Note: NTversion, LMNTtoken, LM20token in response are the same as those given in the request.</emphasis></para> + +<sect3> +<title>Request</title> + +<variablelist> +<varlistentry> + <term>UINT16</term> + <listitem><para>0x0007 - Query for PDC</para></listitem> +</varlistentry> +<varlistentry> + <term>STR</term> + <listitem><para>machine name</para></listitem> +</varlistentry> +<varlistentry> + <term>STR</term> + <listitem><para>response mailslot</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT8[]</term> + <listitem><para>padding to 2-byte align with start of mailslot.</para></listitem> +</varlistentry> +<varlistentry> + <term>UNISTR</term> + <listitem><para>machine name</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>NTversion</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT16</term> + <listitem><para>LMNTtoken</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT16</term> + <listitem><para>LM20token</para></listitem> +</varlistentry> +</variablelist> + +</sect3> + +<sect3> +<title>Response</title> + +<variablelist> +<varlistentry> + <term>UINT16</term> +<listitem><para>0x000A - Respose to Query for PDC</para></listitem></varlistentry> +<varlistentry> + <term>STR</term> +<listitem><para>machine name (in uppercase)</para></listitem></varlistentry> +<varlistentry> + <term>UINT8[]</term> + <listitem><para>padding to 2-byte align with start of mailslot.</para></listitem> +</varlistentry> +<varlistentry> + <term>UNISTR</term> + <listitem><para>machine name</para></listitem> +</varlistentry> +<varlistentry> + <term>UNISTR</term> +<listitem><para>domain name</para></listitem></varlistentry> +<varlistentry> + <term>UINT32</term> +<listitem><para>NTversion (same as received in request)</para></listitem></varlistentry> +<varlistentry> + <term>UINT16</term> +<listitem><para>LMNTtoken (same as received in request)</para></listitem></varlistentry> +<varlistentry> + <term>UINT16</term> +<listitem><para>LM20token (same as received in request)</para></listitem></varlistentry> +</variablelist> + +</sect3> +</sect2> + +<sect2> +<title>SAM Logon</title> + +<para><emphasis>Note: machine name in response is preceded by two '\' characters.</emphasis></para> + +<para><emphasis>Note: NTversion, LMNTtoken, LM20token in response are the same as those given in the request.</emphasis></para> + +<para><emphasis>Note: user name in the response is presumably the same as that in the request.</emphasis></para> + +<sect3> +<title>Request</title> + +<variablelist> +<varlistentry> + <term>UINT16</term> + <listitem><para>0x0012 - SAM Logon</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT16</term> + <listitem><para>request count</para></listitem> +</varlistentry> +<varlistentry> + <term>UNISTR</term> + <listitem><para>machine name</para></listitem> +</varlistentry> +<varlistentry> + <term>UNISTR</term> + <listitem><para>user name</para></listitem> +</varlistentry> +<varlistentry> + <term>STR</term> + <listitem><para>response mailslot</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>alloweable account</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>domain SID size</para></listitem> +</varlistentry> +<varlistentry> + <term>char[sid_size]</term> + <listitem><para>domain SID, of sid_size bytes.</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT8[]</term> + <listitem><para>???? padding to 4? 2? -byte align with start of mailslot.</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>NTversion</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT16</term> + <listitem><para>LMNTtoken</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT16</term> + <listitem><para>LM20token</para></listitem> +</varlistentry> +</variablelist> + +</sect3> + +<sect3> +<title>Response</title> + +<variablelist> +<varlistentry> + <term>UINT16</term> + <listitem><para>0x0013 - Response to SAM Logon</para></listitem> +</varlistentry> +<varlistentry> + <term>UNISTR</term> + <listitem><para>machine name</para></listitem> +</varlistentry> +<varlistentry> + <term>UNISTR</term> + <listitem><para>user name - workstation trust account</para></listitem> +</varlistentry> +<varlistentry> + <term>UNISTR</term> + <listitem><para>domain name </para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>NTversion</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT16</term> + <listitem><para>LMNTtoken</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT16</term> + <listitem><para>LM20token</para></listitem> +</varlistentry> +</variablelist> + +</sect3> +</sect2> +</sect1> + +<sect1> +<title>SRVSVC Transact Named Pipe</title> + +<para>Defines for this pipe, identifying the query are:</para> + +<variablelist> +<varlistentry> + <term>Net Share Enum</term> + <listitem><para>0x0f</para></listitem> +</varlistentry> +<varlistentry> + <term>Net Server Get Info</term> + <listitem><para>0x15</para></listitem> +</varlistentry> + +</variablelist> + +<sect2> +<title>Net Share Enum</title> + +<para><emphasis>Note: share level and switch value in the response are presumably the same as those in the request.</emphasis></para> + +<para><emphasis>Note: cifsrap2.txt (section 5) may be of limited assistance here.</emphasis></para> + +<sect3> +<title>Request</title> + +<variablelist> +<varlistentry> + <term>VOID*</term> +<listitem><para>pointer (to server name?)</para></listitem></varlistentry> +<varlistentry> + <term>UNISTR2</term> + <listitem><para>server name</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT8[]</term> + <listitem><para>padding to get unicode string 4-byte aligned with the start of the SMB header.</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>share level</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>switch value</para></listitem> +</varlistentry> +<varlistentry> + <term>VOID*</term> + <listitem><para>pointer to SHARE_INFO_1_CTR</para></listitem> +</varlistentry> +<varlistentry> + <term>SHARE_INFO_1_CTR</term> + <listitem><para>share info with 0 entries</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> +<listitem><para>preferred maximum length (0xffff ffff)</para></listitem></varlistentry> +</variablelist> +</sect3> + +<sect3> +<title>Response</title> + +<variablelist> +<varlistentry> + <term>UINT32</term> + <listitem><para>share level</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>switch value</para></listitem> +</varlistentry> +<varlistentry> + <term>VOID*</term> +<listitem><para>pointer to SHARE_INFO_1_CTR</para></listitem></varlistentry> +<varlistentry> + <term>SHARE_INFO_1_CTR</term> +<listitem><para>share info (only added if share info ptr is non-zero)</para></listitem></varlistentry> +</variablelist> + +<para>return 0 - indicates success</para> + +</sect3> +</sect2> + +<sect2> +<title>Net Server Get Info</title> + +<para><emphasis>Note: level is the same value as in the request.</emphasis></para> + +<sect3> +<title>Request</title> + +<variablelist> +<varlistentry> + <term>UNISTR2</term> + <listitem><para>server name</para></listitem> +</varlistentry> +<varlistentry> + <term>UINT32</term> + <listitem><para>switch level</para></listitem> +</varlistentry> +</variablelist> + +</sect3> + +<sect3> +<title>Response</title> + +<variablelist> +<varlistentry> + <term>UINT32</term> + <listitem><para>switch level</para></listitem> +</varlistentry> +<varlistentry> + <term>VOID*</term> + <listitem><para>pointer to SERVER_INFO_101</para></listitem> +</varlistentry> +<varlistentry> + <term>SERVER_INFO_101</term> +<listitem><para>server info (only added if server info ptr is non-zero)</para></listitem></varlistentry> +</variablelist> + +<para>return 0 - indicates success</para> + +</sect3> +</sect2> +</sect1> + +<sect1> +<title>Cryptographic side of NT Domain Authentication</title> + +<sect2> +<title>Definitions</title> + +<variablelist> +<varlistentry> +<term>Add(A1,A2)</term> +<listitem><para>Intel byte ordered addition of corresponding 4 byte words in arrays A1 and A2</para></listitem> +</varlistentry> + +<varlistentry> +<term>E(K,D)</term> +<listitem><para>DES ECB encryption of 8 byte data D using 7 byte key K</para></listitem> +</varlistentry> + +<varlistentry> +<term>lmowf()</term> +<listitem><para>Lan man hash</para></listitem> +</varlistentry> + +<varlistentry> +<term>ntowf()</term> +<listitem><para>NT hash</para></listitem> +</varlistentry> + +<varlistentry> +<term>PW</term> +<listitem><para>md4(machine_password) == md4(lsadump $machine.acc) == +pwdump(machine$) (initially) == md4(lmowf(unicode(machine))) +</para></listitem> +</varlistentry> + +<varlistentry> +<term>ARC4(K,Lk,D,Ld)</term> +<listitem><para>ARC4 encryption of data D of length Ld with key K of length Lk</para></listitem> +</varlistentry> + +<varlistentry> +<term>v[m..n(,l)]</term> +<listitem><para>subset of v from bytes m to n, optionally padded with zeroes to length l</para></listitem> +</varlistentry> + +<varlistentry> +<term>Cred(K,D)</term> +<listitem><para>E(K[7..7,7],E(K[0..6],D)) computes a credential</para></listitem> +</varlistentry> + +<varlistentry> +<term>Time()</term> +<listitem><para>4 byte current time</para></listitem> +</varlistentry> + +<varlistentry> +<term>Cc,Cs</term> +<listitem><para>8 byte client and server challenges Rc,Rs: 8 byte client and server credentials</para></listitem> +</varlistentry> + +</variablelist> + +</sect2> + +<sect2> +<title>Protocol</title> + +<programlisting> +C->S ReqChal,Cc +S->C Cs +</programlisting> + +<programlisting> +C & S compute session key Ks = E(PW[9..15],E(PW[0..6],Add(Cc,Cs))) +</programlisting> + +<programlisting> +C: Rc = Cred(Ks,Cc) +C->S Authenticate,Rc +S: Rs = Cred(Ks,Cs), assert(Rc == Cred(Ks,Cc)) +S->C Rs +C: assert(Rs == Cred(Ks,Cs)) +</programlisting> + +<para> +On joining the domain the client will optionally attempt to change its +password and the domain controller may refuse to update it depending +on registry settings. This will also occur weekly afterwards. +</para> + +<programlisting> +C: Tc = Time(), Rc' = Cred(Ks,Rc+Tc) +C->S ServerPasswordSet,Rc',Tc,arc4(Ks[0..7,16],lmowf(randompassword()) +C: Rc = Cred(Ks,Rc+Tc+1) +S: assert(Rc' == Cred(Ks,Rc+Tc)), Ts = Time() +S: Rs' = Cred(Ks,Rs+Tc+1) +S->C Rs',Ts +C: assert(Rs' == Cred(Ks,Rs+Tc+1)) +S: Rs = Rs' +</programlisting> + +<para> +User: U with password P wishes to login to the domain (incidental data +such as workstation and domain omitted) +</para> + +<programlisting> +C: Tc = Time(), Rc' = Cred(Ks,Rc+Tc) +C->S NetLogonSamLogon,Rc',Tc,U,arc4(Ks[0..7,16],16,ntowf(P),16), arc4(Ks[0..7,16],16,lmowf(P),16) +S: assert(Rc' == Cred(Ks,Rc+Tc)) assert(passwords match those in SAM) +S: Ts = Time() +</programlisting> + +<programlisting> +S->C Cred(Ks,Cred(Ks,Rc+Tc+1)),userinfo(logon script,UID,SIDs,etc) +C: assert(Rs == Cred(Ks,Cred(Rc+Tc+1)) +C: Rc = Cred(Ks,Rc+Tc+1) +</programlisting> + +</sect2> + +<sect2> +<title>Comments</title> + +<para> +On first joining the domain the session key could be computed by +anyone listening in on the network as the machine password has a well +known value. Until the machine is rebooted it will use this session +key to encrypt NT and LM one way functions of passwords which are +password equivalents. Any user who logs in before the machine has been +rebooted a second time will have their password equivalent exposed. Of +course the new machine password is exposed at this time anyway. +</para> + +<para> +None of the returned user info such as logon script, profile path and +SIDs *appear* to be protected by anything other than the TCP checksum. +</para> + +<para> +The server time stamps appear to be ignored. +</para> + +<para> +The client sends a ReturnAuthenticator in the SamLogon request which I +can't find a use for. However its time is used as the timestamp +returned by the server. +</para> + +<para> +The password OWFs should NOT be sent over the network reversibly +encrypted. They should be sent using ARC4(Ks,md4(owf)) with the server +computing the same function using the owf values in the SAM. +</para> + +</sect2> +</sect1> + +<sect1> +<title>SIDs and RIDs</title> + +<para> +SIDs and RIDs are well documented elsewhere. +</para> + +<para> +A SID is an NT Security ID (see DOM_SID structure). They are of the form: +</para> + +<simplelist> +<member>revision-NN-SubAuth1-SubAuth2-SubAuth3... </member> +<member>revision-0xNNNNNNNNNNNN-SubAuth1-SubAuth2-SubAuth3...</member> +</simplelist> + +<para> +currently, the SID revision is 1. +The Sub-Authorities are known as Relative IDs (RIDs). +</para> + +<sect2> +<title>Well-known SIDs</title> + +<sect3> +<title>Universal well-known SIDs</title> + +<variablelist> +<varlistentry> + <term>Null SID</term> + <listitem><para>S-1-0-0</para></listitem> +</varlistentry> +<varlistentry> + <term>World</term> + <listitem><para>S-1-1-0</para></listitem> +</varlistentry> +<varlistentry> + <term>Local</term> + <listitem><para>S-1-2-0</para></listitem> +</varlistentry> +<varlistentry> + <term>Creator Owner ID</term> + <listitem><para>S-1-3-0</para></listitem> +</varlistentry> +<varlistentry> + <term>Creator Group ID</term> + <listitem><para>S-1-3-1</para></listitem> +</varlistentry> +<varlistentry> + <term>Creator Owner Server ID</term> + <listitem><para>S-1-3-2</para></listitem> +</varlistentry> +<varlistentry> + <term>Creator Group Server ID</term> + <listitem><para>S-1-3-3</para></listitem> +</varlistentry> +<varlistentry> + <term>(Non-unique IDs)</term> + <listitem><para>S-1-4</para></listitem> +</varlistentry> +</variablelist> + +</sect3> + +<sect3> +<title>NT well-known SIDs</title> + +<variablelist> +<varlistentry> + <term>NT Authority</term> + <listitem><para>S-1-5</para></listitem> +</varlistentry> +<varlistentry> + <term>Dialup</term> + <listitem><para>S-1-5-1</para></listitem> +</varlistentry> +<varlistentry> + <term>Network</term> + <listitem><para>S-1-5-2</para></listitem> +</varlistentry> +<varlistentry> + <term>Batch</term> + <listitem><para>S-1-5-3</para></listitem> +</varlistentry> +<varlistentry> + <term>Interactive</term> + <listitem><para>S-1-5-4</para></listitem> +</varlistentry> +<varlistentry> + <term>Service</term> +<listitem><para>S-1-5-6</para></listitem></varlistentry> +<varlistentry> + <term>AnonymousLogon(aka null logon session)</term> + <listitem><para>S-1-5-7</para></listitem> +</varlistentry> +<varlistentry> + <term>Proxy</term> +<listitem><para>S-1-5-8</para></listitem></varlistentry> +<varlistentry> + <term>ServerLogon(aka domain controller account)</term> + <listitem><para>S-1-5-8</para></listitem> +</varlistentry> +<varlistentry> + <term>(Logon IDs)</term> + <listitem><para>S-1-5-5-X-Y</para></listitem> +</varlistentry> +<varlistentry> + <term>(NT non-unique IDs)</term> + <listitem><para>S-1-5-0x15-...</para></listitem> +</varlistentry> +<varlistentry> + <term>(Built-in domain)</term> + <listitem><para>s-1-5-0x20</para></listitem> +</varlistentry> +</variablelist> + +</sect3> +</sect2> + +<sect2> +<title>Well-known RIDS</title> + +<para> +A RID is a sub-authority value, as part of either a SID, or in the case +of Group RIDs, part of the DOM_GID structure, in the USER_INFO_1 +structure, in the LSA SAM Logon response. +</para> + +<sect3> +<title>Well-known RID users</title> + +<segmentedlist> +<segtitle>Groupname</segtitle> +<segtitle>????</segtitle> +<segtitle>RID</segtitle> +<seglistitem><seg>DOMAIN_USER_RID_ADMIN</seg><seg>0x0000</seg><seg>01F4</seg></seglistitem> +<seglistitem><seg>DOMAIN_USER_RID_GUEST</seg><seg>0x0000</seg><seg>01F5</seg></seglistitem> +</segmentedlist> + +</sect3> + +<sect3> +<title>Well-known RID groups</title> + +<segmentedlist> +<segtitle>Groupname</segtitle> +<segtitle>????</segtitle> +<segtitle>RID</segtitle> +<seglistitem><seg> DOMAIN_GROUP_RID_ADMINS</seg><seg>0x0000</seg><seg>0200</seg></seglistitem> +<seglistitem><seg> DOMAIN_GROUP_RID_USERS</seg><seg>0x0000</seg><seg>0201</seg></seglistitem> +<seglistitem><seg> DOMAIN_GROUP_RID_GUESTS</seg><seg>0x0000</seg><seg>0202</seg></seglistitem> +</segmentedlist> + +</sect3> + +<sect3> +<title>Well-known RID aliases</title> + +<segmentedlist> +<segtitle>Groupname</segtitle> +<segtitle>????</segtitle> +<segtitle>RID</segtitle> +<seglistitem><seg> DOMAIN_ALIAS_RID_ADMINS</seg><seg>0x0000</seg><seg>0220</seg></seglistitem> +<seglistitem><seg> DOMAIN_ALIAS_RID_USERS</seg><seg>0x0000</seg><seg>0221</seg></seglistitem> +<seglistitem><seg> DOMAIN_ALIAS_RID_GUESTS</seg><seg>0x0000</seg><seg>0222</seg></seglistitem> +<seglistitem><seg> DOMAIN_ALIAS_RID_POWER_USERS</seg><seg>0x0000</seg><seg>0223</seg></seglistitem> +<seglistitem><seg> DOMAIN_ALIAS_RID_ACCOUNT_OPS</seg><seg>0x0000</seg><seg>0224</seg></seglistitem> +<seglistitem><seg> DOMAIN_ALIAS_RID_SYSTEM_OPS</seg><seg>0x0000</seg><seg>0225</seg></seglistitem> +<seglistitem><seg> DOMAIN_ALIAS_RID_PRINT_OPS</seg><seg>0x0000</seg><seg>0226</seg></seglistitem> +<seglistitem><seg> DOMAIN_ALIAS_RID_BACKUP_OPS</seg><seg>0x0000</seg><seg>0227</seg></seglistitem> +<seglistitem><seg> DOMAIN_ALIAS_RID_REPLICATOR</seg><seg>0x0000</seg><seg>0228</seg></seglistitem> +</segmentedlist> + +</sect3> +</sect2> +</sect1> +</chapter> diff --git a/docs-xml/Samba-Developers-Guide/contributing.xml b/docs-xml/Samba-Developers-Guide/contributing.xml new file mode 100644 index 0000000..af21b6e --- /dev/null +++ b/docs-xml/Samba-Developers-Guide/contributing.xml @@ -0,0 +1,112 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!DOCTYPE chapter PUBLIC "-//Samba-Team//DTD DocBook V4.2-Based Variant V1.0//EN" "http://www.samba.org/samba/DTD/samba-doc"> + +<chapter id="contributing"> +<chapterinfo> + &author.jelmer; +</chapterinfo> + +<title>Contributing code</title> + +<para>Here are a few tips and notes that might be useful if you are + interested in modifying samba source code and getting it into + samba's main branch.</para> + +<variablelist> + <varlistentry> + <term>Retrieving the source</term> + + <listitem> + <para>In order to contribute code to samba, make sure you have the + latest source. Retrieving the samba source code from CVS is + documented in the appendix of the Samba HOWTO Collection. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>Discuss large modifications with team members</term> + <listitem> + <para>Please discuss large modifications you are going to make + with members of the samba team. Some parts of the samba code + have one or more 'owners' - samba developers who wrote most + of the code and maintain it. + </para> + + <para>This way you can avoid spending your time and effort on + something that is not going to make it into the main samba branch + because someone else was working on the same thing or because your + implementation is not the correct one. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>Patch format</term> + <listitem> + <para>Patches to the samba tree should be in unified diff format, + e.g. files generated by <userinput>diff -u</userinput>. + </para> + + <para>If you are modifying a copy of samba you retrieved from CVS, + you can easily generate a diff file of these changes by running + <userinput>cvs diff -u</userinput>.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>Points of attention when modifying samba source code</term> + <listitem><para> + <itemizedlist> + <listitem><para>Don't simply copy code from other places and modify it until it + works. Code needs to be clean and logical. Duplicate + code is to be avoided.</para></listitem> + <listitem><para>Test your patch. It might take a while before one of us looks + at your patch so it will take longer before your patch when your patch + needs to go thru the review cycle again.</para></listitem> + <listitem><para>Don't put separate patches in one large diff file. This makes + it harder to read, understand and test the patch. You might + also risk not getting a good patch committed because you mixed it + with one that had issues. </para></listitem> + <listitem><para>Make sure your patch complies to the samba coding style as + suggested in the coding-suggestions chapter. </para></listitem> + </itemizedlist> + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>Sending in bugfixes</term> + <listitem> + <para>Bugfixes to bugs in samba should be submitted to samba's + <ulink url="https://bugzilla.samba.org/">bugzilla system</ulink>, + along with a description of the bug. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>Sending in feature patches</term> + <listitem> + <para>Send feature patches along with a description of what the + patch is supposed to do to the + <ulink url="mailto:samba-technical@lists.samba.org">Samba-technical mailinglist</ulink> and possibly to a samba team member who is (one of the) 'owners' + of the code you made modifications to. We are all busy people + so everybody tends to 'let one of the others handle it'. If nobody + responded to your patch for a week, try to send it again until you + get a response from one of us. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>Feedback on your patch</term> + <listitem> + <para>One of the team members will look at your patch and either + commit your patch or give comments why he won't apply it. In the + latter case you can fix your patch and re-send it until + your patch is approved.</para> + </listitem> + </varlistentry> +</variablelist> + +</chapter> diff --git a/docs-xml/Samba-Developers-Guide/debug.xml b/docs-xml/Samba-Developers-Guide/debug.xml new file mode 100644 index 0000000..50a363c --- /dev/null +++ b/docs-xml/Samba-Developers-Guide/debug.xml @@ -0,0 +1,323 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!DOCTYPE chapter PUBLIC "-//Samba-Team//DTD DocBook V4.2-Based Variant V1.0//EN" "http://www.samba.org/samba/DTD/samba-doc"> +<chapter id="debug"> +<chapterinfo> + <author> + <firstname>Chris</firstname><surname>Hertel</surname> + </author> + <pubdate>July 1998</pubdate> +</chapterinfo> + +<title>The samba DEBUG system</title> + +<sect1> +<title>New Output Syntax</title> + +<para> + The syntax of a debugging log file is represented as: +</para> + +<para><programlisting> + >debugfile< :== { >debugmsg< } + + >debugmsg< :== >debughdr< '\n' >debugtext< + + >debughdr< :== '[' TIME ',' LEVEL ']' FILE ':' [FUNCTION] '(' LINE ')' + + >debugtext< :== { >debugline< } + + >debugline< :== TEXT '\n' +</programlisting></para> + +<para> +TEXT is a string of characters excluding the newline character. +</para> + +<para> +LEVEL is the DEBUG level of the message (an integer in the range + 0..10). +</para> + +<para> +TIME is a timestamp. +</para> + +<para> +FILE is the name of the file from which the debug message was +generated. +</para> + +<para> +FUNCTION is the function from which the debug message was generated. +</para> + +<para> +LINE is the line number of the debug statement that generated the +message. +</para> + +<para>Basically, what that all means is:</para> +<orderedlist> +<listitem><para> +A debugging log file is made up of debug messages. +</para></listitem> +<listitem><para> +Each debug message is made up of a header and text. The header is +separated from the text by a newline. +</para></listitem> +<listitem><para> +The header begins with the timestamp and debug level of the +message enclosed in brackets. The filename, function, and line +number at which the message was generated follow. The filename is +terminated by a colon, and the function name is terminated by the +parenthesis which contain the line number. Depending upon the +compiler, the function name may be missing (it is generated by the +__FUNCTION__ macro, which is not universally implemented, dangit). +</para></listitem> +<listitem><para> +The message text is made up of zero or more lines, each terminated +by a newline. +</para></listitem> +</orderedlist> + +<para>Here's some example output:</para> + +<para><programlisting> + [1998/08/03 12:55:25, 1] nmbd.c:(659) + Netbios nameserver version 1.9.19-prealpha started. + Copyright Andrew Tridgell 1994-1997 + [1998/08/03 12:55:25, 3] loadparm.c:(763) + Initializing global parameters +</programlisting></para> + +<para> +Note that in the above example the function names are not listed on +the header line. That's because the example above was generated on an +SGI Indy, and the SGI compiler doesn't support the __FUNCTION__ macro. +</para> + +</sect1> + +<sect1> +<title>The DEBUG() Macro</title> + +<para> +Use of the DEBUG() macro is unchanged. DEBUG() takes two parameters. +The first is the message level, the second is the body of a function +call to the Debug1() function. +</para> + +<para>That's confusing.</para> + +<para>Here's an example which may help a bit. If you would write</para> + +<para><programlisting> +printf( "This is a %s message.\n", "debug" ); +</programlisting></para> + +<para> +to send the output to stdout, then you would write +</para> + +<para><programlisting> +DEBUG( 0, ( "This is a %s message.\n", "debug" ) ); +</programlisting></para> + +<para> +to send the output to the debug file. All of the normal printf() +formatting escapes work. +</para> + +<para> +Note that in the above example the DEBUG message level is set to 0. +Messages at level 0 always print. Basically, if the message level is +less than or equal to the global value DEBUGLEVEL, then the DEBUG +statement is processed. +</para> + +<para> +The output of the above example would be something like: +</para> + +<para><programlisting> + [1998/07/30 16:00:51, 0] file.c:function(128) + This is a debug message. +</programlisting></para> + +<para> +Each call to DEBUG() creates a new header *unless* the output produced +by the previous call to DEBUG() did not end with a '\n'. Output to the +debug file is passed through a formatting buffer which is flushed +every time a newline is encountered. If the buffer is not empty when +DEBUG() is called, the new input is simply appended. +</para> + +<para> +...but that's really just a Kludge. It was put in place because +DEBUG() has been used to write partial lines. Here's a simple (dumb) +example of the kind of thing I'm talking about: +</para> + +<para><programlisting> + DEBUG( 0, ("The test returned " ) ); + if( test() ) + DEBUG(0, ("True") ); + else + DEBUG(0, ("False") ); + DEBUG(0, (".\n") ); +</programlisting></para> + +<para> +Without the format buffer, the output (assuming test() returned true) +would look like this: +</para> + +<para><programlisting> + [1998/07/30 16:00:51, 0] file.c:function(256) + The test returned + [1998/07/30 16:00:51, 0] file.c:function(258) + True + [1998/07/30 16:00:51, 0] file.c:function(261) + . +</programlisting></para> + +<para>Which isn't much use. The format buffer kludge fixes this problem. +</para> + +</sect1> + +<sect1> +<title>The DEBUGADD() Macro</title> + +<para> +In addition to the kludgey solution to the broken line problem +described above, there is a clean solution. The DEBUGADD() macro never +generates a header. It will append new text to the current debug +message even if the format buffer is empty. The syntax of the +DEBUGADD() macro is the same as that of the DEBUG() macro. +</para> + +<para><programlisting> + DEBUG( 0, ("This is the first line.\n" ) ); + DEBUGADD( 0, ("This is the second line.\nThis is the third line.\n" ) ); +</programlisting></para> + +<para>Produces</para> + +<para><programlisting> + [1998/07/30 16:00:51, 0] file.c:function(512) + This is the first line. + This is the second line. + This is the third line. +</programlisting></para> + +</sect1> + +<sect1> +<title>The DEBUGLVL() Macro</title> + +<para> +One of the problems with the DEBUG() macro was that DEBUG() lines +tended to get a bit long. Consider this example from +nmbd_sendannounce.c: +</para> + +<para><programlisting> + DEBUG(3,("send_local_master_announcement: type %x for name %s on subnet %s for workgroup %s\n", + type, global_myname, subrec->subnet_name, work->work_group)); +</programlisting></para> + +<para> +One solution to this is to break it down using DEBUG() and DEBUGADD(), +as follows: +</para> + +<para><programlisting> + DEBUG( 3, ( "send_local_master_announcement: " ) ); + DEBUGADD( 3, ( "type %x for name %s ", type, global_myname ) ); + DEBUGADD( 3, ( "on subnet %s ", subrec->subnet_name ) ); + DEBUGADD( 3, ( "for workgroup %s\n", work->work_group ) ); +</programlisting></para> + +<para> +A similar, but arguably nicer approach is to use the DEBUGLVL() macro. +This macro returns True if the message level is less than or equal to +the global DEBUGLEVEL value, so: +</para> + +<para><programlisting> + if( DEBUGLVL( 3 ) ) + { + dbgtext( "send_local_master_announcement: " ); + dbgtext( "type %x for name %s ", type, global_myname ); + dbgtext( "on subnet %s ", subrec->subnet_name ); + dbgtext( "for workgroup %s\n", work->work_group ); + } +</programlisting></para> + +<para>(The dbgtext() function is explained below.)</para> + +<para>There are a few advantages to this scheme:</para> +<orderedlist> +<listitem><para> +The test is performed only once. +</para></listitem> +<listitem><para> +You can allocate variables off of the stack that will only be used +within the DEBUGLVL() block. +</para></listitem> +<listitem><para> +Processing that is only relevant to debug output can be contained +within the DEBUGLVL() block. +</para></listitem> +</orderedlist> + +</sect1> + +<sect1> +<title>New Functions</title> + +<sect2> +<title>dbgtext()</title> +<para> +This function prints debug message text to the debug file (and +possibly to syslog) via the format buffer. The function uses a +variable argument list just like printf() or Debug1(). The +input is printed into a buffer using the vslprintf() function, +and then passed to format_debug_text(). + +If you use DEBUGLVL() you will probably print the body of the +message using dbgtext(). +</para> +</sect2> + +<sect2> +<title>dbghdr()</title> +<para> +This is the function that writes a debug message header. +Headers are not processed via the format buffer. Also note that +if the format buffer is not empty, a call to dbghdr() will not +produce any output. See the comments in dbghdr() for more info. +</para> + +<para> +It is not likely that this function will be called directly. It +is used by DEBUG() and DEBUGADD(). +</para> +</sect2> + +<sect2> +<title>format_debug_text()</title> +<para> +This is a static function in debug.c. It stores the output text +for the body of the message in a buffer until it encounters a +newline. When the newline character is found, the buffer is +written to the debug file via the Debug1() function, and the +buffer is reset. This allows us to add the indentation at the +beginning of each line of the message body, and also ensures +that the output is written a line at a time (which cleans up +syslog output). +</para> +</sect2> +</sect1> +</chapter> diff --git a/docs-xml/Samba-Developers-Guide/encryption.xml b/docs-xml/Samba-Developers-Guide/encryption.xml new file mode 100644 index 0000000..cba9490 --- /dev/null +++ b/docs-xml/Samba-Developers-Guide/encryption.xml @@ -0,0 +1,199 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!DOCTYPE chapter PUBLIC "-//Samba-Team//DTD DocBook V4.2-Based Variant V1.0//EN" "http://www.samba.org/samba/DTD/samba-doc"> +<chapter id="pwencrypt"> + + +<chapterinfo> + <author> + <firstname>Jeremy</firstname><surname>Allison</surname> + <affiliation> + <orgname>Samba Team</orgname> + <address> + <email>samba@lists.samba.org</email> + </address> + </affiliation> + </author> + + <pubdate>19 Apr 1999</pubdate> +</chapterinfo> + +<title>LanMan and NT Password Encryption</title> + +<sect1> + <title>Introduction</title> + + <para>With the development of LanManager and Windows NT + compatible password encryption for Samba, it is now able + to validate user connections in exactly the same way as + a LanManager or Windows NT server.</para> + + <para>This document describes how the SMB password encryption + algorithm works and what issues there are in choosing whether + you want to use it. You should read it carefully, especially + the part about security and the "PROS and CONS" section.</para> + +</sect1> + +<sect1> + <title>How does it work?</title> + + <para>LanManager encryption is somewhat similar to UNIX + password encryption. The server uses a file containing a + hashed value of a user's password. This is created by taking + the user's plaintext password, capitalising it, and either + truncating to 14 bytes or padding to 14 bytes with null bytes. + This 14 byte value is used as two 56 bit DES keys to encrypt + a 'magic' eight byte value, forming a 16 byte value which is + stored by the server and client. Let this value be known as + the "hashed password".</para> + + <para>Windows NT encryption is a higher quality mechanism, + consisting of doing an MD4 hash on a Unicode version of the user's + password. This also produces a 16 byte hash value that is + non-reversible.</para> + + <para>When a client (LanManager, Windows for WorkGroups, Windows + 95 or Windows NT) wishes to mount a Samba drive (or use a Samba + resource), it first requests a connection and negotiates the + protocol that the client and server will use. In the reply to this + request the Samba server generates and appends an 8 byte, random + value - this is stored in the Samba server after the reply is sent + and is known as the "challenge". The challenge is different for + every client connection.</para> + + <para>The client then uses the hashed password (16 byte values + described above), appended with 5 null bytes, as three 56 bit + DES keys, each of which is used to encrypt the challenge 8 byte + value, forming a 24 byte value known as the "response".</para> + + <para>In the SMB call SMBsessionsetupX (when user level security + is selected) or the call SMBtconX (when share level security is + selected), the 24 byte response is returned by the client to the + Samba server. For Windows NT protocol levels the above calculation + is done on both hashes of the user's password and both responses are + returned in the SMB call, giving two 24 byte values.</para> + + <para>The Samba server then reproduces the above calculation, using + its own stored value of the 16 byte hashed password (read from the + <filename>smbpasswd</filename> file - described later) and the challenge + value that it kept from the negotiate protocol reply. It then checks + to see if the 24 byte value it calculates matches the 24 byte value + returned to it from the client.</para> + + <para>If these values match exactly, then the client knew the + correct password (or the 16 byte hashed value - see security note + below) and is thus allowed access. If not, then the client did not + know the correct password and is denied access.</para> + + <para>Note that the Samba server never knows or stores the cleartext + of the user's password - just the 16 byte hashed values derived from + it. Also note that the cleartext password or 16 byte hashed values + are never transmitted over the network - thus increasing security.</para> +</sect1> + +<sect1> + <title>The smbpasswd file</title> + <anchor id="SMBPASSWDFILEFORMAT"/> + <para>In order for Samba to participate in the above protocol + it must be able to look up the 16 byte hashed values given a user name. + Unfortunately, as the UNIX password value is also a one way hash + function (ie. it is impossible to retrieve the cleartext of the user's + password given the UNIX hash of it), a separate password file + containing this 16 byte value must be kept. To minimise problems with + these two password files, getting out of sync, the UNIX <filename> + /etc/passwd</filename> and the <filename>smbpasswd</filename> file, + a utility, <command>mksmbpasswd.sh</command>, is provided to generate + a smbpasswd file from a UNIX <filename>/etc/passwd</filename> file. + </para> + + + <para>To generate the smbpasswd file from your <filename>/etc/passwd + </filename> file use the following command:</para> + + <para><prompt>$ </prompt><userinput>cat /etc/passwd | mksmbpasswd.sh + > /usr/local/samba/private/smbpasswd</userinput></para> + + <para>If you are running on a system that uses NIS, use</para> + + <para><prompt>$ </prompt><userinput>ypcat passwd | mksmbpasswd.sh + > /usr/local/samba/private/smbpasswd</userinput></para> + + <para>The <command>mksmbpasswd.sh</command> program is found in + the Samba source directory. By default, the smbpasswd file is + stored in :</para> + + <para><filename>/usr/local/samba/private/smbpasswd</filename></para> + + <para>The owner of the <filename>/usr/local/samba/private/</filename> + directory should be set to root, and the permissions on it should + be set to 0500 (<command>chmod 500 /usr/local/samba/private</command>). + </para> + + <para>Likewise, the smbpasswd file inside the private directory should + be owned by root and the permissions on is should be set to 0600 + (<command>chmod 600 smbpasswd</command>).</para> + + + <para>The format of the smbpasswd file is (The line has been + wrapped here. It should appear as one entry per line in + your smbpasswd file.)</para> + + <para><programlisting> +username:uid:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX: + [Account type]:LCT-<last-change-time>:Long name + </programlisting></para> + + <para>Although only the <replaceable>username</replaceable>, + <replaceable>uid</replaceable>, <replaceable> + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</replaceable>, + [<replaceable>Account type</replaceable>] and <replaceable> + last-change-time</replaceable> sections are significant + and are looked at in the Samba code.</para> + + <para>It is <emphasis>VITALLY</emphasis> important that there by 32 + 'X' characters between the two ':' characters in the XXX sections - + the smbpasswd and Samba code will fail to validate any entries that + do not have 32 characters between ':' characters. The first XXX + section is for the Lanman password hash, the second is for the + Windows NT version.</para> + + <para>When the password file is created all users have password entries + consisting of 32 'X' characters. By default this disallows any access + as this user. When a user has a password set, the 'X' characters change + to 32 ascii hexadecimal digits (0-9, A-F). These are an ascii + representation of the 16 byte hashed value of a user's password.</para> + + <para>To set a user to have no password (not recommended), edit the file + using vi, and replace the first 11 characters with the ascii text + <constant>"NO PASSWORD"</constant> (minus the quotes).</para> + + <para>For example, to clear the password for user bob, his smbpasswd file + entry would look like :</para> + + <para><programlisting> +bob:100:NO PASSWORDXXXXXXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX: + [U ]:LCT-00000000:Bob's full name:/bobhome:/bobshell + </programlisting></para> + + <para>If you are allowing users to use the smbpasswd command to set + their own passwords, you may want to give users NO PASSWORD initially + so they do not have to enter a previous password when changing to their + new password (not recommended). In order for you to allow this the + <command>smbpasswd</command> program must be able to connect to the + <command>smbd</command> daemon as that user with no password. Enable this + by adding the line :</para> + + <para><command>null passwords = yes</command></para> + + <para>to the [global] section of the smb.conf file (this is why + the above scenario is not recommended). Preferably, allocate your + users a default password to begin with, so you do not have + to enable this on your server.</para> + + <para><emphasis>Note : </emphasis>This file should be protected very + carefully. Anyone with access to this file can (with enough knowledge of + the protocols) gain access to your SMB server. The file is thus more + sensitive than a normal unix <filename>/etc/passwd</filename> file.</para> +</sect1> + +</chapter> diff --git a/docs-xml/Samba-Developers-Guide/gencache.xml b/docs-xml/Samba-Developers-Guide/gencache.xml new file mode 100644 index 0000000..7e8475c --- /dev/null +++ b/docs-xml/Samba-Developers-Guide/gencache.xml @@ -0,0 +1,119 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!DOCTYPE chapter PUBLIC "-//Samba-Team//DTD DocBook V4.2-Based Variant V1.0//EN" "http://www.samba.org/samba/DTD/samba-doc"> +<chapter id="gencache"> +<chapterinfo> + <author> + <firstname>Rafal</firstname><surname>Szczesniak</surname> + </author> + <pubdate>April 2003</pubdate> +</chapterinfo> + +<title>General cache mechanism and API</title> + +<sect1> +<title>Abstract</title> +<para> +General cache (gencache) was designed to combine various kinds of caching +mechanisms into one, defined by a simple API. This way, anyone can use it +to create their own caching layer on top of gencache. An example of +such approach is the netbios name cache. +</para> +</sect1> + +<sect1> +<title>The mechanism</title> +<para> +Gencache utilises <emphasise>tdb</emphasise> database, like many other +parts of Samba. As its origins are in Berkeley DB implementation, it +uses key/value pairs stored in binary file. The values gencache +operates on are string-based, however. This makes very easy to use it +in command line environment eg. to quickly take a look at what's in +the cache or set some value. +</para> + +<para> +All the data is stored in <filename>gencache.tdb</filename> +file. Records put there are in key/value format as mentioned below, +but as it's a cache, the timeout plays also important role and has a +special place in the key/value pair, as well as API. +</para> +</sect1> + + +<sect1> +<title>The data structure</title> +<para> +The record stored in <filename>gencache.tdb</filename> file consists +of the key, the value and the expiration timeout. While the first part +is stored completely independent from the others, the last two are +kept together. The form the record has is: +</para> + +<para><programlisting> +key: <string> +value: <12-digit timeout>/<string> +</programlisting></para> + +<para>The timeout part is the ASCII representation of +<emphasis>time_t</emphasis> value of the time when the cache entry +expires. Obviously the API, the programmer is provided with, hides this detail, +so that you don't have to care about checking it. Simply watch +carefully the return status of the function. +</para> +</sect1> + +<sect1> +<title>The API</title> + +<para><programlisting> +BOOL gencache_init() +</programlisting></para> + +<para>This is used to initialise to whole caching mechanism. It means +opening the file or creating it if non-existing. If it's already been +opened earlier, then the routine just does nothing and returns +<constant>true</constant>. If something goes wrong, say the user +doesn't have necessary rights, the function returns +<constant>false</constant>.</para> + +<para><programlisting> +BOOL gencache_shutdown() +</programlisting></para> + +<para>This is the proper way to close the cache file. It simply +returns <constant>true</constant> after successful closing file and +<constant>false</constant> upon a failure.</para> + +<para><programlisting> +BOOL gencache_set(const char* keystr, const char* value, time_t timeout) +</programlisting></para> + +<para>This is one of the most basic functions. What it allows you to +do is to set some particular cache entry. If the entry haven't +existed yet, the function will act just as it was "gencache_add" +function. If it's already been in the cache, the entry will be set to +the new value. In either case, the cache entry will be set with given +key, value and timeout. Thus it is comfortable way to just set the +entry and not care about the details.</para> + +<para><programlisting> +BOOL gencache_set_only(const char* keystr, const char* value, time_t timeout) +</programlisting></para> + +<para><programlisting> +BOOL gencache_del(const char* keystr) +</programlisting></para> + +<para><programlisting> +BOOL gencache_get(const char* keystr, char** valstr, time_t* timeout) +</programlisting></para> + +<para><programlisting> +void gencache_iterate(void (*fn)(const char* key, const char *value, time_t timeout, void* dptr), + void* data, const char* keystr_pattern) + +</programlisting></para> + +</sect1> + +</chapter> diff --git a/docs-xml/Samba-Developers-Guide/index.xml b/docs-xml/Samba-Developers-Guide/index.xml new file mode 100644 index 0000000..5126292 --- /dev/null +++ b/docs-xml/Samba-Developers-Guide/index.xml @@ -0,0 +1,99 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!DOCTYPE book PUBLIC "-//Samba-Team//DTD DocBook V4.2-Based Variant V1.0//EN" "http://www.samba.org/samba/DTD/samba-doc" [ +<!ATTLIST book + xmlns:xi CDATA #FIXED "http://www.w3.org/2003/XInclude"> +]> + +<book id="Samba-Developers-Guide" + xmlns:xi="http://www.w3.org/2003/XInclude"> + +<title>SAMBA Developers Guide</title> + +<bookinfo> +<authorgroup> + <editor>&person.jelmer;</editor> +</authorgroup> + +<abstract> +<para> +<emphasis>Last Update</emphasis> : Fri Oct 10 00:59:58 CEST 2003 +</para> + +<para> +This book is a collection of documents that might be useful for +people developing samba or those interested in doing so. +It's nothing more than a collection of documents written by samba developers about +the internals of various parts of samba and the SMB protocol. It's still (and will always be) incomplete. +The most recent version of this document +can be found at <ulink url="http://devel.samba.org/">http://devel.samba.org/</ulink>. +</para> + +<para> +This documentation is distributed under the GNU General Public License (GPL) +version 2. A copy of the license is included with the Samba source +distribution. A copy can be found on-line at <ulink +url="http://www.fsf.org/licenses/gpl.txt">http://www.fsf.org/licenses/gpl.txt</ulink> +</para> + +<para><warning> + This document is incomplete and unmaintained. It is merely a + collection of development-related notes. +</warning></para> + +</abstract> + +</bookinfo> + +<xi:include href="../Samba-Developers-Guide-attributions.xml"> + <xi:fallback/> +</xi:include> + +<?latex \cleardoublepage ?> + +<!-- Contents --> +<toc/> + +<?latex \pagenumbering{arabic} ?> +<!-- Chapters --> +<part> + <title>The protocol</title> + + <xi:include href="unix-smb.xml"/> + <xi:include href="cifsntdomain.xml"/> + +</part> + +<part> + <title>Samba Basics</title> + + <xi:include href="architecture.xml"/> + <xi:include href="debug.xml"/> + <xi:include href="internals.xml"/> + <xi:include href="CodingSuggestions.xml"/> + <xi:include href="contributing.xml"/> + <xi:include href="modules.xml"/> +</part> + +<part> + <title>Samba Subsystems</title> + + <xi:include href="rpc_plugin.xml"/> + <xi:include href="vfs.xml"/> + <xi:include href="parsing.xml"/> + <xi:include href="wins.xml"/> + <xi:include href="encryption.xml"/> + +</part> + +<part> + <title>Debugging and tracing</title> + + <xi:include href="Tracing.xml"/> + <xi:include href="printing.xml"/> +</part> + +<part><title>Appendices</title> + <xi:include href="packagers.xml"/> +</part> + +</book> diff --git a/docs-xml/Samba-Developers-Guide/internals.xml b/docs-xml/Samba-Developers-Guide/internals.xml new file mode 100644 index 0000000..a2c819c --- /dev/null +++ b/docs-xml/Samba-Developers-Guide/internals.xml @@ -0,0 +1,442 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!DOCTYPE chapter PUBLIC "-//Samba-Team//DTD DocBook V4.2-Based Variant V1.0//EN" "http://www.samba.org/samba/DTD/samba-doc"> +<chapter id="internals"> +<chapterinfo> + <author> + <firstname>David</firstname><surname>Chappell</surname> + <affiliation> + <address><email>David.Chappell@mail.trincoll.edu</email></address> + </affiliation> + </author> + <pubdate>8 May 1996</pubdate> +</chapterinfo> + +<title>Samba Internals</title> + +<sect1> +<title>Character Handling</title> +<para> +This section describes character set handling in Samba, as implemented in +Samba 3.0 and above +</para> + +<para> +In the past Samba had very ad-hoc character set handling. Scattered +throughout the code were numerous calls which converted particular +strings to/from DOS codepages. The problem is that there was no way of +telling if a particular char* is in dos codepage or unix +codepage. This led to a nightmare of code that tried to cope with +particular cases without handlingt the general case. +</para> +</sect1> + +<sect1> +<title>The new functions</title> + +<para> +The new system works like this: +</para> + +<orderedlist> +<listitem><para> + all char* strings inside Samba are "unix" strings. These are + multi-byte strings that are in the charset defined by the "unix + charset" option in smb.conf. +</para></listitem> + +<listitem><para> + there is no single fixed character set for unix strings, but any + character set that is used does need the following properties: + </para> + <orderedlist> + + <listitem><para> + must not contain NULLs except for termination + </para></listitem> + + <listitem><para> + must be 7-bit compatible with C strings, so that a constant + string or character in C will be byte-for-byte identical to the + equivalent string in the chosen character set. + </para></listitem> + + <listitem><para> + when you uppercase or lowercase a string it does not become + longer than the original string + </para></listitem> + + <listitem><para> + must be able to correctly hold all characters that your client + will throw at it + </para></listitem> + </orderedlist> + + <para> + For example, UTF-8 is fine, and most multi-byte asian character sets + are fine, but UCS2 could not be used for unix strings as they + contain nulls. + </para> +</listitem> + +<listitem><para> + when you need to put a string into a buffer that will be sent on the + wire, or you need a string in a character set format that is + compatible with the clients character set then you need to use a + pull_ or push_ function. The pull_ functions pull a string from a + wire buffer into a (multi-byte) unix string. The push_ functions + push a string out to a wire buffer. +</para></listitem> + +<listitem><para> + the two main pull_ and push_ functions you need to understand are + pull_string and push_string. These functions take a base pointer + that should point at the start of the SMB packet that the string is + in. The functions will check the flags field in this packet to + automatically determine if the packet is marked as a unicode packet, + and they will choose whether to use unicode for this string based on + that flag. You may also force this decision using the STR_UNICODE or + STR_ASCII flags. For use in smbd/ and libsmb/ there are wrapper + functions clistr_ and srvstr_ that call the pull_/push_ functions + with the appropriate first argument. + </para> + + <para> + You may also call the pull_ascii/pull_ucs2 or push_ascii/push_ucs2 + functions if you know that a particular string is ascii or + unicode. There are also a number of other convenience functions in + charcnv.c that call the pull_/push_ functions with particularly + common arguments, such as pull_ascii_pstring() + </para> +</listitem> + +<listitem><para> + The biggest thing to remember is that internal (unix) strings in Samba + may now contain multi-byte characters. This means you cannot assume + that characters are always 1 byte long. Often this means that you will + have to convert strings to ucs2 and back again in order to do some + (seemingly) simple task. For examples of how to do this see functions + like strchr_m(). I know this is very slow, and we will eventually + speed it up but right now we want this stuff correct not fast. +</para></listitem> + +<listitem><para> + all lp_ functions now return unix strings. The magic "DOS" flag on + parameters is gone. +</para></listitem> + +<listitem><para> + all vfs functions take unix strings. Don't convert when passing to them +</para></listitem> + +</orderedlist> + +</sect1> + +<sect1> +<title>Macros in byteorder.h</title> + +<para> +This section describes the macros defined in byteorder.h. These macros +are used extensively in the Samba code. +</para> + +<sect2> +<title>CVAL(buf,pos)</title> + +<para> +returns the byte at offset pos within buffer buf as an unsigned character. +</para> +</sect2> + +<sect2> +<title>PVAL(buf,pos)</title> +<para>returns the value of CVAL(buf,pos) cast to type unsigned integer.</para> +</sect2> + +<sect2> +<title>SCVAL(buf,pos,val)</title> +<para>sets the byte at offset pos within buffer buf to value val.</para> +</sect2> + +<sect2> +<title>SVAL(buf,pos)</title> +<para> + returns the value of the unsigned short (16 bit) little-endian integer at + offset pos within buffer buf. An integer of this type is sometimes + refered to as "USHORT". +</para> +</sect2> + +<sect2> +<title>IVAL(buf,pos)</title> +<para>returns the value of the unsigned 32 bit little-endian integer at offset +pos within buffer buf.</para> +</sect2> + +<sect2> +<title>SVALS(buf,pos)</title> +<para>returns the value of the signed short (16 bit) little-endian integer at +offset pos within buffer buf.</para> +</sect2> + +<sect2> +<title>IVALS(buf,pos)</title> +<para>returns the value of the signed 32 bit little-endian integer at offset pos +within buffer buf.</para> +</sect2> + +<sect2> +<title>SSVAL(buf,pos,val)</title> +<para>sets the unsigned short (16 bit) little-endian integer at offset pos within +buffer buf to value val.</para> +</sect2> + +<sect2> +<title>SIVAL(buf,pos,val)</title> +<para>sets the unsigned 32 bit little-endian integer at offset pos within buffer +buf to the value val.</para> +</sect2> + +<sect2> +<title>SSVALS(buf,pos,val)</title> +<para>sets the short (16 bit) signed little-endian integer at offset pos within +buffer buf to the value val.</para> +</sect2> + +<sect2> +<title>SIVALS(buf,pos,val)</title> +<para>sets the signed 32 bit little-endian integer at offset pos within buffer +buf to the value val.</para> +</sect2> + +<sect2> +<title>RSVAL(buf,pos)</title> +<para>returns the value of the unsigned short (16 bit) big-endian integer at +offset pos within buffer buf.</para> +</sect2> + +<sect2> +<title>RIVAL(buf,pos)</title> +<para>returns the value of the unsigned 32 bit big-endian integer at offset +pos within buffer buf.</para> +</sect2> + +<sect2> +<title>RSSVAL(buf,pos,val)</title> +<para>sets the value of the unsigned short (16 bit) big-endian integer at +offset pos within buffer buf to value val. +refered to as "USHORT".</para> +</sect2> + +<sect2> +<title>RSIVAL(buf,pos,val)</title> +<para>sets the value of the unsigned 32 bit big-endian integer at offset +pos within buffer buf to value val.</para> +</sect2> + +</sect1> + + +<sect1> +<title>LAN Manager Samba API</title> + +<para> +This section describes the functions need to make a LAN Manager RPC call. +This information had been obtained by examining the Samba code and the LAN +Manager 2.0 API documentation. It should not be considered entirely +reliable. +</para> + +<para> +<programlisting> +call_api(int prcnt, int drcnt, int mprcnt, int mdrcnt, + char *param, char *data, char **rparam, char **rdata); +</programlisting> +</para> + +<para> +This function is defined in client.c. It uses an SMB transaction to call a +remote api. +</para> + +<sect2> +<title>Parameters</title> + +<para>The parameters are as follows:</para> + +<orderedlist> +<listitem><para> + prcnt: the number of bytes of parameters begin sent. +</para></listitem> +<listitem><para> + drcnt: the number of bytes of data begin sent. +</para></listitem> +<listitem><para> + mprcnt: the maximum number of bytes of parameters which should be returned +</para></listitem> +<listitem><para> + mdrcnt: the maximum number of bytes of data which should be returned +</para></listitem> +<listitem><para> + param: a pointer to the parameters to be sent. +</para></listitem> +<listitem><para> + data: a pointer to the data to be sent. +</para></listitem> +<listitem><para> + rparam: a pointer to a pointer which will be set to point to the returned + parameters. The caller of call_api() must deallocate this memory. +</para></listitem> +<listitem><para> + rdata: a pointer to a pointer which will be set to point to the returned + data. The caller of call_api() must deallocate this memory. +</para></listitem> +</orderedlist> + +<para> +These are the parameters which you ought to send, in the order of their +appearance in the parameter block: +</para> + +<orderedlist> + +<listitem><para> +An unsigned 16 bit integer API number. You should set this value with +SSVAL(). I do not know where these numbers are described. +</para></listitem> + +<listitem><para> +An ASCIIZ string describing the parameters to the API function as defined +in the LAN Manager documentation. The first parameter, which is the server +name, is omitted. This string is based upon the API function as described +in the manual, not the data which is actually passed. +</para></listitem> + +<listitem><para> +An ASCIIZ string describing the data structure which ought to be returned. +</para></listitem> + +<listitem><para> +Any parameters which appear in the function call, as defined in the LAN +Manager API documentation, after the "Server" and up to and including the +"uLevel" parameters. +</para></listitem> + +<listitem><para> +An unsigned 16 bit integer which gives the size in bytes of the buffer we +will use to receive the returned array of data structures. Presumably this +should be the same as mdrcnt. This value should be set with SSVAL(). +</para></listitem> + +<listitem><para> +An ASCIIZ string describing substructures which should be returned. If no +substructures apply, this string is of zero length. +</para></listitem> + +</orderedlist> + +<para> +The code in client.c always calls call_api() with no data. It is unclear +when a non-zero length data buffer would be sent. +</para> + +</sect2> + +<sect2> +<title>Return value</title> + +<para> +The returned parameters (pointed to by rparam), in their order of appearance +are:</para> + +<orderedlist> + +<listitem><para> +An unsigned 16 bit integer which contains the API function's return code. +This value should be read with SVAL(). +</para></listitem> + +<listitem><para> +An adjustment which tells the amount by which pointers in the returned +data should be adjusted. This value should be read with SVAL(). Basically, +the address of the start of the returned data buffer should have the returned +pointer value added to it and then have this value subtracted from it in +order to obtain the currect offset into the returned data buffer. +</para></listitem> + +<listitem><para> +A count of the number of elements in the array of structures returned. +It is also possible that this may sometimes be the number of bytes returned. +</para></listitem> +</orderedlist> + +<para> +When call_api() returns, rparam points to the returned parameters. The +first if these is the result code. It will be zero if the API call +succeeded. This value by be read with "SVAL(rparam,0)". +</para> + +<para> +The second parameter may be read as "SVAL(rparam,2)". It is a 16 bit offset +which indicates what the base address of the returned data buffer was when +it was built on the server. It should be used to correct pointer before +use. +</para> + +<para> +The returned data buffer contains the array of returned data structures. +Note that all pointers must be adjusted before use. The function +fix_char_ptr() in client.c can be used for this purpose. +</para> + +<para> +The third parameter (which may be read as "SVAL(rparam,4)") has something to +do with indicating the amount of data returned or possibly the amount of +data which can be returned if enough buffer space is allowed. +</para> + +</sect2> +</sect1> + +<sect1> +<title>Code character table</title> +<para> +Certain data structures are described by means of ASCIIz strings containing +code characters. These are the code characters: +</para> + +<orderedlist> +<listitem><para> +W a type byte little-endian unsigned integer +</para></listitem> +<listitem><para> +N a count of substructures which follow +</para></listitem> +<listitem><para> +D a four byte little-endian unsigned integer +</para></listitem> +<listitem><para> +B a byte (with optional count expressed as trailing ASCII digits) +</para></listitem> +<listitem><para> +z a four byte offset to a NULL terminated string +</para></listitem> +<listitem><para> +l a four byte offset to non-string user data +</para></listitem> +<listitem><para> +b an offset to data (with count expressed as trailing ASCII digits) +</para></listitem> +<listitem><para> +r pointer to returned data buffer??? +</para></listitem> +<listitem><para> +L length in bytes of returned data buffer??? +</para></listitem> +<listitem><para> +h number of bytes of information available??? +</para></listitem> +</orderedlist> + +</sect1> +</chapter> diff --git a/docs-xml/Samba-Developers-Guide/modules.xml b/docs-xml/Samba-Developers-Guide/modules.xml new file mode 100644 index 0000000..24f326c --- /dev/null +++ b/docs-xml/Samba-Developers-Guide/modules.xml @@ -0,0 +1,176 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!DOCTYPE chapter PUBLIC "-//Samba-Team//DTD DocBook V4.2-Based Variant V1.0//EN" "http://www.samba.org/samba/DTD/samba-doc"> +<chapter id="modules"> +<chapterinfo> + <author> + <firstname>Jelmer</firstname><surname>Vernooij</surname> + <affiliation> + <orgname>Samba Team</orgname> + <address><email>jelmer@samba.org</email></address> + </affiliation> + </author> + <pubdate> 19 March 2003 </pubdate> +</chapterinfo> + +<title>Modules</title> + +<sect1> +<title>Advantages</title> + +<para> +The new modules system has the following advantages: +</para> + +<simplelist> +<member>Transparent loading of static and shared modules (no need +for a subsystem to know about modules)</member> +<member>Simple selection between shared and static modules at configure time</member> +<member>"preload modules" option for increasing performance for stable modules</member> +<member>No nasty #define stuff anymore</member> +<member>All backends are available as plugin now (including pdb_ldap and pdb_tdb)</member> +</simplelist> +</sect1> + +<sect1> +<title>Loading modules</title> + +<para> +Some subsystems in samba use different backends. These backends can be +either statically linked in to samba or available as a plugin. A subsystem +should have a function that allows a module to register itself. For example, +the passdb subsystem has: +</para> + +<para><programlisting> +NTSTATUS smb_register_passdb(int version, const char *name, pdb_init_function init); +</programlisting></para> + +<para> +This function will be called by the initialisation function of the module to +register itself. +</para> + +<sect2> +<title>Static modules</title> + +<para> +The modules system compiles a list of initialisation functions for the +static modules of each subsystem. This is a define. For example, +it is here currently (from <filename>include/config.h</filename>): +</para> + +<para><programlisting> +/* Static init functions */ +#define static_init_pdb { pdb_mysql_init(); pdb_ldap_init(); pdb_smbpasswd_init(); pdb_tdbsam_init(); pdb_guest_init();} +</programlisting></para> + +<para> +These functions should be called before the subsystem is used. That +should be done when the subsystem is initialised or first used. +</para> + +</sect2> + +<sect2> +<title>Shared modules</title> + +<para> +If a subsystem needs a certain backend, it should check if it has +already been registered. If the backend hasn't been registered already, +the subsystem should call smb_probe_module(char *subsystem, char *backend). +This function tries to load the correct module from a certain path +($LIBDIR/subsystem/backend.so). If the first character in 'backend' +is a slash, smb_probe_module() tries to load the module from the +absolute path specified in 'backend'. +</para> + +<para>After smb_probe_module() has been executed, the subsystem +should check again if the module has been registered. +</para> + +</sect2> +</sect1> + +<sect1> +<title>Writing modules</title> + +<para> +Each module has an initialisation function. For modules that are +included with samba this name is '<replaceable>subsystem</replaceable>_<replaceable>backend</replaceable>_init'. For external modules (that will never be built-in, but only available as a module) this name is always 'init_module'. (In the case of modules included with samba, the configure system will add a #define subsystem_backend_init() init_module()). +The prototype for these functions is: +</para> + +<para><programlisting> +NTSTATUS init_module(TALLOC_CTX *); +</programlisting></para> + +<para>This function should call one or more +registration functions. The function should return NT_STATUS_OK on success and +NT_STATUS_UNSUCCESSFUL or a more useful nt error code on failure.</para> + +<para>For example, pdb_ldap_init() contains: </para> + +<para><programlisting> +NTSTATUS pdb_ldap_init(TALLOC_CTX *) +{ +smb_register_passdb(PASSDB_INTERFACE_VERSION, "ldapsam", pdb_init_ldapsam); +smb_register_passdb(PASSDB_INTERFACE_VERSION, "ldapsam_nua", pdb_init_ldapsam_nua); + return NT_STATUS_OK; +} +</programlisting></para> + +<para> +The TALLOC_CTX pointer passed as a parameter must be a long-lived context, +that will stay around for as long as the program that loads the module +exists. It allows the caller to taloc_free any long lived data the +module choses to place on this context on program exit (giving a cleaner +valgrind trace). It should be used by modules in place of talloc_autofree_context(), +use of which makes programs thread-unsafe. Modules that don't care about +free on exist should use the NULL talloc context. +</para> + +<sect2> +<title>Static/Shared selection in configure.in</title> + +<para> +Some macros in configure.in generate the various defines and substs that +are necessary for the system to work correct. All modules that should +be built by default have to be added to the variable 'default_modules'. +For example, if ldap is found, pdb_ldap is added to this variable. +</para> + +<para> +On the bottom of configure.in, SMB_MODULE() should be called +for each module and SMB_SUBSYSTEM() for each subsystem. +</para> + +<para>Syntax:</para> + +<para><programlisting> +SMB_MODULE(<replaceable>subsystem</replaceable>_<replaceable>backend</replaceable>, <replaceable>object files</replaceable>, <replaceable>plugin name</replaceable>, <replaceable>subsystem name</replaceable>, <replaceable>static_action</replaceable>, <replaceable>shared_action</replaceable>) +SMB_SUBSYSTEM(<replaceable>subsystem</replaceable>,<replaceable>depfile</replaceable>) +</programlisting></para> + +<para>The depfile for a certain subsystem is the file that calls the +initialisation functions for the statically built in modules.</para> + +<para> +<replaceable>@SUBSYSTEM_MODULES@</replaceable> in Makefile.in will +be replaced with the names of the plugins to build. +</para> + +<para>You must make sure all .c files that contain defines that can +be changed by ./configure are rebuilt in the 'modules_clean' make target. +Practically, this means all c files that contain <command>static_init_subsystem;</command> calls need to be rebuilt. +</para> + +<note> +<para> +There currently also is a configure.in command called SMB_MODULE_PROVIVES(). +This is used for modules that register multiple things. It should not +be used as probing will most likely disappear in the future.</para> +</note> + +</sect2> +</sect1> +</chapter> diff --git a/docs-xml/Samba-Developers-Guide/packagers.xml b/docs-xml/Samba-Developers-Guide/packagers.xml new file mode 100644 index 0000000..292b602 --- /dev/null +++ b/docs-xml/Samba-Developers-Guide/packagers.xml @@ -0,0 +1,54 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!DOCTYPE chapter PUBLIC "-//Samba-Team//DTD DocBook V4.2-Based Variant V1.0//EN" "http://www.samba.org/samba/DTD/samba-doc"> +<chapter id="Packaging"> +<chapterinfo> + <author> + <firstname>Jelmer</firstname><surname>Vernooij</surname> + </author> +</chapterinfo> + +<title>Notes to packagers</title> + +<sect1> +<title>Versioning</title> + +<para> +Please, please set the vendor version suffix and number in <filename>source/VERSION</filename> and call +<filename>source/script/mkvesion.sh</filename> to include the versioning of your package. There is also +the possibility to set a function to create the vendor version. This makes it easier to distinguish +standard samba builds from custom-build samba builds (distributions often patch packages). For example, +a good version would be: +</para> + +<para><programlisting> +Version 2.999+3.0.alpha21-5 for Debian +</programlisting></para> + +</sect1> + +<sect1> +<title>Modules</title> + +<para> +Samba has support for building parts of samba as plugins. This makes it possible to, for example, +put ldap or mysql support in a separate package, thus making it possible to have a normal samba package not +depending on ldap or mysql. To build as much parts of samba as a plugin, run: +</para> + +<para> +The configure option <literal>--with-shared-modules</literal> is provided to +enable or disable specific modules such as idmap_XXX and vfs_XXX. For example, +<literal>--with-shared-modules=idmap_ad</literal>. Disabled modules are +prefixed with a '!'. E.g. <literal>--with-shared-modules='!idmap_ad'</literal>. +</para> + +<para> +<programlisting> +./configure --with-shared-modules=rpc,vfs,auth,pdb,charset +</programlisting> +</para> + +</sect1> + + +</chapter> diff --git a/docs-xml/Samba-Developers-Guide/parsing.xml b/docs-xml/Samba-Developers-Guide/parsing.xml new file mode 100644 index 0000000..c6daf35 --- /dev/null +++ b/docs-xml/Samba-Developers-Guide/parsing.xml @@ -0,0 +1,241 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!DOCTYPE chapter PUBLIC "-//Samba-Team//DTD DocBook V4.2-Based Variant V1.0//EN" "http://www.samba.org/samba/DTD/samba-doc"> +<chapter id="parsing"> +<chapterinfo> + <author> + <firstname>Chris</firstname><surname>Hertel</surname> + </author> + <pubdate>November 1997</pubdate> +</chapterinfo> + +<title>The smb.conf file</title> + +<sect1> +<title>Lexical Analysis</title> + +<para> +Basically, the file is processed on a line by line basis. There are +four types of lines that are recognized by the lexical analyzer +(params.c): +</para> + +<orderedlist> +<listitem><para> +Blank lines - Lines containing only whitespace. +</para></listitem> +<listitem><para> +Comment lines - Lines beginning with either a semi-colon or a +pound sign (';' or '#'). +</para></listitem> +<listitem><para> +Section header lines - Lines beginning with an open square bracket ('['). +</para></listitem> +<listitem><para> +Parameter lines - Lines beginning with any other character. +(The default line type.) +</para></listitem> +</orderedlist> + +<para> +The first two are handled exclusively by the lexical analyzer, which +ignores them. The latter two line types are scanned for +</para> + +<orderedlist> +<listitem><para> + - Section names +</para></listitem> +<listitem><para> + - Parameter names +</para></listitem> +<listitem><para> + - Parameter values +</para></listitem> +</orderedlist> + +<para> +These are the only tokens passed to the parameter loader +(loadparm.c). Parameter names and values are divided from one +another by an equal sign: '='. +</para> + +<sect2> +<title>Handling of Whitespace</title> + +<para> +Whitespace is defined as all characters recognized by the isspace() +function (see ctype(3C)) except for the newline character ('\n') +The newline is excluded because it identifies the end of the line. +</para> + +<orderedlist> +<listitem><para> +The lexical analyzer scans past white space at the beginning of a line. +</para></listitem> + +<listitem><para> +Section and parameter names may contain internal white space. All +whitespace within a name is compressed to a single space character. +</para></listitem> + +<listitem><para> +Internal whitespace within a parameter value is kept verbatim with +the exception of carriage return characters ('\r'), all of which +are removed. +</para></listitem> + +<listitem><para> +Leading and trailing whitespace is removed from names and values. +</para></listitem> + +</orderedlist> + +</sect2> + +<sect2> +<title>Handling of Line Continuation</title> + +<para> +Long section header and parameter lines may be extended across +multiple lines by use of the backslash character ('\\'). Line +continuation is ignored for blank and comment lines. +</para> + +<para> +If the last (non-whitespace) character within a section header or on +a parameter line is a backslash, then the next line will be +(logically) concatenated with the current line by the lexical +analyzer. For example: +</para> + +<para><programlisting> + param name = parameter value string \ + with line continuation. +</programlisting></para> + +<para>Would be read as</para> + +<para><programlisting> + param name = parameter value string with line continuation. +</programlisting></para> + +<para> +Note that there are five spaces following the word 'string', +representing the one space between 'string' and '\\' in the top +line, plus the four preceding the word 'with' in the second line. +(Yes, I'm counting the indentation.) +</para> + +<para> +Line continuation characters are ignored on blank lines and at the end +of comments. They are *only* recognized within section and parameter +lines. +</para> + +</sect2> + +<sect2> +<title>Line Continuation Quirks</title> + +<para>Note the following example:</para> + +<para><programlisting> + param name = parameter value string \ + \ + with line continuation. +</programlisting></para> + +<para> +The middle line is *not* parsed as a blank line because it is first +concatenated with the top line. The result is +</para> + +<para><programlisting> +param name = parameter value string with line continuation. +</programlisting></para> + +<para>The same is true for comment lines.</para> + +<para><programlisting> + param name = parameter value string \ + ; comment \ + with a comment. +</programlisting></para> + +<para>This becomes:</para> + +<para><programlisting> +param name = parameter value string ; comment with a comment. +</programlisting></para> + +<para> +On a section header line, the closing bracket (']') is considered a +terminating character, and the rest of the line is ignored. The lines +</para> + +<para><programlisting> + [ section name ] garbage \ + param name = value +</programlisting></para> + +<para>are read as</para> + +<para><programlisting> + [section name] + param name = value +</programlisting></para> + +</sect2> +</sect1> + +<sect1> +<title>Syntax</title> + +<para>The syntax of the smb.conf file is as follows:</para> + +<para><programlisting> + <file> :== { <section> } EOF + <section> :== <section header> { <parameter line> } + <section header> :== '[' NAME ']' + <parameter line> :== NAME '=' VALUE NL +</programlisting></para> + +<para>Basically, this means that</para> + +<orderedlist> +<listitem><para> + a file is made up of zero or more sections, and is terminated by + an EOF (we knew that). +</para></listitem> + +<listitem><para> + A section is made up of a section header followed by zero or more + parameter lines. +</para></listitem> + +<listitem><para> + A section header is identified by an opening bracket and + terminated by the closing bracket. The enclosed NAME identifies + the section. +</para></listitem> + +<listitem><para> + A parameter line is divided into a NAME and a VALUE. The *first* + equal sign on the line separates the NAME from the VALUE. The + VALUE is terminated by a newline character (NL = '\n'). +</para></listitem> + +</orderedlist> + +<sect2> +<title>About params.c</title> + +<para> +The parsing of the config file is a bit unusual if you are used to +lex, yacc, bison, etc. Both lexical analysis (scanning) and parsing +are performed by params.c. Values are loaded via callbacks to +loadparm.c. +</para> +</sect2> +</sect1> +</chapter> diff --git a/docs-xml/Samba-Developers-Guide/printing.xml b/docs-xml/Samba-Developers-Guide/printing.xml new file mode 100644 index 0000000..05bc8a8 --- /dev/null +++ b/docs-xml/Samba-Developers-Guide/printing.xml @@ -0,0 +1,395 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!DOCTYPE chapter PUBLIC "-//Samba-Team//DTD DocBook V4.2-Based Variant V1.0//EN" "http://www.samba.org/samba/DTD/samba-doc"> +<chapter id="devprinting"> +<chapterinfo> + <author> + <firstname>Gerald</firstname><surname>Carter</surname> + </author> + <pubdate>October 2002</pubdate> +</chapterinfo> + + +<title>Samba Printing Internals</title> + + +<sect1> +<title>Abstract</title> +<para> +The purpose of this document is to provide some insight into +Samba's printing functionality and also to describe the semantics +of certain features of Windows client printing. +</para> +</sect1> + + + +<sect1> +<title> +Printing Interface to Various Back ends +</title> + +<para> +Samba uses a table of function pointers to seven functions. The +function prototypes are defined in the <varname>printif</varname> structure declared +in <filename>printing.h</filename>. +</para> + +<itemizedlist> + <listitem><para>retrieve the contents of a print queue</para></listitem> + <listitem><para>pause the print queue</para></listitem> + <listitem><para>resume a paused print queue</para></listitem> + <listitem><para>delete a job from the queue</para></listitem> + <listitem><para>pause a job in the print queue</para></listitem> + <listitem><para>result a paused print job in the queue</para></listitem> + <listitem><para>submit a job to the print queue</para></listitem> +</itemizedlist> + +<para> +Currently there are only two printing back end implementations +defined. +</para> + +<itemizedlist> + <listitem><para>a generic set of functions for working with standard UNIX + printing subsystems</para></listitem> + + <listitem><para>a set of CUPS specific functions (this is only enabled if + the CUPS libraries were located at compile time).</para></listitem> +</itemizedlist> + +</sect1> + + + + +<sect1> +<title> +Print Queue TDB's +</title> + + +<para> +Samba provides periodic caching of the output from the "lpq command" +for performance reasons. This cache time is configurable in seconds. +Obviously the longer the cache time the less often smbd will be +required to exec a copy of lpq. However, the accuracy of the print +queue contents displayed to clients will be diminished as well. +</para> + +<para> +The list of currently opened print queue TDB's can be found +be examining the list of tdb_print_db structures ( see print_db_head +in printing.c ). A queue TDB is opened using the wrapper function +printing.c:get_print_db_byname(). The function ensures that smbd +does not open more than MAX_PRINT_DBS_OPEN in an effort to prevent +a large print server from exhausting all available file descriptors. +If the number of open queue TDB's exceeds the MAX_PRINT_DBS_OPEN +limit, smbd falls back to a most recently used algorithm for maintaining +a list of open TDB's. +</para> + +<para> +There are two ways in which a a print job can be entered into +a print queue's TDB. The first is to submit the job from a Windows +client which will insert the job information directly into the TDB. +The second method is to have the print job picked up by executing the +"lpq command". +</para> + +<para><programlisting> +/* included from printing.h */ +struct printjob { + pid_t pid; /* which process launched the job */ + int sysjob; /* the system (lp) job number */ + int fd; /* file descriptor of open file if open */ + time_t starttime; /* when the job started spooling */ + int status; /* the status of this job */ + size_t size; /* the size of the job so far */ + int page_count; /* then number of pages so far */ + BOOL spooled; /* has it been sent to the spooler yet? */ + BOOL smbjob; /* set if the job is a SMB job */ + fstring filename; /* the filename used to spool the file */ + fstring jobname; /* the job name given to us by the client */ + fstring user; /* the user who started the job */ + fstring queuename; /* service number of printer for this job */ + NT_DEVICEMODE *nt_devmode; +}; +</programlisting></para> + +<para> +The current manifestation of the printjob structure contains a field +for the UNIX job id returned from the "lpq command" and a Windows job +ID (32-bit bounded by PRINT_MAX_JOBID). When a print job is returned +by the "lpq command" that does not match an existing job in the queue's +TDB, a 32-bit job ID above the <*vance doesn't know what word is missing here*> is generating by adding UNIX_JOB_START to +the id reported by lpq. +</para> + +<para> +In order to match a 32-bit Windows jobid onto a 16-bit lanman print job +id, smbd uses an in memory TDB to match the former to a number appropriate +for old lanman clients. +</para> + +<para> +When updating a print queue, smbd will perform the following +steps ( refer to <filename>print.c:print_queue_update()</filename> ): +</para> + +<orderedlist> + <listitem><para>Check to see if another smbd is currently in + the process of updating the queue contents by checking the pid + stored in <constant>LOCK/<replaceable>printer_name</replaceable></constant>. + If so, then do not update the TDB.</para></listitem> + + <listitem><para>Lock the mutex entry in the TDB and store our own pid. + Check that this succeeded, else fail.</para></listitem> + + <listitem><para>Store the updated time stamp for the new cache + listing</para></listitem> + + <listitem><para>Retrieve the queue listing via "lpq command"</para></listitem> + + <listitem><para><programlisting> + foreach job in the queue + { + if the job is a UNIX job, create a new entry; + if the job has a Windows based jobid, then + { + Lookup the record by the jobid; + if the lookup failed, then + treat it as a UNIX job; + else + update the job status only + } + }</programlisting></para></listitem> + + <listitem><para>Delete any jobs in the TDB that are not + in the in the lpq listing</para></listitem> + + <listitem><para>Store the print queue status in the TDB</para></listitem> + + <listitem><para>update the cache time stamp again</para></listitem> + +</orderedlist> + +<para> +Note that it is the contents of this TDB that is returned to Windows +clients and not the actual listing from the "lpq command". +</para> + +<para> +The NT_DEVICEMODE stored as part of the printjob structure is used to +store a pointer to a non-default DeviceMode associated with the print +job. The pointer will be non-null when the client included a Device +Mode in the OpenPrinterEx() call and subsequently submitted a job for +printing on that same handle. If the client did not include a Device +Mode in the OpenPrinterEx() request, the nt_devmode field is NULL +and the job has the printer's device mode associated with it by default. +</para> + +<para> +Only non-default Device Mode are stored with print jobs in the print +queue TDB. Otherwise, the Device Mode is obtained from the printer +object when the client issues a GetJob(level == 2) request. +</para> + +</sect1> + + + + +<sect1> +<title> +ChangeID and Client Caching of Printer Information +</title> + +<para> +[To be filled in later] +</para> +</sect1> + + + +<sect1> +<title> +Windows NT/2K Printer Change Notify +</title> + +<para> +When working with Windows NT+ clients, it is possible for a +print server to use RPC to send asynchronous change notification +events to clients for certain printer and print job attributes. +This can be useful when the client needs to know that a new +job has been added to the queue for a given printer or that the +driver for a printer has been changed. Note that this is done +entirely orthogonal to cache updates based on a new ChangeID for +a printer object. +</para> + +<para> +The basic set of RPC's used to implement change notification are +</para> + +<itemizedlist> + <listitem><para>RemoteFindFirstPrinterChangeNotifyEx ( RFFPCN )</para></listitem> + <listitem><para>RemoteFindNextPrinterChangeNotifyEx ( RFNPCN )</para></listitem> + <listitem><para>FindClosePrinterChangeNotify( FCPCN )</para></listitem> + <listitem><para>ReplyOpenPrinter</para></listitem> + <listitem><para>ReplyClosePrinter</para></listitem> + <listitem><para>RouteRefreshPrinterChangeNotify ( RRPCN )</para></listitem> +</itemizedlist> + +<para> +One additional RPC is available to a server, but is never used by the +Windows spooler service: +</para> + +<itemizedlist> + <listitem><para>RouteReplyPrinter()</para></listitem> +</itemizedlist> + +<para> +The opnum for all of these RPC's are defined in include/rpc_spoolss.h +</para> + +<para> +Windows NT print servers use a bizarre method of sending print +notification event to clients. The process of registering a new change +notification handle is as follows. The 'C' is for client and the +'S' is for server. All error conditions have been eliminated. +</para> + +<para><programlisting> +C: Obtain handle to printer or to the printer + server via the standard OpenPrinterEx() call. +S: Respond with a valid handle to object + +C: Send a RFFPCN request with the previously obtained + handle with either (a) set of flags for change events + to monitor, or (b) a PRINTER_NOTIFY_OPTIONS structure + containing the event information to monitor. The windows + spooler has only been observed to use (b). +S: The <* another missing word*> opens a new TCP session to the client (thus requiring + all print clients to be CIFS servers as well) and sends + a ReplyOpenPrinter() request to the client. +C: The client responds with a printer handle that can be used to + send event notification messages. +S: The server replies success to the RFFPCN request. + +C: The windows spooler follows the RFFPCN with a RFNPCN + request to fetch the current values of all monitored + attributes. +S: The server replies with an array SPOOL_NOTIFY_INFO_DATA + structures (contained in a SPOOL_NOTIFY_INFO structure). + +C: If the change notification handle is ever released by the + client via a FCPCN request, the server sends a ReplyClosePrinter() + request back to the client first. However a request of this + nature from the client is often an indication that the previous + notification event was not marshalled correctly by the server + or a piece of data was wrong. +S: The server closes the internal change notification handle + (POLICY_HND) and does not send any further change notification + events to the client for that printer or job. +</programlisting></para> + +<para> +The current list of notification events supported by Samba can be +found by examining the internal tables in srv_spoolss_nt.c +</para> + +<itemizedlist> + <listitem><para>printer_notify_table[]</para></listitem> + <listitem><para>job_notify_table[]</para></listitem> +</itemizedlist> + +<para> +When an event occurs that could be monitored, smbd sends a message +to itself about the change. The list of events to be transmitted +are queued by the smbd process sending the message to prevent an +overload of TDB usage and the internal message is sent during smbd's +idle loop (refer to printing/notify.c and the functions +send_spoolss_notify2_msg() and print_notify_send_messages() ). +</para> + +<para> +The decision of whether or not the change is to be sent to connected +clients is made by the routine which actually sends the notification. +( refer to srv_spoolss_nt.c:recieve_notify2_message() ). +</para> + +<para> +Because it possible to receive a listing of multiple changes for +multiple printers, the notification events must be split into +categories by the printer name. This makes it possible to group +multiple change events to be sent in a single RPC according to the +printer handle obtained via a ReplyOpenPrinter(). +</para> + +<para> +The actual change notification is performed using the RRPCN request +RPC. This packet contains +</para> + + +<itemizedlist> + +<listitem><para>the printer handle registered with the +client's spooler on which the change occurred</para></listitem> + +<listitem><para>The change_low value which was sent as part +of the last RFNPCN request from the client</para></listitem> + +<listitem><para>The SPOOL_NOTIFY_INFO container with the event +information</para></listitem> + +</itemizedlist> + +<para> +A <varname>SPOOL_NOTIFY_INFO</varname> contains: +</para> + +<itemizedlist> + +<listitem><para>the version and flags field are predefined +and should not be changed</para></listitem> + +<listitem><para>The count field is the number of entries +in the SPOOL_NOTIFY_INFO_DATA array</para></listitem> + +</itemizedlist> + +<para> +The <varname>SPOOL_NOTIFY_INFO_DATA</varname> entries contain: +</para> + +<itemizedlist> + +<listitem><para>The type defines whether or not this event +is for a printer or a print job</para></listitem> + +<listitem><para>The field is the flag identifying the event</para></listitem> + +<listitem><para>the notify_data union contains the new value of the +attribute</para></listitem> + +<listitem><para>The enc_type defines the size of the structure for marshalling +and unmarshalling</para></listitem> + +<listitem><para>(a) the id must be 0 for a printer event on a printer handle. +(b) the id must be the job id for an event on a printer job +(c) the id must be the matching number of the printer index used +in the response packet to the RFNPCN when using a print server +handle for notification. Samba currently uses the snum of +the printer for this which can break if the list of services +has been modified since the notification handle was registered.</para></listitem> + +<listitem><para>The size is either (a) the string length in UNICODE for strings, +(b) the size in bytes of the security descriptor, or (c) 0 for +data values.</para></listitem> + +</itemizedlist> + +</sect1> +</chapter> diff --git a/docs-xml/Samba-Developers-Guide/rpc_plugin.xml b/docs-xml/Samba-Developers-Guide/rpc_plugin.xml new file mode 100644 index 0000000..1992c57 --- /dev/null +++ b/docs-xml/Samba-Developers-Guide/rpc_plugin.xml @@ -0,0 +1,90 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!DOCTYPE chapter PUBLIC "-//Samba-Team//DTD DocBook V4.2-Based Variant V1.0//EN" "http://www.samba.org/samba/DTD/samba-doc"> +<chapter id="rpc-plugin"> +<chapterinfo> + <author> + <firstname>Anthony</firstname><surname>Liguori</surname> + <affiliation> + <orgname>IBM</orgname> + <address><email>aliguor@us.ibm.com</email></address> + </affiliation> + </author> + <author> + <firstname>Jelmer</firstname><surname>Vernooij</surname> + <affiliation> + <orgname>Samba Team</orgname> + <address><email>jelmer@samba.org</email></address> + </affiliation> + </author> + <pubdate>January 2003</pubdate> +</chapterinfo> + +<title>RPC Pluggable Modules</title> + +<sect1> +<title>About</title> + +<para> +This document describes how to make use the new RPC Pluggable Modules features +of Samba 3.0. This architecture was added to increase the maintainability of +Samba allowing RPC Pipes to be worked on separately from the main CVS branch. +The RPM architecture will also allow third-party vendors to add functionality +to Samba through plug-ins. +</para> + +</sect1> + +<sect1> +<title>General Overview</title> + +<para> +When an RPC call is sent to smbd, smbd tries to load a shared library by the +name <filename>librpc_<pipename>.so</filename> to handle the call if +it doesn't know how to handle the call internally. For instance, LSA calls +are handled by <filename>librpc_lsass.so</filename>.. +These shared libraries should be located in the <filename><sambaroot>/lib/rpc</filename>. smbd then attempts to call the init_module function within +the shared library. Check the chapter on modules for more information. +</para> + +<para> +In the init_module function, the library should call +rpc_pipe_register_commands(). This function takes the following arguments: +</para> + +<para><programlisting> +NTSTATUS rpc_pipe_register_commands(int version, const char *clnt, const char *srv, + const struct api_struct *cmds, int size); +</programlisting></para> + +<variablelist> + +<varlistentry><term>version</term> +<listitem><para>Version number of the RPC interface. Use the define <emphasis>SMB_RPC_INTERFACE_VERSION</emphasis> for this +argument.</para></listitem> +</varlistentry> + +<varlistentry><term>clnt</term> +<listitem><para>the Client name of the named pipe</para></listitem> +</varlistentry> + +<varlistentry><term>srv</term> +<listitem><para>the Server name of the named pipe</para></listitem> +</varlistentry> + +<varlistentry><term>cmds</term> +<listitem><para>a list of api_structs that map RPC ordinal numbers to function calls</para></listitem> +</varlistentry> + +<varlistentry><term>size</term> +<listitem><para>the number of api_structs contained in cmds</para></listitem> +</varlistentry> + +</variablelist> + +<para> +See rpc_server/srv_reg.c and rpc_server/srv_reg_nt.c for a small example of +how to use this library. +</para> + +</sect1> +</chapter> diff --git a/docs-xml/Samba-Developers-Guide/unix-smb.xml b/docs-xml/Samba-Developers-Guide/unix-smb.xml new file mode 100644 index 0000000..6b0db27 --- /dev/null +++ b/docs-xml/Samba-Developers-Guide/unix-smb.xml @@ -0,0 +1,316 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!DOCTYPE chapter PUBLIC "-//Samba-Team//DTD DocBook V4.2-Based Variant V1.0//EN" "http://www.samba.org/samba/DTD/samba-doc"> +<chapter id="unix-smb"> +<chapterinfo> + <author> + <firstname>Andrew</firstname><surname>Tridgell</surname> + </author> + <pubdate>April 1995</pubdate> +</chapterinfo> + +<title>NetBIOS in a Unix World</title> + +<sect1> +<title>Introduction</title> +<para> +This is a short document that describes some of the issues that +confront a SMB implementation on unix, and how Samba copes with +them. They may help people who are looking at unix<->PC +interoperability. +</para> + +<para> +It was written to help out a person who was writing a paper on unix to +PC connectivity. +</para> + +</sect1> + +<sect1> +<title>Usernames</title> +<para> +The SMB protocol has only a loose username concept. Early SMB +protocols (such as CORE and COREPLUS) have no username concept at +all. Even in later protocols clients often attempt operations +(particularly printer operations) without first validating a username +on the server. +</para> + +<para> +Unix security is based around username/password pairs. A unix box +should not allow clients to do any substantive operation without some +sort of validation. +</para> + +<para> +The problem mostly manifests itself when the unix server is in "share +level" security mode. This is the default mode as the alternative +"user level" security mode usually forces a client to connect to the +server as the same user for each connected share, which is +inconvenient in many sites. +</para> + +<para> +In "share level" security the client normally gives a username in the +"session setup" protocol, but does not supply an accompanying +password. The client then connects to resources using the "tree +connect" protocol, and supplies a password. The problem is that the +user on the PC types the username and the password in different +contexts, unaware that they need to go together to give access to the +server. The username is normally the one the user typed in when they +"logged onto" the PC (this assumes Windows for Workgroups). The +password is the one they chose when connecting to the disk or printer. +</para> + +<para> +The user often chooses a totally different username for their login as +for the drive connection. Often they also want to access different +drives as different usernames. The unix server needs some way of +divining the correct username to combine with each password. +</para> + +<para> +Samba tries to avoid this problem using several methods. These succeed +in the vast majority of cases. The methods include username maps, the +service%user syntax, the saving of session setup usernames for later +validation and the derivation of the username from the service name +(either directly or via the user= option). +</para> + +</sect1> + +<sect1> +<title>File Ownership</title> + +<para> +The commonly used SMB protocols have no way of saying "you can't do +that because you don't own the file". They have, in fact, no concept +of file ownership at all. +</para> + +<para> +This brings up all sorts of interesting problems. For example, when +you copy a file to a unix drive, and the file is world writeable but +owned by another user the file will transfer correctly but will +receive the wrong date. This is because the utime() call under unix +only succeeds for the owner of the file, or root, even if the file is +world writeable. For security reasons Samba does all file operations +as the validated user, not root, so the utime() fails. This can stuff +up shared development diectories as programs like "make" will not get +file time comparisons right. +</para> + +<para> +There are several possible solutions to this problem, including +username mapping, and forcing a specific username for particular +shares. +</para> + +</sect1> + +<sect1> +<title>Passwords</title> + +<para> +When plaintext passwords are used, very old SMB clients uppercase passwords before sending them. I have no +idea why they do this. Interestingly WfWg uppercases the password only +if the server is running a protocol greater than COREPLUS, so +obviously it isn't just the data entry routines that are to blame. +</para> + +<para> +Unix passwords are case sensitive. So if users use mixed case +passwords they are in trouble. +</para> + +<para>Samba will try an additional all lower cased password +authentication if it receives an all uppercase password. Samba used to +support an option called "password level" that would try to crack +password by trying all case permutations, but that option has been +removed. +</para> + +<para> +Samba supports the password encryption method used by SMB +clients. Note that the use of password encryption in Microsoft +networking leads to password hashes that are "plain text equivalent". +This means that it is *VERY* important to ensure that the Samba +smbpasswd file containing these password hashes is only readable +by the root user. See the documentation ENCRYPTION.txt for more +details. +</para> + +</sect1> + +<sect1> +<title>Locking</title> +<para> +Since samba 2.2, samba supports other types of locking as well. This +section is outdated. +</para> + +<para> +The locking calls available under a DOS/Windows environment are much +richer than those available in unix. This means a unix server (like +Samba) choosing to use the standard fcntl() based unix locking calls +to implement SMB locking has to improvise a bit. +</para> + +<para> +One major problem is that dos locks can be in a 32 bit (unsigned) +range. Unix locking calls are 32 bits, but are signed, giving only a 31 +bit range. Unfortunately OLE2 clients use the top bit to select a +locking range used for OLE semaphores. +</para> + +<para> +To work around this problem Samba compresses the 32 bit range into 31 +bits by appropriate bit shifting. This seems to work but is not +ideal. In a future version a separate SMB lockd may be added to cope +with the problem. +</para> + +<para> +It also doesn't help that many unix lockd daemons are very buggy and +crash at the slightest provocation. They normally go mostly unused in +a unix environment because few unix programs use byte range +locking. The stress of huge numbers of lock requests from dos/windows +clients can kill the daemon on some systems. +</para> + +<para> +The second major problem is the "opportunistic locking" requested by +some clients. If a client requests opportunistic locking then it is +asking the server to notify it if anyone else tries to do something on +the same file, at which time the client will say if it is willing to +give up its lock. Unix has no simple way of implementing +opportunistic locking, and currently Samba has no support for it. +</para> + +</sect1> + +<sect1> +<title>Deny Modes</title> + +<para> +When a SMB client opens a file it asks for a particular "deny mode" to +be placed on the file. These modes (DENY_NONE, DENY_READ, DENY_WRITE, +DENY_ALL, DENY_FCB and DENY_DOS) specify what actions should be +allowed by anyone else who tries to use the file at the same time. If +DENY_READ is placed on the file, for example, then any attempt to open +the file for reading should fail. +</para> + +<para> +Unix has no equivalent notion. To implement this Samba uses either lock +files based on the files inode and placed in a separate lock +directory or a shared memory implementation. The lock file method +is clumsy and consumes processing and file resources, +the shared memory implementation is vastly preferred and is turned on +by default for those systems that support it. +</para> + +</sect1> + +<sect1> +<title>Trapdoor UIDs</title> +<para> +A SMB session can run with several uids on the one socket. This +happens when a user connects to two shares with different +usernames. To cope with this the unix server needs to switch uids +within the one process. On some unixes (such as SCO) this is not +possible. This means that on those unixes the client is restricted to +a single uid. +</para> + +<para> +Note that you can also get the "trapdoor uid" message for other +reasons. Please see the FAQ for details. +</para> + +</sect1> + +<sect1> +<title>Port numbers</title> +<para> +There is a convention that clients on sockets use high "unprivileged" +port numbers (>1000) and connect to servers on low "privilegedg" port +numbers. This is enforced in Unix as non-root users can't open a +socket for listening on port numbers less than 1000. +</para> + +<para> +Most PC based SMB clients (such as WfWg and WinNT) don't follow this +convention completely. The main culprit is the netbios nameserving on +udp port 137. Name query requests come from a source port of 137. This +is a problem when you combine it with the common firewalling technique +of not allowing incoming packets on low port numbers. This means that +these clients can't query a netbios nameserver on the other side of a +low port based firewall. +</para> + +<para> +The problem is more severe with netbios node status queries. I've +found that WfWg, Win95 and WinNT3.5 all respond to netbios node status +queries on port 137 no matter what the source port was in the +request. This works between machines that are both using port 137, but +it means it's not possible for a unix user to do a node status request +to any of these OSes unless they are running as root. The answer comes +back, but it goes to port 137 which the unix user can't listen +on. Interestingly WinNT3.1 got this right - it sends node status +responses back to the source port in the request. +</para> + +</sect1> + +<sect1> +<title>Protocol Complexity</title> +<para> +There are many "protocol levels" in the SMB protocol. It seems that +each time new functionality was added to a Microsoft operating system, +they added the equivalent functions in a new protocol level of the SMB +protocol to "externalise" the new capabilities. +</para> + +<para> +This means the protocol is very "rich", offering many ways of doing +each file operation. This means SMB servers need to be complex and +large. It also means it is very difficult to make them bug free. It is +not just Samba that suffers from this problem, other servers such as +WinNT don't support every variation of every call and it has almost +certainly been a headache for MS developers to support the myriad of +SMB calls that are available. +</para> + +<para> +There are about 65 "top level" operations in the SMB protocol (things +like SMBread and SMBwrite). Some of these include hundreds of +sub-functions (SMBtrans has at least 120 sub-functions, like +DosPrintQAdd and NetSessionEnum). All of them take several options +that can change the way they work. Many take dozens of possible +"information levels" that change the structures that need to be +returned. Samba supports all but 2 of the "top level" functions. It +supports only 8 (so far) of the SMBtrans sub-functions. Even NT +doesn't support them all. +</para> + +<para> +Samba currently supports up to the "NT LM 0.12" protocol, which is the +one preferred by Win95 and WinNT3.5. Luckily this protocol level has a +"capabilities" field which specifies which super-duper new-fangled +options the server supports. This helps to make the implementation of +this protocol level much easier. +</para> + +<para> +There is also a problem with the SMB specications. SMB is a X/Open +spec, but the X/Open book is far from ideal, and fails to cover many +important issues, leaving much to the imagination. Microsoft recently +renamed the SMB protocol CIFS (Common Internet File System) and have +published new specifications. These are far superior to the old +X/Open documents but there are still undocumented calls and features. +This specification is actively being worked on by a CIFS developers +mailing list hosted by Microsoft. +</para> +</sect1> +</chapter> diff --git a/docs-xml/Samba-Developers-Guide/vfs.xml b/docs-xml/Samba-Developers-Guide/vfs.xml new file mode 100644 index 0000000..268295a --- /dev/null +++ b/docs-xml/Samba-Developers-Guide/vfs.xml @@ -0,0 +1,921 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!DOCTYPE chapter PUBLIC "-//Samba-Team//DTD DocBook V4.2-Based Variant V1.0//EN" "http://www.samba.org/samba/DTD/samba-doc"> +<chapter id="vfs"> +<chapterinfo> + <author> + <firstname>Alexander</firstname><surname>Bokovoy</surname> + <affiliation> + <address><email>ab@samba.org</email></address> + </affiliation> + </author> + <author> + <firstname>Stefan</firstname><surname>Metzmacher</surname> + <affiliation> + <address><email>metze@samba.org</email></address> + </affiliation> + </author> + <pubdate> 27 May 2003 </pubdate> +</chapterinfo> + +<title>VFS Modules</title> + +<sect1> +<title>The Samba (Posix) VFS layer</title> + +<para>While most of Samba deployments are done using POSIX-compatible +operating systems, there is clearly more to a file system than what is +required by POSIX when it comes to adopting semantics of NT file +system. Since Samba 2.2 all file-system related operations go through +an abstraction layer for virtual file system (VFS) that is modelled +after both POSIX and additional functions needed to transform NTFS +semantics. +</para> + +<para> +This abstraction layer now provides more features than a regular POSIX +file system could fill in. It is not required that all of them should +be implemented by your particular file system. However, when those +features are available, Samba would advertize them to a CIFS client +and they might be used by an application and in case of Windows client +that might mean a client expects even more additional functionality +when it encounters those features. There is a practical reason to +allow handling of this snowfall without modifying the Samba core and +it is fulfilled by providing an infrastructure to dynamically load VFS +modules at run time. +</para> + +<para>Each VFS module could implement a number of VFS operations. The +way it does it is irrelevant, only two things actually matter: whether +specific implementation wants to cooperate with other modules' +implementations or not, and whether module needs to store additional +information that is specific to a context it is operating in. Multiple +VFS modules could be loaded at the same time and it is even possible +to load several instances of the same VFS module with different +parameters. +</para> + +<sect2> +<title>The general interface</title> + +<para>A VFS module has three major components: +<itemizedlist> + <listitem><para><emphasis>An initialization function</emphasis> that is +called during the module load to register implemented +operations.</para></listitem> +<listitem><para><emphasis>An operations table</emphasis> representing a +mapping between statically defined module functions and VFS layer +operations.</para></listitem> +<listitem><para><emphasis>Module functions</emphasis> that do actual + work.</para></listitem> +</itemizedlist> +</para> + +<para>While this structure has been first applied to the VFS +subsystem, it is now commonly used across all Samba 3 subsystems that +support loadable modules. In fact, one module could provide a number +of interfaces to different subsystems by exposing different +<emphasis>operation tables</emphasis> through separate +<emphasis>initialization functions</emphasis>.</para> + +<para><emphasis>An initialization function</emphasis> is used to +register module with Samba run-time. As Samba internal structures and +API are changed over lifetime, each released version has a VFS +interface version that is increased as VFS development progresses or +any of underlying Samba structures are changed in binary-incompatible +way. When VFS module is compiled in, VFS interface version of that +Samba environment is embedded into the module's binary object and is +checked by the Samba core upon module load. If VFS interface number +reported by the module isn't the same Samba core knows about, version +conflict is detected and module dropped to avoid any potential memory +corruption when accessing (changed) Samba structures. +</para> + +<para>Therefore, initialization function passes three parameters to the +VFS registration function, <literal>smb_register_vfs()</literal> +<itemizedlist> + <listitem><para><emphasis>interface version number</emphasis>, as constant + <literal>SMB_VFS_INTERFACE_VERSION</literal>, </para></listitem> + <listitem><para><emphasis>module name</emphasis>, under which Samba core + will know it, and</para></listitem> + <listitem><para><emphasis>an operations' table</emphasis>.</para></listitem> +</itemizedlist> +</para> + +<para>The <emphasis>operations' table</emphasis> defines which +functions in the module would correspond to specific VFS operations +and how those functions would co-operate with the rest of VFS +subsystem. Each operation could perform in a following ways: +<itemizedlist> + <listitem><para><emphasis>transparent</emphasis>, meaning that while + operation is overridden, the module will still call a previous + implementation, before or after its own action. This mode is + indicated by the constant + <literal>SMB_VFS_LAYER_TRANSPARENT</literal>;</para> + </listitem> + <listitem><para><emphasis>opaque</emphasis>, for the implementations that + are terminating sequence of actions. For example, it is used to + implement POSIX operation on top of non-POSIX file system or even + not a file system at all, like a database for a personal audio + collection. Use constant <literal>SMB_VFS_LAYER_OPAQUE</literal> for + this mode;</para></listitem> + <listitem><para><emphasis>splitter</emphasis>, a way when some file system + activity is done in addition to the transparently calling previous + implementation. This usually involves mangling the result of that call + before returning it back to the caller. This mode is selected by + <literal>SMB_VFS_LAYER_SPLITTER</literal> constant;</para></listitem> + <listitem><para><emphasis>logger</emphasis> does not change anything or + performs any additional VFS operations. When + <emphasis>logger</emphasis> module acts, information about + operations is logged somewhere using an external facility (or + Samba's own debugging tools) but not the VFS layer. In order to + describe this type of activity use constant + <literal>SMB_VFS_LAYER_LOGGER</literal>; + </para> + </listitem> + <listitem><para>On contrary, <emphasis>scanner</emphasis> module does call + other VFS operations while processing the data that goes through the + system. This type of operation is indicated by the + <literal>SMB_VFS_LAYER_SCANNER</literal> constant.</para></listitem> +</itemizedlist> +</para> + +<para>Fundamentally, there are three types: +<emphasis>transparent</emphasis>, <emphasis>opaque</emphasis>, and +<emphasis>logger</emphasis>. <emphasis>Splitter</emphasis> and +<emphasis>scanner</emphasis> may confuse developers (and indeed they +are confused as our experience has shown) but this separation is to +better expose the nature of a module's actions. Most of modules +developed so far are either one of those three fundamental types with +transparent and opaque being prevalent. +</para> + +<para> +Each VFS operation has a vfs_op_type, a function pointer and a handle +pointer in the struct vfs_ops and tree macros to make it easier to +call the operations. (Take a look at +<filename>include/vfs.h</filename> and +<filename>include/vfs_macros.h</filename>.) +</para> + +<para><programlisting> +typedef enum _vfs_op_type { + SMB_VFS_OP_NOOP = -1, + + ... + + /* File operations */ + + SMB_VFS_OP_OPEN, + SMB_VFS_OP_CLOSE, + SMB_VFS_OP_READ, + SMB_VFS_OP_WRITE, + SMB_VFS_OP_LSEEK, + SMB_VFS_OP_SENDFILE, + + ... + + SMB_VFS_OP_LAST +} vfs_op_type; +</programlisting></para> + +<para>This struct contains the function and handle pointers for all operations.<programlisting> +struct vfs_ops { + struct vfs_fn_pointers { + ... + + /* File operations */ + + int (*open)(struct vfs_handle_struct *handle, + struct connection_struct *conn, + const char *fname, int flags, mode_t mode); + int (*close)(struct vfs_handle_struct *handle, + struct files_struct *fsp, int fd); + ssize_t (*read)(struct vfs_handle_struct *handle, + struct files_struct *fsp, int fd, void *data, size_t n); + ssize_t (*write)(struct vfs_handle_struct *handle, + struct files_struct *fsp, int fd, + const void *data, size_t n); + SMB_OFF_T (*lseek)(struct vfs_handle_struct *handle, + struct files_struct *fsp, int fd, + SMB_OFF_T offset, int whence); + ssize_t (*sendfile)(struct vfs_handle_struct *handle, + int tofd, files_struct *fsp, int fromfd, + const DATA_BLOB *header, SMB_OFF_T offset, size_t count); + + ... + } ops; + + struct vfs_handles_pointers { + ... + + /* File operations */ + + struct vfs_handle_struct *open; + struct vfs_handle_struct *close; + struct vfs_handle_struct *read; + struct vfs_handle_struct *write; + struct vfs_handle_struct *lseek; + struct vfs_handle_struct *sendfile; + + ... + } handles; +}; +</programlisting></para> + +<para> +This macros SHOULD be used to call any vfs operation. +DO NOT ACCESS conn->vfs.ops.* directly !!! +<programlisting> +... + +/* File operations */ +#define SMB_VFS_OPEN(conn, fname, flags, mode) \ + ((conn)->vfs.ops.open((conn)->vfs.handles.open,\ + (conn), (fname), (flags), (mode))) +#define SMB_VFS_CLOSE(fsp, fd) \ + ((fsp)->conn->vfs.ops.close(\ + (fsp)->conn->vfs.handles.close, (fsp), (fd))) +#define SMB_VFS_PREAD(fsp, fd, data, n, off) \ + ((fsp)->conn->vfs.ops.read(\ + (fsp)->conn->vfs.handles.read,\ + (fsp), (fd), (data), (n), (off))) +#define SMB_VFS_PWRITE(fsp, fd, data, n, off) \ + ((fsp)->conn->vfs.ops.write(\ + (fsp)->conn->vfs.handles.write,\ + (fsp), (fd), (data), (n), (off))) +#define SMB_VFS_LSEEK(fsp, fd, offset, whence) \ + ((fsp)->conn->vfs.ops.lseek(\ + (fsp)->conn->vfs.handles.lseek,\ + (fsp), (fd), (offset), (whence))) +#define SMB_VFS_SENDFILE(tofd, fsp, fromfd, header, offset, count) \ + ((fsp)->conn->vfs.ops.sendfile(\ + (fsp)->conn->vfs.handles.sendfile,\ + (tofd), (fsp), (fromfd), (header), (offset), (count))) + +... +</programlisting></para> + +</sect2> + +<sect2> +<title>Possible VFS operation layers</title> + +<para> +These values are used by the VFS subsystem when building the conn->vfs +and conn->vfs_opaque structs for a connection with multiple VFS modules. +Internally, Samba differentiates only opaque and transparent layers at this process. +Other types are used for providing better diagnosing facilities. +</para> + +<para> +Most modules will provide transparent layers. Opaque layer is for modules +which implement actual file system calls (like DB-based VFS). For example, +default POSIX VFS which is built in into Samba is an opaque VFS module. +</para> + +<para> +Other layer types (logger, splitter, scanner) were designed to provide different +degree of transparency and for diagnosing VFS module behaviour. +</para> + +<para> +Each module can implement several layers at the same time provided that only +one layer is used per each operation. +</para> + +<para><programlisting> +typedef enum _vfs_op_layer { + SMB_VFS_LAYER_NOOP = -1, /* - For using in VFS module to indicate end of array */ + /* of operations description */ + SMB_VFS_LAYER_OPAQUE = 0, /* - Final level, does not call anything beyond itself */ + SMB_VFS_LAYER_TRANSPARENT, /* - Normal operation, calls underlying layer after */ + /* possibly changing passed data */ + SMB_VFS_LAYER_LOGGER, /* - Logs data, calls underlying layer, logging may not */ + /* use Samba VFS */ + SMB_VFS_LAYER_SPLITTER, /* - Splits operation, calls underlying layer _and_ own facility, */ + /* then combines result */ + SMB_VFS_LAYER_SCANNER /* - Checks data and possibly initiates additional */ + /* file activity like logging to files _inside_ samba VFS */ +} vfs_op_layer; +</programlisting></para> + +</sect2> + +</sect1> + +<sect1> +<title>The Interaction between the Samba VFS subsystem and the modules</title> + +<sect2> +<title>Initialization and registration</title> + +<para> +As each Samba module a VFS module should have a +<programlisting>NTSTATUS vfs_example_init(void);</programlisting> function if it's statically linked to samba or +<programlisting>NTSTATUS init_module(void);</programlisting> function if it's a shared module. +</para> + +<para> +This should be the only non static function inside the module. +Global variables should also be static! +</para> + +<para> +The module should register its functions via the +<programlisting> +NTSTATUS smb_register_vfs(int version, const char *name, vfs_op_tuple *vfs_op_tuples); +</programlisting> function. +</para> + +<variablelist> + +<varlistentry><term>version</term> +<listitem><para>should be filled with SMB_VFS_INTERFACE_VERSION</para></listitem> +</varlistentry> + +<varlistentry><term>name</term> +<listitem><para>this is the name witch can be listed in the +<command>vfs objects</command> parameter to use this module.</para></listitem> +</varlistentry> + +<varlistentry><term>vfs_op_tuples</term> +<listitem><para> +this is an array of vfs_op_tuple's. +(vfs_op_tuples is descripted in details below.) +</para></listitem> +</varlistentry> + +</variablelist> + +<para> +For each operation the module wants to provide it has a entry in the +vfs_op_tuple array. +</para> + +<programlisting> +typedef struct _vfs_op_tuple { + void* op; + vfs_op_type type; + vfs_op_layer layer; +} vfs_op_tuple; +</programlisting> + +<variablelist> + +<varlistentry><term>op</term> +<listitem><para>the function pointer to the specified function.</para></listitem> +</varlistentry> + +<varlistentry><term>type</term> +<listitem><para>the vfs_op_type of the function to specified witch operation the function provides.</para></listitem> +</varlistentry> + +<varlistentry><term>layer</term> +<listitem><para>the vfs_op_layer in which the function operates.</para></listitem> +</varlistentry> + +</variablelist> + +<para>A simple example:</para> + +<programlisting> +static vfs_op_tuple example_op_tuples[] = { + {SMB_VFS_OP(example_connect), SMB_VFS_OP_CONNECT, SMB_VFS_LAYER_TRANSPARENT}, + {SMB_VFS_OP(example_disconnect), SMB_VFS_OP_DISCONNECT, SMB_VFS_LAYER_TRANSPARENT}, + + {SMB_VFS_OP(example_rename), SMB_VFS_OP_RENAME, SMB_VFS_LAYER_OPAQUE}, + + /* This indicates the end of the array */ + {SMB_VFS_OP(NULL), SMB_VFS_OP_NOOP, SMB_VFS_LAYER_NOOP} +}; + +NTSTATUS init_module(void) +{ + return smb_register_vfs(SMB_VFS_INTERFACE_VERSION, "example", example_op_tuples); +} +</programlisting> + +</sect2> + +<sect2> +<title>How the Modules handle per connection data</title> + +<para>Each VFS function has as first parameter a pointer to the modules vfs_handle_struct. +</para> + +<programlisting> +typedef struct vfs_handle_struct { + struct vfs_handle_struct *next, *prev; + const char *param; + struct vfs_ops vfs_next; + struct connection_struct *conn; + void *data; + void (*free_data)(void **data); +} vfs_handle_struct; +</programlisting> + +<variablelist> + +<varlistentry><term>param</term> +<listitem><para>this is the module parameter specified in the <command>vfs objects</command> parameter.</para> +<para>e.g. for 'vfs objects = example:test' param would be "test".</para></listitem> +</varlistentry> + +<varlistentry><term>vfs_next</term> +<listitem><para>This vfs_ops struct contains the information for calling the next module operations. +Use the SMB_VFS_NEXT_* macros to call a next module operations and +don't access handle->vfs_next.ops.* directly!</para></listitem> +</varlistentry> + +<varlistentry><term>conn</term> +<listitem><para>This is a pointer back to the connection_struct to witch the handle belongs.</para></listitem> +</varlistentry> + +<varlistentry><term>data</term> +<listitem><para>This is a pointer for holding module private data. +You can alloc data with connection life time on the handle->conn->mem_ctx TALLOC_CTX. +But you can also manage the memory allocation yourself.</para></listitem> +</varlistentry> + +<varlistentry><term>free_data</term> +<listitem><para>This is a function pointer to a function that free's the module private data. +If you talloc your private data on the TALLOC_CTX handle->conn->mem_ctx, +you can set this function pointer to NULL.</para></listitem> +</varlistentry> + +</variablelist> + +<para>Some useful MACROS for handle private data. +</para> + +<programlisting> +#define SMB_VFS_HANDLE_GET_DATA(handle, datap, type, ret) { \ + if (!(handle)||((datap=(type *)(handle)->data)==NULL)) { \ + DEBUG(0,("%s() failed to get vfs_handle->data!\n",FUNCTION_MACRO)); \ + ret; \ + } \ +} + +#define SMB_VFS_HANDLE_SET_DATA(handle, datap, free_fn, type, ret) { \ + if (!(handle)) { \ + DEBUG(0,("%s() failed to set handle->data!\n",FUNCTION_MACRO)); \ + ret; \ + } else { \ + if ((handle)->free_data) { \ + (handle)->free_data(&(handle)->data); \ + } \ + (handle)->data = (void *)datap; \ + (handle)->free_data = free_fn; \ + } \ +} + +#define SMB_VFS_HANDLE_FREE_DATA(handle) { \ + if ((handle) && (handle)->free_data) { \ + (handle)->free_data(&(handle)->data); \ + } \ +} +</programlisting> + +<para>How SMB_VFS_LAYER_TRANSPARENT functions can call the SMB_VFS_LAYER_OPAQUE functions.</para> + +<para>The easiest way to do this is to use the SMB_VFS_OPAQUE_* macros. +</para> + +<programlisting> +... +/* File operations */ +#define SMB_VFS_OPAQUE_OPEN(conn, fname, flags, mode) \ + ((conn)->vfs_opaque.ops.open(\ + (conn)->vfs_opaque.handles.open,\ + (conn), (fname), (flags), (mode))) +#define SMB_VFS_OPAQUE_CLOSE(fsp, fd) \ + ((fsp)->conn->vfs_opaque.ops.close(\ + (fsp)->conn->vfs_opaque.handles.close,\ + (fsp), (fd))) +#define SMB_VFS_OPAQUE_READ(fsp, fd, data, n) \ + ((fsp)->conn->vfs_opaque.ops.read(\ + (fsp)->conn->vfs_opaque.handles.read,\ + (fsp), (fd), (data), (n))) +#define SMB_VFS_OPAQUE_WRITE(fsp, fd, data, n) \ + ((fsp)->conn->vfs_opaque.ops.write(\ + (fsp)->conn->vfs_opaque.handles.write,\ + (fsp), (fd), (data), (n))) +#define SMB_VFS_OPAQUE_LSEEK(fsp, fd, offset, whence) \ + ((fsp)->conn->vfs_opaque.ops.lseek(\ + (fsp)->conn->vfs_opaque.handles.lseek,\ + (fsp), (fd), (offset), (whence))) +#define SMB_VFS_OPAQUE_SENDFILE(tofd, fsp, fromfd, header, offset, count) \ + ((fsp)->conn->vfs_opaque.ops.sendfile(\ + (fsp)->conn->vfs_opaque.handles.sendfile,\ + (tofd), (fsp), (fromfd), (header), (offset), (count))) +... +</programlisting> + +<para>How SMB_VFS_LAYER_TRANSPARENT functions can call the next modules functions.</para> + +<para>The easiest way to do this is to use the SMB_VFS_NEXT_* macros. +</para> + +<programlisting> +... +/* File operations */ +#define SMB_VFS_NEXT_OPEN(handle, conn, fname, flags, mode) \ + ((handle)->vfs_next.ops.open(\ + (handle)->vfs_next.handles.open,\ + (conn), (fname), (flags), (mode))) +#define SMB_VFS_NEXT_CLOSE(handle, fsp, fd) \ + ((handle)->vfs_next.ops.close(\ + (handle)->vfs_next.handles.close,\ + (fsp), (fd))) +#define SMB_VFS_NEXT_READ(handle, fsp, fd, data, n) \ + ((handle)->vfs_next.ops.read(\ + (handle)->vfs_next.handles.read,\ + (fsp), (fd), (data), (n))) +#define SMB_VFS_NEXT_WRITE(handle, fsp, fd, data, n) \ + ((handle)->vfs_next.ops.write(\ + (handle)->vfs_next.handles.write,\ + (fsp), (fd), (data), (n))) +#define SMB_VFS_NEXT_LSEEK(handle, fsp, fd, offset, whence) \ + ((handle)->vfs_next.ops.lseek(\ + (handle)->vfs_next.handles.lseek,\ + (fsp), (fd), (offset), (whence))) +#define SMB_VFS_NEXT_SENDFILE(handle, tofd, fsp, fromfd, header, offset, count) \ + ((handle)->vfs_next.ops.sendfile(\ + (handle)->vfs_next.handles.sendfile,\ + (tofd), (fsp), (fromfd), (header), (offset), (count))) +... +</programlisting> + +</sect2> + +</sect1> + +<sect1> +<title>Upgrading to the New VFS Interface</title> + +<sect2> +<title>Upgrading from 2.2.* and 3.0alpha modules</title> + +<orderedlist> +<listitem><para> +Add "vfs_handle_struct *handle, " as first parameter to all vfs operation functions. +e.g. example_connect(connection_struct *conn, const char *service, const char *user); +-> example_connect(vfs_handle_struct *handle, connection_struct *conn, const char *service, const char *user); +</para></listitem> + +<listitem><para> +Replace "default_vfs_ops." with "smb_vfs_next_". +e.g. default_vfs_ops.connect(conn, service, user); +-> smb_vfs_next_connect(conn, service, user); +</para></listitem> + +<listitem><para> +Uppercase all "smb_vfs_next_*" functions. +e.g. smb_vfs_next_connect(conn, service, user); +-> SMB_VFS_NEXT_CONNECT(conn, service, user); +</para></listitem> + +<listitem><para> +Add "handle, " as first parameter to all SMB_VFS_NEXT_*() calls. +e.g. SMB_VFS_NEXT_CONNECT(conn, service, user); +-> SMB_VFS_NEXT_CONNECT(handle, conn, service, user); +</para></listitem> + +<listitem><para> +(Only for 2.2.* modules) +Convert the old struct vfs_ops example_ops to +a vfs_op_tuple example_op_tuples[] array. +e.g. +<programlisting> +struct vfs_ops example_ops = { + /* Disk operations */ + example_connect, /* connect */ + example_disconnect, /* disconnect */ + NULL, /* disk free * + /* Directory operations */ + NULL, /* opendir */ + NULL, /* readdir */ + NULL, /* mkdir */ + NULL, /* rmdir */ + NULL, /* closedir */ + /* File operations */ + NULL, /* open */ + NULL, /* close */ + NULL, /* read */ + NULL, /* write */ + NULL, /* lseek */ + NULL, /* sendfile */ + NULL, /* rename */ + NULL, /* fsync */ + example_stat, /* stat */ + example_fstat, /* fstat */ + example_lstat, /* lstat */ + NULL, /* unlink */ + NULL, /* chmod */ + NULL, /* fchmod */ + NULL, /* chown */ + NULL, /* fchown */ + NULL, /* chdir */ + NULL, /* getwd */ + NULL, /* utime */ + NULL, /* ftruncate */ + NULL, /* lock */ + NULL, /* symlink */ + NULL, /* readlink */ + NULL, /* link */ + NULL, /* mknod */ + NULL, /* realpath */ + NULL, /* fget_nt_acl */ + NULL, /* get_nt_acl */ + NULL, /* fset_nt_acl */ + NULL, /* set_nt_acl */ + + NULL, /* sys_acl_get_entry */ + NULL, /* sys_acl_get_tag_type */ + NULL, /* sys_acl_get_permset */ + NULL, /* sys_acl_get_qualifier */ + NULL, /* sys_acl_get_file */ + NULL, /* sys_acl_get_fd */ + NULL, /* sys_acl_clear_perms */ + NULL, /* sys_acl_add_perm */ + NULL, /* sys_acl_to_text */ + NULL, /* sys_acl_init */ + NULL, /* sys_acl_create_entry */ + NULL, /* sys_acl_set_tag_type */ + NULL, /* sys_acl_set_qualifier */ + NULL, /* sys_acl_set_permset */ + NULL, /* sys_acl_valid */ + NULL, /* sys_acl_set_file */ + NULL, /* sys_acl_set_fd */ + NULL, /* sys_acl_get_perm */ + NULL, /* sys_acl_free_text */ + NULL, /* sys_acl_free_acl */ + NULL /* sys_acl_free_qualifier */ +}; +</programlisting> +-> +<programlisting> +static vfs_op_tuple example_op_tuples[] = { + {SMB_VFS_OP(example_connect), SMB_VFS_OP_CONNECT, SMB_VFS_LAYER_TRANSPARENT}, + {SMB_VFS_OP(example_disconnect), SMB_VFS_OP_DISCONNECT, SMB_VFS_LAYER_TRANSPARENT}, + + {SMB_VFS_OP(example_fstat), SMB_VFS_OP_FSTAT, SMB_VFS_LAYER_TRANSPARENT}, + {SMB_VFS_OP(example_stat), SMB_VFS_OP_STAT, SMB_VFS_LAYER_TRANSPARENT}, + {SMB_VFS_OP(example_lstat), SMB_VFS_OP_LSTAT, SMB_VFS_LAYER_TRANSPARENT}, + + {SMB_VFS_OP(NULL), SMB_VFS_OP_NOOP, SMB_VFS_LAYER_NOOP} +}; +</programlisting> +</para></listitem> + +<listitem><para> +Move the example_op_tuples[] array to the end of the file. +</para></listitem> + +<listitem><para> +Add the init_module() function at the end of the file. +e.g. +<programlisting> +NTSTATUS init_module(void) +{ + return smb_register_vfs(SMB_VFS_INTERFACE_VERSION,"example",example_op_tuples); +} +</programlisting> +</para></listitem> + +<listitem><para> +Check if your vfs_init() function does more then just prepare the vfs_ops structs or +remember the struct smb_vfs_handle_struct. +<simplelist> +<member>If NOT you can remove the vfs_init() function.</member> +<member>If YES decide if you want to move the code to the example_connect() operation or to the init_module(). And then remove vfs_init(). + e.g. a debug class registration should go into init_module() and the allocation of private data should go to example_connect().</member> +</simplelist> +</para></listitem> + +<listitem><para> +(Only for 3.0alpha* modules) +Check if your vfs_done() function contains needed code. +<simplelist> +<member>If NOT you can remove the vfs_done() function.</member> +<member>If YES decide if you can move the code to the example_disconnect() operation. Otherwise register a SMB_EXIT_EVENT with smb_register_exit_event(); (Described in the <link linkend="modules">modules section</link>) And then remove vfs_done(). e.g. the freeing of private data should go to example_disconnect(). +</member> +</simplelist> +</para></listitem> + +<listitem><para> +Check if you have any global variables left. +Decide if it wouldn't be better to have this data on a connection basis. +<simplelist> + <member>If NOT leave them as they are. (e.g. this could be the variable for the private debug class.)</member> + <member>If YES pack all this data into a struct. You can use handle->data to point to such a struct on a per connection basis.</member> +</simplelist> + + e.g. if you have such a struct: +<programlisting> +struct example_privates { + char *some_string; + int db_connection; +}; +</programlisting> +first way of doing it: +<programlisting> +static int example_connect(vfs_handle_struct *handle, + connection_struct *conn, const char *service, + const char* user) +{ + struct example_privates *data = NULL; + + /* alloc our private data */ + data = (struct example_privates *)talloc_zero(conn->mem_ctx, sizeof(struct example_privates)); + if (!data) { + DEBUG(0,("talloc_zero() failed\n")); + return -1; + } + + /* init out private data */ + data->some_string = talloc_strdup(conn->mem_ctx,"test"); + if (!data->some_string) { + DEBUG(0,("talloc_strdup() failed\n")); + return -1; + } + + data->db_connection = open_db_conn(); + + /* and now store the private data pointer in handle->data + * we don't need to specify a free_function here because + * we use the connection TALLOC context. + * (return -1 if something failed.) + */ + VFS_HANDLE_SET_DATA(handle, data, NULL, struct example_privates, return -1); + + return SMB_VFS_NEXT_CONNECT(handle,conn,service,user); +} + +static int example_close(vfs_handle_struct *handle, files_struct *fsp, int fd) +{ + struct example_privates *data = NULL; + + /* get the pointer to our private data + * return -1 if something failed + */ + SMB_VFS_HANDLE_GET_DATA(handle, data, struct example_privates, return -1); + + /* do something here...*/ + DEBUG(0,("some_string: %s\n",data->some_string)); + + return SMB_VFS_NEXT_CLOSE(handle, fsp, fd); +} +</programlisting> +second way of doing it: +<programlisting> +static void free_example_privates(void **datap) +{ + struct example_privates *data = (struct example_privates *)*datap; + + SAFE_FREE(data->some_string); + SAFE_FREE(data); + + *datap = NULL; + + return; +} + +static int example_connect(vfs_handle_struct *handle, + connection_struct *conn, const char *service, + const char* user) +{ + struct example_privates *data = NULL; + + /* alloc our private data */ + data = (struct example_privates *)malloc(sizeof(struct example_privates)); + if (!data) { + DEBUG(0,("malloc() failed\n")); + return -1; + } + + /* init out private data */ + data->some_string = strdup("test"); + if (!data->some_string) { + DEBUG(0,("strdup() failed\n")); + return -1; + } + + data->db_connection = open_db_conn(); + + /* and now store the private data pointer in handle->data + * we need to specify a free_function because we used malloc() and strdup(). + * (return -1 if something failed.) + */ + SMB_VFS_HANDLE_SET_DATA(handle, data, free_example_privates, struct example_privates, return -1); + + return SMB_VFS_NEXT_CONNECT(handle,conn,service,user); +} + +static int example_close(vfs_handle_struct *handle, files_struct *fsp, int fd) +{ + struct example_privates *data = NULL; + + /* get the pointer to our private data + * return -1 if something failed + */ + SMB_VFS_HANDLE_GET_DATA(handle, data, struct example_privates, return -1); + + /* do something here...*/ + DEBUG(0,("some_string: %s\n",data->some_string)); + + return SMB_VFS_NEXT_CLOSE(handle, fsp, fd); +} +</programlisting> +</para></listitem> + +<listitem><para> +To make it easy to build 3rd party modules it would be useful to provide +configure.in, (configure), install.sh and Makefile.in with the module. +(Take a look at the example in <filename>examples/VFS</filename>.) +</para> + +<para> +The configure script accepts <option>--with-samba-source</option> to specify +the path to the samba source tree. +It also accept <option>--enable-developer</option> which lets the compiler +give you more warnings. +</para> + +<para> +The idea is that you can extend this +<filename>configure.in</filename> and <filename>Makefile.in</filename> scripts +for your module. +</para></listitem> + +<listitem><para> +Compiling & Testing... +<simplelist> +<member><userinput>./configure <option>--enable-developer</option></userinput> ...</member> +<member><userinput>make</userinput></member> +<member>Try to fix all compiler warnings</member> +<member><userinput>make</userinput></member> +<member>Testing, Testing, Testing ...</member> +</simplelist> +</para></listitem> +</orderedlist> +</sect2> + +</sect1> + +<sect1> +<title>Some Notes</title> + +<sect2> +<title>Implement TRANSPARENT functions</title> + +<para> +Avoid writing functions like this: + +<programlisting> +static int example_close(vfs_handle_struct *handle, files_struct *fsp, int fd) +{ + return SMB_VFS_NEXT_CLOSE(handle, fsp, fd); +} +</programlisting> + +Overload only the functions you really need to! +</para> + +</sect2> + +<sect2> +<title>Implement OPAQUE functions</title> + +<para> +If you want to just implement a better version of a +default samba opaque function +(e.g. like a disk_free() function for a special filesystem) +it's ok to just overload that specific function. +</para> + +<para> +If you want to implement a database filesystem or +something different from a posix filesystem. +Make sure that you overload every vfs operation!!! +</para> +<para> +Functions your FS does not support should be overloaded by something like this: +e.g. for a readonly filesystem. +</para> + +<programlisting> +static int example_rename(vfs_handle_struct *handle, connection_struct *conn, + char *oldname, char *newname) +{ + DEBUG(10,("function rename() not allowed on vfs 'example'\n")); + errno = ENOSYS; + return -1; +} +</programlisting> + +</sect2> + +</sect1> + +</chapter> diff --git a/docs-xml/Samba-Developers-Guide/wins.xml b/docs-xml/Samba-Developers-Guide/wins.xml new file mode 100644 index 0000000..e7a6e85 --- /dev/null +++ b/docs-xml/Samba-Developers-Guide/wins.xml @@ -0,0 +1,81 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!DOCTYPE chapter PUBLIC "-//Samba-Team//DTD DocBook V4.2-Based Variant V1.0//EN" "http://www.samba.org/samba/DTD/samba-doc"> +<chapter id="wins"> +<chapterinfo> + <author> + <firstname>Gerald</firstname><surname>Carter</surname> + </author> + <pubdate>October 2002</pubdate> +</chapterinfo> + + +<title>Samba WINS Internals</title> + + +<sect1> +<title>WINS Failover</title> + + +<para> +The current Samba codebase possesses the capability to use groups of WINS +servers that share a common namespace for NetBIOS name registration and +resolution. The formal parameter syntax is +</para> + +<para><programlisting> + WINS_SERVER_PARAM = SERVER [ SEPARATOR SERVER_LIST ] + WINS_SERVER_PARAM = "wins server" + SERVER = ADDR[:TAG] + ADDR = ip_addr | fqdn + TAG = string + SEPARATOR = comma | \s+ + SERVER_LIST = SERVER [ SEPARATOR SERVER_LIST ] +</programlisting></para> + +<para> +A simple example of a valid wins server setting is +</para> + +<para><programlisting> +[global] + wins server = 192.168.1.2 192.168.1.3 +</programlisting></para> + +<para> +In the event that no TAG is defined in for a SERVER in the list, smbd assigns a default +TAG of "*". A TAG is used to group servers of a shared NetBIOS namespace together. Upon +startup, nmbd will attempt to register the netbios name value with one server in each +tagged group. +</para> + +<para> +An example using tags to group WINS servers together is show here. Note that the use of +interface names in the tags is only by convention and is not a technical requirement. +</para> + + +<para><programlisting> +[global] + wins server = 192.168.1.2:eth0 192.168.1.3:eth0 192.168.2.2:eth1 +</programlisting></para> + +<para> +Using this configuration, nmbd would attempt to register the server's NetBIOS name +with one WINS server in each group. Because the "eth0" group has two servers, the +second server would only be used when a registration (or resolution) request to +the first server in that group timed out. +</para> + +<para> +NetBIOS name resolution follows a similar pattern as name registration. When resolving +a NetBIOS name via WINS, smbd and other Samba programs will attempt to query a single WINS +server in a tagged group until either a positive response is obtained at least once or +until a server from every tagged group has responded negatively to the name query request. +If a timeout occurs when querying a specific WINS server, that server is marked as down to +prevent further timeouts and the next server in the WINS group is contacted. Once marked as +dead, Samba will not attempt to contact that server for name registration/resolution queries +for a period of 10 minutes. +</para> + +</sect1> +</chapter> diff --git a/docs-xml/Samba-EventLog-HOWTO.txt b/docs-xml/Samba-EventLog-HOWTO.txt new file mode 100644 index 0000000..33b3c1d --- /dev/null +++ b/docs-xml/Samba-EventLog-HOWTO.txt @@ -0,0 +1,130 @@ +## +## Samba-EventLog-HOWTO.txt +## Brian Moran <bmoran@centeris.com> +## +## Feature Introduced in Samba 3.0.21 +## + +Samba and Eventlogs +=================== + +Samba servers now support event logs -- this means that if +Samba is configured correctly, the usual administration tools +like event viewer will work against a Samba server. + +To minimally configure Samba to publish event logs, the +eventlogs to list must be specified in smb.conf, and +eventlog entries must be written to those eventlogs. + +Optionally, a message file can be registered for each +of the eventlog 'sources' to pretty-print the eventlog +messages in the eventlog viewer. + +Configuring smb.conf +==================== + +To specify the list of eventlogs the eventlog list +command is used. An example which will show four +eventlogs is + + eventlog list = Application System Security SyslogLinux + +When Samba initially starts, it looks to see if the +eventlog directory, and a particular log exists; if not, +the directory and file are created under LOCK_DIR + +Writing EventLog Records +======================== + +The eventlogadm command is used to write records +into a particular eventlog. Eventlogadm expects records +to be on STDIN in the following format + + LEN: 0 + RS1: 1699505740 + RCN: 0 + TMG: 1128631322 + TMW: 1128631322 + EID: 1000 + ETP: INFO + ECT: 0 + RS2: 0 + CRN: 0 + USL: 0 + SRC: cron + SRN: dmlinux + STR: (root) CMD ( rm -f /var/spool/cron/lastrun/cron.hourly) + DAT: + +These fields closely mirror the eventlog structures +used by the APIs. The definitions of the fields are + +- LEN: <integer> The length field is calculated by the + eventlogadm program based on the rest of the information + in the record. Zero works well here. +- RS1: 1699505740 A "magic number", the primary purpose of + which seems to be to be able to find eventlog records in a + sea of binary data +- TMG: <integer> The time the eventlog record was generated; + format is the number of seconds since 00:00:00 January 1, + 1970, UTC +- TMW: <integer> The time the eventlog record was written; + format is the number of seconds since 00:00:00 January 1, + 1970, UTC +- EID: <integer> The eventlog ID -- used as a index to a + message string in a message DLSamba and Eventlogs +- ETP: <string> The event type -- one of INFO, ERROR, + WARNING, AUDIT SUCCESS, AUDIT FAILURE +- ECT: <integer> The event category; this depends on the + message file -- primarily used as a means of filtering in + the eventlog viewer +- RS2: 0 Another reserved field +- CRN: 0 Yet another reserved field +- USL: <integer> Typically would contain the length of the + SID of the user object associated with this event. This is + not supported now, so leave this zero. +- SRC: <string> The source name associated with the event + log, e.g. "cron" or "smbd". If a message file is used with an + event log, there will be a registry entry for associating + this source name with a message file DLL +- SRN: <string> The name of the machine on which the + eventlog was generated. This is typically the host name +- STR: <string> The text associated with the eventlog. Note + that there may be more than one strings in a record +- DAT: <string> Eventlog records can have binary information + associated with them. DAT only supports ASCII strings however + +Typically, one would set up a program to gather events, format +them into records, and pipe them into eventlogadm for a +particular eventlog: + +# tail -f /var/log/messages |\ + my_program_to_parse_into_eventlog_records |\ + eventlogadm SyslogLinux + +Note that individual records are separated on the input by one +or more blank lines. In this manner, eventlogadm will just wait +for more input, writing to the underlying log files as necessary. + + +Deciphering EventLog entries on the Client +========================================== + +To set up an eventlog source (which is used by the eventlog viewer +program to pretty-print eventlog records), create a message file +DLL, then use the eventlogadm program to write the appropriate +eventlog registry entries: + +# eventlogadm -o addsource Application MyApplication \ + %SystemRoot%/system32/MyApplication.dll + +This will add the key +[HKLM/System/CurrentControlSet/services/Eventlog/Application/MyApplication] +and to that key add value "MyApplication/EventLogMessageFile" +with a string of %SystemRoot%/system32/MyApplication.dll + +If there happens to be a share called [C$] on your samba server, +and in that share there's a Windows/system32/MyApplication.dll +file, it will be read by the eventlog viewer application when +displaying eventlog records to pretty-print your eventlog entries. + diff --git a/docs-xml/Samba.desktop b/docs-xml/Samba.desktop new file mode 100644 index 0000000..2ec24b3 --- /dev/null +++ b/docs-xml/Samba.desktop @@ -0,0 +1,16 @@ +[Desktop Entry] +Name=Samba +Name[cz]=Samba +Name[de]=Samba +Name[nl]=Samba +Name[sk]=Samba +Comment=The file and print service to SMB/ CIFS clients +Comment[cz]=Souborové a tiskové služby pre klienty SMB/ CIFS +Comment[de]=SMB/ CIFS Datei- und Druck-Server +Comment[nl]=SMB/CIFS Bestand en Print-Server +Comment[pl]=Usługa plików i drukarek dla klientów SMB/CIFS +Comment[sk]=Súborové a tlačové služby pre klientov SMB/ CIFS +DocPath=/usr/share/doc/packages/samba/htmldocs/index.html +X-DOC-SearchMethod=htdig +X-DOC-SearchEnabledDefault=true +X-DOC-Weight=-5000 diff --git a/docs-xml/aclocal.m4 b/docs-xml/aclocal.m4 new file mode 100644 index 0000000..1252d21 --- /dev/null +++ b/docs-xml/aclocal.m4 @@ -0,0 +1,38 @@ +dnl (C) 2003-2004 Jelmer Vernooij <jelmer@samba.org> +dnl Published under the GNU GPL +dnl +dnl DOCS_DEFINE_TARGET +dnl arg1: Target that is defined +dnl arg2: Requirement +dnl arg3: Official name +dnl arg4: Makefile target name + +AC_DEFUN(DOCS_DEFINE_TARGET, [ + if test "x$$1_REQUIRES" = x; then + $1_REQUIRES="$$2_REQUIRES" + else + $1_REQUIRES="$$1_REQUIRES $$2_REQUIRES" + fi + + if test x"$$1_REQUIRES" = x; then + TARGETS="$TARGETS $4" + else + AC_MSG_RESULT([Building the $3 requires : $$1_REQUIRES]) + fi +]) + +dnl DOCS_TARGET_REQUIRE_PROGRAM +dnl arg1: program variable +dnl arg2: program executable name +dnl arg3: target that requires it + +AC_DEFUN(DOCS_TARGET_REQUIRE_PROGRAM, [ + AC_CHECK_PROGS([$1], [$2]) + if test x"$$1" = x; then + if test x"$$3_REQUIRES" = x; then + $3_REQUIRES="$2" + else + $3_REQUIRES="$$3_REQUIRES $2" + fi + fi +]) diff --git a/docs-xml/archives/THANKS b/docs-xml/archives/THANKS new file mode 100644 index 0000000..d36515c --- /dev/null +++ b/docs-xml/archives/THANKS @@ -0,0 +1,137 @@ +===================================================================== +This file is for thanks to individuals or organisations who have +helped with the development of Samba, other than by coding or bug +reports. Their contributions are gratefully acknowledged. + +Please refer to the manual pages and change-log for a list of those +who have contributed in the form of patches, bug fixes or other +direct changes to the package. + +Contributions of any kind are welcomed. If you want to help then +please contact Andrew.Tridgell@anu.edu.au, or via normal mail at + + Andrew Tridgell + 3 Ballow Crescent + Macgregor, A.C.T + 2615 Australia +===================================================================== + + +Lee Fisher (leefi@microsoft.com) +Charles Fox (cfox@microsoft.com) +Dan Perry (danp@exchnge.microsoft.com) +Paul Leach (paulle@microsoft.com) +Isaac Heizer (isaache@microsoft.com) + + These Microsoft people have been very helpful and supportive of + the development of Samba over some years. + + Lee very kindly supplied me with a copy of the X/Open SMB + specs. These have been invaluable in getting the details of the + implementation right. They will become even more important as we move + towards a Lanman 2.1 compliant server. Lee has provided very + useful advice on several aspects of the server. + Lee has also provided me with copies of Windows NTAS 3.1, Visual C + and a developers CD-ROM. Being able to run NT at home is a + great help. + + Charles has helped out in numerous ways with the provision of SMB + specifications and helpful advice. He has been following the + discussion of Samba on the mailing list and has stepped in + regularly to clarify points and to offer help. + + Dan has put me in touch with NT developers to help sort out bugs and + compatibility issues. He has also supplied me with a copy of the + NT browsing spec, which will help a lot in the development of the + Samba browser code. + + Paul was responsible for Microsoft paying my flight to Seattle for the + first CIFS conference (see https://www.samba.org/cifs) and has been + generally helpful and cooperative as the SMB community moves towards + an Internet-ready specification. Isaac has regularly provided help on + the behaviour of NT networks. + +Bruce Perens (bruce@pixar.com) + + In appreciation of his effort on Samba we have sent Andrew copies of + various Pixar computer-graphics software products. Pixar is best known + for its "Renderman" product, the 3-D renderer used by ILM to make special + effects for "Terminator II" and "Jurassic Park". We won the first Oscar + given to a computer graphic animated feature for our short film "Tin Toy". + Our retail products "Typestry" and "Showplace", incorporate the same + renderer used on the films, and are available on Windows and the + Macintosh. + + + +Henry Lee (hyl@microplex.co) + + Henry sent me a M202 ethernet print server, making my little lan + one of the few home networks to have it's own print server! + + ``Microplex Systems Ltd. is a manufacturer of local and wide area + network communications equipment based in beautiful Vancouver, British + Columbia, Canada. Microplex's first products were synchronous wide + area network devices used in the mainframe communication networks. In + August 1991 Microplex introduced its first LAN product, the M200 print + server, the first high performance print server under US$1,000.'' + + +Tom Haapanen (tomh@metrics.com) + + Tom sent me two 16 bit SMC ethernet cards to replace my ancient 8 + bit ones. The performance is much better! + + Software Metrics Inc. is a small custom software development and + consulting firm located in Waterloo, Ontario, Canada. We work + with a variety of environments (such as Windows, Windows NT and + Unix), tools and application areas, and can provide assistance for + development work ranging from a few days to multiple man-year + projects. You can find more information at http://www.metrics.com/. + + +Steve Kennedy (steve@gbnet.net) + + Steve sent me 16Mb of ram so that I could install/test + NT3.5. I previous had only 8Mb ram in my test machine, which + wasn't enough to install a properly functioning copy of + NTAS. Being able to directly test NT3.5 allowed me to solve + several long standing NT<->Samba problems. Thanks Steve! + +John Terpstra (jht@aquasoft.com.au) + + Aquasoft are a specialist consulting company whose Samba-using + customers span the world. + + Aquasoft have been avid supporters of the Samba project. As a + token of appreciation Aquasoft have donated a 486DX2/66 PC with + a 540MB EIDE drive and 20MB RAM. + + John has helped to isolate quite a few little glitches over time + and has managed to implement some very interesting installations + of Samba. + + The donation of the new PC will make it possible to more fully + diagnose and observe the behaviour of Samba in conjunction with + other SMB protocol utilising systems. + + +Timothy F. Sipples (tsipple@vnet.IBM.COM) +Steve Withers (swithers@vnet.IBM.COM) + + Tim and Steve from IBM organised a copy of the OS/2 developers + connection CD set for me, and gave lots of help in getting + OS/2 Warp installed. I hope this will allow me to finally fix + up those annoying OS/2 related Samba bugs that I have been + receiving reports of. + +Keith Wilkins (wilki1k@nectech.co.uk) + + Keith from NEC in England very generously supplied a PC to + Luke Leighton to help with his nmbd development work. At the + same time Keith offered to help me with some new hardware, and + he sent me a pentium motherboard with 32MB of ram + onboard. This was very helpful as it allowed me to upgrade + my aging server to be a very powerful system. Thanks! + + diff --git a/docs-xml/archives/history b/docs-xml/archives/history new file mode 100644 index 0000000..5ba8fea --- /dev/null +++ b/docs-xml/archives/history @@ -0,0 +1,218 @@ +Contributor: Andrew Tridgell and the Samba Team +Date: June 27, 1997 +Satus: Always out of date! (Would not be the same without it!) + +Subject: A bit of history and a bit of fun +============================================================================ + +This is a short history of this project. It's not supposed to be +comprehensive, just enough so that new users can get a feel for where +this project has come from and maybe where it's going to. + +The whole thing really started in December 1991. I was (and still am) +a PhD student in the Computer Sciences Laboratory at the Australian +National University, in Canberra, Australia. We had just got a +beta copy of eXcursion from Digital, and I was testing it on my PC. At +this stage I was a MS-DOS user, dabbling in windows. + +eXcursion ran (at the time) only with Dec's `Pathworks' network for +DOS. I had up till then been using PC-NFS to connect to our local sun +workstations, and was reasonably happy with it. In order to run +pathworks I had to stop using PC-NFS and try using pathworks to mount +disk space. Unfortunately pathworks was only available for digital +workstations running VMS or Ultrix so I couldn't mount from the suns +anymore. + +I had access to a a decstation 3100 running Ultrix that I used to +administer, and I got the crazy notion that the protocol that +pathworks used to talk to ultrix couldn't be that hard, and maybe I +could work it out. I had never written a network program before, and +certainly didn't know what a socket was. + +In a few days, after looking at some example code for sockets, I +discovered it was pretty easy to write a program to "spy" on the file +sharing protocol. I wrote and installed this program (the sockspy.c +program supplied with this package) and captured everything that the +pathworks client said to the pathworks server. + +I then tried writing short C programs (using Turbo C under DOS) to do +simple file operations on the network drive (open, read, cd etc) and +looked at the packets that the server and client exchanged. From this +I worked out what some of the bytes in the packets meant, and started +to write my own program to do the same thing on a sun. + +After a day or so more I had my first successes and actually managed +to get a connection and to read a file. From there it was all +downhill, and a week later I was happily (if a little unreliably) +mounting disk space from a sun to my PC running pathworks. The server +code had a lot of `magic' values in it, which seemed to be always +present with the ultrix server. It was not till 2 years later that I +found out what all these values meant. + +Anyway, I thought other people might be interested in what I had done, +so I asked a few people at uni, and no one seemed much interested. I +also spoke to a person at Digital in Canberra (the person who had +organised a beta test of eXcursion) and asked if I could distribute +what I'd done, or was it illegal. It was then that I first heard the +word "netbios" when he told me that he thought it was all covered by a +spec of some sort (the netbios spec) and thus what I'd done was not +only legal, but silly. + +I found the netbios spec after asking around a bit (the RFC1001 and +RFC1002 specs) and found they looked nothing like what I'd written, so +I thought maybe the Digital person was mistaken. I didn't realise RFCs +referred to the name negotiation and packet encapsulation over TCP/IP, +and what I'd written was really a SMB implementation. + +Anyway, he encouraged me to release it so I put out "Server 0.1" in +January 1992. I got quite a good response from people wanting to use +pathworks with non-digital unix workstations, and I soon fixed a few +bugs, and released "Server 0.5" closely followed by "Server 1.0". All +three releases came out within about a month of each other. + +At this point I got an X Terminal on my desk, and I no longer needed eXcursion +and I prompty forgot about the whole project, apart from a few people +who e-mailed me occasionally about it. + +Nearly two years then passed with just occasional e-mails asking about +new versions and bugs. I even added a note to the ftp site asking for +a volunteer to take over the code as I no longer used it. No one +volunteered. + +During this time I did hear from a couple of people who said it should +be possible to use my code with Lanmanager, but I never got any +definite confirmation. + +One e-mail I got about the code did, however, make an impression. It +was from Dan Shearer at the university of South Australia, and he said +this: + + + I heard a hint about a free Pathworks server for Unix in the + Net channel of the Linux list. After quite a bit of chasing + (and lots of interested followups from other Linux people) I + got hold of a release news article from you, posted in Jan 92, + from someone in the UK. + + Can you tell me what the latest status is? I think you might + suddenly find a whole lot of interested hackers in the Linux + world at least, which is a place where things tend to happen + fast (and even some reliable code gets written, BION!) + +I asked him what Linux was, and he told me it was a free Unix for PCs. +This was in November 1992 and a few months later I was a Linux +convert! I still didn't need a pathworks server though, so I didn't do +the port, but I think Dan did. + +At about this time I got an e-mail from Digital, from a person working +on the Alpha software distribution. He asked if I would mind if they +included my server with the "contributed" cd-rom. This was a bit of a +shock to me as I never expected Dec to ask me if they could use my +code! I wrote back saying it was OK, but never heard from him again. I +don't know if it went on the cd-rom. + +Anyway, the next big event was in December 1993, when Dan again sent +me an e-mail saying my server had "raised its ugly head" on +comp.protocols.tcpip.ibmpc. I had a quick look on the group, and was +surprised to see that there were people interested in this thing. + +At this time a person from our computer center offered me a couple of +cheap ethernet cards (3c505s for $15 each) and coincidentially someone +announced on one of the Linux channels that he had written a 3c505 +driver for Linux. I bought the cards, hacked the driver a little and +setup a home network between my wifes PC and my Linux box. I then +needed some way to connect the two, and I didn't own PC-NFS at home, +so I thought maybe my server could be useful. On the newsgroup among +the discussions of my server someone had mentioned that there was a +free client that might work with my server that Microsoft had put up +for ftp. I downloaded it and found to my surprise that it worked first +time with my `pathworks' server! + +Well, I then did a bit of hacking, asked around a bit and found (I +think from Dan) that the spec I needed was for the "SMB" protocol, and +that it was available via ftp. I grabbed it and started removing all +those ugly constants from the code, now that all was explained. + +On December 1st 1993 I announced the start of the "Netbios for Unix" +project, seeding the mailing list with all the people who had e-mailed +me over the years asking about the server. + +About 35 versions (and two months) later I wrote a short history of +the project, which you have just read. There are now over a hundred +people on the mailing list, and lots of people report that they use +the code and like it. In a few days I will be announcing the release +of version 1.6 to some of the more popular (and relevant) newsgroups. + + +Andrew Tridgell +6th February 1994 + +--------------------- + +It is now May 1995 and there are about 1400 people on the mailing +list. I got downloads from the main Samba ftp site from around 5000 +unique hosts in a two month period. There are several mirror +sites as well. The current version number is 1.9.13. + +--------------------- + + +--------------------- +It's now March 1996 and version 1.9.16alpha1 has just been +released. There have been lots of changes recently with master browser +support and the ability to do domain logons etc. Samba has also been +ported to OS/2, the amiga and NetWare. There are now 3000 people on +the samba mailing list. +--------------------- + + +--------------------- +It's now June 1997 and samba-1.9.17 is due out soon. My how time passes! +Please refer to the WHATSNEW.txt for an update on new features. Just when +you think you understand what is happening the ground rules change - this +is a real world after all. Since the heady days of March 1996 there has +been a concerted effort within the SMB protocol using community to document +and standardize the protocols. The CIFS initiative has helped a long way +towards creating a better understood and more interoperable environment. +The Samba Team has grown in number and have been very active in the standards +formation and documentation process. + +The net effect has been that we have had to do a lot of work to bring Samba +into line with new features and capabilities in the SMB protocols. + +The past year has been a productive one with the following releases: + 1.9.16, 1.9.16p2, 1.9.16p6, 1.9.16p9, 1.9.16p10, 1.9.16p11 + +There are some who believe that 1.9.15p8 was the best release and others +who would not want to be without the latest. Whatever your perception we +hope that 1.9.17 will close the gap and convince you all that the long +wait and the rolling changes really were worth it. Here is functionality +and a level of code maturity that ..., well - you can be the judge! + +Happy SMB networking! +Samba Team + +ps: The bugs are ours, so please report any you find. +--------------------- + +--------------------- +It's now October 1998. We just got back from the 3rd CIFS conference +in SanJose. The Samba Team was the biggest contingent there. + +Samba 2.0 should be shipping in the next few weeks with much better +domain controller support, GUI configuration, a new user space SMB +filesystem and lots of other neat stuff. I've also noticed that a +search of job ads in DejaNews turned up 3900 that mention Samba. Looks +like we've created a small industry. + +I've been asked again where the name Samba came from. I might as well +put it down here for everyone to read. The code in Samba was first +called just "server", it then got renamed "smbserver" when I +discovered that the protocol is called SMB. Then in April 1994 I got +an email from Syntax, the makers of "TotalNet advanced Server", a +commercial SMB server. They told me that they had a trademark on the +name SMBserver and I would have to change the name. I ran an egrep for +words containing S, M, and B on /usr/dict/words and the name Samba +looked like the best choice. Strangely enough when I repeat that now I +notice that Samba isn't in /usr/dict/words on my system anymore! +--------------------- diff --git a/docs-xml/build/DTD/samba-doc b/docs-xml/build/DTD/samba-doc new file mode 100644 index 0000000..e4a5278 --- /dev/null +++ b/docs-xml/build/DTD/samba-doc @@ -0,0 +1,68 @@ +<!-- + vim:ft=dtd + Samba extensions to DocBook + PUBLIC identifier: -//Samba-Team//DTD DocBook V4.2-Based Variant V1.0//EN + URL: http://www.samba.org/samba/DTD/samba-doc + + Copyright (C) Jelmer Vernooij 2003-2005 + --> + +<!ENTITY % local.tech.char.class "|smbconfoption|smbconfsection"> +<!ENTITY % local.linespecific.class "|smbconfblock"> +<!ENTITY % local.informal.class "|imagefile"> + +<!-- Include the DocBook DTD, of which this DTD is an extension --> + +<!ENTITY % DocBookDTD + PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" + "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"> + %DocBookDTD; + +<!ENTITY % samba.entities PUBLIC + "-//Samba-Team//ENTITIES Samba Specific Entities V1.0//EN" + "samba.entities"> +%samba.entities; + +<!ENTITY % samba.build.version PUBLIC + "-//Samba-Team//VERSION Samba Build Version//EN" + "http://www.samba.org/samba/LOCAL.BUILDDIR.DTD/samba.build.version"> +%samba.build.version; + +<!ENTITY % samba.build.pathconfig PUBLIC + "-//Samba-Team//VERSION Samba Build Version//EN" + "http://www.samba.org/samba/LOCAL.BUILDDIR.DTD/samba.build.pathconfig"> +%samba.build.pathconfig; + +<!-- smb.conf options --> + +<!ELEMENT smbconfblock ((smbconfoption|smbconfsection|smbconfcomment)*)> +<!ELEMENT smbconfcomment (#PCDATA)> +<!ELEMENT smbconfsection EMPTY> +<!ATTLIST smbconfsection + name CDATA #REQUIRED> +<!ELEMENT smbconfoption (#PCDATA|replaceable)*> +<!ATTLIST smbconfoption + name CDATA #REQUIRED> + + +<!ELEMENT imagefile (#PCDATA)> +<!ATTLIST imagefile scale CDATA #IMPLIED> +<!ELEMENT samba:parameter (synonym*,description,related*,value*)> +<!ATTLIST samba:parameter + name CDATA #REQUIRED + type CDATA #REQUIRED + context CDATA #REQUIRED + synonym CDATA #IMPLIED + handler CDATA #IMPLIED + deprecated CDATA #IMPLIED + enumlist CDATA #IMPLIED +> +<!ELEMENT description ANY> +<!ELEMENT synonym (#PCDATA)> +<!ELEMENT related (#PCDATA)> +<!ELEMENT value (#PCDATA|comment)*> +<!ATTLIST value + type CDATA #REQUIRED> +<!ELEMENT comment (#PCDATA)> +<!ATTLIST ulink + noescape CDATA #IMPLIED> diff --git a/docs-xml/build/DTD/samba.build.version.in b/docs-xml/build/DTD/samba.build.version.in new file mode 100644 index 0000000..775e08b --- /dev/null +++ b/docs-xml/build/DTD/samba.build.version.in @@ -0,0 +1 @@ +<!ENTITY doc.version '@doc_version@'> diff --git a/docs-xml/build/DTD/samba.entities b/docs-xml/build/DTD/samba.entities new file mode 100644 index 0000000..bba0c2c --- /dev/null +++ b/docs-xml/build/DTD/samba.entities @@ -0,0 +1,917 @@ +<!-- + vim:ft=dtd +--> + +<!-- Email Address' --> +<!ENTITY email.dbannon 'D.Bannon@latrobe.edu.au'> +<!ENTITY email.jerry 'jerry@samba.org'> +<!ENTITY email.patches 'samba-patches@samba.org'> +<!ENTITY email.jelmer 'jelmer@samba.org'> +<!ENTITY email.jht 'jht@samba.org'> +<!ENTITY email.ghenry 'ghenry@suretecsystems.com'> +<!ENTITY email.asn 'asn@samba.org'> + +<!-- Author entities --> +<!ENTITY person.asn ' +<firstname>Andreas</firstname><surname>Schneider</surname> +<affiliation> + <orgname>The Samba Team</orgname> + <address><email>asn@samba.org</email></address> +</affiliation>'> + +<!ENTITY author.asn '<author>&person.asn;</author>'> + +<!ENTITY person.jelmer ' +<firstname>Jelmer</firstname><othername>R.</othername><surname>Vernooij</surname><othername>R.</othername> +<affiliation> + <orgname>The Samba Team</orgname> + <address><email>jelmer@samba.org</email></address> +</affiliation>'> + +<!ENTITY author.jelmer '<author>&person.jelmer;</author>'> + +<!ENTITY person.jerry ' +<firstname>Gerald</firstname><surname>Carter</surname><othername>(Jerry)</othername> +<affiliation> + <orgname>Samba Team</orgname> + <address><email>jerry@samba.org</email></address> +</affiliation>'> + +<!ENTITY author.jerry '<author>&person.jerry;</author>'> + +<!ENTITY author.jeremy ' +<author> + <firstname>Jeremy</firstname><surname>Allison</surname> + <affiliation> + <orgname>Samba Team</orgname> + <address><email>jra@samba.org</email></address> + </affiliation> +</author>'> + +<!ENTITY person.jht ' +<firstname>John</firstname><surname>Terpstra</surname><othername>H.</othername> +<affiliation> + <orgname>Samba Team</orgname> + <address><email>jht@samba.org</email></address> +</affiliation>'> + +<!ENTITY author.jht '<author>&person.jht;</author>'> + +<!ENTITY person.gd ' +<firstname>Guenther</firstname><surname>Deschner</surname> +<affiliation> + <orgname>Samba Team</orgname> + <address><email>gd@samba.org</email></address> +</affiliation>'> + +<!ENTITY author.gd '<author>&person.gd;</author>'> + +<!ENTITY person.kauer ' +<firstname>Karl</firstname><surname>Auer</surname> +<affiliation> + <orgname>Samba Team</orgname> + <address><email>kauer@biplane.com.au</email></address> +</affiliation> +'> + +<!ENTITY author.kauer '<author>&person.kauer;</author>'> + +<!ENTITY person.danshearer ' +<firstname>Dan</firstname><surname>Shearer</surname> +<affiliation> + <orgname>Samba Team</orgname> + <address><email>dan@samba.org</email></address> +</affiliation> +'> + +<!ENTITY author.danshearer '<author>&person.danshearer;</author>'> + +<!ENTITY person.tpot ' +<firstname>Tim</firstname><surname>Potter</surname> +<affiliation> + <orgname>Samba Team</orgname> + <address><email>tpot@samba.org</email></address> +</affiliation> +'> + +<!ENTITY author.tpot '<author>&person.tpot;</author>'> + +<!ENTITY author.tridge ' +<author> + <firstname>Andrew</firstname><surname>Tridgell</surname> + <affiliation> + <orgname>Samba Team</orgname> + <address><email>tridge@samba.org</email></address> + </affiliation> +</author>'> + +<!ENTITY person.jmcd ' + <firstname>Jim</firstname><surname>McDonough</surname> + <affiliation> + <orgname>IBM</orgname> + <address><email>jmcd@us.ibm.com</email></address> + </affiliation>'> + +<!ENTITY author.jmcd '<author>&person.jmcd;</author>'> + +<!ENTITY person.vl ' +<firstname>Volker</firstname><surname>Lendecke</surname> +<affiliation> + <orgname>Samba Team</orgname> + <address><email>Volker.Lendecke@SerNet.DE</email></address> +</affiliation>'> + +<!ENTITY author.vl '<author>&person.vl;</author>'> + +<!ENTITY author.dbannon ' +<author> + <firstname>David</firstname><surname>Bannon</surname> + <affiliation> + <orgname>Samba Team</orgname> + <address><email>dbannon@samba.org</email></address> + </affiliation> +</author>'> + +<!ENTITY author.mimir ' +<author> + <firstname>Rafal</firstname><surname>Szczesniak</surname> + <affiliation> + <orgname>Samba Team</orgname> + <address><email>mimir@samba.org</email></address> + </affiliation> +</author>'> + +<!ENTITY author.dlechnyr ' +<author> + <firstname>David</firstname><surname>Lechnyr</surname> + <affiliation> + <orgname>Unofficial HOWTO</orgname> + <address><email>david@lechnyr.com</email></address> + </affiliation> +</author>'> + +<!ENTITY author.eroseme ' +<author> + <firstname>Eric</firstname><surname>Roseme</surname> + <affiliation> + <orgname>HP Oplocks Usage Recommendations Whitepaper</orgname> + <address><email>eric.roseme@hp.com</email></address> + </affiliation> +</author>'> + +<!ENTITY author.ghenry ' +<author> + <firstname>Gavin</firstname><surname>Henry</surname> + <affiliation> + <orgname>Suretec Systems Limited, UK</orgname> + <address><email>ghenry@suretecsystems.com</email></address> + </affiliation> +</author>'> + +<!ENTITY cmdline.common.debug.client ' +<varlistentry> + <term>-d|--debuglevel=DEBUGLEVEL</term> + <listitem> + <para> + <replaceable>level</replaceable> is an integer from 0 + to 10. The default value if this parameter is not + specified is 1 for client applications. + </para> + + <para> + The higher this value, the more detail will be logged + to the log files about the activities of the server. At + level 0, only critical errors and serious warnings will + be logged. Level 1 is a reasonable level for day-to-day + running - it generates a small amount of information + about operations carried out. + </para> + + <para> + Levels above 1 will generate considerable amounts of + log data, and should only be used when investigating a + problem. Levels above 3 are designed for use only by + developers and generate HUGE amounts of log data, most + of which is extremely cryptic. + </para> + + <para> + Note that specifying this parameter here will override + the <smbconfoption name="log level" /> parameter in the + &smb.conf; file. + </para> + </listitem> +</varlistentry> + +<varlistentry> + <term>--debug-stdout</term> + <listitem> + <para> + This will redirect debug output to STDOUT. By default + all clients are logging to STDERR. + </para> + </listitem> +</varlistentry> +'> + +<!ENTITY cmdline.common.debug.server ' +<varlistentry> + <term>-d|--debuglevel=DEBUGLEVEL</term> + + <listitem> + <para> + <replaceable>level</replaceable> is an integer from 0 + to 10. The default value if this parameter is not + specified is 0. + </para> + + <para> + The higher this value, the more detail will be logged + to the log files about the activities of the server. At + level 0, only critical errors and serious warnings will + be logged. Level 1 is a reasonable level for day-to-day + running - it generates a small amount of information + about operations carried out. + </para> + + <para> + Levels above 1 will generate considerable amounts of + log data, and should only be used when investigating a + problem. Levels above 3 are designed for use only by + developers and generate HUGE amounts of log data, most + of which is extremely cryptic. + </para> + + <para> + Note that specifying this parameter here will override + the <smbconfoption name="log level" /> parameter in the + &smb.conf; file. + </para> + </listitem> + + <term>--debug-stdout</term> + <listitem> + <para> + This will redirect debug output to STDOUT. By default + server daemons are logging to a log file. + </para> + </listitem> +</varlistentry> +'> + +<!ENTITY cmdline.common.option ' +<varlistentry> + <term>--option=<name>=<value></term> + <listitem> + <para> + Set the + <citerefentry><refentrytitle>smb.conf</refentrytitle> + <manvolnum>5</manvolnum></citerefentry> option + "<name>" to value "<value>" from the + command line. This overrides compiled-in defaults and + options read from the configuration file. If a name or + a value includes a space, wrap whole + --option=name=value into quotes. + </para> + </listitem> +</varlistentry> +'> + +<!ENTITY cmdline.common.config.client ' +<varlistentry> + <term>--configfile=<configuration file></term> + <listitem> + <para> + The file specified contains the configuration details + required by the client. The information in this file + can be general for client and server or only provide + client specific like options such as + <smbconfoption name="client smb encrypt" />. See + &smb.conf; for more information. The default + configuration file name is determined at compile time. + </para> + </listitem> +</varlistentry> +'> + +<!ENTITY cmdline.common.config.server ' +<varlistentry> + <term>--configfile=CONFIGFILE</term> + <listitem> + <para> + The file specified contains the configuration details + required by the server. The information in this file + includes server-specific information such as what + printcap file to use, as well as descriptions of all + the services that the server is to provide. See + &smb.conf; for more information. The default + configuration file name is determined at compile + time. + </para> + </listitem> +</varlistentry> +'> + +<!ENTITY cmdline.version ' +<varlistentry> + <term>-V|--version</term> + <listitem> + <para> + Prints the program version number. + </para> + </listitem> +</varlistentry> +'> + +<!ENTITY cmdline.common.samba.logbasename ' +<varlistentry> + <term>-l|--log-basename=logdirectory</term> + <listitem> + <para> + Base directory name for log/debug files. The extension + <constant>".progname"</constant> will be appended (e.g. + log.smbclient, log.smbd, etc...). The log file is never + removed by the client. + </para> + </listitem> +</varlistentry> +'> + +<!ENTITY cmdline.common.samba.leakreport ' +<varlistentry> + <term>--leak-report</term> + <listitem> + <para> + Enable talloc leak reporting on exit. + </para> + </listitem> +</varlistentry> +'> + +<!ENTITY cmdline.common.samba.leakreportfull ' +<varlistentry> + <term>--leak-report-full</term> + <listitem> + <para> + Enable full talloc leak reporting on exit. + </para> + </listitem> +</varlistentry> +'> + +<!ENTITY cmdline.common.samba.client ' +&cmdline.common.debug.client; +&cmdline.common.config.client; +&cmdline.common.option; +&cmdline.common.samba.logbasename; +&cmdline.common.samba.leakreport; +&cmdline.common.samba.leakreportfull; +&cmdline.version; +'> + +<!ENTITY cmdline.common.samba.server ' +&cmdline.common.debug.server; +&cmdline.common.config.server; +&cmdline.common.option; +&cmdline.common.samba.logbasename; +&cmdline.common.samba.leakreport; +&cmdline.common.samba.leakreportfull; +&cmdline.version; +'> + +<!ENTITY cmdline.common.connection.nameresolve ' +<varlistentry> + <term>-R|--name-resolve=NAME-RESOLVE-ORDER</term> + <listitem> + <para> + This option is used to determine what naming services + and in what order to resolve host names to IP + addresses. The option takes a space-separated string of + different name resolution options. The best ist to wrap + the whole --name-resolve=NAME-RESOLVE-ORDER into + quotes. + </para> + + <para> + The options are: "lmhosts", "host", "wins" and "bcast". + They cause names to be resolved as follows: + </para> + + <itemizedlist> + <listitem> + <para> + <constant>lmhosts</constant>: Lookup an + IP address in the Samba lmhosts file. + If the line in lmhosts has no name type + attached to the NetBIOS name (see the + <citerefentry><refentrytitle>lmhosts</refentrytitle> + <manvolnum>5</manvolnum></citerefentry> + for details) then any name type matches + for lookup. + </para> + </listitem> + + <listitem> + <para> + <constant>host</constant>: Do a + standard host name to IP address + resolution, using the system + <filename>/etc/hosts</filename>, NIS, + or DNS lookups. This method of name + resolution is operating system + dependent, for instance on IRIX or + Solaris this may be controlled by the + <filename>/etc/nsswitch.conf + </filename> file). Note that this + method is only used if the NetBIOS name + type being queried is the 0x20 (server) + name type, otherwise it is ignored. + </para> + </listitem> + + <listitem> + <para> + <constant>wins</constant>: Query a name + with the IP address listed in the + <parameter>wins server</parameter> + parameter. If no WINS server has been + specified this method will be ignored. + </para> + </listitem> + + <listitem> + <para> + <constant>bcast</constant>: Do a + broadcast on each of the known local + interfaces listed in the + <parameter>interfaces</parameter> + parameter. This is the least reliable + of the name resolution methods as it + depends on the target host being on a + locally connected subnet. + </para> + </listitem> + </itemizedlist> + + <para> + If this parameter is not set then the name resolve + order defined in the &smb.conf; file parameter + (<smbconfoption name="name resolve order" />) will be + used. + </para> + + <para> + The default order is lmhosts, host, wins, bcast. + Without this parameter or any entry in the + <smbconfoption name="name resolve order" /> parameter + of the &smb.conf; file, the name resolution methods + will be attempted in this order. + </para> + </listitem> +</varlistentry> +'> + +<!ENTITY cmdline.common.connection.socketoptions ' +<varlistentry> + <term>-O|--socket-options=SOCKETOPTIONS</term> + <listitem> + <para> + TCP socket options to set on the client socket. See the + socket options parameter in the &smb.conf; manual page + for the list of valid options. + </para> + </listitem> +</varlistentry> +'> + +<!ENTITY cmdline.common.connection.netbiosname ' +<varlistentry> + <term>-n|--netbiosname=NETBIOSNAME</term> + <listitem> + <para> + This option allows you to override the NetBIOS name + that Samba uses for itself. This is identical to + setting the <smbconfoption name="netbios name" /> + parameter in the &smb.conf; file. However, a command + line setting will take precedence over settings in + &smb.conf;. + </para> + </listitem> +</varlistentry> +'> + +<!ENTITY cmdline.common.connection.workgroup ' +<varlistentry> + <term>-W|--workgroup=WORKGROUP</term> + <listitem> + <para> + Set the SMB domain of the username. This overrides + the default domain which is the domain defined in + smb.conf. If the domain specified is the same as the + servers NetBIOS name, it causes the client to log on + using the servers local SAM (as opposed to the Domain + SAM). + </para> + + <para> + Note that specifying this parameter here will override + the <smbconfoption name="workgroup" /> parameter in the + &smb.conf; file. + </para> + </listitem> +</varlistentry> +'> + +<!ENTITY cmdline.common.connection.realm ' +<varlistentry> + <term>-r|--realm=REALM</term> + <listitem> + <para> + Set the realm for the domain. + </para> + + <para> + Note that specifying this parameter here will override + the <smbconfoption name="realm" /> parameter in the + &smb.conf; file. + </para> + </listitem> +</varlistentry>'> + +<!ENTITY cmdline.common.connection.netbiosscope ' +<varlistentry> + <term>--netbios-scope=SCOPE</term> + <listitem> + <para> + This specifies a NetBIOS scope that + <command>nmblookup</command> will use to communicate + with when generating NetBIOS names. For details on the + use of NetBIOS scopes, see rfc1001.txt and rfc1002.txt. + NetBIOS scopes are <emphasis>very</emphasis> rarely + used, only set this parameter if you are the system + administrator in charge of all the NetBIOS systems you + communicate with. + </para> + </listitem> +</varlistentry> +'> + +<!ENTITY cmdline.common.connection.max-protocol ' +<varlistentry> + <term>-m|--max-protocol=MAXPROTOCOL</term> + <listitem> + <para> + The value of the parameter (a string) is the highest + protocol level that will be supported by the client. + </para> + + <para> + Note that specifying this parameter here will override + the <smbconfoption name="client max protocol" /> + parameter in the &smb.conf; file. + </para> + </listitem> +</varlistentry> +'> + +<!ENTITY cmdline.common.connection ' +&cmdline.common.connection.nameresolve; +&cmdline.common.connection.socketoptions; +&cmdline.common.connection.max-protocol; +&cmdline.common.connection.netbiosname; +&cmdline.common.connection.netbiosscope; +&cmdline.common.connection.workgroup; +&cmdline.common.connection.realm; +'> + +<!ENTITY pct "%"> + +<!ENTITY cmdline.common.credentials.user ' +<varlistentry> + <term>-U|--user=[DOMAIN\]USERNAME[&pct;PASSWORD]</term> + <listitem> + <para> + Sets the SMB username or username and password. + </para> + + <para> + If &pct;PASSWORD is not specified, the user will be + prompted. The client will first check the + <envar>USER</envar> environment variable + (which is also permitted to also contain the + password separated by a &pct;), then the + <envar>LOGNAME</envar> variable (which is not + permitted to contain a password) and if either exists, + the value is used. If these environmental + variables are not found, the username + found in a Kerberos Credentials cache may be used. + </para> + + <para> + A third option is to use a credentials file which + contains the plaintext of the username and password. + This option is mainly provided for scripts where the + admin does not wish to pass the credentials on the + command line or via environment variables. If this + method is used, make certain that the permissions on + the file restrict access from unwanted users. See the + <parameter>-A</parameter> for more details. + </para> + + <para> + Be cautious about including passwords in scripts + or passing user-supplied values onto the command line. For + security it is better to let the Samba client tool ask for the + password if needed, or obtain the password once with <command>kinit</command>. + </para> + <para> + While Samba will attempt to scrub the password + from the process title (as seen in ps), this + is after startup and so is subject to a race. + </para> + </listitem> +</varlistentry> +'> + +<!ENTITY cmdline.common.credentials.nopass ' +<varlistentry> + <term>-N|--no-pass</term> + <listitem> + <para> + If specified, this parameter suppresses the normal + password prompt from the client to the user. This is + useful when accessing a service that does not require a + password. + </para> + + <para> + Unless a password is specified on the command line or + this parameter is specified, the client will request a + password. + </para> + + <para> + If a password is specified on the command line and this + option is also defined the password on the command line + will be silently ignored and no password will be + used. + </para> + </listitem> +</varlistentry> +'> + +<!ENTITY cmdline.common.credentials.password ' +<varlistentry> + <term>--password</term> + <listitem> + <para> + Specify the password on the commandline. + </para> + + <para> Be cautious about including passwords in + scripts or passing user-supplied values onto + the command line. For security it is better to + let the Samba client tool ask for the password + if needed, or obtain the password once with + <command>kinit</command>. + </para> + + <para> If --password is not specified, + the tool will check the <envar>PASSWD</envar> + environment variable, followed by <envar>PASSWD_FD</envar> + which is expected to contain an open + file descriptor (FD) number. + </para> + <para> + Finally it will check <envar>PASSWD_FILE</envar> (containing + a file path to be opened). The file should only + contain the password. Make certain that the + permissions on the file restrict + access from unwanted users! + </para> + <para> + While Samba will attempt to scrub the password + from the process title (as seen in ps), this + is after startup and so is subject to a race. + </para> + </listitem> +</varlistentry> +'> + +<!ENTITY cmdline.common.credentials.pwnthash ' +<varlistentry> + <term>--pw-nt-hash</term> + <listitem> + <para> + The supplied password is the NT hash. + </para> + </listitem> +</varlistentry> +'> + +<!ENTITY cmdline.common.credentials.authenticationfile ' +<varlistentry> + <term>-A|--authentication-file=filename</term> + <listitem> + <para> + This option allows you to specify a file from which to + read the username and password used in the connection. + The format of the file is: + </para> + + <para> + <programlisting> + username = <value> + password = <value> + domain = <value> + </programlisting> + </para> + + <para> + Make certain that the permissions on the file restrict + access from unwanted users! + </para> + </listitem> +</varlistentry> +'> + +<!ENTITY cmdline.common.credentials.machinepass ' +<varlistentry> + <term>-P|--machine-pass</term> + <listitem> + <para> + Use stored machine account password. + </para> + </listitem> +</varlistentry> +'> + +<!ENTITY cmdline.common.credentials.simplebinddn ' +<varlistentry> + <term>--simple-bind-dn=DN</term> + <listitem> + <para> + DN to use for a simple bind. + </para> + </listitem> +</varlistentry> +'> + +<!ENTITY cmdline.common.credentials.usekerberos ' +<varlistentry> + <term>--use-kerberos=desired|required|off</term> + <listitem> + <para> + This parameter determines whether Samba client tools + will try to authenticate using Kerberos. For Kerberos + authentication you need to use dns names instead of IP + addresses when connecting to a service. + </para> + + <para> + Note that specifying this parameter here will override + the <smbconfoption name="client use kerberos" /> + parameter in the &smb.conf; file. + </para> + </listitem> +</varlistentry> +'> + +<!ENTITY cmdline.common.credentials.usekrb5ccache ' +<varlistentry> + <term>--use-krb5-ccache=CCACHE</term> + <listitem> + <para> + Specifies the credential cache location for Kerberos + authentication. + </para> + + <para> + This will set --use-kerberos=required too. + </para> + </listitem> +</varlistentry> +'> + +<!ENTITY cmdline.common.credentials.usewinbindccache ' +<varlistentry> + <term>--use-winbind-ccache</term> + <listitem> + <para> + Try to use the credential cache by winbind. + </para> + </listitem> +</varlistentry> +'> + +<!ENTITY cmdline.common.credentials.clientprotection ' +<varlistentry> + <term>--client-protection=sign|encrypt|off</term> + <listitem> + <para> + Sets the connection protection the client tool should + use. + </para> + + <para> + Note that specifying this parameter here will override + the <smbconfoption name="client protection" /> + parameter in the &smb.conf; file. + </para> + + <para> + In case you need more fine grained control you can use: + <command>--option=clientsmbencrypt=OPTION</command>, + <command>--option=clientipcsigning=OPTION</command>, + <command>--option=clientsigning=OPTION</command>. + </para> + </listitem> +</varlistentry> +'> + +<!ENTITY cmdline.common.credentials ' +&cmdline.common.credentials.user; +&cmdline.common.credentials.nopass; +&cmdline.common.credentials.password; +&cmdline.common.credentials.pwnthash; +&cmdline.common.credentials.authenticationfile; +&cmdline.common.credentials.machinepass; +&cmdline.common.credentials.simplebinddn; +&cmdline.common.credentials.usekerberos; +&cmdline.common.credentials.usekrb5ccache; +&cmdline.common.credentials.usewinbindccache; +&cmdline.common.credentials.clientprotection; +'> + +<!ENTITY cmdline.legacy.kerberos.s3 ' +<varlistentry> + <term>-k|--kerberos</term> + <listitem> + <para> + Use kerberos authentication. This option is deprecated. + Migrate to --use-kerberos! + </para> + </listitem> +</varlistentry> +'> + +<!ENTITY cmdline.legacy.kerberos.s4 ' +<varlistentry> + <term>-k|--kerberos=yes|no</term> + <listitem> + <para> + Wether to use kerberos authentication. This option is + deprecated. Migrate to --use-kerberos! + </para> + </listitem> +</varlistentry> +'> + + + + +<!ENTITY stdarg.help ' +<varlistentry> +<term>-?|--help</term> +<listitem><para>Print a summary of command line options. +</para></listitem> +</varlistentry> +'> + +<!ENTITY stdarg.usage ' +<varlistentry> +<term>--usage</term> +<listitem><para>Display brief usage message. +</para></listitem> +</varlistentry> +'> + +<!ENTITY popt.autohelp ' +&stdarg.help; +&stdarg.usage; +'> + +<!-- Entities for the various programs --> +<!ENTITY OL '<application>OpenLDAP</application>'> +<!ENTITY smbd '<application>smbd</application>'> +<!ENTITY nmbd '<application>nmbd</application>'> +<!ENTITY testparm '<application>testparm</application>'> +<!ENTITY smb.conf '<filename>&pathconfig.CONFIGFILE;</filename>'> +<!ENTITY smbclient '<application>smbclient</application>'> +<!ENTITY winbindd '<application>winbindd</application>'> +<!ENTITY net '<application>net</application>'> + +<!ENTITY not.implemented "<note><para>Currently NOT implemented.</para></note>"> +<!ENTITY rootprompt "<prompt>root# </prompt>"> +<!ENTITY prompt "<prompt>$ </prompt>"> +<!ENTITY dosprompt "<prompt>C:\> </prompt>"> + +<!ENTITY example.workgroup "MIDEARTH"> +<!ENTITY example.server.samba "GANDALF"> +<!ENTITY example.server.windows "SARUMAN"> +<!ENTITY example.workstation.windows "FRODO"> +<!ENTITY example.workstation.samba "BILBO"> +<!ENTITY example.pdc.samba "SAURON"> +<!ENTITY example.server.wins "noldor"> + +<!ENTITY smbmdash "<?latex --- ?>"> diff --git a/docs-xml/build/README b/docs-xml/build/README new file mode 100644 index 0000000..736f673 --- /dev/null +++ b/docs-xml/build/README @@ -0,0 +1,26 @@ +HOW TO BUILD SAMBA DOCUMENTATION WITHOUT NETWORK ACCESS +------------------------------------------------------- + +Samba documentation depends on several DTD schema specification and XML files +that are stored in samba-web Subversion repository and hosted publicly through +Samba.org web-site. In order to do networkless builds a local XML catalog should +provide a local replica of those files. + +The easiest way to provide them is to fetch samba-docs subversion repository. +In this directory (build/) we reference samba-web repository as external source +so that Subversion fetches current state of DTDs out of samba-web repository. +You then need to point xsltproc utility to use locally-provided version of DTDs. + +It is done by setting XML_CATALOG_FILES variable: + +export XML_CATALOG_FILES="file:///etc/xml/catalog file://$(pwd)/build/catalog.xml" + +where $(pwd)/build/catalog.xml is generated from $(pwd)/build/catalog.xml.in by a +following command: + +cat $(pwd)/build/catalog.xml.in | sed -e "s|@BUILDDIR@|$(pwd)|g" > $(pwd)/build/catalog.xml + +where $(pwd) assumes that you're in the top-level directory of samba-docs. + +After those steps a regular make process can be followed and xsltproc will automatically +use locally-provided DTDs through catalog.xml we've created. diff --git a/docs-xml/build/catalog.xml.in b/docs-xml/build/catalog.xml.in new file mode 100644 index 0000000..77ec4f2 --- /dev/null +++ b/docs-xml/build/catalog.xml.in @@ -0,0 +1,21 @@ +<?xml version="1.0"?> +<!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN" "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd"> +<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog"> + +<!-- XML Catalog file for SAMBA. --> + + <rewriteURI + uriStartString="http://www.samba.org/samba/DTD/" + rewritePrefix="file:///@abs_top_srcdir@/build/DTD/"/> + + <rewriteURI + uriStartString="http://www.samba.org/samba/LOCAL.BUILDDIR.DTD/" + rewritePrefix="file:///@abs_top_builddir@/build/DTD/"/> + + <rewriteURI + uriStartString="http://www.gnu.org/licenses/" + rewritePrefix="file:///@abs_top_srcdir@/Samba3-ByExample/"/> + <rewriteURI + uriStartString="http://www.samba.org/samba/smbdotconf/" + rewritePrefix="file:///@abs_top_builddir@/smbdotconf/"/> +</catalog> diff --git a/docs-xml/configure.ac b/docs-xml/configure.ac new file mode 100644 index 0000000..aaec457 --- /dev/null +++ b/docs-xml/configure.ac @@ -0,0 +1,51 @@ +AC_INIT(xslt/latex.xsl) + +LATEX_DOCUMENTCLASS_OPTIONS="letterpaper,11pt,openright,twoside" +AC_SUBST(LATEX_DOCUMENTCLASS_OPTIONS) + +DOC_BUILD_DATE=`date '+%d-%m-%Y'` +AC_SUBST(DOC_BUILD_DATE) + +DOCS_TARGET_REQUIRE_PROGRAM(XSLTPROC, xsltproc, ALL) +DOCS_TARGET_REQUIRE_PROGRAM(RM, rm, ALL) + +DOCS_TARGET_REQUIRE_PROGRAM(PNGTOPNM, pngtopnm, PS) +DOCS_TARGET_REQUIRE_PROGRAM(PNMTOPS, pnmtops, PS) +DOCS_TARGET_REQUIRE_PROGRAM(DBLATEX, dblatex, LATEX) +DOCS_TARGET_REQUIRE_PROGRAM(XMLLINT, xmllint, VALIDATE) + +AC_MSG_RESULT([]) +AC_MSG_RESULT([Summary:]) +AC_MSG_RESULT([--------------]) + +DOCS_DEFINE_TARGET(ALL, [], [base requirements], []) +DOCS_DEFINE_TARGET(LATEX, ALL, [LaTeX versions], [tex ps pdf]) +DOCS_DEFINE_TARGET(HTML, ALL, [HTML versions], [html]) +DOCS_DEFINE_TARGET(HTMLHELP, ALL, [HTML Help versions], [htmlhelp]) +DOCS_DEFINE_TARGET(HTMLMAN, ALL, [HTML versions of the manpages], [htmlman]) +DOCS_DEFINE_TARGET(MANPAGES, ALL, [manpages], [manpages]) +DOCS_DEFINE_TARGET(VALIDATE, ALL, [validating docbook output], []) + +if test x"$TARGETS" = x; then + AC_MSG_ERROR([You won't be able to build any of the docs]) +else + AC_MSG_RESULT([You will be able to build: $TARGETS]) +fi + +AC_SUBST(TARGETS) + +. ../VERSION +if test x"$DOC_VERSION" = x; then + #AC_MSG_ERROR([Please export DOC_VERSION variable]) + VERSION_SUFFIX="" + if test x"$SAMBA_VERSION_PRE_RELEASE" != x; then + VERSION_SUFFIX=pre + fi + DOC_VERSION=${SAMBA_VERSION_MAJOR}.${SAMBA_VERSION_MINOR}.${SAMBA_VERSION_RELEASE}${VERSION_SUFFIX} +else + AC_MSG_RESULT([DOC_VERSION: ${DOC_VERSION}]) +fi + +doc_version="${DOC_VERSION}" +AC_SUBST(doc_version) +AC_OUTPUT( Makefile.settings build/catalog.xml build/DTD/samba.build.version) diff --git a/docs-xml/generate-pathconf-entities.sh b/docs-xml/generate-pathconf-entities.sh new file mode 100755 index 0000000..6c0c31a --- /dev/null +++ b/docs-xml/generate-pathconf-entities.sh @@ -0,0 +1,21 @@ + +# This is the fallback table for when we use the docs-xml build +# system. When build as part of the main waf build, these are set to +# the full correct path for the system. +# +echo " +<!ENTITY pathconfig.SCRIPTSBINDIR '\${prefix}/sbin'> +<!ENTITY pathconfig.LOCKDIR '\${prefix}/var/lock'> +<!ENTITY pathconfig.NCALRPCDIR '\${prefix}/var/run/ncalrpc'> +<!ENTITY pathconfig.PIDDIR '\${prefix}/var/run'> +<!ENTITY pathconfig.STATEDIR '\${prefix}/var/locks'> +<!ENTITY pathconfig.PRIVATE_DIR '\${prefix}/private'> +<!ENTITY pathconfig.BINDDNS_DIR '\${prefix}/bind-dns'> +<!ENTITY pathconfig.SMB_PASSWD_FILE '\${prefix}/private/smbpasswd'> +<!ENTITY pathconfig.WINBINDD_SOCKET_DIR '\${prefix}/var/run/winbindd'> +<!ENTITY pathconfig.CACHEDIR '\${prefix}/var/cache'> +<!ENTITY pathconfig.NTP_SIGND_SOCKET_DIR '\${prefix}/var/lib/ntp_signd'> +<!ENTITY pathconfig.MITKDCPATH '\${prefix}/sbin/krb5kdc'> +<!ENTITY pathconfig.SAMBA_DATADIR '\${prefix}/var/samba'> +<!ENTITY pathconfig.CONFIGFILE '\${prefix}/etc/smb.conf'> +" diff --git a/docs-xml/gpl-3.0.xml b/docs-xml/gpl-3.0.xml new file mode 100644 index 0000000..559c89d --- /dev/null +++ b/docs-xml/gpl-3.0.xml @@ -0,0 +1,836 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" + "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd"> +<appendix> + <title> + <acronym>GNU</acronym> General Public License version 3 + </title> + <para> + Version 3, 29 June 2007 + </para> + <para> + Copyright © 2007 Free Software Foundation, Inc. + <ulink url="http://fsf.org/">http://fsf.org/</ulink> + </para> + <para> + Everyone is permitted to copy and distribute verbatim copies of this license + document, but changing it is not allowed. + </para> + <bridgehead renderas="sect1"> + Preamble + </bridgehead> + <para> + The <acronym>GNU</acronym> General Public License is a free, copyleft + license for software and other kinds of works. + </para> + <para> + The licenses for most software and other practical works are designed to + take away your freedom to share and change the works. By contrast, the + <acronym>GNU</acronym> General Public License is intended to guarantee your + freedom to share and change all versions of a program—to make sure it + remains free software for all its users. We, the Free Software Foundation, + use the <acronym>GNU</acronym> General Public License for most of our + software; it applies also to any other work released this way by its + authors. You can apply it to your programs, too. + </para> + <para> + When we speak of free software, we are referring to freedom, not price. Our + General Public Licenses are designed to make sure that you have the freedom + to distribute copies of free software (and charge for them if you wish), + that you receive source code or can get it if you want it, that you can + change the software or use pieces of it in new free programs, and that you + know you can do these things. + </para> + <para> + To protect your rights, we need to prevent others from denying you these + rights or asking you to surrender the rights. Therefore, you have certain + responsibilities if you distribute copies of the software, or if you modify + it: responsibilities to respect the freedom of others. + </para> + <para> + For example, if you distribute copies of such a program, whether gratis or + for a fee, you must pass on to the recipients the same freedoms that you + received. You must make sure that they, too, receive or can get the source + code. And you must show them these terms so they know their rights. + </para> + <para> + Developers that use the <acronym>GNU</acronym> <acronym>GPL</acronym> + protect your rights with two steps: (1) assert copyright on the software, + and (2) offer you this License giving you legal permission to copy, + distribute and/or modify it. + </para> + <para> + For the developers’ and authors’ protection, the + <acronym>GPL</acronym> clearly explains that there is no warranty for this + free software. For both users’ and authors’ sake, the + <acronym>GPL</acronym> requires that modified versions be marked as changed, + so that their problems will not be attributed erroneously to authors of + previous versions. + </para> + <para> + Some devices are designed to deny users access to install or run modified + versions of the software inside them, although the manufacturer can do so. + This is fundamentally incompatible with the aim of protecting users’ + freedom to change the software. The systematic pattern of such abuse occurs + in the area of products for individuals to use, which is precisely where it + is most unacceptable. Therefore, we have designed this version of the + <acronym>GPL</acronym> to prohibit the practice for those products. If such + problems arise substantially in other domains, we stand ready to extend this + provision to those domains in future versions of the <acronym>GPL</acronym>, + as needed to protect the freedom of users. + </para> + <para> + Finally, every program is threatened constantly by software patents. States + should not allow patents to restrict development and use of software on + general-purpose computers, but in those that do, we wish to avoid the + special danger that patents applied to a free program could make it + effectively proprietary. To prevent this, the <acronym>GPL</acronym> + assures that patents cannot be used to render the program non-free. + </para> + <para> + The precise terms and conditions for copying, distribution and modification + follow. + </para> + <bridgehead> + TERMS AND CONDITIONS + </bridgehead> + <bridgehead renderas="sect1"> + 0. Definitions. + </bridgehead> + <para> + “This License” refers to version 3 of the <acronym>GNU</acronym> + General Public License. + </para> + <para> + “Copyright” also means copyright-like laws that apply to other + kinds of works, such as semiconductor masks. + </para> + <para> + “The Program” refers to any copyrightable work licensed under + this License. Each licensee is addressed as “you”. + “Licensees” and “recipients” may be individuals or + organizations. + </para> + <para> + To “modify” a work means to copy from or adapt all or part of + the work in a fashion requiring copyright permission, other than the making + of an exact copy. The resulting work is called a “modified + version” of the earlier work or a work “based on” the + earlier work. + </para> + <para> + A “covered work” means either the unmodified Program or a work + based on the Program. + </para> + <para> + To “propagate” a work means to do anything with it that, without + permission, would make you directly or secondarily liable for infringement + under applicable copyright law, except executing it on a computer or + modifying a private copy. Propagation includes copying, distribution (with + or without modification), making available to the public, and in some + countries other activities as well. + </para> + <para> + To “convey” a work means any kind of propagation that enables + other parties to make or receive copies. Mere interaction with a user + through a computer network, with no transfer of a copy, is not conveying. + </para> + <para> + An interactive user interface displays “Appropriate Legal + Notices” to the extent that it includes a convenient and prominently + visible feature that (1) displays an appropriate copyright notice, and (2) + tells the user that there is no warranty for the work (except to the extent + that warranties are provided), that licensees may convey the work under this + License, and how to view a copy of this License. If the interface presents + a list of user commands or options, such as a menu, a prominent item in the + list meets this criterion. + </para> + <bridgehead renderas="sect1"> + 1. Source Code. + </bridgehead> + <para> + The “source code” for a work means the preferred form of the + work for making modifications to it. “Object code” means any + non-source form of a work. + </para> + <para> + A “Standard Interface” means an interface that either is an + official standard defined by a recognized standards body, or, in the case of + interfaces specified for a particular programming language, one that is + widely used among developers working in that language. + </para> + <para> + The “System Libraries” of an executable work include anything, + other than the work as a whole, that (a) is included in the normal form of + packaging a Major Component, but which is not part of that Major Component, + and (b) serves only to enable use of the work with that Major Component, or + to implement a Standard Interface for which an implementation is available + to the public in source code form. A “Major Component”, in this + context, means a major essential component (kernel, window system, and so + on) of the specific operating system (if any) on which the executable work + runs, or a compiler used to produce the work, or an object code interpreter + used to run it. + </para> + <para> + The “Corresponding Source” for a work in object code form means + all the source code needed to generate, install, and (for an executable + work) run the object code and to modify the work, including scripts to + control those activities. However, it does not include the work’s + System Libraries, or general-purpose tools or generally available free + programs which are used unmodified in performing those activities but which + are not part of the work. For example, Corresponding Source includes + interface definition files associated with source files for the work, and + the source code for shared libraries and dynamically linked subprograms that + the work is specifically designed to require, such as by intimate data + communication or control flow between those subprograms and other parts of + the work. + </para> + <para> + The Corresponding Source need not include anything that users can regenerate + automatically from other parts of the Corresponding Source. + </para> + <para> + The Corresponding Source for a work in source code form is that same work. + </para> + <bridgehead renderas="sect1"> + 2. Basic Permissions. + </bridgehead> + <para> + All rights granted under this License are granted for the term of copyright + on the Program, and are irrevocable provided the stated conditions are met. + This License explicitly affirms your unlimited permission to run the + unmodified Program. The output from running a covered work is covered by + this License only if the output, given its content, constitutes a covered + work. This License acknowledges your rights of fair use or other + equivalent, as provided by copyright law. + </para> + <para> + You may make, run and propagate covered works that you do not convey, + without conditions so long as your license otherwise remains in force. You + may convey covered works to others for the sole purpose of having them make + modifications exclusively for you, or provide you with facilities for + running those works, provided that you comply with the terms of this License + in conveying all material for which you do not control copyright. Those + thus making or running the covered works for you must do so exclusively on + your behalf, under your direction and control, on terms that prohibit them + from making any copies of your copyrighted material outside their + relationship with you. + </para> + <para> + Conveying under any other circumstances is permitted solely under the + conditions stated below. Sublicensing is not allowed; section 10 makes it + unnecessary. + </para> + <bridgehead renderas="sect1"> + 3. Protecting Users’ Legal Rights From Anti-Circumvention Law. + </bridgehead> + <para> + No covered work shall be deemed part of an effective technological measure + under any applicable law fulfilling obligations under article 11 of the WIPO + copyright treaty adopted on 20 December 1996, or similar laws prohibiting or + restricting circumvention of such measures. + </para> + <para> + When you convey a covered work, you waive any legal power to forbid + circumvention of technological measures to the extent such circumvention is + effected by exercising rights under this License with respect to the covered + work, and you disclaim any intention to limit operation or modification of + the work as a means of enforcing, against the work’s users, your or + third parties’ legal rights to forbid circumvention of technological + measures. + </para> + <bridgehead renderas="sect1"> + 4. Conveying Verbatim Copies. + </bridgehead> + <para> + You may convey verbatim copies of the Program’s source code as you + receive it, in any medium, provided that you conspicuously and appropriately + publish on each copy an appropriate copyright notice; keep intact all + notices stating that this License and any non-permissive terms added in + accord with section 7 apply to the code; keep intact all notices of the + absence of any warranty; and give all recipients a copy of this License + along with the Program. + </para> + <para> + You may charge any price or no price for each copy that you convey, and you + may offer support or warranty protection for a fee. + </para> + <bridgehead renderas="sect1"> + 5. Conveying Modified Source Versions. + </bridgehead> + <para> + You may convey a work based on the Program, or the modifications to produce + it from the Program, in the form of source code under the terms of section + 4, provided that you also meet all of these conditions: + </para> + <orderedlist numeration="loweralpha"> + <listitem> + <para> + The work must carry prominent notices stating that you modified it, and + giving a relevant date. + </para> + </listitem> + <listitem> + <para> + The work must carry prominent notices stating that it is released under + this License and any conditions added under section 7. This requirement + modifies the requirement in section 4 to “keep intact all + notices”. + </para> + </listitem> + <listitem> + <para> + You must license the entire work, as a whole, under this License to + anyone who comes into possession of a copy. This License will therefore + apply, along with any applicable section 7 additional terms, to the + whole of the work, and all its parts, regardless of how they are + packaged. This License gives no permission to license the work in any + other way, but it does not invalidate such permission if you have + separately received it. + </para> + </listitem> + <listitem> + <para> + If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your work need + not make them do so. + </para> + </listitem> + </orderedlist> + <para> + A compilation of a covered work with other separate and independent works, + which are not by their nature extensions of the covered work, and which are + not combined with it such as to form a larger program, in or on a volume of + a storage or distribution medium, is called an “aggregate” if + the compilation and its resulting copyright are not used to limit the access + or legal rights of the compilation’s users beyond what the individual works + permit. Inclusion of a covered work in an aggregate does not cause + this License to apply to the other parts of the aggregate. + </para> + <bridgehead renderas="sect1"> + 6. Conveying Non-Source Forms. + </bridgehead> + <para> + You may convey a covered work in object code form under the terms of + sections 4 and 5, provided that you also convey the machine-readable + Corresponding Source under the terms of this License, in one of these ways: + </para> + <orderedlist numeration="loweralpha"> + <listitem> + <para> + Convey the object code in, or embodied in, a physical product (including + a physical distribution medium), accompanied by the Corresponding Source + fixed on a durable physical medium customarily used for software + interchange. + </para> + </listitem> + <listitem> + <para> + Convey the object code in, or embodied in, a physical product (including + a physical distribution medium), accompanied by a written offer, valid + for at least three years and valid for as long as you offer spare parts + or customer support for that product model, to give anyone who possesses + the object code either (1) a copy of the Corresponding Source for all + the software in the product that is covered by this License, on a + durable physical medium customarily used for software interchange, for a + price no more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the Corresponding Source from + a network server at no charge. + </para> + </listitem> + <listitem> + <para> + Convey individual copies of the object code with a copy of the written + offer to provide the Corresponding Source. This alternative is allowed + only occasionally and noncommercially, and only if you received the + object code with such an offer, in accord with subsection 6b. + </para> + </listitem> + <listitem> + <para> + Convey the object code by offering access from a designated place + (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to copy + the object code is a network server, the Corresponding Source may be on + a different server (operated by you or a third party) that supports + equivalent copying facilities, provided you maintain clear directions + next to the object code saying where to find the Corresponding Source. + Regardless of what server hosts the Corresponding Source, you remain + obligated to ensure that it is available for as long as needed to + satisfy these requirements. + </para> + </listitem> + <listitem> + <para> + Convey the object code using peer-to-peer transmission, provided you + inform other peers where the object code and Corresponding Source of the + work are being offered to the general public at no charge under + subsection 6d. + </para> + </listitem> + </orderedlist> + <para> + A separable portion of the object code, whose source code is excluded from + the Corresponding Source as a System Library, need not be included in + conveying the object code work. + </para> + <para> + A “User Product” is either (1) a “consumer product”, + which means any tangible personal property which is normally used for + personal, family, or household purposes, or (2) anything designed or sold + for incorporation into a dwelling. In determining whether a product is a + consumer product, doubtful cases shall be resolved in favor of coverage. + For a particular product received by a particular user, “normally + used” refers to a typical or common use of that class of product, + regardless of the status of the particular user or of the way in which the + particular user actually uses, or expects or is expected to use, the + product. A product is a consumer product regardless of whether the product + has substantial commercial, industrial or non-consumer uses, unless such + uses represent the only significant mode of use of the product. + </para> + <para> + “Installation Information” for a User Product means any methods, + procedures, authorization keys, or other information required to install and + execute modified versions of a covered work in that User Product from a + modified version of its Corresponding Source. The information must suffice + to ensure that the continued functioning of the modified object code is in + no case prevented or interfered with solely because modification has been + made. + </para> + <para> + If you convey an object code work under this section in, or with, or + specifically for use in, a User Product, and the conveying occurs as part of + a transaction in which the right of possession and use of the User Product + is transferred to the recipient in perpetuity or for a fixed term + (regardless of how the transaction is characterized), the Corresponding + Source conveyed under this section must be accompanied by the Installation + Information. But this requirement does not apply if neither you nor any + third party retains the ability to install modified object code on the User + Product (for example, the work has been installed in + <acronym>ROM</acronym>). + </para> + <para> + The requirement to provide Installation Information does not include a + requirement to continue to provide support service, warranty, or updates for + a work that has been modified or installed by the recipient, or for the User + Product in which it has been modified or installed. Access to a network may + be denied when the modification itself materially and adversely affects the + operation of the network or violates the rules and protocols for + communication across the network. + </para> + <para> + Corresponding Source conveyed, and Installation Information provided, in + accord with this section must be in a format that is publicly documented + (and with an implementation available to the public in source code form), + and must require no special password or key for unpacking, reading or + copying. + </para> + <bridgehead renderas="sect1"> + 7. Additional Terms. + </bridgehead> + <para> + “Additional permissions” are terms that supplement the terms of + this License by making exceptions from one or more of its conditions. + Additional permissions that are applicable to the entire Program shall be + treated as though they were included in this License, to the extent that + they are valid under applicable law. If additional permissions apply only + to part of the Program, that part may be used separately under those + permissions, but the entire Program remains governed by this License + without regard to the additional permissions. + </para> + <para> + When you convey a copy of a covered work, you may at your option remove any + additional permissions from that copy, or from any part of it. (Additional + permissions may be written to require their own removal in certain cases + when you modify the work.) You may place additional permissions on + material, added by you to a covered work, for which you have or can give + appropriate copyright permission. + </para> + <para> + Notwithstanding any other provision of this License, for material you add + to a covered work, you may (if authorized by the copyright holders of that + material) supplement the terms of this License with terms: + </para> + <orderedlist numeration="loweralpha"> + <listitem> + <para> + Disclaiming warranty or limiting liability differently from the terms + of sections 15 and 16 of this License; or + </para> + </listitem> + <listitem> + <para> + Requiring preservation of specified reasonable legal notices or author + attributions in that material or in the Appropriate Legal Notices + displayed by works containing it; or + </para> + </listitem> + <listitem> + <para> + Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + </para> + </listitem> + <listitem> + <para> + Limiting the use for publicity purposes of names of licensors or + authors of the material; or + </para> + </listitem> + <listitem> + <para> + Declining to grant rights under trademark law for use of some trade + names, trademarks, or service marks; or + </para> + </listitem> + <listitem> + <para> + Requiring indemnification of licensors and authors of that material by + anyone who conveys the material (or modified versions of it) with + contractual assumptions of liability to the recipient, for any + liability that these contractual assumptions directly impose on those + licensors and authors. + </para> + </listitem> + </orderedlist> + <para> + All other non-permissive additional terms are considered “further + restrictions” within the meaning of section 10. If the Program as + you received it, or any part of it, contains a notice stating that it is + governed by this License along with a term that is a further restriction, + you may remove that term. If a license document contains a further + restriction but permits relicensing or conveying under this License, you + may add to a covered work material governed by the terms of that license + document, provided that the further restriction does not survive such + relicensing or conveying. + </para> + <para> + If you add terms to a covered work in accord with this section, you must + place, in the relevant source files, a statement of the additional terms + that apply to those files, or a notice indicating where to find the + applicable terms. + </para> + <para> + Additional terms, permissive or non-permissive, may be stated in the form + of a separately written license, or stated as exceptions; the above + requirements apply either way. + </para> + <bridgehead renderas="sect1"> + 8. Termination. + </bridgehead> + <para> + You may not propagate or modify a covered work except as expressly provided + under this License. Any attempt otherwise to propagate or modify it is + void, and will automatically terminate your rights under this License + (including any patent licenses granted under the third paragraph of section + 11). + </para> + <para> + However, if you cease all violation of this License, then your license from + a particular copyright holder is reinstated (a) provisionally, unless and + until the copyright holder explicitly and finally terminates your license, + and (b) permanently, if the copyright holder fails to notify you of the + violation by some reasonable means prior to 60 days after the cessation. + </para> + <para> + Moreover, your license from a particular copyright holder is reinstated + permanently if the copyright holder notifies you of the violation by some + reasonable means, this is the first time you have received notice of + violation of this License (for any work) from that copyright holder, and + you cure the violation prior to 30 days after your receipt of the notice. + </para> + <para> + Termination of your rights under this section does not terminate the + licenses of parties who have received copies or rights from you under this + License. If your rights have been terminated and not permanently + reinstated, you do not qualify to receive new licenses for the same + material under section 10. + </para> + <bridgehead renderas="sect1"> + 9. Acceptance Not Required for Having Copies. + </bridgehead> + <para> + You are not required to accept this License in order to receive or run a + copy of the Program. Ancillary propagation of a covered work occurring + solely as a consequence of using peer-to-peer transmission to receive a + copy likewise does not require acceptance. However, nothing other than + this License grants you permission to propagate or modify any covered work. + These actions infringe copyright if you do not accept this License. + Therefore, by modifying or propagating a covered work, you indicate your + acceptance of this License to do so. + </para> + <bridgehead renderas="sect1"> + 10. Automatic Licensing of Downstream Recipients. + </bridgehead> + <para> + Each time you convey a covered work, the recipient automatically receives a + license from the original licensors, to run, modify and propagate that + work, subject to this License. You are not responsible for enforcing + compliance by third parties with this License. + </para> + <para> + An “entity transaction” is a transaction transferring control + of an organization, or substantially all assets of one, or subdividing an + organization, or merging organizations. If propagation of a covered work + results from an entity transaction, each party to that transaction who + receives a copy of the work also receives whatever licenses to the work the + party’s predecessor in interest had or could give under the previous + paragraph, plus a right to possession of the Corresponding Source of the + work from the predecessor in interest, if the predecessor has it or can get + it with reasonable efforts. + </para> + <para> + You may not impose any further restrictions on the exercise of the rights + granted or affirmed under this License. For example, you may not impose a + license fee, royalty, or other charge for exercise of rights granted under + this License, and you may not initiate litigation (including a cross-claim + or counterclaim in a lawsuit) alleging that any patent claim is infringed + by making, using, selling, offering for sale, or importing the Program or + any portion of it. + </para> + <bridgehead renderas="sect1"> + 11. Patents. + </bridgehead> + <para> + A “contributor” is a copyright holder who authorizes use under + this License of the Program or a work on which the Program is based. The + work thus licensed is called the contributor’s “contributor + version”. + </para> + <para> + A contributor’s “essential patent claims” are all patent + claims owned or controlled by the contributor, whether already acquired or + hereafter acquired, that would be infringed by some manner, permitted by + this License, of making, using, or selling its contributor version, but do + not include claims that would be infringed only as a consequence of further + modification of the contributor version. For purposes of this definition, + “control” includes the right to grant patent sublicenses in a + manner consistent with the requirements of this License. + </para> + <para> + Each contributor grants you a non-exclusive, worldwide, royalty-free patent + license under the contributor’s essential patent claims, to make, use, + sell, offer for sale, import and otherwise run, modify and propagate the + contents of its contributor version. + </para> + <para> + In the following three paragraphs, a “patent license” is any + express agreement or commitment, however denominated, not to enforce a + patent (such as an express permission to practice a patent or covenant not + to sue for patent infringement). To “grant” such a patent + license to a party means to make such an agreement or commitment not to + enforce a patent against the party. + </para> + <para> + If you convey a covered work, knowingly relying on a patent license, and the + Corresponding Source of the work is not available for anyone to copy, free + of charge and under the terms of this License, through a publicly available + network server or other readily accessible means, then you must either (1) + cause the Corresponding Source to be so available, or (2) arrange to deprive + yourself of the benefit of the patent license for this particular work, or + (3) arrange, in a manner consistent with the requirements of this License, + to extend the patent license to downstream recipients. “Knowingly + relying” means you have actual knowledge that, but for the patent + license, your conveying the covered work in a country, or your + recipient’s use of the covered work in a country, would infringe one + or more identifiable patents in that country that you have reason to believe + are valid. + </para> + <para> + If, pursuant to or in connection with a single transaction or arrangement, + you convey, or propagate by procuring conveyance of, a covered work, and + grant a patent license to some of the parties receiving the covered work + authorizing them to use, propagate, modify or convey a specific copy of the + covered work, then the patent license you grant is automatically extended to + all recipients of the covered work and works based on it. + </para> + <para> + A patent license is “discriminatory” if it does not include + within the scope of its coverage, prohibits the exercise of, or is + conditioned on the non-exercise of one or more of the rights that are + specifically granted under this License. You may not convey a covered work + if you are a party to an arrangement with a third party that is in the + business of distributing software, under which you make payment to the third + party based on the extent of your activity of conveying the work, and under + which the third party grants, to any of the parties who would receive the + covered work from you, a discriminatory patent license (a) in connection + with copies of the covered work conveyed by you (or copies made from those + copies), or (b) primarily for and in connection with specific products or + compilations that contain the covered work, unless you entered into that + arrangement, or that patent license was granted, prior to 28 March 2007. + </para> + <para> + Nothing in this License shall be construed as excluding or limiting any + implied license or other defenses to infringement that may otherwise be + available to you under applicable patent law. + </para> + <bridgehead renderas="sect1"> + 12. No Surrender of Others’ Freedom. + </bridgehead> + <para> + If conditions are imposed on you (whether by court order, agreement or + otherwise) that contradict the conditions of this License, they do not + excuse you from the conditions of this License. If you cannot convey a + covered work so as to satisfy simultaneously your obligations under this + License and any other pertinent obligations, then as a consequence you may + not convey it at all. For example, if you agree to terms that obligate you + to collect a royalty for further conveying from those to whom you convey the + Program, the only way you could satisfy both those terms and this License + would be to refrain entirely from conveying the Program. + </para> + <bridgehead renderas="sect1"> + 13. Use with the <acronym>GNU</acronym> Affero General Public License. + </bridgehead> + <para> + Notwithstanding any other provision of this License, you have permission to + link or combine any covered work with a work licensed under version 3 of the + <acronym>GNU</acronym> Affero General Public License into a single combined + work, and to convey the resulting work. The terms of this License will + continue to apply to the part which is the covered work, but the special + requirements of the <acronym>GNU</acronym> Affero General Public License, + section 13, concerning interaction through a network will apply to the + combination as such. + </para> + <bridgehead renderas="sect1"> + 14. Revised Versions of this License. + </bridgehead> + <para> + The Free Software Foundation may publish revised and/or new versions of the + <acronym>GNU</acronym> General Public License from time to time. Such new + versions will be similar in spirit to the present version, but may differ in + detail to address new problems or concerns. + </para> + <para> + Each version is given a distinguishing version number. If the Program + specifies that a certain numbered version of the <acronym>GNU</acronym> + General Public License “or any later version” applies to it, you + have the option of following the terms and conditions either of that + numbered version or of any later version published by the Free Software + Foundation. If the Program does not specify a version number of the + <acronym>GNU</acronym> General Public License, you may choose any version + ever published by the Free Software Foundation. + </para> + <para> + If the Program specifies that a proxy can decide which future versions of + the <acronym>GNU</acronym> General Public License can be used, that + proxy’s public statement of acceptance of a version permanently + authorizes you to choose that version for the Program. + </para> + <para> + Later license versions may give you additional or different permissions. + However, no additional obligations are imposed on any author or copyright + holder as a result of your choosing to follow a later version. + </para> + <bridgehead renderas="sect1"> + 15. Disclaimer of Warranty. + </bridgehead> + <para> + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE + LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR + OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF + ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH + YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL + NECESSARY SERVICING, REPAIR OR CORRECTION. + </para> + <bridgehead renderas="sect1"> + 16. Limitation of Liability. + </bridgehead> + <para> + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL + ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE + PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY + GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE + OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA + OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD + PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), + EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF + SUCH DAMAGES. + </para> + <bridgehead renderas="sect1"> + 17. Interpretation of Sections 15 and 16. + </bridgehead> + <para> + If the disclaimer of warranty and limitation of liability provided above + cannot be given local legal effect according to their terms, reviewing + courts shall apply local law that most closely approximates an absolute + waiver of all civil liability in connection with the Program, unless a + warranty or assumption of liability accompanies a copy of the Program in + return for a fee. + </para> + <bridgehead> + END OF TERMS AND CONDITIONS + </bridgehead> + <bridgehead renderas="sect1"> + How to Apply These Terms to Your New Programs + </bridgehead> + <para> + If you develop a new program, and you want it to be of the greatest possible + use to the public, the best way to achieve this is to make it free software + which everyone can redistribute and change under these terms. + </para> + <para> + To do so, attach the following notices to the program. It is safest to + attach them to the start of each source file to most effectively state the + exclusion of warranty; and each file should have at least the + “copyright” line and a pointer to where the full notice is + found. + </para> + <screen> +<replaceable>one line to give the program’s name and a brief idea of what it does.</replaceable> +Copyright (C) <replaceable>year</replaceable> <replaceable>name of author</replaceable> + +This program is free software: you can redistribute it and/or modify +it under the terms of the <acronym>GNU</acronym> General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +<acronym>GNU</acronym> General Public License for more details. + +You should have received a copy of the <acronym>GNU</acronym> General Public License +along with this program. If not, see <ulink url="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</ulink>. + </screen> + <para> + Also add information on how to contact you by electronic and paper mail. + </para> + <para> + If the program does terminal interaction, make it output a short notice like + this when it starts in an interactive mode: + </para> + <screen> +<replaceable>program</replaceable> Copyright (C) <replaceable>year</replaceable> <replaceable>name of author</replaceable> +This program comes with ABSOLUTELY NO WARRANTY; for details type ‘<literal>show w</literal>’. +This is free software, and you are welcome to redistribute it +under certain conditions; type ‘<literal>show c</literal>’ for details. + </screen> + <para> + The hypothetical commands ‘<literal>show w</literal>’ and + ‘<literal>show c</literal>’ should show the appropriate parts of + the General Public License. Of course, your program’s commands might be + different; for a GUI interface, you would use an “about box”. + </para> + <para> + You should also get your employer (if you work as a programmer) or school, + if any, to sign a “copyright disclaimer” for the program, if + necessary. For more information on this, and how to apply and follow the + <acronym>GNU</acronym> <acronym>GPL</acronym>, see <ulink + url="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</ulink>. + </para> + <para> + The <acronym>GNU</acronym> General Public License does not permit + incorporating your program into proprietary programs. If your program is a + subroutine library, you may consider it more useful to permit linking + proprietary applications with the library. If this is what you want to do, + use the <acronym>GNU</acronym> Lesser General Public License instead of this + License. But first, please read <ulink + url="http://www.gnu.org/philosophy/why-not-lgpl.html">http://www.gnu.org/philosophy/why-not-lgpl.html</ulink>. + </para> +</appendix> diff --git a/docs-xml/htmldocs.html b/docs-xml/htmldocs.html new file mode 100644 index 0000000..040f4f8 --- /dev/null +++ b/docs-xml/htmldocs.html @@ -0,0 +1,25 @@ +<html> +<head><title>Samba documentation collection</title> +<link rel="stylesheet" href="samba.css" type="text/css"> +</head> +<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> +<hr> +<div class="book" lang="en"> + <div class="titlepage"> + <h1 class="title"><a name="Samba documentation collection"></a>Samba documentation collection</h1> + </div> +</div> +<hr> +<table> + <td valign="top">SAMBA <a href="Samba-Developers-Guide/index.html">Developers</a> Guide</td> + <td valign="top">This book is a collection of documents that might be useful for people developing samba or those interested in doing so. It's nothing more than a collection of documents written by samba developers about the internals of various parts of samba and the SMB protocol. It's still (and will always be) incomplete.</td> +</tr> +<tr> + <td valign="top"><a href="manpages/index.html">Man pages</a></td> + <td valign="top">The Samba man pages in HTML.</td> +</tr> +<tr> + <td valign="top"><a href="../../WHATSNEW.txt">WHATSNEW</a></td> + <td valign="top">Samba Release Notes.</td> +</tr> +</table></body></html> diff --git a/docs-xml/manpages/cifsdd.8.xml b/docs-xml/manpages/cifsdd.8.xml new file mode 100644 index 0000000..d8d4bbc --- /dev/null +++ b/docs-xml/manpages/cifsdd.8.xml @@ -0,0 +1,101 @@ +<?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="cifsdd.8"> + +<refmeta> + <refentrytitle>cifsdd</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>cifsdd</refname> + <refpurpose>convert and copy a file over SMB</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>cifsdd</command> + <arg choice="opt">OPERAND</arg>... + </cmdsynopsis> + <cmdsynopsis> + <command>cifsdd</command> + <arg choice="plain">OPTION</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>Copy a file, converting and formatting according to the operands.</para> + + <variablelist> + <varlistentry> + <term>bs=BYTES</term> + <listitem><para>read and write up to BYTES bytes at a time (default: 4096)</para></listitem> + </varlistentry> + <varlistentry> + <term>ibs=BYTES</term> + <listitem><para>read up to BYTES bytes at a time (default: 4096)</para></listitem> + </varlistentry> + <varlistentry> + <term>obs=BYTES</term> + <listitem><para>write BYTES bytes at a time (default: 4096)</para></listitem> + </varlistentry> + + <varlistentry> + <term>if=FILE</term> + <listitem><para>read from FILE instead of stdin</para></listitem> + </varlistentry> + <varlistentry> + <term>of=FILE</term> + <listitem><para>write to FILE instead of stdout</para></listitem> + </varlistentry> + + <varlistentry> + <term>count=N</term> + <listitem><para>copy only N input blocks</para></listitem> + </varlistentry> + <varlistentry> + <term>seek=N</term> + <listitem><para>skip N obs-sized blocks at start of output</para></listitem> + </varlistentry> + <varlistentry> + <term>skip=N</term> + <listitem><para>skip N ibs-sized blocks at start of input</para></listitem> + </varlistentry> + + <varlistentry> + <term>direct</term> + <listitem><para>use direct I/O for data</para></listitem> + </varlistentry> + <varlistentry> + <term>sync</term> + <listitem><para>use synchronous writes</para></listitem> + </varlistentry> + <varlistentry> + <term>oplock</term> + <listitem><para>take oplocks on the input and output files</para></listitem> + </varlistentry> + </variablelist> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + + <para>The cifsdd manpage was written by Andreas + Schneider.</para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/dbwrap_tool.1.xml b/docs-xml/manpages/dbwrap_tool.1.xml new file mode 100644 index 0000000..c6a69f8 --- /dev/null +++ b/docs-xml/manpages/dbwrap_tool.1.xml @@ -0,0 +1,198 @@ +<?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="dbwrap_tool.1"> + +<refmeta> + <refentrytitle>dbwrap_tool</refentrytitle> + <manvolnum>1</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>dbwrap_tool</refname> + <refpurpose>low level TDB/CTDB manipulation tool using the dbwrap interface</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>dbwrap_tool</command> + <arg choice="opt">-?|--help</arg> + <arg choice="opt">--usage</arg> + <arg choice="opt">--persistent</arg> + <arg choice="opt">--non-persistent</arg> + <arg choice="opt">-d|--debuglevel=DEBUGLEVEL</arg> + <arg choice="opt">--debug-stdout</arg> + <arg choice="opt">--configfile=CONFIGFILE</arg> + <arg choice="opt">--option=name=value</arg> + <arg choice="opt">-l|--log-basename=LOGFILEBASE</arg> + <arg choice="opt">--leak-report</arg> + <arg choice="opt">--leak-report-full</arg> + <arg choice="req"><database></arg> + <arg choice="req"><operation></arg> + <arg choice="opt"><key> + <arg choice="opt"><type> + <arg choice="opt"><value></arg></arg></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>The dbwrap_tool program is used to read and manipulate + TDB/CTDB databases using the dbwrap interface.</para> + + <para>The following database operations are available: + <itemizedlist> + <listitem><para>fetch: fetch a record</para></listitem> + <listitem><para>store: create or modify a record</para></listitem> + <listitem><para>delete: remove a record</para></listitem> + <listitem><para>exists: test for existence of a record</para></listitem> + <listitem><para>erase: remove all records</para></listitem> + <listitem><para>listkeys: list all available records</para></listitem> + <listitem><para>listwatchers: list processes, which are waiting for changes in a record</para></listitem> + </itemizedlist> + </para> + <para>The following types are available: + <itemizedlist> + <listitem><para>int32: signed 32bit integer</para></listitem> + <listitem><para>uint32: unsigned 32bit integer</para></listitem> + <listitem><para>string: "hello world"</para></listitem> + <listitem><para>hex: hex strings like "68656C6C6F20776F726C6400" ("hello world")</para></listitem> + </itemizedlist> + </para> +</refsect1> + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + <varlistentry> + <term>--persistent</term> + <listitem><para>Open the database as a persistent database. + </para> + <para> + Exactly one of --persistent and --non-persistent must be + specified. + </para></listitem> + </varlistentry> + <varlistentry> + <term>--non-persistent</term> + <listitem><para>Open the database as a non-persistent database. + </para> + <para> + Caveat: opening a database as non-persistent when there + is currently no other opener will wipe the database. + </para> + <para> + Exactly one of --persistent and --non-persistent must be + specified. + </para></listitem> + </varlistentry> + + &popt.autohelp; + &cmdline.common.samba.client; + </variablelist> +</refsect1> + +<refsect1> + <title>COMMANDS</title> + <refsect2> + <title>fetch</title> + <cmdsynopsis> + <command>dbwrap_tool</command> <database> fetch <key> <type> + </cmdsynopsis> + </refsect2> + <refsect2> + <title>store</title> + <cmdsynopsis> + <command>dbwrap_tool</command> <database> store <key> <type> <value> + </cmdsynopsis> + </refsect2> + <refsect2> + <title>delete</title> + <cmdsynopsis> + <command>dbwrap_tool</command> <database> delete <key> + </cmdsynopsis> + </refsect2> + <refsect2> + <title>exists</title> + <cmdsynopsis> + <command>dbwrap_tool</command> <database> exists <key> + </cmdsynopsis> + </refsect2> + <refsect2> + <title>erase</title> + <cmdsynopsis> + <command>dbwrap_tool</command> <database> erase </cmdsynopsis> + </refsect2> + <refsect2> + <title>listkeys</title> + <cmdsynopsis> + <command>dbwrap_tool</command> <database> listkeys + </cmdsynopsis> + </refsect2> + <refsect2> + <title>listwatchers</title> + <cmdsynopsis> + <command>dbwrap_tool</command> <database> listwatchers + </cmdsynopsis> + </refsect2> +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + <variablelist> + <varlistentry><term>List all keys from winbindd_idmap.tdb</term> + <listitem><para><command>dbwrap_tool</command> --persistent winbindd_idmap.tdb listkeys</para></listitem> + </varlistentry> + <varlistentry><term>Fetch record with key "USER HWM" as uint32</term> + <listitem><para><command>dbwrap_tool</command> --persistent winbindd_idmap.tdb fetch "USER HWM" uint32</para></listitem> + </varlistentry> + <varlistentry><term>Remove record with key "USER HWM"</term> + <listitem><para><command>dbwrap_tool</command> --persistent winbindd_idmap.tdb remove "USER HWM"</para></listitem> + </varlistentry> + <varlistentry><term>Store and overwrite record "USER HWM" with value 214</term> + <listitem><para>uint32: <command>dbwrap_tool</command> --persistent winbindd_idmap.tdb store "USER HWM" uint32 214</para></listitem> + <listitem><para>hex: <command>dbwrap_tool</command> --persistent winbindd_idmap.tdb store "USER HWM" hex D6000000</para></listitem> + </varlistentry> + </variablelist> +</refsect1> + +<refsect1> + <title>NOTES</title> + + <para>Use with caution!</para> +</refsect1> + + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of the Samba suite.</para> +</refsect1> + +<refsect1> + <title>SEE ALSO</title> + <para><citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry>, <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry></para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + + <para>The dbwrap_tool manpage was written by Bjoern Baumbach.</para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/eventlogadm.8.xml b/docs-xml/manpages/eventlogadm.8.xml new file mode 100644 index 0000000..f567d92 --- /dev/null +++ b/docs-xml/manpages/eventlogadm.8.xml @@ -0,0 +1,291 @@ +<?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="eventlogadm.8"> + +<refmeta> + <refentrytitle>eventlogadm</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>eventlogadm</refname> + <refpurpose>push records into the Samba event log store</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + + <command>eventlogadm</command> + <arg><option>-s</option></arg> + <arg><option>-d</option></arg> + <arg><option>-h</option></arg> + <arg choice="plain"><option>-o</option> + <literal>addsource</literal> + <replaceable>EVENTLOG</replaceable> + <replaceable>SOURCENAME</replaceable> + <replaceable>MSGFILE</replaceable> + </arg> + + </cmdsynopsis> + <cmdsynopsis> + <command>eventlogadm</command> + <arg><option>-s</option></arg> + <arg><option>-d</option></arg> + <arg><option>-h</option></arg> + <arg choice="plain"><option>-o</option> + <literal>write</literal> + <replaceable>EVENTLOG</replaceable> + </arg> + + </cmdsynopsis> + <cmdsynopsis> + <command>eventlogadm</command> + <arg><option>-s</option></arg> + <arg><option>-d</option></arg> + <arg><option>-h</option></arg> + <arg choice="plain"><option>-o</option> + <literal>dump</literal> + <replaceable>EVENTLOG</replaceable> + <replaceable>RECORD_NUMBER</replaceable> + </arg> + + </cmdsynopsis> + +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This tool is part of the <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>1</manvolnum></citerefentry> suite.</para> + + <para><command>eventlogadm</command> is a filter that accepts + formatted event log records on standard input and writes them + to the Samba event log store. Windows client can then manipulate + these record using the usual administration tools.</para> + +</refsect1> + + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + <varlistentry> + <term> + <option>-s</option> + <replaceable>FILENAME</replaceable> + </term> + <listitem><para> + The <command>-s</command> option causes <command>eventlogadm</command> to load the + configuration file given as FILENAME instead of the default one used by Samba. + </para></listitem> + </varlistentry> + + <varlistentry> + <term><option>-d</option></term> + <listitem><para> + The <command>-d</command> option causes <command>eventlogadm</command> to emit debugging + information. + </para></listitem> + </varlistentry> + + <varlistentry> + <term> + <option>-o</option> + <literal>addsource</literal> + <replaceable>EVENTLOG</replaceable> + <replaceable>SOURCENAME</replaceable> + <replaceable>MSGFILE</replaceable> + </term> + <listitem><para> + The <command>-o addsource</command> option creates a + new event log source. + </para> </listitem> + </varlistentry> + + <varlistentry> + <term> + <option>-o</option> + <literal>write</literal> + <replaceable>EVENTLOG</replaceable> + </term> + <listitem><para> + The <command>-o write</command> reads event log + records from standard input and writes them to the Samba + event log store named by EVENTLOG. + </para> </listitem> + </varlistentry> + + <varlistentry> + <term> + <option>-o</option> + <literal>dump</literal> + <replaceable>EVENTLOG</replaceable> + <replaceable>RECORD_NUMBER</replaceable> + </term> + <listitem><para> + The <command>-o dump</command> reads event log + records from a EVENTLOG tdb and dumps them to standard + output on screen. + </para> </listitem> + </varlistentry> + + <varlistentry> + <term><option>-h</option></term> + <listitem><para> + Print usage information. + </para></listitem> + </varlistentry> + + </variablelist> +</refsect1> + + +<refsect1> + <title>EVENTLOG RECORD FORMAT</title> + + <para>For the write operation, <command>eventlogadm</command> + expects to be able to read structured records from standard + input. These records are a sequence of lines, with the record key + and data separated by a colon character. Records are separated + by at least one or more blank line.</para> + + <para>The event log record field are:</para> + <itemizedlist> + + <listitem><para> + <command>LEN</command> - This field should be 0, since <command>eventlogadm</command> will calculate this value. + </para></listitem> + + <listitem><para> + <command>RS1</command> - This must be the value 1699505740. + </para></listitem> + + <listitem><para> + <command>RCN</command> - This field should be 0. + </para></listitem> + + <listitem><para> + <command>TMG</command> - The time the eventlog record + was generated; format is the number of seconds since + 00:00:00 January 1, 1970, UTC. + </para></listitem> + + <listitem><para> + <command>TMW</command> - The time the eventlog record was + written; format is the number of seconds since 00:00:00 + January 1, 1970, UTC. + </para></listitem> + + <listitem><para> + <command>EID</command> - The eventlog ID. + </para></listitem> + + <listitem><para> + <command>ETP</command> - The event type -- one of + "INFO", + "ERROR", "WARNING", "AUDIT + SUCCESS" or "AUDIT FAILURE". + </para></listitem> + + <listitem><para> + <command>ECT</command> - The event category; this depends + on the message file. It is primarily used as a means of + filtering in the eventlog viewer. + </para></listitem> + + <listitem><para> + <command>RS2</command> - This field should be 0. + </para></listitem> + + <listitem><para> + <command>CRN</command> - This field should be 0. + </para></listitem> + + <listitem><para> + <command>USL</command> - This field should be 0. + </para></listitem> + + <listitem><para> + <command>SRC</command> - This field contains the source + name associated with the event log. If a message file is + used with an event log, there will be a registry entry + for associating this source name with a message file DLL. + </para></listitem> + + <listitem><para> + <command>SRN</command> - The name of the machine on + which the eventlog was generated. This is typically the + host name. + </para></listitem> + + <listitem><para> + <command>STR</command> - The text associated with the + eventlog. There may be more than one string in a record. + </para></listitem> + + <listitem><para> + <command>DAT</command> - This field should be left unset. + </para></listitem> + + </itemizedlist> + +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + <para>An example of the record format accepted by <command>eventlogadm</command>:</para> + + <programlisting> + LEN: 0 + RS1: 1699505740 + RCN: 0 + TMG: 1128631322 + TMW: 1128631322 + EID: 1000 + ETP: INFO + ECT: 0 + RS2: 0 + CRN: 0 + USL: 0 + SRC: cron + SRN: dmlinux + STR: (root) CMD ( rm -f /var/spool/cron/lastrun/cron.hourly) + DAT: + </programlisting> + + <para>Set up an eventlog source, specifying a message file DLL:</para> + <programlisting> + eventlogadm -o addsource Application MyApplication | \\ + %SystemRoot%/system32/MyApplication.dll + </programlisting> + + <para>Filter messages from the system log into an event log:</para> + <programlisting> + tail -f /var/log/messages | \\ + my_program_to_parse_into_eventlog_records | \\ + eventlogadm SystemLogEvents + </programlisting> + +</refsect1> + +<refsect1> + <title>VERSION</title> + <para>This man page is part of version &doc.version; of the Samba suite.</para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para> The original Samba software and related utilities were + created by Andrew Tridgell. Samba is now developed by the + Samba Team as an Open Source project similar to the way the + Linux kernel is developed.</para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/idmap_ad.8.xml b/docs-xml/manpages/idmap_ad.8.xml new file mode 100644 index 0000000..12cdeb6 --- /dev/null +++ b/docs-xml/manpages/idmap_ad.8.xml @@ -0,0 +1,140 @@ +<?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="idmap_ad.8"> + +<refmeta> + <refentrytitle>idmap_ad</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>idmap_ad</refname> + <refpurpose>Samba's idmap_ad Backend for Winbind</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <title>DESCRIPTION</title> + <para>The idmap_ad plugin provides a way for Winbind to read + id mappings from an AD server that uses RFC2307/SFU schema + extensions. This module implements only the "idmap" + API, and is READONLY. Mappings must be provided in advance + by the administrator by adding the uidNumber attributes for + users and gidNumber attributes for groups in the AD. Winbind + will only map users that have a uidNumber and whose primary + group have a gidNumber attribute set. It is however + recommended that all groups in use have gidNumber attributes + assigned, otherwise they are not working.</para> + + <para> + Currently, the <parameter>ad</parameter> backend + does not work as the default idmap backend, but one has + to configure it separately for each domain for which one wants + to use it, using disjoint ranges. One usually needs to configure + a writeable default idmap range, using for example the + <parameter>tdb</parameter> or <parameter>ldap</parameter> + backend, in order to be able to map the BUILTIN sids and + possibly other trusted domains. The writeable default config + is also needed in order to be able to create group mappings. + This catch-all default idmap configuration should have a range + that is disjoint from any explicitly configured domain with + idmap backend <parameter>ad</parameter>. See the example below. + </para> +</refsynopsisdiv> + +<refsect1> + <title>IDMAP OPTIONS</title> + + <variablelist> + <varlistentry> + <term>range = low - high</term> + <listitem><para> + Defines the available matching UID and GID range for which the + backend is authoritative. Note that the range acts as a filter. + If specified any UID or GID stored in AD that fall outside the + range is ignored and the corresponding map is discarded. + It is intended as a way to avoid accidental UID/GID overlaps + between local and remotely defined IDs. + </para></listitem> + </varlistentry> + <varlistentry> + <term>schema_mode = <rfc2307 | sfu | sfu20></term> + <listitem><para> + Defines the schema that idmap_ad should use when querying + Active Directory regarding user and group information. + This can be either the RFC2307 schema support included + in Windows 2003 R2 or the Service for Unix (SFU) schema. + For SFU 3.0 or 3.5 please choose "sfu", for SFU 2.0 + please choose "sfu20". + + Please note that the behavior of primary group membership is + controlled by the <emphasis>unix_primary_group</emphasis> option. + </para></listitem> + </varlistentry> + <varlistentry> + <term>unix_primary_group = yes/no</term> + <listitem><para> + Defines whether the user's primary group is fetched from the SFU + attributes or the AD primary group. If set to + <parameter>yes</parameter> the primary group membership is fetched + from the LDAP attributes (gidNumber). + If set to <parameter>no</parameter> the primary group membership is + calculated via the "primaryGroupID" LDAP attribute. + </para> + <para>Default: no</para> + </listitem> + </varlistentry> + <varlistentry> + <term>unix_nss_info = yes/no</term> + <listitem><para> + If set to <parameter>yes</parameter> winbind will retrieve the login + shell and home directory from the LDAP attributes. If set to + <parameter>no</parameter> or the AD LDAP entry lacks the SFU + attributes the options <emphasis>template shell</emphasis> and + <emphasis>template homedir</emphasis> are used. + </para> + <para>Default: no</para> + </listitem> + </varlistentry> + </variablelist> +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + <para> + The following example shows how to retrieve idmappings from our principal and + trusted AD domains. If trusted domains are present id conflicts must be + resolved beforehand, there is no + guarantee on the order conflicting mappings would be resolved at this point. + + This example also shows how to leave a small non conflicting range for local + id allocation that may be used in internal backends like BUILTIN. + </para> + + <programlisting> + [global] + workgroup = CORP + + idmap config * : backend = tdb + idmap config * : range = 1000000-1999999 + + idmap config CORP : backend = ad + idmap config CORP : range = 1000-999999 + </programlisting> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para> + The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed. + </para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/idmap_autorid.8.xml b/docs-xml/manpages/idmap_autorid.8.xml new file mode 100644 index 0000000..980718f --- /dev/null +++ b/docs-xml/manpages/idmap_autorid.8.xml @@ -0,0 +1,184 @@ +<?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="idmap_autorid.8"> + +<refmeta> + <refentrytitle>idmap_autorid</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>idmap_autorid</refname> + <refpurpose>Samba's idmap_autorid Backend for Winbind</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <title>DESCRIPTION</title> + <para>The idmap_autorid backend provides a way to use an algorithmic + mapping scheme to map UIDs/GIDs and SIDs that is more deterministic + than idmap_tdb and easier to configure than idmap_rid.</para> + <para>The module works similar to idmap_rid, but it automatically + configures the range to be used for each domain, so there is no need + to specify a specific range for each domain in the forest, the only + configuration that is needed is the range of uid/gids that shall + be used for user/group mappings and an optional size of the ranges + to be used.</para> + <para>The mappings of which domain is mapped to which range is stored + in autorid.tdb, thus you should backup this database regularly.</para> + <para>Due to the algorithm being used, it is the module that is + most easy to use as it only requires a minimal configuration.</para> +</refsynopsisdiv> + +<refsect1> + <title>IDMAP OPTIONS</title> + + <variablelist> + <varlistentry> + <term>range = low - high</term> + <listitem><para> + Defines the available matching uid and gid + range for which the backend is + authoritative. Note that the range acts as a + filter. If algorithmically determined UID or + GID fall outside the range, they are ignored + and the corresponding map is discarded. It is + intended as a way to avoid accidental UID/GID + overlaps between local and remotely defined + IDs. Note that the range should be a multiple + of the rangesize and needs to be at least twice + as large in order to have sufficient id range + space for the mandatory BUILTIN domain. + With a default rangesize of 100000 the range + needs to span at least 200000. + This would be: range = 100000 - 299999. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>rangesize = numberofidsperdomain</term> + <listitem><para> + Defines the number of uids/gids available per + domain range. The minimum needed value is 2000. + SIDs with RIDs larger than this value will be mapped + into extension ranges depending upon number of available + ranges. If the autorid backend runs out of available + ranges, mapping requests for new domains (or new + extension ranges for domains already known) are ignored + and the corresponding map is discarded. + </para> + <para> + Example: with rangesize set to 10000, users/groups with + a RID up to 10000 will be put into the first range for the + domain. When attempting to map the an object with a RID + of 25000, an extension range will be allocated that + will then be used to map all RIDs from 20000-29999. + </para> + <para>One range will be used for local users and groups and for + non-domain well-known SIDs like Everyone (S-1-1-0) or Creator Owner (S-1-3-0). + A chosen list of well-known SIDs will be preallocated on first start + to create deterministic mappings for those.</para> + <para> + Thus the number of local users and groups that can be created is + limited by this option as well. If you plan to create a large amount + of local users or groups, you will need set this parameter accordingly. + </para> + <para>The default value is 100000.</para> + </listitem> + </varlistentry> + <varlistentry> + <term>read only = [ yes | no ]</term> + <listitem><para>Turn the module into read-only mode. No new ranges will be allocated + nor will new mappings be created in the idmap pool. Defaults to no.</para> + </listitem> + </varlistentry> + <varlistentry> + <term>ignore builtin = [ yes | no ]</term> + <listitem><para>Ignore any mapping requests for the BUILTIN domain. + Defaults to no.</para> + </listitem> + </varlistentry> + </variablelist> +</refsect1> + +<refsect1> + <title>THE MAPPING FORMULAS</title> + <para> + The Unix ID for a RID is calculated this way: + <programlisting> + ID = REDUCED RID + IDMAP RANGE LOW VALUE + RANGE NUMBER * RANGE SIZE + </programlisting> + where REDUCED RID = RID % RANGE_SIZE + and a DOMAIN RANGE INDEX = RID / RANGE_SIZE is used together with the + domain sid to determine the RANGE NUMBER (stored in the database). + </para> + <para> + Correspondingly, the formula for calculating the RID for a + given Unix ID is this: + <programlisting> + RID = (ID - LOW ID) % RANGE SIZE + DOMAIN RANGE INDEX * RANGE SIZE + </programlisting> + Where the DOMAIN RANGE INDEX is retrieved from the database along with the + domain sid by the RANGE NUMBER = (ID - LOW ID) / RANGE SIZE . + </para> +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + <para> + This example shows you the minimal configuration that will + work for the principal domain and 19 trusted domains / range + extensions. + </para> + + <programlisting> + [global] + security = ads + workgroup = CUSTOMER + realm = CUSTOMER.COM + + idmap config * : backend = autorid + idmap config * : range = 1000000-1999999 + + </programlisting> + + <para> + This example shows how to configure idmap_autorid as default + for all domains with a potentially large amount of users + plus a specific configuration for a trusted domain + that uses the SFU mapping scheme. Please note that idmap + ranges and sfu ranges are not allowed to overlap. + </para> + + <programlisting> + [global] + security = ads + workgroup = CUSTOMER + realm = CUSTOMER.COM + + idmap config * : backend = autorid + idmap config * : range = 1000000-19999999 + idmap config * : rangesize = 1000000 + + idmap config TRUSTED : backend = ad + idmap config TRUSTED : range = 50000 - 99999 + idmap config TRUSTED : schema_mode = sfu + </programlisting> + +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para> + The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed. + </para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/idmap_hash.8.xml b/docs-xml/manpages/idmap_hash.8.xml new file mode 100644 index 0000000..03ff02a --- /dev/null +++ b/docs-xml/manpages/idmap_hash.8.xml @@ -0,0 +1,93 @@ +<?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="idmap_hash.8"> + +<refmeta> + <refentrytitle>idmap_hash</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>idmap_hash</refname> + <refpurpose>DO NOT USE THIS BACKEND</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <title>DESCRIPTION</title> + <para>DO NOT USE THIS PLUGIN + + The idmap_hash plugin implements a hashing algorithm used to map + SIDs for domain users and groups to 31-bit uids and gids, respectively. + This plugin also implements the nss_info API and can be used + to support a local name mapping files if enabled via the + "winbind normalize names" and "winbind nss info" + parameters in &smb.conf;. + The module divides the range into subranges for each domain that is being + handled by the idmap config. + + The module needs the complete UID and GID range to be able to map all + SIDs. The lowest value for the range should be the smallest ID + available in the system. This is normally 1000. The highest ID should + be set to 2147483647. + + A smaller range will lead to issues because of the hashing algorithm + used. The overall range to map all SIDs is 0 - 2147483647. Any range + smaller than 0 - 2147483647 will filter some SIDs. As we can normally + only start with 1000, we are not able to map 1000 SIDs. This already + can lead to issues. The smaller the range the less SIDs can be mapped. + + We do not recommend to use this plugin. It will be removed in a future + release of Samba. + </para> +</refsynopsisdiv> + +<refsect1> + <title>IDMAP OPTIONS</title> + + <variablelist> + <varlistentry> + <term>name_map</term> + <listitem><para> + Specifies the absolute path to the name mapping + file used by the nss_info API. Entries in the file + are of the form "<replaceable>unix name</replaceable> + = <replaceable>qualified domain name</replaceable>". + Mapping of both user and group names is supported. + </para></listitem> + </varlistentry> + </variablelist> +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + <para>The following example utilizes the idmap_hash plugin for + the idmap and nss_info information. + </para> + + <programlisting> + [global] + idmap config * : backend = hash + idmap config * : range = 1000-2147483647 + + winbind nss info = hash + winbind normalize names = yes + idmap_hash:name_map = /etc/samba/name_map.cfg + </programlisting> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para> + The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed. + </para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/idmap_ldap.8.xml b/docs-xml/manpages/idmap_ldap.8.xml new file mode 100644 index 0000000..80f272d --- /dev/null +++ b/docs-xml/manpages/idmap_ldap.8.xml @@ -0,0 +1,145 @@ +<?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="idmap_ldap.8"> + +<refmeta> + <refentrytitle>idmap_ldap</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>idmap_ldap</refname> + <refpurpose>Samba's idmap_ldap Backend for Winbind</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <title>DESCRIPTION</title> + + <para>The idmap_ldap plugin provides a means for Winbind to + store and retrieve SID/uid/gid mapping tables in an LDAP directory + service. + </para> + + <para> + In contrast to read only backends like idmap_rid, it is an allocating + backend: This means that it needs to allocate new user and group IDs in + order to create new mappings. + </para> + +</refsynopsisdiv> + +<refsect1> + <title>IDMAP OPTIONS</title> + + <variablelist> + <varlistentry> + <term>ldap_base_dn = DN</term> + <listitem><para> + Defines the directory base suffix to use for + SID/uid/gid mapping entries. If not defined, idmap_ldap will default + to using the "ldap idmap suffix" option from &smb.conf;. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>ldap_user_dn = DN</term> + <listitem><para> + Defines the user DN to be used for authentication. + The secret for authenticating this user should be + stored with net idmap secret + (see <citerefentry><refentrytitle>net</refentrytitle> + <manvolnum>8</manvolnum></citerefentry>). + If absent, the ldap credentials from the ldap passdb configuration + are used, and if these are also absent, an anonymous + bind will be performed as last fallback. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>ldap_url = ldap://server/</term> + <listitem><para> + Specifies the LDAP server to use for + SID/uid/gid map entries. If not defined, idmap_ldap will + assume that ldap://localhost/ should be used. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>range = low - high</term> + <listitem><para> + Defines the available matching uid and gid range for which the + backend is authoritative. + </para></listitem> + </varlistentry> + </variablelist> +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + + <para> + The following example shows how an ldap directory is used as the + default idmap backend. It also configures the idmap range and base + directory suffix. The secret for the ldap_user_dn has to be set with + "net idmap secret '*' password". + </para> + + <programlisting> + [global] + idmap config * : backend = ldap + idmap config * : range = 1000000-1999999 + idmap config * : ldap_url = ldap://localhost/ + idmap config * : ldap_base_dn = ou=idmap,dc=example,dc=com + idmap config * : ldap_user_dn = cn=idmap_admin,dc=example,dc=com + </programlisting> + + <para> + This example shows how ldap can be used as a readonly backend while + tdb is the default backend used to store the mappings. + It adds an explicit configuration for some domain DOM1, that + uses the ldap idmap backend. Note that a range disjoint from the + default range is used. + </para> + + <programlisting> + [global] + # "backend = tdb" is redundant here since it is the default + idmap config * : backend = tdb + idmap config * : range = 1000000-1999999 + + idmap config DOM1 : backend = ldap + idmap config DOM1 : range = 2000000-2999999 + idmap config DOM1 : read only = yes + idmap config DOM1 : ldap_url = ldap://server/ + idmap config DOM1 : ldap_base_dn = ou=idmap,dc=dom1,dc=example,dc=com + idmap config DOM1 : ldap_user_dn = cn=idmap_admin,dc=dom1,dc=example,dc=com + </programlisting> +</refsect1> + +<refsynopsisdiv> + <title>NOTE</title> + + <para>In order to use authentication against ldap servers you may + need to provide a DN and a password. To avoid exposing the password + in plain text in the configuration file we store it into a security + store. The "net idmap " command is used to store a secret + for the DN specified in a specific idmap domain. + </para> +</refsynopsisdiv> + +<refsect1> + <title>AUTHOR</title> + + <para> + The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed. + </para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/idmap_nss.8.xml b/docs-xml/manpages/idmap_nss.8.xml new file mode 100644 index 0000000..fc03445 --- /dev/null +++ b/docs-xml/manpages/idmap_nss.8.xml @@ -0,0 +1,60 @@ +<?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="idmap_nss.8"> + +<refmeta> + <refentrytitle>idmap_nss</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>idmap_nss</refname> + <refpurpose>Samba's idmap_nss Backend for Winbind</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <title>DESCRIPTION</title> + + <para>The idmap_nss plugin provides a means to map Unix users and groups + to Windows accounts. This provides a simple means of ensuring that the SID + for a Unix user named jsmith is reported as the one assigned to + DOMAIN\jsmith which is necessary for reporting ACLs on files and printers + stored on a Samba member server. + </para> +</refsynopsisdiv> + +<refsect1> + <title>EXAMPLES</title> + + <para> + This example shows how to use idmap_nss to obtain the local account ID's + for its own domain (SAMBA) from NSS, whilst allocating new mappings for + the default domain (*) and any trusted domains. + </para> + + <programlisting> + [global] + idmap config * : backend = tdb + idmap config * : range = 1000000-1999999 + + idmap config SAMBA : backend = nss + idmap config SAMBA : range = 1000-999999 + </programlisting> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para> + The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed. + </para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/idmap_rfc2307.8.xml b/docs-xml/manpages/idmap_rfc2307.8.xml new file mode 100644 index 0000000..1393b04 --- /dev/null +++ b/docs-xml/manpages/idmap_rfc2307.8.xml @@ -0,0 +1,164 @@ +<?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="idmap_rfc2307.8"> + +<refmeta> + <refentrytitle>idmap_rfc2307</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + +<refnamediv> + <refname>idmap_rfc2307</refname> + <refpurpose>Samba's idmap_rfc2307 Backend for Winbind</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <title>DESCRIPTION</title> + + <para>The idmap_rfc2307 plugin provides a way for winbind to + read id mappings from records in an LDAP server as defined in + RFC 2307. The LDAP server can be stand-alone or the LDAP + server provided by the AD server. An AD server is always + required to provide the mapping between name and SID, and the + LDAP server is queried for the mapping between name and + uid/gid. This module implements only the "idmap" + API, and is READONLY.</para> + + <para>Mappings must be provided in advance by the + administrator by creating the user accounts in the Active + Directory server and the posixAccount and posixGroup objects + in the LDAP server. The names in the Active Directory server + and in the LDAP server have to be the same.</para> + + <para>This id mapping approach allows the reuse of existing + LDAP authentication servers that store records in the RFC 2307 + format.</para> + + <para>When connecting to the LDAP server provided by an AD + server, the parameter <smbconfoption name="ldap ssl ads"/> + determines whether SSL should be used. When using a + stand-alone LDAP server, <smbconfoption name="ldap ssl"/> + applies.</para> +</refsynopsisdiv> + +<refsect1> + <title>IDMAP OPTIONS</title> + + <variablelist> + <varlistentry> + <term>range = low - high</term> + <listitem><para> Defines the available + matching UID and GID range for which the + backend is authoritative. Note that the range + acts as a filter. If specified any UID or GID + stored in AD that fall outside the range is + ignored and the corresponding map is + discarded. It is intended as a way to avoid + accidental UID/GID overlaps between local and + remotely defined IDs.</para></listitem> + </varlistentry> + <varlistentry> + <term>ldap_server = <ad | stand-alone ></term> + <listitem><para>Defines the type of LDAP + server to use. This can either be the LDAP + server provided by the Active Directory server + (ad) or a stand-alone LDAP + server.</para></listitem> + </varlistentry> + <varlistentry> + <term>bind_path_user</term> + <listitem><para>Specifies the search base where + user objects can be found in the LDAP + server.</para></listitem> + </varlistentry> + <varlistentry> + <term>bind_path_group</term> + <listitem><para>Specifies the search base where + group objects can be found in the LDAP + server.</para></listitem> + </varlistentry> + <varlistentry> + <term>user_cn = <yes | no></term> + <listitem><para>Query cn attribute instead of + uid attribute for the user name in LDAP. This + option is not required, the default is + no.</para></listitem> + </varlistentry> + <varlistentry> + <term>realm</term> + <listitem><para>Append @realm to cn for groups + (and users if user_cn is set) in + LDAP queries. This option is not required, the default + is not to append the realm.</para></listitem> + </varlistentry> + <varlistentry> + <term>ldap_domain</term> + <listitem><para>When using the LDAP server in + the Active Directory server, this allows one to + specify the domain where to access the Active + Directory server. This allows using trust + relationships while keeping all RFC 2307 + records in one place. This parameter is + optional, the default is to access the AD + server in the current domain to query LDAP + records.</para></listitem> + </varlistentry> + <varlistentry> + <term>ldap_url</term> + <listitem><para>When using a stand-alone LDAP + server, this parameter specifies the ldap URL + for accessing the LDAP + server.</para></listitem> + </varlistentry> + <varlistentry> + <term>ldap_user_dn</term> + <listitem><para>Defines the user DN to be used + for authentication. The secret for + authenticating this user should be stored with + net idmap secret (see + <citerefentry><refentrytitle>net</refentrytitle> + <manvolnum>8</manvolnum></citerefentry>). If + absent, an anonymous bind will be + performed.</para></listitem> + </varlistentry> + </variablelist> +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + + <para>The following example shows how to retrieve id mappings + from a stand-alone LDAP server. This example also shows how + to leave a small non conflicting range for local id allocation + that may be used in internal backends like BUILTIN.</para> + + <programlisting> + [global] + idmap config * : backend = tdb + idmap config * : range = 1000000-1999999 + + idmap config DOMAIN : backend = rfc2307 + idmap config DOMAIN : range = 2000000-2999999 + idmap config DOMAIN : ldap_server = stand-alone + idmap config DOMAIN : ldap_url = ldap://ldap1.example.com + idmap config DOMAIN : ldap_user_dn = cn=ldapmanager,dc=example,dc=com + idmap config DOMAIN : bind_path_user = ou=People,dc=example,dc=com + idmap config DOMAIN : bind_path_group = ou=Group,dc=example,dc=com + </programlisting> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para> + The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed. + </para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/idmap_rid.8.xml b/docs-xml/manpages/idmap_rid.8.xml new file mode 100644 index 0000000..ade4b78 --- /dev/null +++ b/docs-xml/manpages/idmap_rid.8.xml @@ -0,0 +1,125 @@ +<?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="idmap_rid.8"> + +<refmeta> + <refentrytitle>idmap_rid</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>idmap_rid</refname> + <refpurpose>Samba's idmap_rid Backend for Winbind</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <title>DESCRIPTION</title> + <para>The idmap_rid backend provides a way to use an algorithmic + mapping scheme to map UIDs/GIDs and SIDs. No database is required + in this case as the mapping is deterministic.</para> + + <para> + Currently, there should to be an explicit idmap configuration for each + domain that should use the idmap_rid backend, using disjoint ranges. + </para> + + <para> + NOTE: The idmap_rid backend can NOT bet used as the default backend. + One usually needs to define a writeable default idmap range, using + a backend like <parameter>tdb</parameter> or <parameter>ldap</parameter> + that can create unix ids, in order to be able to map the BUILTIN sids + and other domains, and also in order to be able to create group mappings. + See the example below. + </para> +</refsynopsisdiv> + +<refsect1> + <title>IDMAP OPTIONS</title> + + <variablelist> + <varlistentry> + <term>range = low - high</term> + <listitem><para> + Defines the available matching uid and gid range for which the + backend is authoritative. Note that the range acts as a filter. + If algorithmically determined UID or GID fall outside the + range, they are ignored and the corresponding map is discarded. + It is intended as a way to avoid accidental UID/GID overlaps + between local and remotely defined IDs. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>base_rid = INTEGER</term> + <listitem><para> + Defines the base integer used to build SIDs out of a UID or a GID, + and to rebase the UID or GID to be obtained from a SID. + This means SIDs with a RID less than the base rid are filtered. + The default is not to restrict the allowed rids at all, + i.e. a base_rid value of 0. + </para> + <para> + Use of this parameter is deprecated. + </para></listitem> + </varlistentry> + </variablelist> +</refsect1> + +<refsect1> + <title>THE MAPPING FORMULAS</title> + <para> + The Unix ID for a RID is calculated this way: + <programlisting> + ID = RID - BASE_RID + LOW_RANGE_ID. + </programlisting> + </para> + <para> + Correspondingly, the formula for calculating the RID for a + given Unix ID is this: + <programlisting> + RID = ID + BASE_RID - LOW_RANGE_ID. + </programlisting> + </para> +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + <para> + This example shows how to configure two domains with idmap_rid, + the principal domain and a trusted domain, leaving the default + id mapping scheme at tdb. The example also demonstrates the use + of the base_rid parameter for the trusted domain. + </para> + + <programlisting> + [global] + security = domain + workgroup = MAIN + + idmap config * : backend = tdb + idmap config * : range = 1000000-1999999 + + idmap config MAIN : backend = rid + idmap config MAIN : range = 10000 - 49999 + + idmap config TRUSTED : backend = rid + idmap config TRUSTED : range = 50000 - 99999 + </programlisting> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para> + The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed. + </para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/idmap_script.8.xml b/docs-xml/manpages/idmap_script.8.xml new file mode 100644 index 0000000..2e7f2be --- /dev/null +++ b/docs-xml/manpages/idmap_script.8.xml @@ -0,0 +1,182 @@ +<?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="idmap_script.8"> + +<refmeta> + <refentrytitle>idmap_script</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>idmap_script</refname> + <refpurpose>Samba's idmap_script Backend for Winbind</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <title>DESCRIPTION</title> + + <para> + The idmap_script plugin is a substitute for the idmap_tdb2 + backend used by winbindd for storing SID/uid/gid mapping tables + in clustered environments with Samba and CTDB. It is a read only + backend that uses a script to perform mapping. + </para> + + <para> + It was developed out of the idmap_tdb2 back end and does not store + SID/uid/gid mappings in a TDB, since the winbind_cache tdb will + store the mappings once they are provided. + </para> +</refsynopsisdiv> + +<refsect1> + <title>IDMAP OPTIONS</title> + + <variablelist> + <varlistentry> + <term>range = low - high</term> + <listitem><para> + Defines the available matching uid and gid range for which the + backend is authoritative. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>script</term> + <listitem><para> + This option can be used to configure an external program + for performing id mappings. + </para></listitem> + </varlistentry> + </variablelist> +</refsect1> + +<refsect1> + <title>IDMAP SCRIPT</title> + + <para> + The tdb2 idmap backend supports an external program for performing id mappings + through the &smb.conf; option <parameter>idmap config * : script</parameter> or + its deprecated legacy form <parameter>idmap : script</parameter>. + </para> + + <para> + The mappings obtained by the script are then stored in the idmap tdb2 + database instead of mappings created by the incrementing id counters. + It is therefore important that the script covers the complete range of + SIDs that can be passed in for SID to Unix ID mapping, since otherwise + SIDs unmapped by the script might get mapped to IDs that had + previously been mapped by the script. + </para> + + <para> + The script should accept the following command line options. + </para> + + <programlisting> + SIDTOID S-1-xxxx + IDTOSID UID xxxx + IDTOSID GID xxxx + IDTOSID XID xxxx + </programlisting> + + <para> + And it should return one of the following responses as a single line of + text. + </para> + + <programlisting> + UID:yyyy + GID:yyyy + XID:yyyy + SID:ssss + ERR:yyyy + </programlisting> + + <para> + XID indicates that the ID returned should be both a UID and a GID. + That is, it requests an ID_TYPE_BOTH, but it is ultimately up to + the script whether or not it can honor that request. It can choose + to return a UID or a GID mapping only. + </para> +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + + <para> + This example shows how script is used as a the default idmap backend + using an external program via the script parameter: + </para> + + <programlisting> + [global] + idmap config * : backend = script + idmap config * : range = 1000000-2000000 + idmap config * : script = /usr/local/samba/bin/idmap_script.sh + </programlisting> + + <para> + This shows a simple script to partially perform the task: + </para> + + <programlisting> + #!/bin/sh + # + # Uncomment this if you want some logging + #echo $@ >> /tmp/idmap.sh.log + if [ "$1" == "SIDTOID" ] + then + # Note. The number returned has to be within the range defined + #echo "Sending UID:1000005" >> /tmp/idmap.sh.log + echo "UID:1000005" + exit 0 + else + #echo "Sending ERR: No idea what to do" >> /tmp/idmap.sh.log + echo "ERR: No idea what to do" + exit 1 + fi + </programlisting> + + <para> + Clearly, this script is not enough, as it should probably use wbinfo + to determine if an incoming SID is a user or group SID and then + look up the mapping in a table or use some other mechanism for + mapping SIDs to UIDs and etc. + </para> + + <para> + Please be aware that the script is called with the + _NO_WINBINDD environment variable set to 1. This prevents + recursive calls into winbind from the script both via + explicit calls to wbinfo and via implicit calls via + nss_winbind. For example a call to <command>ls -l</command> + could trigger such an infinite recursion. + </para> + + <para> + It is safe to call <command>wbinfo -n</command> and + <command>wbinfo -s</command> from within an idmap script. To + do so, the script must unset the _NO_WINBINDD environment + variable right before the call to <command>wbinfo</command> + and set it to 1 again right after <command>wbinfo</command> + has returned to protect against the recursion. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para> + The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed. + </para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/idmap_tdb.8.xml b/docs-xml/manpages/idmap_tdb.8.xml new file mode 100644 index 0000000..fccb838 --- /dev/null +++ b/docs-xml/manpages/idmap_tdb.8.xml @@ -0,0 +1,75 @@ +<?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="idmap_tdb.8"> + +<refmeta> + <refentrytitle>idmap_tdb</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>idmap_tdb</refname> + <refpurpose>Samba's idmap_tdb Backend for Winbind</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <title>DESCRIPTION</title> + + <para> + The idmap_tdb plugin is the default backend used by winbindd + for storing SID/uid/gid mapping tables. + </para> + + <para> + In contrast to read only backends like idmap_rid, it is an allocating + backend: This means that it needs to allocate new user and group IDs in + order to create new mappings. + </para> +</refsynopsisdiv> + +<refsect1> + <title>IDMAP OPTIONS</title> + + <variablelist> + <varlistentry> + <term>range = low - high</term> + <listitem><para> + Defines the available matching uid and gid range for which the + backend is authoritative. + </para></listitem> + </varlistentry> + </variablelist> +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + + <para> + This example shows how tdb is used as a the default idmap backend. + This configured range is used for uid and gid allocation. + </para> + + <programlisting> + [global] + # "backend = tdb" is redundant here since it is the default + idmap config * : backend = tdb + idmap config * : range = 1000000-2000000 + </programlisting> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para> + The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed. + </para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/idmap_tdb2.8.xml b/docs-xml/manpages/idmap_tdb2.8.xml new file mode 100644 index 0000000..253b016 --- /dev/null +++ b/docs-xml/manpages/idmap_tdb2.8.xml @@ -0,0 +1,137 @@ +<?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="idmap_tdb2.8"> + +<refmeta> + <refentrytitle>idmap_tdb2</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>idmap_tdb2</refname> + <refpurpose>Samba's idmap_tdb2 Backend for Winbind</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <title>DESCRIPTION</title> + + <para> + The idmap_tdb2 plugin is a substitute for the default idmap_tdb + backend used by winbindd for storing SID/uid/gid mapping tables + in clustered environments with Samba and CTDB. + </para> + + <para> + In contrast to read only backends like idmap_rid, it is an allocating + backend: This means that it needs to allocate new user and group IDs in + order to create new mappings. + </para> +</refsynopsisdiv> + +<refsect1> + <title>IDMAP OPTIONS</title> + + <variablelist> + <varlistentry> + <term>range = low - high</term> + <listitem><para> + Defines the available matching uid and gid range for which the + backend is authoritative. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>script</term> + <listitem><para> + This option can be used to configure an external program + for performing id mappings instead of using the tdb + counter. The mappings are then stored int tdb2 idmap + database. For details see the section on IDMAP SCRIPT below. + </para></listitem> + </varlistentry> + </variablelist> +</refsect1> + +<refsect1> + <title>IDMAP SCRIPT</title> + + <para> + The tdb2 idmap backend supports an external program for performing id mappings + through the smb.conf option <parameter>idmap config * : script</parameter> or + its deprecated legacy form <parameter>idmap : script</parameter>. + </para> + + <para> + The mappings obtained by the script are then stored in the idmap tdb2 + database instead of mappings created by the incrementing id counters. + It is therefore important that the script covers the complete range of + SIDs that can be passed in for SID to Unix ID mapping, since otherwise + SIDs unmapped by the script might get mapped to IDs that had + previously been mapped by the script. + </para> + + <para> + The script should accept the following command line options. + </para> + + <programlisting> + SIDTOID S-1-xxxx + IDTOSID UID xxxx + IDTOSID GID xxxx + </programlisting> + + <para> + And it should return one of the following responses as a single line of + text. + </para> + + <programlisting> + UID:yyyy + GID:yyyy + SID:yyyy + ERR:yyyy + </programlisting> +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + + <para> + This example shows how tdb2 is used as a the default idmap backend. + </para> + + <programlisting> + [global] + idmap config * : backend = tdb2 + idmap config * : range = 1000000-2000000 + </programlisting> + + <para> + This example shows how tdb2 is used as a the default idmap backend + using an external program via the script parameter: + </para> + + <programlisting> + [global] + idmap config * : backend = tdb2 + idmap config * : range = 1000000-2000000 + idmap config * : script = /usr/local/samba/bin/idmap_script.sh + </programlisting> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para> + The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed. + </para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/libsmbclient.7.xml b/docs-xml/manpages/libsmbclient.7.xml new file mode 100644 index 0000000..a08a4ae --- /dev/null +++ b/docs-xml/manpages/libsmbclient.7.xml @@ -0,0 +1,141 @@ +<?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="libsmbclient.7"> + +<refmeta> + <refentrytitle>libsmbclient</refentrytitle> + <manvolnum>7</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">7</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>libsmbclient</refname> + <refpurpose>An extension library for browsers and that can be used as a generic browsing API.</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <para> + Browser URL: + <command moreinfo="none">smb://[[[domain:]user[:password@]]server[/share[/path[/file]]]] [?options] + </command> + </para> + </cmdsynopsis> +</refsynopsisdiv> + + +<refsect1> + <title>DESCRIPTION</title> + + <para> + This tool is part of the <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite. + </para> + + <para> + <command>libsmbclient</command> is a library toolset that permits applications to manipulate CIFS/SMB network + resources using many of the standards POSIX functions available for manipulating local UNIX/Linux files. It + permits much more than just browsing, files can be opened and read or written, permissions changed, file times + modified, attributes and ACL's can be manipulated, and so on. Of course, its functionality includes all the + capabilities commonly called browsing. + </para> + + <para> + <command>libsmbclient</command> can not be used directly from the command line, instead it provides an + extension of the capabilities of tools such as file managers and browsers. This man page describes the + configuration options for this tool so that the user may obtain greatest utility of use. + </para> +</refsect1> + +<refsect1> + <title>OPTIONS</title> + + <para> + What the URLs mean: + </para> + + <variablelist> + <varlistentry> + <term>smb://</term> + <listitem><para> + Shows all workgroups or domains that are visible in the network. The behavior matches + that of the Microsoft Windows Explorer. + </para> + + <para> + The method of locating the list of workgroups (domains also) varies depending on the setting of + the context variable <literal>(context->options.browse_max_lmb_count)</literal>. It is the + responsibility of the application that calls this library to set this to a sensible value. This + is a compile-time option. This value determines the maximum number of local master browsers to + query for the list of workgroups. In order to ensure that the list is complete for those present + on the network, all master browsers must be queried. If there are a large number of workgroups + on the network, the time spent querying will be significant. For small networks (just a few + workgroups), it is suggested to set this value to 0, instructing libsmbclient to query all local + master browsers. In an environment that has many workgroups a more reasonable setting may be around 3. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>smb://name/</term> + <listitem><para> + This command causes libsmbclient to perform a name look-up. If the NAME<1D> or + NAME<1B> exists (workgroup name), libsmbclient will list all servers in the + workgroup (or domain). Otherwise, a name look-up for the NAME<20> (machine name) + will be performed, and the list of shared resources on the server will be displayed. + </para></listitem> + </varlistentry> + </variablelist> + + <para> + When libsmbclient is invoked by an application it searches for a directory called + <filename>.smb</filename> in the $HOME directory that is specified in the users shell + environment. It then searches for a file called <filename>smb.conf</filename> which, + if present, will fully over-ride the system &smb.conf; file. If + instead libsmbclient finds a file called <filename>~/.smb/smb.conf.append</filename>, + it will read the system <filename>/etc/samba/smb.conf</filename> and then append the + contents of the <filename>~/.smb/smb.conf.append</filename> to it. + </para> + + <para> + <command>libsmbclient</command> will check the users shell environment for the <literal>USER</literal> + parameter and will use its value when if the <literal>user</literal> parameter was not included + in the URL. + </para> + +</refsect1> + +<refsect1> + <title>PROGRAMMERS GUIDE</title> + + <para> + Watch this space for future updates. + </para> + +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para> + This man page is part of version &doc.version; of the Samba suite. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para> + The original Samba software and related utilities were created by Andrew Tridgell. + Samba is now developed by the Samba Team as an Open Source project similar to the way + the Linux kernel is developed. + </para> + + <para> + The libsmbclient manpage page was written by John H Terpstra. + </para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/lmhosts.5.xml b/docs-xml/manpages/lmhosts.5.xml new file mode 100644 index 0000000..39bfcf8 --- /dev/null +++ b/docs-xml/manpages/lmhosts.5.xml @@ -0,0 +1,118 @@ +<?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="lmhosts.5"> + +<refmeta> + <refentrytitle>lmhosts</refentrytitle> + <manvolnum>5</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">File Formats and Conventions</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>lmhosts</refname> + <refpurpose>The Samba NetBIOS hosts file</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <para><filename>lmhosts</filename> is the <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> NetBIOS name to IP address mapping file.</para> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This file is part of the <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para><filename>lmhosts</filename> is the <emphasis>Samba + </emphasis> NetBIOS name to IP address mapping file. It + is very similar to the <filename>/etc/hosts</filename> file + format, except that the hostname component must correspond + to the NetBIOS naming format.</para> +</refsect1> + +<refsect1> + <title>FILE FORMAT</title> + <para>It is an ASCII file containing one line for NetBIOS name. + The two fields on each line are separated from each other by + white space. Any entry beginning with '#' is ignored. Each line + in the lmhosts file contains the following information:</para> + + <itemizedlist> + <listitem><para>IP Address - in dotted decimal format.</para> + </listitem> + + <listitem><para>NetBIOS Name - This name format is a + maximum fifteen character host name, with an optional + trailing '#' character followed by the NetBIOS name type + as two hexadecimal digits.</para> + + <para>If the trailing '#' is omitted then the given IP + address will be returned for all names that match the given + name, whatever the NetBIOS name type in the lookup.</para> + </listitem> + </itemizedlist> + + <para>An example follows: +<programlisting> +# +# Sample Samba lmhosts file. +# +192.9.200.1 TESTPC +192.9.200.20 NTSERVER#20 +192.9.200.21 SAMBASERVER +</programlisting> + </para> + + <para>Contains three IP to NetBIOS name mappings. The first + and third will be returned for any queries for the names "TESTPC" + and "SAMBASERVER" respectively, whatever the type component of + the NetBIOS name requested.</para> + + <para>The second mapping will be returned only when the "0x20" name + type for a name "NTSERVER" is queried. Any other name type will not + be resolved.</para> + + <para>The default location of the <filename>lmhosts</filename> file + is in the same directory as the <citerefentry><refentrytitle>smb.conf</refentrytitle> + <manvolnum>5</manvolnum></citerefentry> file.</para> + +</refsect1> + +<refsect1> + <title>FILES</title> + + <para>lmhosts is loaded from the configuration directory. This is + usually <filename>/etc/samba</filename> or <filename>/usr/local/samba/lib</filename>. + </para> +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of the Samba suite.</para> +</refsect1> + +<refsect1> + <title>SEE ALSO</title> + <para><citerefentry> + <refentrytitle>smbclient</refentrytitle><manvolnum>1</manvolnum> + </citerefentry>, <citerefentry><refentrytitle>smb.conf</refentrytitle><manvolnum>5</manvolnum> + </citerefentry>, and <citerefentry><refentrytitle>smbpasswd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/log2pcap.1.xml b/docs-xml/manpages/log2pcap.1.xml new file mode 100644 index 0000000..fafe6de --- /dev/null +++ b/docs-xml/manpages/log2pcap.1.xml @@ -0,0 +1,138 @@ +<?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="log2pcap.1"> + +<refmeta> + <refentrytitle>log2pcap</refentrytitle> + <manvolnum>1</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">User Commands</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>log2pcap</refname> + <refpurpose>Extract network traces from Samba log files</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>log2pcap</command> + <arg choice="opt">-h</arg> + <arg choice="opt">-q</arg> + <arg choice="opt">logfile</arg> + <arg choice="opt">pcap_file</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><command>log2pcap</command> reads in a + samba log file and generates a pcap file (readable + by most sniffers, such as ethereal or tcpdump) based on the packet + dumps in the log file.</para> + + <para>The log file must have a <parameter>log level</parameter> + of at least <constant>5</constant> to get the SMB header/parameters + right, <constant>10</constant> to get the first 512 data bytes of the + packet and <constant>50</constant> to get the whole packet. + </para> +</refsect1> + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + <varlistentry> + <term>-h</term> + <listitem><para>If this parameter is + specified the output file will be a + hex dump, in a format that is readable + by the <application>text2pcap</application> utility.</para></listitem> + </varlistentry> + + <varlistentry> + <term>-q</term> + <listitem><para>Be quiet. No warning messages about missing + or incomplete data will be given.</para></listitem> + </varlistentry> + + <varlistentry> + <term>logfile</term> + <listitem><para> + Samba log file. log2pcap will try to read the log from stdin + if the log file is not specified. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>pcap_file</term> + <listitem><para> + Name of the output file to write the pcap (or hexdump) data to. + If this argument is not specified, output data will be written + to stdout. + </para></listitem> + </varlistentry> + + &stdarg.help; + + </variablelist> +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + + <para>Extract all network traffic from all samba log files:</para> + + <para><programlisting> + <prompt>$</prompt> log2pcap < /var/log/* > trace.pcap + </programlisting></para> + + <para>Convert to pcap using text2pcap:</para> + + <para><programlisting> + <prompt>$</prompt> log2pcap -h samba.log | text2pcap -T 139,139 - trace.pcap + </programlisting></para> +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of the Samba suite.</para> +</refsect1> + +<refsect1> + <title>BUGS</title> + + <para>Only SMB data is extracted from the samba logs, no LDAP, + NetBIOS lookup or other data.</para> + + <para>The generated TCP and IP headers don't contain a valid + checksum.</para> + +</refsect1> + + +<refsect1> + <title>SEE ALSO</title> + <para><citerefentry><refentrytitle>text2pcap</refentrytitle> + <manvolnum>1</manvolnum></citerefentry>, <citerefentry><refentrytitle>ethereal</refentrytitle><manvolnum>1</manvolnum></citerefentry></para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + + <para>This manpage was written by Jelmer Vernooij.</para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/mdsearch.1.xml b/docs-xml/manpages/mdsearch.1.xml new file mode 100644 index 0000000..e5b443f --- /dev/null +++ b/docs-xml/manpages/mdsearch.1.xml @@ -0,0 +1,179 @@ +<?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="mdsearch.1"> + + <refmeta> + <refentrytitle>mdsearch</refentrytitle> + <manvolnum>1</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">User Commands</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> + </refmeta> + + <refnamediv> + <refname>mdsearch</refname> + <refpurpose>Run Spotlight searches against an SMB server</refpurpose> + </refnamediv> + + <refsynopsisdiv> + <cmdsynopsis> + <command>mdfine</command> + <arg choice="req">server</arg> + <arg choice="req">sharename</arg> + <arg choice="req">query</arg> + <arg choice="opt">-p, --path=STRING</arg> + <arg choice="opt">-L, --live</arg> + <arg choice="opt">-?|--help</arg> + <arg choice="opt">--usage</arg> + <arg choice="opt">-d|--debuglevel=DEBUGLEVEL</arg> + <arg choice="opt">--debug-stdout</arg> + <arg choice="opt">--configfile=CONFIGFILE</arg> + <arg choice="opt">--option=name=value</arg> + <arg choice="opt">-l|--log-basename=LOGFILEBASE</arg> + <arg choice="opt">--leak-report</arg> + <arg choice="opt">--leak-report-full</arg> + <arg choice="opt">-R|--name-resolve=NAME-RESOLVE-ORDER</arg> + <arg choice="opt">-O|--socket-options=SOCKETOPTIONS</arg> + <arg choice="opt">-m|--max-protocol=MAXPROTOCOL</arg> + <arg choice="opt">-n|--netbiosname=NETBIOSNAME</arg> + <arg choice="opt">--netbios-scope=SCOPE</arg> + <arg choice="opt">-W|--workgroup=WORKGROUP</arg> + <arg choice="opt">--realm=REALM</arg> + <arg choice="opt">-U|--user=[DOMAIN/]USERNAME[%PASSWORD]</arg> + <arg choice="opt">-N|--no-pass</arg> + <arg choice="opt">--password=STRING</arg> + <arg choice="opt">--pw-nt-hash</arg> + <arg choice="opt">-A|--authentication-file=FILE</arg> + <arg choice="opt">-P|--machine-pass</arg> + <arg choice="opt">--simple-bind-dn=DN</arg> + <arg choice="opt">--use-kerberos=desired|required|off</arg> + <arg choice="opt">--use-krb5-ccache=CCACHE</arg> + <arg choice="opt">--use-winbind-ccache</arg> + <arg choice="opt">--client-protection=sign|encrypt|off</arg> + <arg choice="opt">-V|--version</arg> + </cmdsynopsis> + </refsynopsisdiv> + + <refsect1> + <title>DESCRIPTION</title> + + <para>This tool is part of the <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>1</manvolnum></citerefentry> suite.</para> + + <para>mdsearch is a simple utility to run Spotlight searches against an SMB server + that runs the Spotlight <emphasis>mdssvc</emphasis> RPC service.</para> + </refsect1> + + <refsect1> + <title>OPTIONS</title> + + <variablelist> + <varlistentry> + <term>server</term> + <listitem> + <para>The SMB server name or IP address to connect to.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>sharename</term> + <listitem> + <para>The name of a share on the server.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>query</term> + <listitem> + <para>The query expression syntax is a simplified form of filename + globbing familiar to shell users. Queries have the following + format:</para> + + <para>attribute=="value"</para> + + <para>For queries against a Samba server with Spotlight enabled using + the Elasticsearch backend, the list of supported metadata attributes + is given by the JSON attribute mapping file, typically installed at + <filename>/usr/share/samba/mdssvc/elasticsearch_mappings.json</filename> + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>-p PATH, --path=PATH</term> + <listitem> + <para>Server side path to search, defaults to + <emphasis>"/"</emphasis></para> + </listitem> + </varlistentry> + + <varlistentry> + <term>-L, --live</term> + <listitem><para>Query remains running.</para></listitem> + </varlistentry> + + &popt.autohelp; + &cmdline.common.samba.client; + &cmdline.common.credentials; + </variablelist> + </refsect1> + + <refsect1> + <title>EXAMPLES</title> + + <para>Search all indexed metadata attributes, exact match:</para> + <programlisting> + '*=="Samba"' + </programlisting> + + <para>Search all indexed metadata attributes, prefix match:</para> + <programlisting> + '*=="Samba*"' + </programlisting> + + <para>Search by filename:</para> + <programlisting> + 'kMDItemFSName=="Samba*"' + </programlisting> + + <para>Search by date:</para> + <programlisting> + 'kMDItemFSContentChangeDate<$time.iso(2018-10-01T10:00:00Z)' + </programlisting> + + <para>Search files's content:</para> + <programlisting> + 'kMDItemTextContent=="Samba*"' + </programlisting> + + <para>Expressions:</para> + <programlisting> + kMDItemFSName=="Samba*"||kMDItemTextContent=="Tango*"' + </programlisting> + </refsect1> + + <refsect1> + <title>SEE ALSO</title> + + <para>File Metadata Search Programming Guide + <ulink url="https://developer.apple.com/library/archive/documentation/Carbon/Conceptual/SpotlightQuery/Concepts/Introduction.html"> + https://developer.apple.com/library/archive/documentation/Carbon/Conceptual/SpotlightQuery/Concepts/Introduction.html</ulink> + </para> + </refsect1> + + <refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of the Samba suite.</para> + </refsect1> + + <refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities were created by + Andrew Tridgell. Samba is now developed by the Samba Team as an Open + Source project similar to the way the Linux kernel is developed.</para> + + <para>The mdsearch manpage was written by Ralph Boehme.</para> + </refsect1> +</refentry> diff --git a/docs-xml/manpages/mvxattr.1.xml b/docs-xml/manpages/mvxattr.1.xml new file mode 100644 index 0000000..59048ce --- /dev/null +++ b/docs-xml/manpages/mvxattr.1.xml @@ -0,0 +1,100 @@ +<?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="mvxattr.1"> + +<refmeta> + <refentrytitle>mvxattr</refentrytitle> + <manvolnum>1</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">User Commands</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>mvxattr</refname> + <refpurpose>Recursively rename extended attributes</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>mvxattr</command> + <arg choice="req">-s STRING, --from=STRING</arg> + <arg choice="req">-d STRING, --to=STRING</arg> + <arg choice="opt">-l, --follow-symlinks</arg> + <arg choice="opt">-p, --print</arg> + <arg choice="opt">-v, --verbose</arg> + <arg choice="opt">-f, --force</arg> + <arg choice="req">PATH [PATH ...]</arg> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This tool is part of the <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>1</manvolnum></citerefentry> suite.</para> + + <para>mvxattr is a simple utility to recursively rename extended + attributes.</para> + + <para>By default all symlinks are ignored, use <option>-l</option> to + follow them.</para> +</refsect1> + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + <varlistentry> + <term>-s STRING, --from=STRING</term> + <listitem><para>Source xattr name</para></listitem> + </varlistentry> + + <varlistentry> + <term>-d STRING, --to=STRING</term> + <listitem><para>Destination xattr name</para></listitem> + </varlistentry> + + <varlistentry> + <term>-l, --follow-symlinks</term> + <listitem><para>Follow symlinks, the default is to ignore + them.</para></listitem> + </varlistentry> + + <varlistentry> + <term>-p, --print</term> + <listitem><para>Print files where the xattr got renamed.</para></listitem> + </varlistentry> + + <varlistentry> + <term>-v, --verbose</term> + <listitem><para>Print files as they are checked.</para></listitem> + </varlistentry> + + <varlistentry> + <term>-f, --force</term> + <listitem><para>Force overwriting of destination xattr.</para></listitem> + </varlistentry> + </variablelist> + +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of the Samba suite.</para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities were created by + Andrew Tridgell. Samba is now developed by the Samba Team as an Open + Source project similar to the way the Linux kernel is developed.</para> + + <para>The mvxattr manpage was written by Ralph Boehme.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/net.8.xml b/docs-xml/manpages/net.8.xml new file mode 100644 index 0000000..497a811 --- /dev/null +++ b/docs-xml/manpages/net.8.xml @@ -0,0 +1,3112 @@ +<?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="net.8"> + +<refmeta> + <refentrytitle>net</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>net</refname> + <refpurpose>Tool for administration of Samba and remote + CIFS servers. + </refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>net</command> + <arg choice="req"><ads|rap|rpc></arg> + <arg choice="opt">-h|--help</arg> + <arg choice="opt">-d|--debuglevel=DEBUGLEVEL</arg> + <arg choice="opt">--debug-stdout</arg> + <arg choice="opt">--configfile=CONFIGFILE</arg> + <arg choice="opt">--option=name=value</arg> + <arg choice="opt">-l|--log-basename=LOGFILEBASE</arg> + <arg choice="opt">--leak-report</arg> + <arg choice="opt">--leak-report-full</arg> + <arg choice="opt">-R|--name-resolve=NAME-RESOLVE-ORDER</arg> + <arg choice="opt">-O|--socket-options=SOCKETOPTIONS</arg> + <arg choice="opt">-m|--max-protocol=MAXPROTOCOL</arg> + <arg choice="opt">-n|--netbiosname=NETBIOSNAME</arg> + <arg choice="opt">--netbios-scope=SCOPE</arg> + <arg choice="opt">-W|--workgroup=WORKGROUP</arg> + <arg choice="opt">--realm=REALM</arg> + <arg choice="opt">-U|--user=[DOMAIN/]USERNAME[%PASSWORD]</arg> + <arg choice="opt">-N|--no-pass</arg> + <arg choice="opt">--password=STRING</arg> + <arg choice="opt">--pw-nt-hash</arg> + <arg choice="opt">-A|--authentication-file=FILE</arg> + <arg choice="opt">-P|--machine-pass</arg> + <arg choice="opt">--simple-bind-dn=DN</arg> + <arg choice="opt">--use-kerberos=desired|required|off</arg> + <arg choice="opt">--use-krb5-ccache=CCACHE</arg> + <arg choice="opt">--use-winbind-ccache</arg> + <arg choice="opt">--client-protection=sign|encrypt|off</arg> + <arg choice="opt">-V|--version</arg> + <arg choice="opt">-w|--target-workgroup workgroup</arg> + <arg choice="opt">-I|--ipaddress ip-address</arg> + <arg choice="opt">-p|--port port</arg> + <arg choice="opt">--myname</arg> + <arg choice="opt">-S|--server server</arg> + <arg choice="opt">--long</arg> + <arg choice="opt">-v|--verbose</arg> + <arg choice="opt">-f|--force</arg> + <arg choice="opt">--request-timeout seconds</arg> + <arg choice="opt">-t|--timeout seconds</arg> + <arg choice="opt">-i|--stdin</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>The Samba net utility is meant to work just like the net utility + available for windows and DOS. The first argument should be used + to specify the protocol to use when executing a certain command. + ADS is used for ActiveDirectory, RAP is using for old (Win9x/NT3) + clients and RPC can be used for NT4 and Windows 2000. If this + argument is omitted, net will try to determine it automatically. + Not all commands are available on all protocols. + </para> + +</refsect1> + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + <varlistentry> + <term>-w|--target-workgroup target-workgroup</term> + <listitem><para> + Sets target workgroup or domain. You have to specify + either this option or the IP address or the name of a server. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-I|--ipaddress ip-address</term> + <listitem><para> + IP address of target server to use. You have to + specify either this option or a target workgroup or + a target server. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-p|--port port</term> + <listitem><para> + Port on the target server to connect to (usually 139 or 445). + Defaults to trying 445 first, then 139. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-S|--server server</term> + <listitem><para> + Name of target server. You should specify either + this option or a target workgroup or a target IP address. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--long</term> + <listitem><para> + When listing data, give more information on each item. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-v|--verbose</term> + <listitem><para> + When listing data, give more verbose information on each item. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-f|--force</term> + <listitem><para> + Enforcing a net command. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--request-timeout 30</term> + <listitem><para> + Let client requests timeout after 30 seconds the default is 10 + seconds. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-t|--timeout 30</term> + <listitem><para> + Set timeout for client operations to 30 seconds. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-i|--stdin</term> + <listitem><para> + Take input for net commands from standard input. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-T|--test</term> + <listitem><para>Only test command sequence, dry-run. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-F|--flags FLAGS</term> + <listitem><para>Pass down integer flags to a net subcommand. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-C|--comment COMMENT</term> + <listitem><para>Pass down a comment string to a net subcommand. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--myname MYNAME</term> + <listitem><para>Use MYNAME as a requester name for a net subcommand. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-c|--container CONTAINER</term> + <listitem><para>Use a specific AD container for net ads operations. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-M|--maxusers MAXUSERS</term> + <listitem><para>Fill in the maxusers field in net rpc share operations. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-r|--reboot</term> + <listitem><para>Reboot a remote machine after a command has been successfully executed (e.g. in remote join operations). + </para></listitem> + </varlistentry> + + <!-- Options for net rpc vampire --> + + <varlistentry> + <term>--force-full-repl</term> + <listitem><para> + When calling "net rpc vampire keytab" this option + enforces a full re-creation of the generated keytab file. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--single-obj-repl</term> + <listitem><para> + When calling "net rpc vampire keytab" this option + allows one to replicate just a single object to the generated keytab file. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--clean-old-entries</term> + <listitem><para> + When calling "net rpc vampire keytab" this option + allows one to cleanup old entries from the generated keytab file. + </para></listitem> + </varlistentry> + + <!-- Options for net idmap --> + + <varlistentry> + <term>--db</term> + <listitem><para>Define dbfile for "net idmap" commands. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--lock</term> + <listitem><para>Activates locking of the dbfile for "net idmap check" command. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-a|--auto</term> + <listitem><para>Activates noninteractive mode in "net idmap check". + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--repair</term> + <listitem><para>Activates repair mode in "net idmap check". + </para></listitem> + </varlistentry> + + <!-- Options for net rpc share migrate --> + + <varlistentry> + <term>--acls</term> + <listitem><para>Includes ACLs to be copied in "net rpc share migrate". + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--attrs</term> + <listitem><para>Includes file attributes to be copied in "net rpc share migrate". + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--timestamps</term> + <listitem><para>Includes timestamps to be copied in "net rpc share migrate". + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-X|--exclude DIRECTORY</term> + <listitem><para>Allows one to exclude directories when copying with "net rpc share migrate". + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--destination SERVERNAME</term> + <listitem><para>Defines the target servername of migration process (defaults to localhost). + </para></listitem> + </varlistentry> + + <!-- Options for net groupmap set --> + + <varlistentry> + <term>-L|--local</term> + <listitem><para>Sets the type of group mapping to local + (used in "net groupmap set"). + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-D|--domain</term> + <listitem><para>Sets the type of group mapping to domain + (used in "net groupmap set"). + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-N|--ntname NTNAME</term> + <listitem><para>Sets the ntname of a group mapping + (used in "net groupmap set"). + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--rid RID</term> + <listitem><para>Sets the rid of a group mapping + (used in "net groupmap set"). + </para></listitem> + </varlistentry> + + <!-- Options for net registry check --> + + <varlistentry> + <term>--reg-version REG_VERSION</term> + <listitem><para>Assume database version {n|1,2,3} + (used in "net registry check"). + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-o|--output FILENAME</term> + <listitem><para>Output database file + (used in "net registry check"). + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--wipe</term> + <listitem><para>Create a new database from scratch + (used in "net registry check"). + </para></listitem> + </varlistentry> + + <!-- Options for net registry import --> + + <varlistentry> + <term>--precheck PRECHECK_DB_FILENAME</term> + <listitem><para>Defines filename for database prechecking + (used in "net registry import"). + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--no-dns-updates</term> + <listitem><para>Do not perform DNS updates as part of + "net ads join". + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--keep-account</term> + <listitem><para>Prevent the machine account removal as + part of "net ads leave". + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--json</term> + <listitem><para>Report results in JSON format for + "net ads info" and "net ads lookup". + </para></listitem> + </varlistentry> + + <!-- Options for net vfs stream2abouble --> + + <varlistentry> + <term>--recursive</term> + <listitem><para>Traverse a directory + hierarchy.</para></listitem> + </varlistentry> + + <varlistentry> + <term>--continue</term> + <listitem><para>Continue traversing a directory hierarchy in + case conversion of one file fails.</para></listitem> + </varlistentry> + + <varlistentry> + <term>--follow-symlinks</term> + <listitem><para>Follow symlinks encountered while traversing a + directory.</para></listitem> + </varlistentry> + + &cmdline.common.samba.client; + &cmdline.common.connection; + &cmdline.common.credentials; + </variablelist> +</refsect1> + +<refsect1> +<title>COMMANDS</title> + +<refsect2> +<title>CHANGESECRETPW</title> + +<para>This command allows the Samba machine account password to be set from an external application +to a machine account password that has already been stored in Active Directory. DO NOT USE this command +unless you know exactly what you are doing. The use of this command requires that the force flag (-f) +be used also. There will be NO command prompt. Whatever information is piped into stdin, either by +typing at the command line or otherwise, will be stored as the literal machine password. Do NOT use +this without care and attention as it will overwrite a legitimate machine password without warning. +YOU HAVE BEEN WARNED. +</para> + +</refsect2> + +<refsect2> + <title>TIME</title> + + <para>The <command>NET TIME</command> command allows you to view the time on a remote server + or synchronise the time on the local server with the time on the remote server.</para> + +<refsect3> +<title>TIME</title> + +<para>Without any options, the <command>NET TIME</command> command +displays the time on the remote server. The remote server must be +specified with the -S option. +</para> + +</refsect3> + +<refsect3> +<title>TIME SYSTEM</title> + +<para>Displays the time on the remote server in a format ready for <command>/bin/date</command>. +The remote server must be specified with the -S option. +</para> + +</refsect3> + +<refsect3> +<title>TIME SET</title> +<para>Tries to set the date and time of the local server to that on +the remote server using <command>/bin/date</command>. +The remote server must be specified with the -S option. +</para> + +</refsect3> + +<refsect3> +<title>TIME ZONE</title> + +<para>Displays the timezone in hours from GMT on the remote server. +The remote server must be specified with the -S option. +</para> + +</refsect3> +</refsect2> + +<refsect2> +<title>[RPC|ADS] JOIN [TYPE] [--no-dns-updates] [-U username[%password]] +[dnshostname=FQDN] [createupn=UPN] [createcomputer=OU] [machinepass=PASS] +[osName=string osVer=string] [options]</title> + +<para> +Join a domain. If the account already exists on the server, and +[TYPE] is MEMBER, the machine will attempt to join automatically. +(Assuming that the machine has been created in server manager) +Otherwise, a password will be prompted for, and a new account may +be created.</para> + +<para> +[TYPE] may be PDC, BDC or MEMBER to specify the type of server +joining the domain. +</para> + +<para> +[FQDN] (ADS only) set the dnsHostName attribute during the join. +The default format is netbiosname.dnsdomain. +</para> + +<para> +[UPN] (ADS only) set the principalname attribute during the join. The default +format is host/netbiosname@REALM. +</para> + +<para> +[OU] (ADS only) Precreate the computer account in a specific OU. The +OU string reads from top to bottom without RDNs, and is delimited by +a '/'. Please note that '\' is used for escape by both the shell +and ldap, so it may need to be doubled or quadrupled to pass through, +and it is not used as a delimiter. +</para> +<para> +[PASS] (ADS only) Set a specific password on the computer account +being created by the join. +</para> +<para> +[osName=string osVer=String] (ADS only) Set the operatingSystem and +operatingSystemVersion attribute during the join. Both parameters +must be specified for either to take effect. +</para> +</refsect2> + +<refsect2> +<title>[RPC] OLDJOIN [options]</title> + +<para>Join a domain. Use the OLDJOIN option to join the domain +using the old style of domain joining - you need to create a trust +account in server manager first.</para> +</refsect2> + +<refsect2> +<title>[RPC|ADS] USER</title> + +<refsect3> +<title>[RPC|ADS] USER</title> + +<para>List all users</para> + +</refsect3> + +<refsect3> +<title>[RPC|ADS] USER DELETE <replaceable>target</replaceable></title> + +<para>Delete specified user</para> + +</refsect3> + +<refsect3> +<title>[RPC|ADS] USER INFO <replaceable>target</replaceable></title> + +<para>List the domain groups of the specified user.</para> + +</refsect3> + +<refsect3> +<title>[RPC|ADS] USER RENAME <replaceable>oldname</replaceable> <replaceable>newname</replaceable></title> + +<para>Rename specified user.</para> + +</refsect3> + +<refsect3> +<title>[RPC|ADS] USER ADD <replaceable>name</replaceable> [password] [-F user flags] [-C comment]</title> + +<para>Add specified user.</para> +</refsect3> +</refsect2> + +<refsect2> +<title>[RPC|ADS] GROUP</title> + +<refsect3> +<title>[RPC|ADS] GROUP [misc options] [targets]</title> +<para>List user groups.</para> +</refsect3> + +<refsect3> +<title>[RPC|ADS] GROUP DELETE <replaceable>name</replaceable> [misc. options]</title> + +<para>Delete specified group.</para> + +</refsect3> + +<refsect3> +<title>[RPC|ADS] GROUP ADD <replaceable>name</replaceable> [-C comment]</title> + +<para>Create specified group.</para> + +</refsect3> +<refsect3> +<title>[ADS] LOOKUP</title> + +<para>Lookup the closest Domain Controller in our domain and retrieve server information about it.</para> + +</refsect3> +</refsect2> + +<refsect2> +<title>[RAP|RPC] SHARE</title> + +<refsect3> +<title>[RAP|RPC] SHARE [misc. options] [targets]</title> + +<para>Enumerates all exported resources (network shares) on target server.</para> + +</refsect3> + +<refsect3> +<title>[RAP|RPC] SHARE ADD <replaceable>name=serverpath</replaceable> [-C comment] [-M maxusers] [targets]</title> + +<para>Adds a share from a server (makes the export active). Maxusers +specifies the number of users that can be connected to the +share simultaneously.</para> + +</refsect3> + +<refsect3> +<title>SHARE DELETE <replaceable>sharename</replaceable></title> + +<para>Delete specified share.</para> +</refsect3> +</refsect2> + +<refsect2> +<title>[RPC|RAP] FILE</title> + +<refsect3> +<title>[RPC|RAP] FILE</title> + +<para>List all open files on remote server.</para> + +</refsect3> + +<refsect3> +<title>[RPC|RAP] FILE CLOSE <replaceable>fileid</replaceable></title> + +<para>Close file with specified <replaceable>fileid</replaceable> on +remote server.</para> + +</refsect3> + +<refsect3> +<title>[RPC|RAP] FILE INFO <replaceable>fileid</replaceable></title> + +<para> +Print information on specified <replaceable>fileid</replaceable>. +Currently listed are: file-id, username, locks, path, permissions. +</para> + +</refsect3> + +<refsect3> +<title>[RAP|RPC] FILE USER <replaceable>user</replaceable></title> + +<para> +List files opened by specified <replaceable>user</replaceable>. +Please note that <command>net rap file user</command> does not work +against Samba servers. +</para> + +</refsect3> + +</refsect2> + +<refsect2> +<title>SESSION</title> + +<refsect3> +<title>RAP SESSION</title> + +<para>Without any other options, SESSION enumerates all active SMB/CIFS +sessions on the target server.</para> + +</refsect3> + +<refsect3> +<title>RAP SESSION DELETE|CLOSE <replaceable>CLIENT_NAME</replaceable></title> + +<para>Close the specified sessions.</para> + +</refsect3> + +<refsect3> +<title>RAP SESSION INFO <replaceable>CLIENT_NAME</replaceable></title> + +<para>Give a list with all the open files in specified session.</para> + +</refsect3> + +</refsect2> + +<refsect2> +<title>RAP SERVER <replaceable>DOMAIN</replaceable></title> + +<para>List all servers in specified domain or workgroup. Defaults +to local domain.</para> + +</refsect2> + +<refsect2> +<title>RAP DOMAIN</title> + +<para>Lists all domains and workgroups visible on the +current network.</para> + +</refsect2> + +<refsect2> +<title>RAP PRINTQ</title> + +<refsect3> +<title>RAP PRINTQ INFO <replaceable>QUEUE_NAME</replaceable></title> + +<para>Lists the specified print queue and print jobs on the server. +If the <replaceable>QUEUE_NAME</replaceable> is omitted, all +queues are listed.</para> + +</refsect3> + +<refsect3> +<title>RAP PRINTQ DELETE <replaceable>JOBID</replaceable></title> + +<para>Delete job with specified id.</para> + +</refsect3> + +</refsect2> + +<refsect2> +<title>RAP VALIDATE <replaceable>user</replaceable> [<replaceable>password</replaceable>]</title> + +<para> +Validate whether the specified user can log in to the +remote server. If the password is not specified on the commandline, it +will be prompted. +</para> + +¬.implemented; + +</refsect2> + +<refsect2> +<title>RAP GROUPMEMBER</title> + +<refsect3> +<title>RAP GROUPMEMBER LIST <replaceable>GROUP</replaceable></title> + +<para>List all members of the specified group.</para> + +</refsect3> + +<refsect3> +<title>RAP GROUPMEMBER DELETE <replaceable>GROUP</replaceable> <replaceable>USER</replaceable></title> + +<para>Delete member from group.</para> + +</refsect3> + +<refsect3> +<title>RAP GROUPMEMBER ADD <replaceable>GROUP</replaceable> <replaceable>USER</replaceable></title> + +<para>Add member to group.</para> + +</refsect3> + +</refsect2> + +<refsect2> +<title>RAP ADMIN <replaceable>command</replaceable></title> + +<para>Execute the specified <replaceable>command</replaceable> on +the remote server. Only works with OS/2 servers. +</para> + +¬.implemented; + +</refsect2> + +<refsect2> +<title>RAP SERVICE</title> + +<refsect3> +<title>RAP SERVICE START <replaceable>NAME</replaceable> [arguments...]</title> + +<para>Start the specified service on the remote server. Not implemented yet.</para> + +¬.implemented; + +</refsect3> + +<refsect3> +<title>RAP SERVICE STOP</title> + +<para>Stop the specified service on the remote server.</para> + +¬.implemented; + +</refsect3> + +</refsect2> + +<refsect2> +<title>RAP PASSWORD <replaceable>USER</replaceable> <replaceable>OLDPASS</replaceable> <replaceable>NEWPASS</replaceable></title> + +<para> +Change password of <replaceable>USER</replaceable> from <replaceable>OLDPASS</replaceable> to <replaceable>NEWPASS</replaceable>. +</para> + +</refsect2> + +<refsect2> +<title>LOOKUP</title> + +<refsect3> +<title>LOOKUP HOST <replaceable>HOSTNAME</replaceable> [<replaceable>TYPE</replaceable>]</title> + +<para> +Lookup the IP address of the given host with the specified type (netbios suffix). +The type defaults to 0x20 (workstation). +</para> + +</refsect3> + +<refsect3> +<title>LOOKUP LDAP [<replaceable>DOMAIN</replaceable>]</title> + +<para>Give IP address of LDAP server of specified <replaceable>DOMAIN</replaceable>. Defaults to local domain.</para> + +</refsect3> + +<refsect3> +<title>LOOKUP KDC [<replaceable>REALM</replaceable>]</title> + +<para>Give IP address of KDC for the specified <replaceable>REALM</replaceable>. +Defaults to local realm.</para> + +</refsect3> + +<refsect3> +<title>LOOKUP DC [<replaceable>DOMAIN</replaceable>]</title> + +<para>Give IP's of Domain Controllers for specified <replaceable> +DOMAIN</replaceable>. Defaults to local domain.</para> + +</refsect3> + +<refsect3> +<title>LOOKUP MASTER <replaceable>DOMAIN</replaceable></title> + +<para>Give IP of master browser for specified <replaceable>DOMAIN</replaceable> +or workgroup. Defaults to local domain.</para> + +</refsect3> + +<refsect3> +<title>LOOKUP NAME [<replaceable>NAME</replaceable>]</title> + +<para>Lookup username's sid and type for specified <replaceable>NAME</replaceable> +</para> + +</refsect3> + +<refsect3> +<title>LOOKUP SID [<replaceable>SID</replaceable>]</title> + +<para>Give sid's name and type for specified <replaceable>SID</replaceable> +</para> + +</refsect3> + +<refsect3> +<title>LOOKUP DSGETDCNAME [<replaceable>NAME</replaceable>] [<replaceable>FLAGS</replaceable>] [<replaceable>SITENAME</replaceable>]</title> + +<para>Give Domain Controller information for specified domain <replaceable>NAME</replaceable> +</para> + +</refsect3> + +</refsect2> + +<refsect2> +<title>CACHE</title> + +<para>Samba uses a general caching interface called 'gencache'. It +can be controlled using 'NET CACHE'.</para> + +<para>All the timeout parameters support the suffixes: + +<simplelist> +<member>s - Seconds</member> +<member>m - Minutes</member> +<member>h - Hours</member> +<member>d - Days</member> +<member>w - Weeks</member> +</simplelist> + +</para> + +<refsect3> +<title>CACHE ADD <replaceable>key</replaceable> <replaceable>data</replaceable> <replaceable>time-out</replaceable></title> + +<para>Add specified key+data to the cache with the given timeout.</para> + +</refsect3> + +<refsect3> +<title>CACHE DEL <replaceable>key</replaceable></title> + +<para>Delete key from the cache.</para> + +</refsect3> + +<refsect3> +<title>CACHE SET <replaceable>key</replaceable> <replaceable>data</replaceable> <replaceable>time-out</replaceable></title> + +<para>Update data of existing cache entry.</para> + +</refsect3> + +<refsect3> +<title>CACHE SEARCH <replaceable>PATTERN</replaceable></title> + +<para>Search for the specified pattern in the cache data.</para> + +</refsect3> + +<refsect3> +<title>CACHE LIST</title> + +<para> +List all current items in the cache. +</para> + +</refsect3> + +<refsect3> +<title>CACHE FLUSH</title> + +<para>Remove all the current items from the cache.</para> + +</refsect3> + +</refsect2> + +<refsect2> +<title>GETLOCALSID [DOMAIN]</title> + +<para>Prints the SID of the specified domain, or if the parameter is +omitted, the SID of the local server.</para> + +</refsect2> + +<refsect2> +<title>SETLOCALSID S-1-5-21-x-y-z</title> + +<para>Sets SID for the local server to the specified SID.</para> + +</refsect2> + +<refsect2> +<title>GETDOMAINSID</title> + +<para>Prints the local machine SID and the SID of the current +domain.</para> + +</refsect2> + +<refsect2> +<title>SETDOMAINSID</title> + +<para>Sets the SID of the current domain.</para> + +</refsect2> + +<refsect2> +<title>GROUPMAP</title> + +<para>Manage the mappings between Windows group SIDs and UNIX groups. +Common options include:</para> + +<itemizedlist> +<listitem><para>unixgroup - Name of the UNIX group</para></listitem> +<listitem><para>ntgroup - Name of the Windows NT group (must be + resolvable to a SID</para></listitem> +<listitem><para>rid - Unsigned 32-bit integer</para></listitem> +<listitem><para>sid - Full SID in the form of "S-1-..."</para></listitem> +<listitem><para>type - Type of the group; either 'domain', 'local', + or 'builtin'</para></listitem> +<listitem><para>comment - Freeform text description of the group</para></listitem> +</itemizedlist> + +<refsect3> +<title>GROUPMAP ADD</title> + +<para> +Add a new group mapping entry: +<programlisting> +net groupmap add {rid=int|sid=string} unixgroup=string \ + [type={domain|local}] [ntgroup=string] [comment=string] +</programlisting> +</para> + +</refsect3> + +<refsect3> +<title>GROUPMAP DELETE</title> + +<para>Delete a group mapping entry. If more than one group name matches, the first entry found is deleted.</para> + +<para>net groupmap delete {ntgroup=string|sid=SID}</para> + +</refsect3> + +<refsect3> +<title>GROUPMAP MODIFY</title> + +<para>Update an existing group entry.</para> + +<para> +<programlisting> +net groupmap modify {ntgroup=string|sid=SID} [unixgroup=string] \ + [comment=string] [type={domain|local}] +</programlisting> +</para> +</refsect3> + +<refsect3> +<title>GROUPMAP LIST</title> + +<para>List existing group mapping entries.</para> + +<para>net groupmap list [verbose] [ntgroup=string] [sid=SID]</para> + +</refsect3> +</refsect2> + + + +<refsect2> +<title>MAXRID</title> + +<para>Prints out the highest RID currently in use on the local +server (by the active 'passdb backend'). +</para> + +</refsect2> + +<refsect2> +<title>RPC INFO</title> + +<para>Print information about the domain of the remote server, +such as domain name, domain sid and number of users and groups. +</para> + +</refsect2> + +<refsect2> +<title>[RPC|ADS] TESTJOIN</title> + +<para>Check whether participation in a domain is still valid.</para> + +</refsect2> + +<refsect2> +<title>[RPC|ADS] CHANGETRUSTPW</title> + +<para>Force change of domain trust password.</para> + +</refsect2> + +<refsect2> +<title>RPC TRUSTDOM</title> + +<refsect3> +<title>RPC TRUSTDOM ADD <replaceable>DOMAIN</replaceable></title> + +<para>Add a interdomain trust account for <replaceable>DOMAIN</replaceable>. +This is in fact a Samba account named <replaceable>DOMAIN$</replaceable> +with the account flag <constant>'I'</constant> (interdomain trust account). +This is required for incoming trusts to work. It makes Samba be a +trusted domain of the foreign (trusting) domain. +Users of the Samba domain will be made available in the foreign domain. +If the command is used against localhost it has the same effect as +<command>smbpasswd -a -i DOMAIN</command>. Please note that both commands +expect a appropriate UNIX account. +</para> + +</refsect3> + +<refsect3> +<title>RPC TRUSTDOM DEL <replaceable>DOMAIN</replaceable></title> + +<para>Remove interdomain trust account for +<replaceable>DOMAIN</replaceable>. If it is used against localhost +it has the same effect as <command>smbpasswd -x DOMAIN$</command>. +</para> + +</refsect3> + +<refsect3> +<title>RPC TRUSTDOM ESTABLISH <replaceable>DOMAIN</replaceable></title> + +<para> +Establish a trust relationship to a trusted domain. +Interdomain account must already be created on the remote PDC. +This is required for outgoing trusts to work. It makes Samba be a +trusting domain of a foreign (trusted) domain. +Users of the foreign domain will be made available in our domain. +You'll need winbind and a working idmap config to make them +appear in your system. +</para> + +</refsect3> + +<refsect3> +<title>RPC TRUSTDOM REVOKE <replaceable>DOMAIN</replaceable></title> +<para>Abandon relationship to trusted domain</para> + +</refsect3> + +<refsect3> +<title>RPC TRUSTDOM LIST</title> + +<para>List all interdomain trust relationships.</para> + +</refsect3> +</refsect2> + +<refsect2> +<title>RPC TRUST</title> + +<refsect3> +<title>RPC TRUST CREATE</title> + +<para>Create a trust object by calling lsaCreateTrustedDomainEx2. +The can be done on a single server or on two servers at once with the +possibility to use a random trust password.</para> + +<variablelist><title>Options:</title> +<varlistentry> +<term>otherserver</term> +<listitem><para>Domain controller of the second domain</para></listitem> +</varlistentry> + +<varlistentry> +<term>otheruser</term> +<listitem><para>Admin user in the second domain</para></listitem> +</varlistentry> + +<varlistentry> +<term>otherdomainsid</term> +<listitem><para>SID of the second domain</para></listitem> +</varlistentry> + +<varlistentry> +<term>other_netbios_domain</term> +<listitem><para>NetBIOS (short) name of the second domain</para></listitem> +</varlistentry> + +<varlistentry> +<term>otherdomain</term> +<listitem><para>DNS (full) name of the second domain</para></listitem> +</varlistentry> + +<varlistentry> +<term>trustpw</term> +<listitem><para>Trust password</para></listitem> +</varlistentry> +</variablelist> + +<variablelist><title>Examples:</title> +<varlistentry> +<term>Create a trust object on srv1.dom1.dom for the domain dom2</term> +<listitem><literallayout> +net rpc trust create \ + otherdomainsid=S-x-x-xx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxx \ + other_netbios_domain=dom2 \ + otherdomain=dom2.dom \ + trustpw=12345678 \ + -S srv1.dom1.dom +</literallayout></listitem> +</varlistentry> +<varlistentry> +<term>Create a trust relationship between dom1 and dom2</term> +<listitem><literallayout> +net rpc trust create \ + otherserver=srv2.dom2.test \ + otheruser=dom2adm \ + -S srv1.dom1.dom +</literallayout></listitem> +</varlistentry> +</variablelist> +</refsect3> + +<refsect3> +<title>RPC TRUST DELETE</title> + +<para>Delete a trust object by calling lsaDeleteTrustedDomain. +The can be done on a single server or on two servers at once.</para> + +<variablelist><title>Options:</title> +<varlistentry> +<term>otherserver</term> +<listitem><para>Domain controller of the second domain</para></listitem> +</varlistentry> + +<varlistentry> +<term>otheruser</term> +<listitem><para>Admin user in the second domain</para></listitem> +</varlistentry> + +<varlistentry> +<term>otherdomainsid</term> +<listitem><para>SID of the second domain</para></listitem> +</varlistentry> +</variablelist> + +<variablelist><title>Examples:</title> +<varlistentry> +<term>Delete a trust object on srv1.dom1.dom for the domain dom2</term> +<listitem><literallayout> +net rpc trust delete \ + otherdomainsid=S-x-x-xx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxx \ + -S srv1.dom1.dom +</literallayout></listitem> +</varlistentry> +<varlistentry> +<term>Delete a trust relationship between dom1 and dom2</term> +<listitem><literallayout> +net rpc trust delete \ + otherserver=srv2.dom2.test \ + otheruser=dom2adm \ + -S srv1.dom1.dom +</literallayout></listitem> +</varlistentry> +</variablelist> +</refsect3> + +</refsect2> + +<refsect2> +<refsect3> +<title>RPC RIGHTS</title> + +<para>This subcommand is used to view and manage Samba's rights assignments (also +referred to as privileges). There are three options currently available: +<parameter>list</parameter>, <parameter>grant</parameter>, and +<parameter>revoke</parameter>. More details on Samba's privilege model and its use +can be found in the Samba-HOWTO-Collection.</para> + +</refsect3> + + +</refsect2> + +<refsect2> +<title>RPC ABORTSHUTDOWN</title> + +<para>Abort the shutdown of a remote server.</para> + +</refsect2> + +<refsect2> +<title>RPC SHUTDOWN [-t timeout] [-r] [-f] [-C message]</title> + +<para>Shut down the remote server.</para> + +<variablelist> +<varlistentry> +<term>-r</term> +<listitem><para> +Reboot after shutdown. +</para></listitem> +</varlistentry> + +<varlistentry> +<term>-f</term> +<listitem><para> +Force shutting down all applications. +</para></listitem> +</varlistentry> + +<varlistentry> +<term>-t timeout</term> +<listitem><para> +Timeout before system will be shut down. An interactive +user of the system can use this time to cancel the shutdown. +</para></listitem> +</varlistentry> + +<varlistentry> +<term>-C message</term> +<listitem><para>Display the specified message on the screen to +announce the shutdown.</para></listitem> +</varlistentry> +</variablelist> + +</refsect2> + +<refsect2> +<title>RPC SAMDUMP</title> + +<para>Print out sam database of remote server. You need +to run this against the PDC, from a Samba machine joined as a BDC. </para> +</refsect2> + +<refsect2> +<title>RPC VAMPIRE</title> + +<para>Export users, aliases and groups from remote server to +local server. You need to run this against the PDC, from a Samba machine joined as a BDC. +This vampire command cannot be used against an Active Directory, only +against an NT4 Domain Controller. +</para> +</refsect2> + +<refsect2> +<title>RPC VAMPIRE KEYTAB</title> + +<para>Dump remote SAM database to local Kerberos keytab file. +</para> +</refsect2> + +<refsect2> +<title>RPC VAMPIRE LDIF</title> + +<para>Dump remote SAM database to local LDIF file or standard output. +</para> +</refsect2> + +<refsect2> +<title>RPC GETSID</title> + +<para>Fetch domain SID and store it in the local <filename>secrets.tdb</filename>. </para> + +</refsect2> + +<refsect2> + +<title>ADS GPO</title> +<refsect3> +<title>ADS GPO APPLY <USERNAME|MACHINENAME> </title> +<para>Apply GPOs for a username or machine name. Either username or machine name should be provided to the command, not both. </para> +</refsect3> + +<refsect3> +<title>ADS GPO GETGPO [<replaceable>GPO</replaceable>]</title> +<para>List specified GPO.</para> +</refsect3> + +<refsect3> +<title>ADS GPO LINKADD [<replaceable>LINKDN</replaceable>] [<replaceable>GPODN</replaceable>]</title> +<para>Link a container to a GPO. <replaceable>LINKDN</replaceable> Container to link to a GPO. <replaceable>GPODN</replaceable> GPO to link container to. DNs must be provided properly escaped. See RFC 4514 for details.</para> +</refsect3> + +<refsect3> +<title>ADS GPO LINKGET [<replaceable>CONTAINER</replaceable>]</title> +<para>Lists gPLink of a containter.</para> +</refsect3> + +<refsect3> +<title>ADS GPO LIST <USERNAME|MACHINENAME> </title> +<para>Lists all GPOs for a username or machine name. Either username or machine name should be provided to the command, not both. </para> +</refsect3> + +<refsect3> +<title>ADS GPO LISTALL</title> +<para>Lists all GPOs on a DC.</para> +</refsect3> + +<refsect3> +<title>ADS GPO REFRESH [<replaceable>USERNAME</replaceable>] [<replaceable>MACHINENAME</replaceable>]</title> +<para>Lists all GPOs assigned to an account and download them. <replaceable>USERNAME</replaceable> User to refresh GPOs for. <replaceable>MACHINENAME</replaceable> Machine to refresh GPOs for.</para> +</refsect3> + +</refsect2> + +<refsect2> + +<title>ADS DNS</title> + +<refsect3> +<title>ADS DNS REGISTER [HOSTNAME [IP [IP.....]]]</title> +<para>Add host dns entry to Active Directory.</para> +</refsect3> + +<refsect3> +<title>ADS DNS UNREGISTER <HOSTNAME></title> +<para>Remove host dns entry from Active Directory.</para> +</refsect3> + +</refsect2> + +<refsect2> +<title>ADS LEAVE [--keep-account]</title> + +<para>Make the remote host leave the domain it is part of. </para> + +</refsect2> + +<refsect2> +<title>ADS STATUS</title> + +<para>Print out status of machine account of the local machine in ADS. +Prints out quite some debug info. Aimed at developers, regular +users should use <command>NET ADS TESTJOIN</command>.</para> + +</refsect2> + +<refsect2> +<title>ADS PRINTER</title> + +<refsect3> +<title>ADS PRINTER INFO [<replaceable>PRINTER</replaceable>] [<replaceable>SERVER</replaceable>]</title> + +<para> +Lookup info for <replaceable>PRINTER</replaceable> on <replaceable>SERVER</replaceable>. The printer name defaults to "*", the +server name defaults to the local host.</para> + +</refsect3> + +<refsect3> +<title>ADS PRINTER PUBLISH <replaceable>PRINTER</replaceable></title> + +<para>Publish specified printer using ADS.</para> + +</refsect3> + +<refsect3> +<title>ADS PRINTER REMOVE <replaceable>PRINTER</replaceable></title> + +<para>Remove specified printer from ADS directory.</para> + +</refsect3> + +</refsect2> + +<refsect2> +<title>ADS SEARCH <replaceable>EXPRESSION</replaceable> <replaceable>ATTRIBUTES...</replaceable></title> + +<para>Perform a raw LDAP search on a ADS server and dump the results. The +expression is a standard LDAP search expression, and the +attributes are a list of LDAP fields to show in the results.</para> + +<para>Example: <userinput>net ads search '(objectCategory=group)' sAMAccountName</userinput> +</para> + +</refsect2> + +<refsect2> +<title>ADS DN <replaceable>DN</replaceable> <replaceable>(attributes)</replaceable></title> + +<para> +Perform a raw LDAP search on a ADS server and dump the results. The +DN standard LDAP DN, and the attributes are a list of LDAP fields +to show in the result. +</para> + +<para>Example: <userinput>net ads dn 'CN=administrator,CN=Users,DC=my,DC=domain' SAMAccountName</userinput></para> + +</refsect2> + +<refsect2> +<title>ADS KEYTAB <replaceable>CREATE</replaceable></title> + +<para> +Creates a new keytab file if one doesn't exist with default entries. Default +entries are kerberos principals created from the machinename of the +client, the UPN (if it exists) and any Windows SPN(s) associated with the +computer AD account for the client. If a keytab file already exists then only +missing kerberos principals from the default entries are added. No changes +are made to the computer AD account. +</para> +</refsect2> + +<refsect2> +<title>ADS KEYTAB <replaceable>ADD</replaceable> <replaceable>(principal | machine | serviceclass | windows SPN</replaceable></title> + +<para> +Adds a new keytab entry, the entry can be either; + <variablelist> + <varlistentry><term>kerberos principal</term> + <listitem><para> + A kerberos principal (identified by the presence of '@') is just + added to the keytab file. + </para></listitem> + </varlistentry> + <varlistentry><term>machinename</term> + <listitem><para> + A machinename (identified by the trailing '$') is used to create a + a kerberos principal 'machinename@realm' which is added to the + keytab file. + </para></listitem> + </varlistentry> + <varlistentry><term>serviceclass</term> + <listitem><para> + A serviceclass (such as 'cifs', 'html' etc.) is used to create a pair + of kerberos principals 'serviceclass/fully_qualified_dns_name@realm' & + 'serviceclass/netbios_name@realm' which are added to the keytab file. + </para></listitem> + </varlistentry> + <varlistentry><term>Windows SPN</term> + <listitem><para> + A Windows SPN is of the format 'serviceclass/host:port', it is used to + create a kerberos principal 'serviceclass/host@realm' which will + be written to the keytab file. + </para></listitem> + </varlistentry> + </variablelist> +</para> +<para> +Unlike old versions no computer AD objects are modified by this command. To +preserve the bevhaviour of older clients 'net ads keytab ad_update_ads' is +available. +</para> +</refsect2> + +<refsect2> +<title>ADS KEYTAB <replaceable>ADD_UPDATE_ADS</replaceable> <replaceable>(principal | machine | serviceclass | windows SPN</replaceable></title> + +<para> +Adds a new keytab entry (see section for net ads keytab add). In addition to +adding entries to the keytab file corrosponding Windows SPNs are created +from the entry passed to this command. These SPN(s) added to the AD computer +account object associated with the client machine running this command for +the following entry types; + <variablelist> + <varlistentry><term>serviceclass</term> + <listitem><para> + A serviceclass (such as 'cifs', 'html' etc.) is used to create a + pair of Windows SPN(s) 'param/full_qualified_dns' & + 'param/netbios_name' which are added to the AD computer account object + for this client. + </para></listitem> + </varlistentry> + <varlistentry><term>Windows SPN</term> + <listitem><para> + A Windows SPN is of the format 'serviceclass/host:port', it is + added as passed to the AD computer account object for this client. + </para></listitem> + </varlistentry> + </variablelist> +</para> +</refsect2> + +<refsect2> +<title>ADS setspn <replaceable>SETSPN LIST [machine]</replaceable></title> + +<para> + Lists the Windows SPNs stored in the 'machine' Windows AD Computer object. + If 'machine' is not specified then computer account for this client is used + instead. +</para> +</refsect2> + +<refsect2> +<title>ADS setspn <replaceable>SETSPN ADD SPN [machine]</replaceable></title> + +<para> + Adds the specified Windows SPN to the 'machine' Windows AD Computer object. + If 'machine' is not specified then computer account for this client is used + instead. +</para> +</refsect2> + + +<refsect2> +<title>ADS setspn <replaceable>SETSPN DELETE SPN [machine]</replaceable></title> + +<para> + DELETE the specified Window SPN from the 'machine' Windows AD Computer + object. If 'machine' is not specified then computer account for this + client is used + instead. +</para> + +</refsect2> + +<refsect2> +<title>ADS WORKGROUP</title> + +<para>Print out workgroup name for specified kerberos realm.</para> + +</refsect2> + +<refsect2> + <title>ADS ENCTYPES</title> + +<para> + List, modify or delete the value of the "msDS-SupportedEncryptionTypes" attribute of an account in AD. +</para> + +<para> + This attribute allows one to control which Kerberos encryption types are used for the generation of initial and service tickets. The value consists of an integer bitmask with the following values: +</para> + +<para>0x00000001 DES-CBC-CRC</para> +<para>0x00000002 DES-CBC-MD5</para> +<para>0x00000004 RC4-HMAC</para> +<para>0x00000008 AES128-CTS-HMAC-SHA1-96</para> +<para>0x00000010 AES256-CTS-HMAC-SHA1-96</para> + +</refsect2> + +<refsect2> + <title>ADS ENCTYPES LIST <replaceable><ACCOUNTNAME></replaceable></title> + +<para> + List the value of the "msDS-SupportedEncryptionTypes" attribute of a given account. +</para> + +<para>Example: <userinput>net ads enctypes list Computername</userinput></para> + +</refsect2> + +<refsect2> + <title>ADS ENCTYPES SET <replaceable><ACCOUNTNAME></replaceable> <replaceable>[enctypes]</replaceable></title> + +<para> + Set the value of the "msDS-SupportedEncryptionTypes" attribute of the LDAP object of ACCOUNTNAME to a given value. If the value is omitted, the value is set to 31 which enables all the currently supported encryption types. +</para> + +<para>Example: <userinput>net ads enctypes set Computername 24</userinput></para> + +</refsect2> + +<refsect2> + <title>ADS ENCTYPES DELETE <replaceable><ACCOUNTNAME></replaceable></title> + +<para> + Deletes the "msDS-SupportedEncryptionTypes" attribute of the LDAP object of ACCOUNTNAME. +</para> + +<para>Example: <userinput>net ads enctypes set Computername 24</userinput></para> + +</refsect2> + + +<refsect2> +<title>SAM CREATEBUILTINGROUP <NAME></title> + +<para> +(Re)Create a BUILTIN group. +Only a wellknown set of BUILTIN groups can be created with this command. +This is the list of currently recognized group names: Administrators, +Users, Guests, Power Users, Account Operators, Server Operators, Print +Operators, Backup Operators, Replicator, RAS Servers, Pre-Windows 2000 +compatible Access. + +This command requires a running Winbindd with idmap allocation properly +configured. The group gid will be allocated out of the winbindd range. +</para> + +</refsect2> + +<refsect2> +<title>SAM CREATELOCALGROUP <NAME></title> + +<para> +Create a LOCAL group (also known as Alias). + +This command requires a running Winbindd with idmap allocation properly +configured. The group gid will be allocated out of the winbindd range. +</para> + +</refsect2> + +<refsect2> +<title>SAM DELETELOCALGROUP <NAME></title> + +<para> +Delete an existing LOCAL group (also known as Alias). + +</para> + +</refsect2> + +<refsect2> +<title>SAM MAPUNIXGROUP <NAME></title> + +<para> +Map an existing Unix group and make it a Domain Group, the domain group +will have the same name. +</para> + +</refsect2> + +<refsect2> +<title>SAM UNMAPUNIXGROUP <NAME></title> + +<para> +Remove an existing group mapping entry. +</para> + +</refsect2> + +<refsect2> +<title>SAM ADDMEM <GROUP> <MEMBER></title> + +<para> +Add a member to a Local group. The group can be specified only by name, +the member can be specified by name or SID. +</para> + +</refsect2> + +<refsect2> +<title>SAM DELMEM <GROUP> <MEMBER></title> + +<para> +Remove a member from a Local group. The group and the member must be +specified by name. +</para> + +</refsect2> + +<refsect2> +<title>SAM LISTMEM <GROUP></title> + +<para> +List Local group members. The group must be specified by name. +</para> + +</refsect2> + +<refsect2> +<title>SAM LIST <users|groups|localgroups|builtin|workstations> [verbose]</title> + +<para> +List the specified set of accounts by name. If verbose is specified, +the rid and description is also provided for each account. +</para> + +</refsect2> + +<refsect2> +<title>SAM RIGHTS LIST</title> + +<para> +List all available privileges. +</para> + +</refsect2> + +<refsect2> +<title>SAM RIGHTS GRANT <NAME> <PRIVILEGE></title> + +<para> +Grant one or more privileges to a user. +</para> + +</refsect2> + +<refsect2> +<title>SAM RIGHTS REVOKE <NAME> <PRIVILEGE></title> + +<para> +Revoke one or more privileges from a user. +</para> + +</refsect2> + +<refsect2> +<title>SAM SHOW <NAME></title> + +<para> +Show the full DOMAIN\\NAME the SID and the type for the corresponding +account. +</para> + +</refsect2> + +<refsect2> +<title>SAM SET HOMEDIR <NAME> <DIRECTORY></title> + +<para> +Set the home directory for a user account. +</para> + +</refsect2> + +<refsect2> +<title>SAM SET PROFILEPATH <NAME> <PATH></title> + +<para> +Set the profile path for a user account. +</para> + +</refsect2> + +<refsect2> +<title>SAM SET COMMENT <NAME> <COMMENT></title> + +<para> +Set the comment for a user or group account. +</para> + +</refsect2> + +<refsect2> +<title>SAM SET FULLNAME <NAME> <FULL NAME></title> + +<para> +Set the full name for a user account. +</para> + +</refsect2> + +<refsect2> +<title>SAM SET LOGONSCRIPT <NAME> <SCRIPT></title> + +<para> +Set the logon script for a user account. +</para> + +</refsect2> + +<refsect2> +<title>SAM SET HOMEDRIVE <NAME> <DRIVE></title> + +<para> +Set the home drive for a user account. +</para> + +</refsect2> + +<refsect2> +<title>SAM SET WORKSTATIONS <NAME> <WORKSTATIONS></title> + +<para> +Set the workstations a user account is allowed to log in from. +</para> + +</refsect2> + +<refsect2> +<title>SAM SET DISABLE <NAME></title> + +<para> +Set the "disabled" flag for a user account. +</para> + +</refsect2> + +<refsect2> +<title>SAM SET PWNOTREQ <NAME></title> + +<para> +Set the "password not required" flag for a user account. +</para> + +</refsect2> + +<refsect2> +<title>SAM SET AUTOLOCK <NAME></title> + +<para> +Set the "autolock" flag for a user account. +</para> + +</refsect2> + +<refsect2> +<title>SAM SET PWNOEXP <NAME></title> + +<para> +Set the "password do not expire" flag for a user account. +</para> + +</refsect2> + +<refsect2> +<title>SAM SET PWDMUSTCHANGENOW <NAME> [yes|no]</title> + +<para> +Set or unset the "password must change" flag for a user account. +</para> + +</refsect2> + +<refsect2> +<title>SAM POLICY LIST</title> + +<para> +List the available account policies. +</para> + +</refsect2> + +<refsect2> +<title>SAM POLICY SHOW <account policy></title> + +<para> +Show the account policy value. +</para> + +</refsect2> + +<refsect2> +<title>SAM POLICY SET <account policy> <value></title> + +<para> +Set a value for the account policy. +Valid values can be: "forever", "never", "off", or a number. +</para> + +</refsect2> + +<refsect2> +<title>SAM PROVISION</title> + +<para> +Only available if ldapsam:editposix is set and winbindd is running. +Properly populates the ldap tree with the basic accounts (Administrator) +and groups (Domain Users, Domain Admins, Domain Guests) on the ldap tree. +</para> + +</refsect2> + +<refsect2> +<title>IDMAP DUMP <local tdb file name></title> + +<para> +Dumps the mappings contained in the local tdb file specified. +This command is useful to dump only the mappings produced by the idmap_tdb backend. +</para> + +</refsect2> + +<refsect2> +<title>IDMAP RESTORE [input file]</title> + +<para> +Restore the mappings from the specified file or stdin. +</para> + +</refsect2> + +<refsect2> +<title>IDMAP SET SECRET <DOMAIN> <secret></title> + +<para> +Store a secret for the specified domain, used primarily for domains +that use idmap_ldap as a backend. In this case the secret is used +as the password for the user DN used to bind to the ldap server. +</para> + +</refsect2> + +<refsect2> +<title>IDMAP SET RANGE <RANGE> <SID> [index] [--db=<DB>]</title> + +<para> +Store a domain-range mapping for a given domain (and index) in autorid database. +</para> + +</refsect2> + +<refsect2> +<title>IDMAP SET CONFIG <config> [--db=<DB>]</title> + +<para> +Update CONFIG entry in autorid database. +</para> + +</refsect2> + +<refsect2> +<title>IDMAP GET RANGE <SID> [index] [--db=<DB>]</title> + +<para> +Get the range for a given domain and index from autorid database. +</para> + +</refsect2> + +<refsect2> +<title>IDMAP GET RANGES [<SID>] [--db=<DB>]</title> + +<para> +Get ranges for all domains or for one identified by given SID. +</para> + +</refsect2> + +<refsect2> +<title>IDMAP GET CONFIG [--db=<DB>]</title> + +<para> +Get CONFIG entry from autorid database. +</para> + +</refsect2> + +<refsect2> + +<title>IDMAP DELETE MAPPING [-f] [--db=<DB>] <ID></title> + +<para> +Delete a mapping sid <-> gid or sid <-> uid from the IDMAP database. +The mapping is given by <ID> which may either be a sid: S-x-..., a gid: "GID number" or a uid: "UID number". +Use -f to delete an invalid partial mapping <ID> -> xx +</para> +<para> + Use "smbcontrol all idmap ..." to notify running smbd instances. + See the <citerefentry><refentrytitle>smbcontrol</refentrytitle> + <manvolnum>1</manvolnum></citerefentry> manpage for details. +</para> +</refsect2> + +<refsect2> +<title>IDMAP DELETE RANGE [-f] [--db=<TDB>] <RANGE>|(<SID> [<INDEX>])</title> + +<para> +Delete a domain range mapping identified by 'RANGE' or "domain SID and INDEX" from autorid database. +Use -f to delete invalid mappings. +</para> + +</refsect2> + +<refsect2> +<title>IDMAP DELETE RANGES [-f] [--db=<TDB>] <SID></title> + +<para> +Delete all domain range mappings for a domain identified by SID. +Use -f to delete invalid mappings. +</para> + +</refsect2> + +<refsect2> + +<title>IDMAP CHECK [-v] [-r] [-a] [-T] [-f] [-l] [--db=<DB>]</title> + +<para> + Check and repair the IDMAP database. If no option is given a read only check + of the database is done. Among others an interactive or automatic repair mode + may be chosen with one of the following options: + + <variablelist> + <varlistentry><term>-r|--repair</term> + <listitem><para> + Interactive repair mode, ask a lot of questions. + </para></listitem> + </varlistentry> + + <varlistentry><term>-a|--auto</term> + <listitem><para> + Noninteractive repair mode, use default answers. + </para></listitem> + </varlistentry> + + <varlistentry><term>-v|--verbose</term> + <listitem><para> + Produce more output. + </para></listitem> + </varlistentry> + + <varlistentry><term>-f|--force</term> + <listitem><para> + Try to apply changes, even if they do not apply cleanly. + </para></listitem> + </varlistentry> + + <varlistentry><term>-T|--test</term> + <listitem><para> + Dry run, show what changes would be made but don't touch anything. + </para></listitem> + </varlistentry> + + <varlistentry><term>-l|--lock</term> + <listitem><para> + Lock the database while doing the check. + </para></listitem> + </varlistentry> + + <varlistentry><term>--db <DB></term> + <listitem><para> + Check the specified database. + </para></listitem> + </varlistentry> + <varlistentry><term></term> + <listitem><para> + </para></listitem> + </varlistentry> + </variablelist> + + It reports about the finding of the following errors: + + <variablelist> + <varlistentry><term>Missing reverse mapping:</term> + <listitem><para> + A record with mapping A->B where there is no B->A. Default action + in repair mode is to "fix" this by adding the reverse mapping. + </para></listitem> + </varlistentry> + + <varlistentry><term>Invalid mapping:</term> + <listitem><para> + A record with mapping A->B where B->C. Default action + is to "delete" this record. + </para></listitem> + </varlistentry> + + <varlistentry><term>Missing or invalid HWM:</term> + <listitem><para> + A high water mark is not at least equal to the largest ID in the + database. Default action is to "fix" this by setting it to the + largest ID found +1. + </para></listitem> + </varlistentry> + + <varlistentry><term>Invalid record:</term> + <listitem><para> + Something we failed to parse. Default action is to "edit" it + in interactive and "delete" it in automatic mode. + </para></listitem> + </varlistentry> +</variablelist> +</para> +</refsect2> + + +<refsect2> +<title>USERSHARE</title> + +<para>Starting with version 3.0.23, a Samba server now supports the ability for +non-root users to add user defined shares to be exported using the "net usershare" +commands. +</para> + +<para> +To set this up, first set up your &smb.conf; by adding to the [global] section: + +usershare path = /usr/local/samba/lib/usershares + +Next create the directory /usr/local/samba/lib/usershares, change the owner to root and +set the group owner to the UNIX group who should have the ability to create usershares, +for example a group called "serverops". + +Set the permissions on /usr/local/samba/lib/usershares to 01770. + +(Owner and group all access, no access for others, plus the sticky bit, +which means that a file in that directory can be renamed or deleted only +by the owner of the file). + +Finally, tell smbd how many usershares you will allow by adding to the [global] +section of &smb.conf; a line such as : + +usershare max shares = 100. + +To allow 100 usershare definitions. Now, members of the UNIX group "serverops" +can create user defined shares on demand using the commands below. +</para> + +<para>The usershare commands are: + +<simplelist> +<member>net usershare add sharename path [comment [acl] [guest_ok=[y|n]]] - to add or change a user defined share.</member> +<member>net usershare delete sharename - to delete a user defined share.</member> +<member>net usershare info [--long] [wildcard sharename] - to print info about a user defined share.</member> +<member>net usershare list [--long] [wildcard sharename] - to list user defined shares.</member> +</simplelist> + +</para> + +<refsect3> +<title>USERSHARE ADD <replaceable>sharename</replaceable> <replaceable>path</replaceable> <replaceable>[comment]</replaceable> <replaceable>[acl]</replaceable> <replaceable>[guest_ok=[y|n]]</replaceable></title> + +<para> +Add or replace a new user defined share, with name "sharename". +</para> + +<para> +"path" specifies the absolute pathname on the system to be exported. +Restrictions may be put on this, see the global &smb.conf; parameters: +"usershare owner only", "usershare prefix allow list", and +"usershare prefix deny list". +</para> + +<para> +The optional "comment" parameter is the comment that will appear +on the share when browsed to by a client. +</para> + +<para>The optional "acl" field +specifies which users have read and write access to the entire share. +Note that guest connections are not allowed unless the &smb.conf; parameter +"usershare allow guests" has been set. The definition of a user +defined share acl is: "user:permission", where user is a valid +username on the system and permission can be "F", "R", or "D". +"F" stands for "full permissions", ie. read and write permissions. +"D" stands for "deny" for a user, ie. prevent this user from accessing +this share. +"R" stands for "read only", ie. only allow read access to this +share (no creation of new files or directories or writing to files). +</para> + +<para> +The default if no "acl" is given is "Everyone:R", which means any +authenticated user has read-only access. +</para> + +<para> +The optional "guest_ok" has the same effect as the parameter of the +same name in &smb.conf;, in that it allows guest access to this user +defined share. This parameter is only allowed if the global parameter +"usershare allow guests" has been set to true in the &smb.conf;. +</para> + +There is no separate command to modify an existing user defined share, +just use the "net usershare add [sharename]" command using the same +sharename as the one you wish to modify and specify the new options +you wish. The Samba smbd daemon notices user defined share modifications +at connect time so will see the change immediately, there is no need +to restart smbd on adding, deleting or changing a user defined share. +</refsect3> + +<refsect3> +<title>USERSHARE DELETE <replaceable>sharename</replaceable></title> + +<para> +Deletes the user defined share by name. The Samba smbd daemon +immediately notices this change, although it will not disconnect +any users currently connected to the deleted share. +</para> + +</refsect3> + +<refsect3> +<title>USERSHARE INFO <replaceable>[--long]</replaceable> <replaceable>[wildcard sharename]</replaceable></title> + +<para> +Get info on user defined shares owned by the current user matching the given pattern, or all users. +</para> + +<para> +net usershare info on its own dumps out info on the user defined shares that were +created by the current user, or restricts them to share names that match the given +wildcard pattern ('*' matches one or more characters, '?' matches only one character). +If the '--long' option is also given, it prints out info on user defined +shares created by other users. +</para> + +<para> +The information given about a share looks like: + +[foobar] +path=/home/jeremy +comment=testme +usershare_acl=Everyone:F +guest_ok=n + +And is a list of the current settings of the user defined share that can be +modified by the "net usershare add" command. +</para> + +</refsect3> + +<refsect3> +<title>USERSHARE LIST <replaceable>[--long]</replaceable> <replaceable>wildcard sharename</replaceable></title> + +<para> +List all the user defined shares owned by the current user matching the given pattern, or all users. +</para> + +<para> +net usershare list on its own list out the names of the user defined shares that were +created by the current user, or restricts the list to share names that match the given +wildcard pattern ('*' matches one or more characters, '?' matches only one character). +If the '--long' option is also given, it includes the names of user defined +shares created by other users. +</para> + +</refsect3> + +</refsect2> + +<refsect2> +<title>[RPC] CONF</title> + +<para>Starting with version 3.2.0, a Samba server can be configured by data +stored in registry. This configuration data can be edited with the new "net +conf" commands. There is also the possibility to configure a remote Samba server +by enabling the RPC conf mode and specifying the address of the remote server. +</para> + +<para> +The deployment of this configuration data can be activated in two levels from the +<emphasis>&smb.conf;</emphasis> file: Share definitions from registry are +activated by setting <parameter>registry shares</parameter> to +<quote>yes</quote> in the [global] section and global configuration options are +activated by setting <smbconfoption name="include">registry</smbconfoption> in +the [global] section for a mixed configuration or by setting +<smbconfoption name="config backend">registry</smbconfoption> in the [global] +section for a registry-only configuration. +See the <citerefentry><refentrytitle>smb.conf</refentrytitle> +<manvolnum>5</manvolnum></citerefentry> manpage for details. +</para> + +<para>The conf commands are: +<simplelist> +<member>net [rpc] conf list - Dump the complete configuration in smb.conf like +format.</member> +<member>net [rpc] conf import - Import configuration from file in smb.conf +format.</member> +<member>net [rpc] conf listshares - List the registry shares.</member> +<member>net [rpc] conf drop - Delete the complete configuration from +registry.</member> +<member>net [rpc] conf showshare - Show the definition of a registry share.</member> +<member>net [rpc] conf addshare - Create a new registry share.</member> +<member>net [rpc] conf delshare - Delete a registry share.</member> +<member>net [rpc] conf setparm - Store a parameter.</member> +<member>net [rpc] conf getparm - Retrieve the value of a parameter.</member> +<member>net [rpc] conf delparm - Delete a parameter.</member> +<member>net [rpc] conf getincludes - Show the includes of a share definition.</member> +<member>net [rpc] conf setincludes - Set includes for a share.</member> +<member>net [rpc] conf delincludes - Delete includes from a share definition.</member> +</simplelist> +</para> + +<refsect3> +<title>[RPC] CONF LIST</title> + +<para> +Print the configuration data stored in the registry in a smb.conf-like format to +standard output. +</para> +</refsect3> + +<refsect3> +<title>[RPC] CONF IMPORT <replaceable>[--test|-T]</replaceable> <replaceable>filename</replaceable> <replaceable>[section]</replaceable></title> + +<para> +This command imports configuration from a file in smb.conf format. +If a section encountered in the input file is present in registry, +its contents is replaced. Sections of registry configuration that have +no counterpart in the input file are not affected. If you want to delete these, +you will have to use the "net conf drop" or "net conf delshare" commands. +Optionally, a section may be specified to restrict the effect of the +import command to that specific section. A test mode is enabled by specifying +the parameter "-T" on the commandline. In test mode, no changes are made to the +registry, and the resulting configuration is printed to standard output instead. +</para> +</refsect3> + +<refsect3> +<title>[RPC] CONF LISTSHARES</title> + +<para> +List the names of the shares defined in registry. +</para> +</refsect3> + +<refsect3> +<title>[RPC] CONF DROP</title> + +<para> +Delete the complete configuration data from registry. +</para> +</refsect3> + +<refsect3> +<title>[RPC] CONF SHOWSHARE <replaceable>sharename</replaceable></title> + +<para> +Show the definition of the share or section specified. It is valid to specify +"global" as sharename to retrieve the global configuration options from +registry. +</para> +</refsect3> + +<refsect3> +<title>[RPC] CONF ADDSHARE <replaceable>sharename</replaceable> <replaceable>path</replaceable> [<replaceable>writeable={y|N}</replaceable> [<replaceable>guest_ok={y|N}</replaceable> [<replaceable>comment</replaceable>]]] </title> + +<para>Create a new share definition in registry. +The sharename and path have to be given. The share name may +<emphasis>not</emphasis> be "global". Optionally, values for the very +common options "writeable", "guest ok" and a "comment" may be specified. +The same result may be obtained by a sequence of "net conf setparm" +commands. +</para> +</refsect3> + +<refsect3> +<title>[RPC] CONF DELSHARE <replaceable>sharename</replaceable></title> + +<para> +Delete a share definition from registry. +</para> +</refsect3> + +<refsect3> +<title>[RPC] CONF SETPARM <replaceable>section</replaceable> <replaceable>parameter</replaceable> <replaceable>value</replaceable></title> + +<para> +Store a parameter in registry. The section may be global or a sharename. +The section is created if it does not exist yet. +</para> +</refsect3> + +<refsect3> +<title>[RPC] CONF GETPARM <replaceable>section</replaceable> <replaceable>parameter</replaceable></title> + +<para> +Show a parameter stored in registry. +</para> +</refsect3> + +<refsect3> +<title>[RPC] CONF DELPARM <replaceable>section</replaceable> <replaceable>parameter</replaceable></title> + +<para> +Delete a parameter stored in registry. +</para> +</refsect3> + +<refsect3> +<title>[RPC] CONF GETINCLUDES <replaceable>section</replaceable></title> + +<para> +Get the list of includes for the provided section (global or share). +</para> + +<para> +Note that due to the nature of the registry database and the nature of include directives, +the includes need special treatment: Parameters are stored in registry by the parameter +name as valuename, so there is only ever one instance of a parameter per share. +Also, a specific order like in a text file is not guaranteed. For all real +parameters, this is perfectly ok, but the include directive is rather a meta +parameter, for which, in the smb.conf text file, the place where it is specified +between the other parameters is very important. This can not be achieved by the +simple registry smbconf data model, so there is one ordered list of includes +per share, and this list is evaluated after all the parameters of the share. +</para> + +<para> +Further note that currently, only files can be included from registry +configuration. In the future, there will be the ability to include configuration +data from other registry keys. +</para> +</refsect3> + +<refsect3> +<title>[RPC] CONF SETINCLUDES <replaceable>section</replaceable> [<replaceable>filename</replaceable>]+</title> + +<para> +Set the list of includes for the provided section (global or share) to the given +list of one or more filenames. The filenames may contain the usual smb.conf +macros like %I. +</para> +</refsect3> + +<refsect3> +<title>[RPC] CONF DELINCLUDES <replaceable>section</replaceable></title> + +<para> +Delete the list of includes from the provided section (global or share). +</para> +</refsect3> + +</refsect2> + +<refsect2> +<title>REGISTRY</title> +<para> +Manipulate Samba's registry. +</para> + +<para>The registry commands are: +<simplelist> +<member>net registry enumerate - Enumerate registry keys and values.</member> +<member>net registry enumerate_recursive - Enumerate registry key and its subkeys.</member> +<member>net registry createkey - Create a new registry key.</member> +<member>net registry deletekey - Delete a registry key.</member> +<member>net registry deletekey_recursive - Delete a registry key with subkeys.</member> +<member>net registry getvalue - Print a registry value.</member> +<member>net registry getvalueraw - Print a registry value (raw format).</member> +<member>net registry setvalue - Set a new registry value.</member> +<member>net registry increment - Increment a DWORD registry value under a lock. +</member> +<member>net registry deletevalue - Delete a registry value.</member> +<member>net registry getsd - Get security descriptor.</member> +<member>net registry getsd_sdd1 - Get security descriptor in sddl format. +</member> +<member>net registry setsd_sdd1 - Set security descriptor from sddl format +string.</member> +<member>net registry import - Import a registration entries (.reg) file. +</member> +<member>net registry export - Export a registration entries (.reg) file. +</member> +<member>net registry convert - Convert a registration entries (.reg) file. +</member> +<member>net registry check - Check and repair a registry database. +</member> +</simplelist> +</para> + +<refsect3> + <title>REGISTRY ENUMERATE <replaceable>key</replaceable> </title> + <para>Enumerate subkeys and values of <emphasis>key</emphasis>. + </para> +</refsect3> + +<refsect3> + <title>REGISTRY ENUMERATE_RECURSIVE <replaceable>key</replaceable> </title> + <para>Enumerate values of <emphasis>key</emphasis> and its subkeys. + </para> +</refsect3> + +<refsect3> + <title>REGISTRY CREATEKEY <replaceable>key</replaceable> </title> + <para>Create a new <emphasis>key</emphasis> if not yet existing. + </para> +</refsect3> + +<refsect3> + <title>REGISTRY DELETEKEY <replaceable>key</replaceable> </title> + <para>Delete the given <emphasis>key</emphasis> and its + values from the registry, if it has no subkeys. + </para> +</refsect3> + +<refsect3> + <title>REGISTRY DELETEKEY_RECURSIVE <replaceable>key</replaceable> </title> + <para>Delete the given <emphasis>key</emphasis> and all of its + subkeys and values from the registry. + </para> +</refsect3> + +<refsect3> + <title>REGISTRY GETVALUE <replaceable>key</replaceable> <!-- + --><replaceable>name</replaceable></title> + + <para>Output type and actual value of the value <emphasis>name</emphasis> + of the given <emphasis>key</emphasis>. + </para> +</refsect3> + +<refsect3> + <title>REGISTRY GETVALUERAW <replaceable>key</replaceable> <!-- + --><replaceable>name</replaceable></title> + <para>Output the actual value of the value <emphasis>name</emphasis> + of the given <emphasis>key</emphasis>. + </para> +</refsect3> + +<refsect3> + <title>REGISTRY SETVALUE <replaceable>key</replaceable> <!-- + --><replaceable>name</replaceable> <replaceable>type</replaceable> <!-- + --><replaceable>value</replaceable> ...<!-- + --></title> + + <para>Set the value <emphasis>name</emphasis> + of an existing <emphasis>key</emphasis>. + <emphasis>type</emphasis> may be one of + <emphasis>sz</emphasis>, <emphasis>multi_sz</emphasis> or + <emphasis>dword</emphasis>. + In case of <emphasis>multi_sz</emphasis> <replaceable>value</replaceable> may + be given multiple times. + </para> +</refsect3> + +<refsect3> + <title>REGISTRY INCREMENT <replaceable>key</replaceable> <!-- + --><replaceable>name</replaceable> <replaceable>[inc]</replaceable><!-- + --></title> + + <para>Increment the DWORD value <emphasis>name</emphasis> + of <emphasis>key</emphasis> by <replaceable>inc</replaceable> + while holding a g_lock. + <emphasis>inc</emphasis> defaults to 1. + </para> +</refsect3> + +<refsect3> + <title>REGISTRY DELETEVALUE <replaceable>key</replaceable> <!-- + --><replaceable>name</replaceable></title> + + <para>Delete the value <emphasis>name</emphasis> + of the given <emphasis>key</emphasis>. + </para> +</refsect3> + +<refsect3> + <title>REGISTRY GETSD <replaceable>key</replaceable></title> + + <para>Get the security descriptor of the given <emphasis>key</emphasis>. + </para> +</refsect3> + +<refsect3> + <title>REGISTRY GETSD_SDDL <replaceable>key</replaceable></title> + + <para>Get the security descriptor of the given <emphasis>key</emphasis> as a + Security Descriptor Definition Language (SDDL) string. + </para> +</refsect3> + +<refsect3> + <title>REGISTRY SETSD_SDDL <replaceable>key</replaceable><!-- + --><replaceable>sd</replaceable></title> + + <para>Set the security descriptor of the given <emphasis>key</emphasis> from a + Security Descriptor Definition Language (SDDL) string <emphasis>sd</emphasis>. + </para> +</refsect3> + +<refsect3> + <title>REGISTRY IMPORT <replaceable>file</replaceable><!-- + --><replaceable> [--precheck <check-file>] [opt]</replaceable></title> + <para>Import a registration entries (.reg) <emphasis>file</emphasis>.</para> + <para>The following options are available:</para> + <variablelist> + <varlistentry><term>--precheck <replaceable>check-file</replaceable></term> + <listitem><para> + This is a mechanism to check the existence or non-existence of + certain keys or values specified in a precheck file before applying + the import file. + The import file will only be applied if the precheck succeeds. + </para> + <para> + The check-file follows the normal registry file syntax with the + following semantics: + </para> + <itemizedlist> + <listitem><para><value name>=<value> checks whether the + value exists and has the given value.</para></listitem> + <listitem><para><value name>=- checks whether the value does + not exist.</para></listitem> + <listitem><para>[key] checks whether the key exists.</para> + </listitem> + <listitem><para>[-key] checks whether the key does not exist.</para> + </listitem> + </itemizedlist> + </listitem> + </varlistentry> + </variablelist> +</refsect3> + +<refsect3> + <title>REGISTRY EXPORT <replaceable>key</replaceable><!-- + --><replaceable>file</replaceable><!-- + --><replaceable>[opt]</replaceable></title> + + <para>Export a <emphasis>key</emphasis> to a registration entries (.reg) + <emphasis>file</emphasis>. + </para> +</refsect3> + +<refsect3> + <title>REGISTRY CONVERT <replaceable>in</replaceable> <!-- + --><replaceable>out</replaceable> <!-- + --><replaceable>[[inopt] outopt]</replaceable></title> + + <para>Convert a registration entries (.reg) file <emphasis>in</emphasis>. + </para> +</refsect3> + +<refsect3> + <title>REGISTRY CHECK [-ravTl] [-o <ODB>] [--wipe] [<DB>]</title> + <para>Check and repair the registry database. If no option is given a read only check of the database is done. Among others an interactive or automatic repair mode may be chosen with one of the following options + + <variablelist> + <varlistentry><term>-r|--repair</term> + <listitem><para> + Interactive repair mode, ask a lot of questions. + </para></listitem> + </varlistentry> + + <varlistentry><term>-a|--auto</term> + <listitem><para> + Noninteractive repair mode, use default answers. + </para></listitem> + </varlistentry> + + <varlistentry><term>-v|--verbose</term> + <listitem><para> + Produce more output. + </para></listitem> + </varlistentry> + + <varlistentry><term>-T|--test</term> + <listitem><para> + Dry run, show what changes would be made but don't touch anything. + </para></listitem> + </varlistentry> + + <varlistentry><term>-l|--lock</term> + <listitem><para> + Lock the database while doing the check. + </para></listitem> + </varlistentry> + + <varlistentry><term>--reg-version={1,2,3}</term> + <listitem><para> + Specify the format of the registry database. If not given it defaults to + the value of the binary or, if an registry.tdb is explicitly stated at + the commandline, to the value found in the INFO/version record. + </para></listitem> + </varlistentry> + + <varlistentry><term>[--db] <DB></term> + <listitem><para> + Check the specified database. + </para></listitem> + </varlistentry> + + <varlistentry><term>-o|--output <ODB></term> + <listitem><para> + Create a new registry database <ODB> instead of modifying the + input. If <ODB> is already existing --wipe may be used to + overwrite it. + </para></listitem> + </varlistentry> + + <varlistentry><term>--wipe</term> + <listitem><para> + Replace the registry database instead of modifying the input or + overwrite an existing output database. + </para></listitem> + </varlistentry> + + <varlistentry><term></term> + <listitem><para> + </para></listitem> + </varlistentry> + </variablelist> + </para> +</refsect3> + +</refsect2> + +<refsect2> +<title>EVENTLOG</title> + +<para>Starting with version 3.4.0 net can read, dump, import and export native +win32 eventlog files (usually *.evt). evt files are used by the native Windows eventviewer tools. +</para> + +<para> +The import and export of evt files can only succeed when <parameter>eventlog list</parameter> is used in +<emphasis>&smb.conf;</emphasis> file. +See the <citerefentry><refentrytitle>smb.conf</refentrytitle> <manvolnum>5</manvolnum></citerefentry> manpage for details. +</para> + +<para>The eventlog commands are: +<simplelist> +<member>net eventlog dump - Dump a eventlog *.evt file on the screen.</member> +<member>net eventlog import - Import a eventlog *.evt into the samba internal +tdb based representation of eventlogs.</member> +<member>net eventlog export - Export the samba internal tdb based representation +of eventlogs into an eventlog *.evt file.</member> +</simplelist> +</para> + +<refsect3> +<title>EVENTLOG DUMP <replaceable>filename</replaceable></title> + +<para> +Prints a eventlog *.evt file to standard output. +</para> +</refsect3> + +<refsect3> +<title>EVENTLOG IMPORT <replaceable>filename</replaceable> <replaceable>eventlog</replaceable></title> + +<para> +Imports a eventlog *.evt file defined by <replaceable>filename</replaceable> into the +samba internal tdb representation of eventlog defined by <replaceable>eventlog</replaceable>. +<replaceable>eventlog</replaceable> needs to part of the <parameter>eventlog list</parameter> +defined in &smb.conf;. +See the <citerefentry><refentrytitle>smb.conf</refentrytitle> <manvolnum>5</manvolnum></citerefentry> manpage for details. +</para> + +</refsect3> + +<refsect3> +<title>EVENTLOG EXPORT <replaceable>filename</replaceable> <replaceable>eventlog</replaceable></title> + +<para> +Exports the samba internal tdb representation of eventlog defined by <replaceable>eventlog</replaceable> +to a eventlog *.evt file defined by <replaceable>filename</replaceable>. +<replaceable>eventlog</replaceable> needs to part of the <parameter>eventlog list</parameter> +defined in &smb.conf;. +See the <citerefentry><refentrytitle>smb.conf</refentrytitle> <manvolnum>5</manvolnum></citerefentry> manpage for details. +</para> + +</refsect3> + +</refsect2> + +<refsect2> +<title>DOM</title> + +<para>Starting with version 3.2.0 Samba has support for remote join and unjoin APIs, both client and server-side. Windows supports remote join capabilities since Windows 2000. +</para> +<para>In order for Samba to be joined or unjoined remotely an account must be used that is either member of the Domain Admins group, a member of the local Administrators group or a user that is granted the SeMachineAccountPrivilege privilege. +</para> + +<para>The client side support for remote join is implemented in the net dom commands which are: +<simplelist> +<member>net dom join - Join a remote computer into a domain.</member> +<member>net dom unjoin - Unjoin a remote computer from a domain.</member> +<member>net dom renamecomputer - Renames a remote computer joined to a domain.</member> +</simplelist> +</para> + +<refsect3> +<title>DOM JOIN <replaceable>domain=DOMAIN</replaceable> <replaceable>ou=OU</replaceable> <replaceable>account=ACCOUNT</replaceable> <replaceable>password=PASSWORD</replaceable> <replaceable>reboot</replaceable></title> + +<para> +Joins a computer into a domain. This command supports the following additional parameters: +</para> + +<itemizedlist> + +<listitem><para><replaceable>DOMAIN</replaceable> can be a NetBIOS domain name (also known as short domain name) or a DNS domain name for Active Directory Domains. As in Windows, it is also possible to control which Domain Controller to use. This can be achieved by appending the DC name using the \ separator character. Example: MYDOM\MYDC. The <replaceable>DOMAIN</replaceable> parameter cannot be NULL.</para></listitem> + +<listitem><para><replaceable>OU</replaceable> can be set to a RFC 1779 LDAP DN, like <emphasis>ou=mymachines,cn=Users,dc=example,dc=com</emphasis> in order to create the machine account in a non-default LDAP container. This optional parameter is only supported when joining Active Directory Domains.</para></listitem> + +<listitem><para><replaceable>ACCOUNT</replaceable> defines a domain account that will be used to join the machine to the domain. This domain account needs to have sufficient privileges to join machines.</para></listitem> + +<listitem><para><replaceable>PASSWORD</replaceable> defines the password for the domain account defined with <replaceable>ACCOUNT</replaceable>.</para></listitem> + +<listitem><para><replaceable>REBOOT</replaceable> is an optional parameter that can be set to reboot the remote machine after successful join to the domain.</para></listitem> + +</itemizedlist> + +<para> +Note that you also need to use standard net parameters to connect and authenticate to the remote machine that you want to join. These additional parameters include: -S computer and -U user. +</para> +<para> + Example: + net dom join -S xp -U XP\\administrator%secret domain=MYDOM account=MYDOM\\administrator password=topsecret reboot. +</para> +<para> +This example would connect to a computer named XP as the local administrator using password secret, and join the computer into a domain called MYDOM using the MYDOM domain administrator account and password topsecret. After successful join, the computer would reboot. +</para> + +</refsect3> + +<refsect3> +<title>DOM UNJOIN <replaceable>account=ACCOUNT</replaceable> <replaceable>password=PASSWORD</replaceable> <replaceable>reboot</replaceable></title> + +<para> +Unjoins a computer from a domain. This command supports the following additional parameters: +</para> + +<itemizedlist> + +<listitem><para><replaceable>ACCOUNT</replaceable> defines a domain account that will be used to unjoin the machine from the domain. This domain account needs to have sufficient privileges to unjoin machines.</para></listitem> + +<listitem><para><replaceable>PASSWORD</replaceable> defines the password for the domain account defined with <replaceable>ACCOUNT</replaceable>.</para></listitem> + +<listitem><para><replaceable>REBOOT</replaceable> is an optional parameter that can be set to reboot the remote machine after successful unjoin from the domain.</para></listitem> + +</itemizedlist> + +<para> +Note that you also need to use standard net parameters to connect and authenticate to the remote machine that you want to unjoin. These additional parameters include: -S computer and -U user. +</para> +<para> + Example: + net dom unjoin -S xp -U XP\\administrator%secret account=MYDOM\\administrator password=topsecret reboot. +</para> +<para> +This example would connect to a computer named XP as the local administrator using password secret, and unjoin the computer from the domain using the MYDOM domain administrator account and password topsecret. After successful unjoin, the computer would reboot. +</para> + +</refsect3> + +<refsect3> +<title>DOM RENAMECOMPUTER <replaceable>newname=NEWNAME</replaceable> <replaceable>account=ACCOUNT</replaceable> <replaceable>password=PASSWORD</replaceable> <replaceable>reboot</replaceable></title> + +<para> +Renames a computer that is joined to a domain. This command supports the following additional parameters: +</para> + +<itemizedlist> + +<listitem><para><replaceable>NEWNAME</replaceable> defines the new name of the machine in the domain.</para></listitem> + +<listitem><para><replaceable>ACCOUNT</replaceable> defines a domain account that will be used to rename the machine in the domain. This domain account needs to have sufficient privileges to rename machines.</para></listitem> + +<listitem><para><replaceable>PASSWORD</replaceable> defines the password for the domain account defined with <replaceable>ACCOUNT</replaceable>.</para></listitem> + +<listitem><para><replaceable>REBOOT</replaceable> is an optional parameter that can be set to reboot the remote machine after successful rename in the domain.</para></listitem> + +</itemizedlist> + +<para> +Note that you also need to use standard net parameters to connect and authenticate to the remote machine that you want to rename in the domain. These additional parameters include: -S computer and -U user. +</para> +<para> + Example: + net dom renamecomputer -S xp -U XP\\administrator%secret newname=XPNEW account=MYDOM\\administrator password=topsecret reboot. +</para> +<para> +This example would connect to a computer named XP as the local administrator using password secret, and rename the joined computer to XPNEW using the MYDOM domain administrator account and password topsecret. After successful rename, the computer would reboot. +</para> + +</refsect3> + +</refsect2> + +<refsect2> +<title>G_LOCK</title> + +<para>Manage global locks.</para> + +<refsect3> +<title>G_LOCK DO <replaceable>lockname</replaceable> <replaceable>timeout</replaceable> <replaceable>command</replaceable></title> + +<para> +Execute a shell command under a global lock. This might be useful to define the +order in which several shell commands will be executed. The locking information +is stored in a file called <filename>g_lock.tdb</filename>. In setups with CTDB +running, the locking information will be available on all cluster nodes. +</para> + +<itemizedlist> +<listitem><para><replaceable>LOCKNAME</replaceable> defines the name of the global lock.</para></listitem> +<listitem><para><replaceable>TIMEOUT</replaceable> defines the timeout.</para></listitem> +<listitem><para><replaceable>COMMAND</replaceable> defines the shell command to execute.</para></listitem> +</itemizedlist> +</refsect3> + +<refsect3> +<title>G_LOCK LOCKS</title> + +<para> +Print a list of all currently existing locknames. +</para> +</refsect3> + +<refsect3> +<title>G_LOCK DUMP <replaceable>lockname</replaceable></title> + +<para> +Dump the locking table of a certain global lock. +</para> +</refsect3> + +</refsect2> + +<refsect2> + <title>TDB</title> + + <para>Print information from tdb records.</para> + + <refsect3> + <title>TDB LOCKING <replaceable>key</replaceable> [DUMP]</title> + + <para>List sharename, filename and number of share modes + for a record from locking.tdb. With the optional DUMP options, + dump the complete record.</para> + + <itemizedlist> + <listitem> + <para><replaceable>KEY</replaceable> + Key of the tdb record as hex string.</para> + </listitem> + </itemizedlist> + + </refsect3> +</refsect2> + +<refsect2> + <title>vfs</title> + <para>Access shared filesystem through the VFS.</para> + + <refsect3> + <title>vfs stream2abouble [--recursive] [--verbose] [--continue] [--follow-symlinks] <replaceable>share</replaceable> <replaceable>path</replaceable></title> + + <para>Convert file streams to AppleDouble files.</para> + <itemizedlist> + <listitem> + <para><replaceable>share</replaceable> + A Samba share.</para> + </listitem> + </itemizedlist> + <itemizedlist> + <listitem> + <para><replaceable>path</replaceable> A relative path of something in + the Samba share. "." can be used for the root directory of the + share.</para> + </listitem> + </itemizedlist> + + <para>Options:</para> + <variablelist> + <varlistentry> + <term>--recursive</term> + <listitem><para>Traverse a directory hierarchy.</para></listitem> + </varlistentry> + <varlistentry> + <term>--verbose</term> + <listitem><para>Verbose output.</para></listitem> + </varlistentry> + <varlistentry> + <term>--continue</term> + <listitem><para>Continue traversing a directory hierarchy if a single + conversion fails.</para></listitem> + </varlistentry> + <varlistentry> + <term>--follow-symlinks</term> + <listitem><para>Follow symlinks encountered while traversing a + directory.</para></listitem> + </varlistentry> + </variablelist> + </refsect3> + + <refsect3> + <title>vfs getntacl <replaceable>share</replaceable> <replaceable>path</replaceable></title> + + <para>Display the security descriptor of a file or directory.</para> + <itemizedlist> + <listitem> + <para><replaceable>share</replaceable> + A Samba share.</para> + </listitem> + </itemizedlist> + <itemizedlist> + <listitem> + <para><replaceable>path</replaceable> A relative path of something in + the Samba share. "." can be used for the root directory of the + share.</para> + </listitem> + </itemizedlist> + </refsect3> + +</refsect2> + +<refsect2> +<title>OFFLINEJOIN</title> + +<para>Starting with version 4.15 Samba has support for offline join APIs. Windows supports offline join capabilities since Windows 7 and Windows 2008 R2. +</para> + +<para>The following offline commands are implemented: +<simplelist> +<member>net offlinejoin provision - Provisions a machine account in AD.</member> +<member>net offlinejoin requestodj - Requests a domain offline join.</member> +</simplelist> +</para> + +<refsect3> + <title>OFFLINEJOIN PROVISION <replaceable>domain=DOMAIN</replaceable> <replaceable>machine_name=MACHINE_NAME</replaceable> <replaceable>machine_account_ou=MACHINE_ACCOUNT_OU</replaceable> <replaceable>dcname=DCNAME</replaceable> <replaceable>defpwd</replaceable> <replaceable>reuse</replaceable> <replaceable>savefile=FILENAME</replaceable> <replaceable>printblob</replaceable></title> + +<para> +Provisions a machine account in AD. This command needs network connectivity to the domain controller to succeed. This command supports the following additional parameters: +</para> + +<itemizedlist> + +<listitem><para><replaceable>DOMAIN</replaceable> can be a NetBIOS domain name (also known as short domain name) or a DNS domain name for Active Directory Domains. The <replaceable>DOMAIN</replaceable> parameter cannot be NULL.</para></listitem> + +<listitem><para><replaceable>MACHINE_NAME</replaceable> defines the machine account name that will be provisioned in AD. The <replaceable>MACHINE_NAME</replaceable> parameter cannot be NULL.</para></listitem> + +<listitem><para><replaceable>MACHINE_ACCOUNT_OU</replaceable> can be set to a RFC 1779 LDAP DN, like <emphasis>ou=mymachines,cn=Users,dc=example,dc=com</emphasis> in order to create the machine account in a non-default LDAP container. This optional parameter is only supported when joining Active Directory Domains.</para></listitem> + +<listitem><para><replaceable>DCNAME</replaceable> defines a specific domain controller for creating the machine account in AD.</para></listitem> + +<listitem><para><replaceable>DEFPWD</replaceable> is an optional parameter that can be set to enforce using the default machine account password. The use of this parameter is not recommended as the default machine account password can be easily guessed. </para></listitem> + +<listitem><para><replaceable>REUSE</replaceable> is an optional parameter that can be set to enforce reusing an existing machine account in AD.</para></listitem> + +<listitem><para><replaceable>SAVEFILE</replaceable> is an optional parameter to store the generated provisioning data on disk.</para></listitem> + +<listitem><para><replaceable>PRINTBLOB</replaceable> is an optional parameter to print the generated provisioning data on stdout.</para></listitem> + +</itemizedlist> + +<para> + Example: + net offlinejoin provision -U administrator%secret domain=MYDOM machine_name=MYHOST savefile=provisioning.txt +</para> +</refsect3> + +<refsect3> + <title>OFFLINEJOIN REQUESTODJ <replaceable>loadfile=FILENAME</replaceable></title> + +<para> +Requests an offline domain join by providing file-based provisioning data. This command supports the following additional parameters: +</para> + +<itemizedlist> + +<listitem><para><replaceable>LOADFILE</replaceable> is a required parameter to load the provisioning from a file.</para></listitem> + +</itemizedlist> + +<para> + Example: + net offlinejoin requestodj -U administrator%secret loadfile=provisioning.txt +</para> + +</refsect3> + +</refsect2> + +<refsect2> +<title>HELP [COMMAND]</title> + +<para>Gives usage information for the specified command.</para> + +</refsect2> + +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is complete for version 3 of the Samba + suite.</para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + + <para>The net manpage was written by Jelmer Vernooij.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/nfs4.xml.include b/docs-xml/manpages/nfs4.xml.include new file mode 100644 index 0000000..29cad9e --- /dev/null +++ b/docs-xml/manpages/nfs4.xml.include @@ -0,0 +1,57 @@ +<variablelist> + +<varlistentry> + <term>nfs4:mode = [ simple | special ]</term> + <listitem> + <para> + Controls substitution of special IDs (OWNER@ and GROUP@) on NFS4 ACLs. + The use of mode simple is recommended. + In this mode only non inheriting ACL entries for the file owner + and group are mapped to special IDs. + </para> + + <para>The following MODEs are understood by the module:</para> + <itemizedlist> + <listitem><para><command>simple(default)</command> - use OWNER@ and GROUP@ special IDs for non inheriting ACEs only.</para></listitem> + <listitem><para><command>special(deprecated)</command> - use OWNER@ and GROUP@ special IDs in ACEs for all file owner and group ACEs.</para></listitem> + </itemizedlist> + </listitem> + +</varlistentry> + +<varlistentry> + <term>nfs4:acedup = [dontcare|reject|ignore|merge]</term> + <listitem> + <para> + This parameter configures how Samba handles duplicate ACEs encountered in NFS4 ACLs. + They allow creating duplicate ACEs with different bits for same ID, which may confuse the Windows clients. + </para> + + <para>Following is the behaviour of Samba for different values :</para> + <itemizedlist> + <listitem><para><command>dontcare</command> - copy the ACEs as they come</para></listitem> + <listitem><para><command>reject (deprecated)</command> - stop operation and exit with error on ACL set op</para></listitem> + <listitem><para><command>ignore (deprecated)</command> - don't include the second matching ACE</para></listitem> + <listitem><para><command>merge (default)</command> - bitwise OR the 2 ace.flag fields and 2 ace.mask fields of the 2 duplicate ACEs into 1 ACE</para></listitem> + </itemizedlist> + </listitem> +</varlistentry> + + +<varlistentry> + <term>nfs4:chown = [yes|no]</term> + <listitem> + <para>This parameter allows enabling or disabling the chown supported + by the underlying filesystem. This parameter should be enabled with + care as it might leave your system insecure.</para> + <para>Some filesystems allow chown as a) giving b) stealing. It is the latter + that is considered a risk.</para> + <para>Following is the behaviour of Samba for different values : </para> + <itemizedlist> + <listitem><para><command>yes</command> - Enable chown if as supported by the under filesystem</para></listitem> + <listitem><para><command>no (default)</command> - Disable chown</para></listitem> + </itemizedlist> + </listitem> +</varlistentry> + +</variablelist> diff --git a/docs-xml/manpages/nmbd.8.xml b/docs-xml/manpages/nmbd.8.xml new file mode 100644 index 0000000..5400a67 --- /dev/null +++ b/docs-xml/manpages/nmbd.8.xml @@ -0,0 +1,291 @@ +<?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="nmbd.8"> + +<refmeta> + <refentrytitle>nmbd</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>nmbd</refname> + <refpurpose>NetBIOS name server to provide NetBIOS + over IP naming services to clients</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>nmbd</command> + <arg choice="opt">-D|--daemon</arg> + <arg choice="opt">-i|--interactive</arg> + <arg choice="opt">-F|--foreground</arg> + <arg choice="opt">--no-process-group</arg> + <arg choice="opt">-b|--build-options</arg> + <arg choice="opt">-p <port number(s)></arg> + <arg choice="opt">-P <profiling level></arg> + <arg choice="opt">-d <debug level></arg> + <arg choice="opt">--debug-stdout</arg> + <arg choice="opt">--configfile=<configuration file></arg> + <arg choice="opt">--option=<name>=<value></arg> + <arg choice="opt">-l|--log-basename <log directory></arg> + <arg choice="opt">--leak-report</arg> + <arg choice="opt">--leak-report-full</arg> + <arg choice="opt">-V|--version</arg> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + <para>This program is part of the <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para><command>nmbd</command> is a server that understands + and can reply to NetBIOS over IP name service requests, like + those produced by SMB/CIFS clients such as Windows 95/98/ME, + Windows NT, Windows 2000, Windows XP and LanManager clients. It also + participates in the browsing protocols which make up the + Windows "Network Neighborhood" view.</para> + + <para>SMB/CIFS clients, when they start up, may wish to + locate an SMB/CIFS server. That is, they wish to know what + IP number a specified host is using.</para> + + <para>Amongst other services, <command>nmbd</command> will + listen for such requests, and if its own NetBIOS name is + specified it will respond with the IP number of the host it + is running on. Its "own NetBIOS name" is by + default the primary DNS name of the host it is running on, + but this can be overridden by the <smbconfoption name="netbios name"/> + in &smb.conf;. Thus <command>nmbd</command> will + reply to broadcast queries for its own name(s). Additional + names for <command>nmbd</command> to respond on can be set + via parameters in the <citerefentry><refentrytitle>smb.conf</refentrytitle> + <manvolnum>5</manvolnum></citerefentry> configuration file.</para> + + <para><command>nmbd</command> can also be used as a WINS + (Windows Internet Name Server) server. What this basically means + is that it will act as a WINS database server, creating a + database from name registration requests that it receives and + replying to queries from clients for these names.</para> + + <para>In addition, <command>nmbd</command> can act as a WINS + proxy, relaying broadcast queries from clients that do + not understand how to talk the WINS protocol to a WINS + server.</para> +</refsect1> + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + <varlistentry> + <term>-D|--daemon</term> + <listitem><para>If specified, this parameter causes + <command>nmbd</command> to operate as a daemon. That is, + it detaches itself and runs in the background, fielding + requests on the appropriate port. By default, <command>nmbd</command> + will operate as a daemon if launched from a command shell. + nmbd can also be operated from the <command>inetd</command> + meta-daemon, although this is not recommended. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-F|--foreground</term> + <listitem><para>If specified, this parameter causes + the main <command>nmbd</command> process to not daemonize, + i.e. double-fork and disassociate with the terminal. + Child processes are still created as normal to service + each connection request, but the main process does not + exit. This operation mode is suitable for running + <command>nmbd</command> under process supervisors such + as <command>supervise</command> and <command>svscan</command> + from Daniel J. Bernstein's <command>daemontools</command> + package, or the AIX process monitor. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-i|--interactive</term> + <listitem><para>If this parameter is specified it causes the + server to run "interactively", not as a daemon, even if the + server is executed on the command line of a shell. Setting this + parameter negates the implicit daemon mode when run from the + command line. <command>nmbd</command> also logs to standard + output, as if the <constant>-S</constant> parameter had been + given. </para></listitem> + </varlistentry> + + <varlistentry> + <term>-H|--hosts <filename></term> + <listitem><para>NetBIOS lmhosts file. The lmhosts + file is a list of NetBIOS names to IP addresses that + is loaded by the nmbd server and used via the name + resolution mechanism <smbconfoption name="name resolve order"/> described in <citerefentry><refentrytitle>smb.conf</refentrytitle> + <manvolnum>5</manvolnum></citerefentry> to resolve any + NetBIOS name queries needed by the server. Note + that the contents of this file are <emphasis>NOT</emphasis> + used by <command>nmbd</command> to answer any name queries. + Adding a line to this file affects name NetBIOS resolution + from this host <emphasis>ONLY</emphasis>.</para> + + <para>The default path to this file is compiled into + Samba as part of the build process. Common defaults + are <filename>/usr/local/samba/lib/lmhosts</filename>, + <filename>/usr/samba/lib/lmhosts</filename> or + <filename>/etc/samba/lmhosts</filename>. See the <citerefentry><refentrytitle>lmhosts</refentrytitle> + <manvolnum>5</manvolnum></citerefentry> man page for details on the contents of this file.</para></listitem> + </varlistentry> + + <varlistentry> + <term>-p|--port <UDP port number></term> + <listitem><para>UDP port number is a positive integer value. + This option changes the default UDP port number (normally 137) + that <command>nmbd</command> responds to name queries on. Don't + use this option unless you are an expert, in which case you + won't need help!</para></listitem> + </varlistentry> + + <varlistentry> + <term>--no-process-group</term> + <listitem><para>Do not create a new process group for nmbd. + </para></listitem> + </varlistentry> + + &cmdline.common.samba.server; + &popt.autohelp; + </variablelist> +</refsect1> + +<refsect1> + <title>FILES</title> + + <variablelist> + <varlistentry> + <term><filename>/etc/inetd.conf</filename></term> + <listitem><para>If the server is to be run by the + <command>inetd</command> meta-daemon, this file + must contain suitable startup information for the + meta-daemon. + </para></listitem> + </varlistentry> + + <varlistentry> + <term><filename>/etc/rc</filename></term> + <listitem><para>or whatever initialization script your + system uses).</para> + + <para>If running the server as a daemon at startup, + this file will need to contain an appropriate startup + sequence for the server.</para></listitem> + </varlistentry> + + <varlistentry> + <term><filename>/etc/services</filename></term> + <listitem><para>If running the server via the + meta-daemon <command>inetd</command>, this file + must contain a mapping of service name (e.g., netbios-ssn) + to service port (e.g., 139) and protocol type (e.g., tcp). + </para></listitem> + </varlistentry> + + <varlistentry> + <term><filename>/usr/local/samba/lib/smb.conf</filename></term> + <listitem><para>This is the default location of + the <citerefentry><refentrytitle>smb.conf</refentrytitle> + <manvolnum>5</manvolnum></citerefentry> server + configuration file. Other common places that systems + install this file are <filename>/usr/samba/lib/smb.conf</filename> + and <filename>/etc/samba/smb.conf</filename>.</para> + + <para>When run as a WINS server (see the + <smbconfoption name="wins support"/> + parameter in the <citerefentry><refentrytitle>smb.conf</refentrytitle> + <manvolnum>5</manvolnum></citerefentry> man page), + <command>nmbd</command> + will store the WINS database in the file <filename>wins.dat</filename> + in the <filename>var/locks</filename> directory configured under + wherever Samba was configured to install itself.</para> + + <para>If <command>nmbd</command> is acting as a <emphasis> + browse master</emphasis> (see the <smbconfoption name="local master"/> + parameter in the <citerefentry><refentrytitle>smb.conf</refentrytitle> + <manvolnum>5</manvolnum></citerefentry> man page, <command>nmbd</command> + will store the browsing database in the file <filename>browse.dat + </filename> in the <filename>var/locks</filename> directory + configured under wherever Samba was configured to install itself. + </para></listitem> + </varlistentry> + </variablelist> +</refsect1> + +<refsect1> + <title>SIGNALS</title> + + <para>To shut down an <command>nmbd</command> process it is recommended + that SIGKILL (-9) <emphasis>NOT</emphasis> be used, except as a last + resort, as this may leave the name database in an inconsistent state. + The correct way to terminate <command>nmbd</command> is to send it + a SIGTERM (-15) signal and wait for it to die on its own.</para> + + <para><command>nmbd</command> will accept SIGHUP, which will cause + it to dump out its namelists into the file <filename>namelist.debug + </filename> in the <filename>/usr/local/samba/var/locks</filename> + directory (or the <filename>var/locks</filename> directory configured + under wherever Samba was configured to install itself). This will also + cause <command>nmbd</command> to dump out its server database in + the <filename>log.nmb</filename> file. Additionally, the signal will + cause reloading <command>nmbd</command> configuration.</para> + + <para> + Instead of sending a SIGHUP signal, a request to dump namelists + into the file and reload a configuration file may be sent using + <citerefentry><refentrytitle>smbcontrol</refentrytitle> + <manvolnum>1</manvolnum></citerefentry> program. + </para> + + <para>The debug log level of nmbd may be raised or lowered + using <citerefentry><refentrytitle>smbcontrol</refentrytitle> + <manvolnum>1</manvolnum></citerefentry> (SIGUSR[1|2] signals + are no longer used since Samba 2.2). This is to allow + transient problems to be diagnosed, whilst still running + at a normally low log level.</para> +</refsect1> + + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of + the Samba suite.</para> +</refsect1> + +<refsect1> + <title>SEE ALSO</title> + <para> + <citerefentry><refentrytitle>inetd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry>, <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry>, <citerefentry><refentrytitle>smb.conf</refentrytitle> + <manvolnum>5</manvolnum></citerefentry>, <citerefentry><refentrytitle>smbclient</refentrytitle> + <manvolnum>1</manvolnum></citerefentry>, <citerefentry><refentrytitle>testparm</refentrytitle> + <manvolnum>1</manvolnum></citerefentry>, and the Internet + RFC's <filename>rfc1001.txt</filename>, <filename>rfc1002.txt</filename>. + In addition the CIFS (formerly SMB) specification is available + as a link from the Web page <ulink noescape="1" url="https://www.samba.org/cifs/"> + https://www.samba.org/cifs/</ulink>.</para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/nmblookup.1.xml b/docs-xml/manpages/nmblookup.1.xml new file mode 100644 index 0000000..08b0882 --- /dev/null +++ b/docs-xml/manpages/nmblookup.1.xml @@ -0,0 +1,225 @@ +<?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="nmblookup"> + +<refmeta> + <refentrytitle>nmblookup</refentrytitle> + <manvolnum>1</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">User Commands</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>nmblookup</refname> + <refpurpose>NetBIOS over TCP/IP client used to lookup NetBIOS + names</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>nmblookup</command> + <arg choice="opt">-M|--master-browser</arg> + <arg choice="opt">--recursion</arg> + <arg choice="opt">-S|--status</arg> + <arg choice="opt">-r|--root-port</arg> + <arg choice="opt">-A|--lookup-by-ip</arg> + <arg choice="opt">-B|--broadcast=BROADCAST-ADDRESS</arg> + <arg choice="opt">-U|--unicast=UNICAST-ADDRESS</arg> + <arg choice="opt">-T|--translate</arg> + <arg choice="opt">-f|--flags</arg> + <arg choice="opt">-?|--help</arg> + <arg choice="opt">--usage</arg> + <arg choice="opt">-d|--debuglevel=DEBUGLEVEL</arg> + <arg choice="opt">--debug-stdout</arg> + <arg choice="opt">--configfile=CONFIGFILE</arg> + <arg choice="opt">--option=name=value</arg> + <arg choice="opt">-l|--log-basename=LOGFILEBASE</arg> + <arg choice="opt">--leak-report</arg> + <arg choice="opt">--leak-report-full</arg> + <arg choice="opt">-R|--name-resolve=NAME-RESOLVE-ORDER</arg> + <arg choice="opt">-O|--socket-options=SOCKETOPTIONS</arg> + <arg choice="opt">-m|--max-protocol=MAXPROTOCOL</arg> + <arg choice="opt">-n|--netbiosname=NETBIOSNAME</arg> + <arg choice="opt">--netbios-scope=SCOPE</arg> + <arg choice="opt">-W|--workgroup=WORKGROUP</arg> + <arg choice="opt">--realm=REALM</arg> + <arg choice="req">name</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><command>nmblookup</command> is used to query NetBIOS names + and map them to IP addresses in a network using NetBIOS over TCP/IP + queries. The options allow the name queries to be directed at a + particular IP broadcast area or to a particular machine. All queries + are done over UDP.</para> +</refsect1> + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + <varlistentry> + <term>-M|--master-browser</term> + <listitem><para>Searches for a master browser by looking + up the NetBIOS <replaceable>name</replaceable> with a + type of <constant>0x1d</constant>. If <replaceable> + name</replaceable> is "-" then it does a lookup on the special name + <constant>__MSBROWSE__</constant>. Please note that in order to + use the name "-", you need to make sure "-" isn't parsed as an + argument, e.g. use : + <userinput>nmblookup -M -- -</userinput>.</para></listitem> + </varlistentry> + + <varlistentry> + <term>--recursion</term> + <listitem><para>Set the recursion desired bit in the packet + to do a recursive lookup. This is used when sending a name + query to a machine running a WINS server and the user wishes + to query the names in the WINS server. If this bit is unset + the normal (broadcast responding) NetBIOS processing code + on a machine is used instead. See RFC1001, RFC1002 for details. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-S|--status</term> + <listitem><para>Once the name query has returned an IP + address then do a node status query as well. A node status + query returns the NetBIOS names registered by a host. + </para></listitem> + </varlistentry> + + + <varlistentry> + <term>-r|--root-port</term> + <listitem><para>Try and bind to UDP port 137 to send and receive UDP + datagrams. The reason for this option is a bug in Windows 95 + where it ignores the source port of the requesting packet + and only replies to UDP port 137. Unfortunately, on most UNIX + systems root privilege is needed to bind to this port, and + in addition, if the <citerefentry><refentrytitle>nmbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> daemon is running on this machine it also binds to this port. + </para></listitem> + </varlistentry> + + + <varlistentry> + <term>-A|--lookup-by-ip</term> + <listitem><para>Interpret <replaceable>name</replaceable> as + an IP Address and do a node status query on this address.</para> + </listitem> + </varlistentry> + + + + <varlistentry> + <term>-B|--broadcast <broadcast address></term> + <listitem><para>Send the query to the given broadcast address. Without + this option the default behavior of nmblookup is to send the + query to the broadcast address of the network interfaces as + either auto-detected or defined in the <ulink + url="smb.conf.5.html#INTERFACES"><parameter>interfaces</parameter> + </ulink> parameter of the <citerefentry><refentrytitle>smb.conf</refentrytitle> + <manvolnum>5</manvolnum></citerefentry> file. + </para></listitem> + </varlistentry> + + + + <varlistentry> + <term>-U|--unicast <unicast address></term> + <listitem><para>Do a unicast query to the specified address or + host <replaceable>unicast address</replaceable>. This option + (along with the <parameter>-R</parameter> option) is needed to + query a WINS server.</para></listitem> + </varlistentry> + + <varlistentry> + <term>-T|--translate</term> + <listitem><para>This causes any IP addresses found in the + lookup to be looked up via a reverse DNS lookup into a + DNS name, and printed out before each</para> + + <para><emphasis>IP address .... NetBIOS name</emphasis></para> + + <para> pair that is the normal output.</para></listitem> + </varlistentry> + + <varlistentry> + <term>-f|--flags</term> + <listitem><para> + Show which flags apply to the name that has been looked up. Possible + answers are zero or more of: Response, Authoritative, + Truncated, Recursion_Desired, Recursion_Available, Broadcast. + </para></listitem> + </varlistentry> + + + <varlistentry> + <term>name</term> + <listitem><para>This is the NetBIOS name being queried. Depending + upon the previous options this may be a NetBIOS name or IP address. + If a NetBIOS name then the different name types may be specified + by appending '#<type>' to the name. This name may also be + '*', which will return all registered names within a broadcast + area.</para></listitem> + </varlistentry> + + &cmdline.common.samba.client; + &cmdline.common.connection; + &popt.autohelp; + </variablelist> +</refsect1> + + +<refsect1> + <title>EXAMPLES</title> + + <para><command>nmblookup</command> can be used to query + a WINS server (in the same way <command>nslookup</command> is + used to query DNS servers). To query a WINS server, <command>nmblookup</command> + must be called like this:</para> + + <para><command>nmblookup -U server -R 'name'</command></para> + + <para>For example, running :</para> + + <para><command>nmblookup -U samba.org -R 'IRIX#1B'</command></para> + + <para>would query the WINS server samba.org for the domain + master browser (1B name type) for the IRIX workgroup.</para> +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of + the Samba suite.</para> +</refsect1> + +<refsect1> + <title>SEE ALSO</title> + <para><citerefentry><refentrytitle>nmbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry>, <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry>, and <citerefentry><refentrytitle>smb.conf</refentrytitle> + <manvolnum>5</manvolnum></citerefentry>.</para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/ntlm_auth.1.xml b/docs-xml/manpages/ntlm_auth.1.xml new file mode 100644 index 0000000..c257d1d --- /dev/null +++ b/docs-xml/manpages/ntlm_auth.1.xml @@ -0,0 +1,460 @@ +<?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="ntlm-auth.1"> + +<refmeta> + <refentrytitle>ntlm_auth</refentrytitle> + <manvolnum>1</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">User Commands</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>ntlm_auth</refname> + <refpurpose>tool to allow external access to Winbind's NTLM authentication function</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>ntlm_auth</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This tool is part of the <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para><command>ntlm_auth</command> is a helper utility that authenticates + users using NT/LM authentication. It returns 0 if the users is authenticated + successfully and 1 if access was denied. ntlm_auth uses winbind to access + the user and authentication data for a domain. This utility + is only intended to be used by other programs (currently + <ulink url="http://www.squid-cache.org/">Squid</ulink> + and <ulink url="http://download.samba.org/ftp/unpacked/lorikeet/trunk/mod_ntlm_winbind/">mod_ntlm_winbind</ulink>) + </para> +</refsect1> + +<refsect1> + <title>OPERATIONAL REQUIREMENTS</title> + + <para> + The <citerefentry><refentrytitle>winbindd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> daemon must be operational + for many of these commands to function.</para> + + <para>Some of these commands also require access to the directory + <filename>winbindd_privileged</filename> in + <filename>$LOCKDIR</filename>. This should be done either by running + this command as root or providing group access + to the <filename>winbindd_privileged</filename> directory. For + security reasons, this directory should not be world-accessable. </para> + +</refsect1> + + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + <varlistentry> + <term>--helper-protocol=PROTO</term> + <listitem><para> + Operate as a stdio-based helper. Valid helper protocols are: + </para> + <variablelist> + <varlistentry> + <term>squid-2.4-basic</term> + <listitem><para> + Server-side helper for use with Squid 2.4's basic (plaintext) + authentication. </para> + </listitem> + </varlistentry> + <varlistentry> + <term>squid-2.5-basic</term> + <listitem><para> + Server-side helper for use with Squid 2.5's basic (plaintext) + authentication. </para> + </listitem> + </varlistentry> + <varlistentry> + <term>squid-2.5-ntlmssp</term> + <listitem><para> + Server-side helper for use with Squid 2.5's NTLMSSP + authentication. </para> + <para>Requires access to the directory + <filename>winbindd_privileged</filename> in + <filename>$LOCKDIR</filename>. The protocol used is + described here: <ulink + url="http://devel.squid-cache.org/ntlm/squid_helper_protocol.html">http://devel.squid-cache.org/ntlm/squid_helper_protocol.html</ulink>. + This protocol has been extended to allow the + NTLMSSP Negotiate packet to be included as an argument + to the <command>YR</command> command. (Thus avoiding + loss of information in the protocol exchange). + </para> + </listitem> + </varlistentry> + <varlistentry> + <term>ntlmssp-client-1</term> + <listitem><para> + Client-side helper for use with arbitrary external + programs that may wish to use Samba's NTLMSSP + authentication knowledge. </para> + <para>This helper is a client, and as such may be run by any + user. The protocol used is + effectively the reverse of the previous protocol. A + <command>YR</command> command (without any arguments) + starts the authentication exchange. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>gss-spnego</term> + <listitem><para> + Server-side helper that implements GSS-SPNEGO. This + uses a protocol that is almost the same as + <command>squid-2.5-ntlmssp</command>, but has some + subtle differences that are undocumented outside the + source at this stage. + </para> + <para>Requires access to the directory + <filename>winbindd_privileged</filename> in + <filename>$LOCKDIR</filename>. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>gss-spnego-client</term> + <listitem><para> + Client-side helper that implements GSS-SPNEGO. This + also uses a protocol similar to the above helpers, but + is currently undocumented. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>ntlm-server-1</term> + <listitem><para> + Server-side helper protocol, intended for use by a + RADIUS server or the 'winbind' plugin for pppd, for + the provision of MSCHAP and MSCHAPv2 authentication. + </para> + <para>This protocol consists of lines in the form: + <command>Parameter: value</command> and <command>Parameter:: + Base64-encode value</command>. The presence of a single + period <command>.</command> indicates that one side has + finished supplying data to the other. (Which in turn + could cause the helper to authenticate the + user). </para> + + <para>Currently implemented parameters from the + external program to the helper are:</para> + <variablelist> + <varlistentry> + <term>Username</term> + <listitem><para>The username, expected to be in + Samba's <smbconfoption name="unix charset"/>. + </para> + <varlistentry> + <term>Examples:</term> + <para>Username: bob</para> + <para>Username:: Ym9i</para> + </varlistentry> + </listitem> + </varlistentry> + + <varlistentry> + <term>NT-Domain</term> + <listitem><para>The user's domain, expected to be in + Samba's <smbconfoption name="unix charset"/>. + </para> + + <varlistentry> + <term>Examples:</term> + <para>NT-Domain: WORKGROUP</para> + <para>NT-Domain:: V09SS0dST1VQ</para> + </varlistentry> + </listitem> + </varlistentry> + + <varlistentry> + <term>Full-Username</term> + <listitem><para>The fully qualified username, expected to be + in Samba's <smbconfoption name="unix charset"/> and qualified + with the <smbconfoption name="winbind separator"/>.</para> + <varlistentry> + <term>Examples:</term> + <para>Full-Username: WORKGROUP\bob</para> + <para>Full-Username:: V09SS0dST1VQYm9i</para> + </varlistentry> + </listitem> + </varlistentry> + + <varlistentry> + <term>LANMAN-Challenge</term> + <listitem><para>The 8 byte <command>LANMAN Challenge</command> + value, generated randomly by the server, or (in cases such + as MSCHAPv2) generated in some way by both the server and + the client.</para> + <varlistentry> + <term>Examples:</term> + <para>LANMAN-Challenge: 0102030405060708</para> + </varlistentry> + </listitem> + </varlistentry> + + <varlistentry> + <term>LANMAN-Response</term> + <listitem><para>The 24 byte <command>LANMAN Response</command> value, + calculated from the user's password and the supplied + <command>LANMAN Challenge</command>. Typically, this + is provided over the network by a client wishing to authenticate. + </para> + <varlistentry> + <term>Examples:</term> + <para>LANMAN-Response: 0102030405060708090A0B0C0D0E0F101112131415161718</para> + </varlistentry> + </listitem> + </varlistentry> + + <varlistentry> + <term>NT-Response</term> + <listitem><para>The >= 24 byte <command>NT Response</command> + calculated from the user's password and the supplied + <command>LANMAN Challenge</command>. Typically, this is + provided over the network by a client wishing to authenticate. + </para> + <varlistentry> + <term>Examples:</term> + <para>NT-Response: 0102030405060708090A0B0C0D0E0F10111213141516171</para> + </varlistentry> + </listitem> + </varlistentry> + + <varlistentry> + <term>Password</term> + <listitem><para>The user's password. This would be + provided by a network client, if the helper is being + used in a legacy situation that exposes plaintext + passwords in this way.</para> + <varlistentry> + <term>Examples:</term> + <para>Password: samba2</para> + <para>Password:: c2FtYmEy</para> + </varlistentry> + </listitem> + </varlistentry> + + <varlistentry> + <term>Request-User-Session-Key</term> + <listitem><para>Upon successful authentication, return + the user session key associated with the login.</para> + <varlistentry> + <term>Examples:</term> + <para>Request-User-Session-Key: Yes</para> + </varlistentry> + </listitem> + </varlistentry> + + <varlistentry> + <term>Request-LanMan-Session-Key</term> + <listitem><para>Upon successful authentication, return + the LANMAN session key associated with the login. + </para> + <varlistentry> + <term>Examples:</term> + <para>Request-LanMan-Session-Key: Yes</para> + </varlistentry> + </listitem> + </varlistentry> + + </variablelist> + </listitem> + </varlistentry> + </variablelist> + <warning><para>Implementers should take care to base64 encode + any data (such as usernames/passwords) that may contain malicious user data, such as + a newline. They may also need to decode strings from + the helper, which likewise may have been base64 encoded.</para></warning> + </listitem> + </varlistentry> + + <varlistentry> + <term>--username=USERNAME</term> + <listitem><para> + Specify username of user to authenticate + </para></listitem> + + </varlistentry> + + <varlistentry> + <term>--domain=DOMAIN</term> + <listitem><para> + Specify domain of user to authenticate + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--workstation=WORKSTATION</term> + <listitem><para> + Specify the workstation the user authenticated from + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--challenge=STRING</term> + <listitem><para>NTLM challenge (in HEXADECIMAL)</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>--lm-response=RESPONSE</term> + <listitem><para>LM Response to the challenge (in HEXADECIMAL)</para></listitem> + </varlistentry> + + <varlistentry> + <term>--nt-response=RESPONSE</term> + <listitem><para>NT or NTLMv2 Response to the challenge (in HEXADECIMAL)</para></listitem> + </varlistentry> + + <varlistentry> + <term>--password=PASSWORD</term> + <listitem><para>User's plaintext password</para><para>If + not specified on the command line, this is prompted for when + required. </para> + + <para>For the NTLMSSP based server roles, this parameter + specifies the expected password, allowing testing without + winbindd operational.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>--request-lm-key</term> + <listitem><para>Retrieve LM session key</para></listitem> + </varlistentry> + + <varlistentry> + <term>--request-nt-key</term> + <listitem><para>Request NT key</para></listitem> + </varlistentry> + + <varlistentry> + <term>--diagnostics</term> + <listitem><para>Perform Diagnostics on the authentication + chain. Uses the password from <command>--password</command> + or prompts for one.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>--require-membership-of={SID|Name}</term> + <listitem><para>Require that a user be a member of specified + group (either name or SID) for authentication to succeed.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>--pam-winbind-conf=FILENAME</term> + <listitem><para>Define the path to the pam_winbind.conf file.</para></listitem> + </varlistentry> + + <varlistentry> + <term>--target-hostname=HOSTNAME</term> + <listitem><para>Define the target hostname.</para></listitem> + </varlistentry> + + <varlistentry> + <term>--target-service=SERVICE</term> + <listitem><para>Define the target service.</para></listitem> + </varlistentry> + + <varlistentry> + <term>--use-cached-creds</term> + <listitem><para>Whether to use credentials cached by winbindd.</para></listitem> + </varlistentry> + + <varlistentry> + <term>--allow-mschapv2</term> + <listitem><para>Explicitly allow MSCHAPv2.</para></listitem> + </varlistentry> + + <varlistentry> + <term>--offline-logon</term> + <listitem><para>Allow offline logons for plain text auth. + </para></listitem> + </varlistentry> + + &popt.autohelp; + &cmdline.common.debug.client; + &cmdline.common.config.client; + &cmdline.common.option; + &cmdline.version; + + </variablelist> +</refsect1> + +<refsect1> + <title>EXAMPLE SETUP</title> + + <para>To setup ntlm_auth for use by squid 2.5, with both basic and + NTLMSSP authentication, the following + should be placed in the <filename>squid.conf</filename> file. +<programlisting> +auth_param ntlm program ntlm_auth --helper-protocol=squid-2.5-ntlmssp +auth_param basic program ntlm_auth --helper-protocol=squid-2.5-basic +auth_param basic children 5 +auth_param basic realm Squid proxy-caching web server +auth_param basic credentialsttl 2 hours +</programlisting></para> + +<note><para>This example assumes that ntlm_auth has been installed into your + path, and that the group permissions on + <filename>winbindd_privileged</filename> are as described above.</para></note> + + <para>To setup ntlm_auth for use by squid 2.5 with group limitation in addition to the above + example, the following should be added to the <filename>squid.conf</filename> file. +<programlisting> +auth_param ntlm program ntlm_auth --helper-protocol=squid-2.5-ntlmssp --require-membership-of='WORKGROUP\Domain Users' +auth_param basic program ntlm_auth --helper-protocol=squid-2.5-basic --require-membership-of='WORKGROUP\Domain Users' +</programlisting></para> + +</refsect1> + +<refsect1> + <title>TROUBLESHOOTING</title> + + <para>If you're experiencing problems with authenticating Internet Explorer running + under MS Windows 9X or Millennium Edition against ntlm_auth's NTLMSSP authentication + helper (--helper-protocol=squid-2.5-ntlmssp), then please read + <ulink url="http://support.microsoft.com/support/kb/articles/Q239/8/69.ASP"> + the Microsoft Knowledge Base article #239869 and follow instructions described there</ulink>. + </para> +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of the Samba + suite.</para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + + <para>The ntlm_auth manpage was written by Jelmer Vernooij and + Andrew Bartlett.</para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/pam_winbind.8.xml b/docs-xml/manpages/pam_winbind.8.xml new file mode 100644 index 0000000..171bb40 --- /dev/null +++ b/docs-xml/manpages/pam_winbind.8.xml @@ -0,0 +1,319 @@ +<?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="pam_winbind.8"> + +<refmeta> + <refentrytitle>pam_winbind</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">8</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>pam_winbind</refname> + <refpurpose>PAM module for Winbind</refpurpose> +</refnamediv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This tool is part of the <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para> + pam_winbind is a PAM module that can authenticate users against the local domain by talking to the Winbind daemon. + </para> + +</refsect1> + +<refsect1> + <title>SYNOPSIS</title> + + <para> + Edit the PAM system config /etc/pam.d/service and modify it as the following example shows: + <programlisting> + ... + auth required pam_env.so + auth sufficient pam_unix2.so + +++ auth required pam_winbind.so use_first_pass + account requisite pam_unix2.so + +++ account required pam_winbind.so use_first_pass + +++ password sufficient pam_winbind.so + password requisite pam_pwcheck.so cracklib + password required pam_unix2.so use_authtok + session required pam_unix2.so + +++ session required pam_winbind.so + ... + </programlisting> + + Make sure that pam_winbind is one of the first modules in the session part. It may retrieve + kerberos tickets which are needed by other modules. + </para> +</refsect1> + +<refsect1> + <title>OPTIONS</title> + <para> + + pam_winbind supports several options which can either be set in + the PAM configuration files or in the pam_winbind configuration + file situated at + <filename>/etc/security/pam_winbind.conf</filename>. Options + from the PAM configuration file take precedence to those from + the configuration file. See + <citerefentry><refentrytitle>pam_winbind.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry> + for further details. + + <variablelist> + + <varlistentry> + <term>debug</term> + <listitem><para>Gives debugging output to syslog.</para></listitem> + </varlistentry> + + <varlistentry> + <term>debug_state</term> + <listitem><para>Gives detailed PAM state debugging output to syslog.</para></listitem> + </varlistentry> + + <varlistentry> + <term>require_membership_of=[SID or NAME]</term> + <listitem><para> + If this option is set, pam_winbind will only succeed if the user is a member of the given SID or NAME. A SID + can be either a group-SID, an alias-SID or even an user-SID. It is also possible to give a NAME instead of the + SID. That name must have the form: <parameter>MYDOMAIN\mygroup</parameter> or + <parameter>MYDOMAIN\myuser</parameter> (where '\' character corresponds to the value of + <parameter>winbind separator</parameter> parameter). It is also possible to use a UPN in the form + <parameter>user@REALM</parameter> or <parameter>group@REALM</parameter>. pam_winbind will, in that case, lookup + the SID internally. Note that NAME may not contain any spaces. It is thus recommended to only use SIDs. You can + verify the list of SIDs a user is a member of with <command>wbinfo --user-sids=SID</command>. + </para> + + <para> + This option must only be specified on a auth + module declaration, as it only operates in conjunction + with password authentication. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>use_first_pass</term> + <listitem><para> + By default, pam_winbind tries to get the authentication token from a previous module. If no token is available + it asks the user for the old password. With this option, pam_winbind aborts with an error if no authentication + token from a previous module is available. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>try_first_pass</term> + <listitem><para> + Same as the use_first_pass option (previous item), except that if the primary password is not + valid, PAM will prompt for a password. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>use_authtok</term> + <listitem><para> + Set the new password to the one provided by the previously stacked password module. If this option is not set + pam_winbind will ask the user for the new password. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>try_authtok</term> + <listitem><para> + Same as the use_authtok option (previous item), except that if the new password is not + valid, PAM will prompt for a password. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>krb5_auth</term> + <listitem><para> + + pam_winbind can authenticate using Kerberos when winbindd is + talking to an Active Directory domain controller. Kerberos + authentication must be enabled with this parameter. When + Kerberos authentication can not succeed (e.g. due to clock + skew), winbindd will fallback to samlogon authentication over + MSRPC. When this parameter is used in conjunction with + <parameter>winbind refresh tickets</parameter>, winbind will + keep your Ticket Granting Ticket (TGT) up-to-date by refreshing + it whenever necessary. + + </para></listitem> + </varlistentry> + + <varlistentry> + <term>krb5_ccache_type=[type]</term> + <listitem><para> + + When pam_winbind is configured to try kerberos authentication + by enabling the <parameter>krb5_auth</parameter> option, it can + store the retrieved Ticket Granting Ticket (TGT) in a + credential cache. The type of credential cache can be + controlled with this option. The supported values are: + <parameter>KCM</parameter> or <parameter>KEYRING</parameter> + (when supported by the system's Kerberos library and + operating system), + <parameter>FILE</parameter> and <parameter>DIR</parameter> + (when the DIR type is supported by the system's Kerberos + library). In case of FILE a credential cache in the form of + /tmp/krb5cc_UID will be created - in case of DIR you NEED + to specify a directory which must exist, the UID directory + will be created in the specified directory. + In all cases UID is replaced with the numeric user id. + Check the details of the Kerberos implementation.</para> + + <para>When using the KEYRING type, the supported mechanism is + <quote>KEYRING:persistent:UID</quote>, which uses the Linux + kernel keyring to store credentials on a per-UID basis. + KEYRING has limitations. For example, it is secure kernel memory, + so bulk storage of credentials is not possible.</para> + + <para>When using the KCM type, the supported mechanism is + <quote>KCM:UID</quote>, which uses a Kerberos credential + manager to store credentials on a per-UID basis similar to + KEYRING. This is the recommended choice on latest Linux + distributions that offer a Kerberos Credential Manager. If not, + we suggest to use KEYRING, as those are the most secure and + predictable method.</para> + + <para>It is also possible to define custom filepaths and use the "%u" + pattern in order to substitute the numeric user id. + Examples:</para> + + <variablelist> + <varlistentry> + <term>krb5_ccache_type = DIR:/run/user/%u/krb5cc</term> + <listitem><para>This will create a credential cache file in the specified directory.</para></listitem> + </varlistentry> + <varlistentry> + <term>krb5_ccache_type = FILE:/tmp/krb5cc_%u</term> + <listitem><para>This will create a credential cache file.</para></listitem> + </varlistentry> + </variablelist> + + <para>Leave empty to just do kerberos authentication without + having a ticket cache after the logon has succeeded. + This setting is empty by default.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>cached_login</term> + <listitem><para> + Winbind allows one to logon using cached credentials when <parameter>winbind offline logon</parameter> is enabled. To use this feature from the PAM module this option must be set. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>silent</term> + <listitem><para> + Do not emit any messages. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>mkhomedir</term> + <listitem><para> + Create homedirectory for a user on-the-fly, option is valid in + PAM session block. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>warn_pwd_expire</term> + <listitem><para> + Defines number of days before pam_winbind starts to warn about passwords that are + going to expire. Defaults to 14 days. + </para></listitem> + </varlistentry> + + </variablelist> + + </para> + +</refsect1> + +<refsect1> + <title>PAM DATA EXPORTS</title> + + <para>This section describes the data exported in the PAM stack which could be used in other PAM modules.</para> + + <varlistentry> + <term>PAM_WINBIND_HOMEDIR</term> + <listitem> + <para> + This is the Windows Home Directory set in the profile tab in the user settings + on the Active Directory Server. This could be a local path or a directory on a + share mapped to a drive. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term>PAM_WINBIND_LOGONSCRIPT</term> + <listitem> + <para> + The path to the logon script which should be executed if a user logs in. This is + normally a relative path to the script stored on the server. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term>PAM_WINBIND_LOGONSERVER</term> + <listitem> + <para> + This exports the Active Directory server we are authenticating against. This can be + used as a variable later. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term>PAM_WINBIND_PROFILEPATH</term> + <listitem> + <para> + This is the profile path set in the profile tab in the user settings. Normally + the home directory is synced with this directory on a share. + </para> + </listitem> + </varlistentry> +</refsect1> + +<refsect1> + <title>SEE ALSO</title> + <para><citerefentry> + <refentrytitle>pam_winbind.conf</refentrytitle> + <manvolnum>5</manvolnum></citerefentry>, <citerefentry> + <refentrytitle>wbinfo</refentrytitle> + <manvolnum>1</manvolnum></citerefentry>, <citerefentry> + <refentrytitle>winbindd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry>, <citerefentry> + <refentrytitle>smb.conf</refentrytitle> + <manvolnum>5</manvolnum></citerefentry></para> +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of Samba.</para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para> + The original Samba software and related utilities were created by Andrew Tridgell. Samba is now developed by + the Samba Team as an Open Source project similar to the way the Linux kernel is developed. + </para> + + <para>This manpage was written by Jelmer Vernooij and Guenther Deschner.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/pam_winbind.conf.5.xml b/docs-xml/manpages/pam_winbind.conf.5.xml new file mode 100644 index 0000000..bae9298 --- /dev/null +++ b/docs-xml/manpages/pam_winbind.conf.5.xml @@ -0,0 +1,241 @@ +<?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="pam_winbind.conf.5"> + +<refmeta> + <refentrytitle>pam_winbind.conf</refentrytitle> + <manvolnum>5</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">5</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>pam_winbind.conf</refname> + <refpurpose>Configuration file of PAM module for Winbind</refpurpose> +</refnamediv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This configuration file is part of the <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para> + pam_winbind.conf is the configuration file for the pam_winbind PAM + module. See + <citerefentry><refentrytitle>pam_winbind</refentrytitle><manvolnum>8</manvolnum></citerefentry> + for further details. + </para> +</refsect1> + +<refsect1> + <title>SYNOPSIS</title> + + <para> + The pam_winbind.conf configuration file is a classic ini-style + configuration file. There is only one section (global) where + various options are defined. + </para> +</refsect1> + +<refsect1> + <title>OPTIONS</title> + <para> + + pam_winbind supports several options which can either be set in + the PAM configuration files or in the pam_winbind configuration + file situated at + <filename>/etc/security/pam_winbind.conf</filename>. Options + from the PAM configuration file take precedence to those from + the pam_winbind.conf configuration file. + + <variablelist> + + <varlistentry> + <term>debug = yes|no</term> + <listitem><para>Gives debugging output to syslog. Defaults to "no".</para></listitem> + </varlistentry> + + <varlistentry> + <term>debug_state = yes|no</term> + <listitem><para>Gives detailed PAM state debugging output to syslog. Defaults to "no".</para></listitem> + </varlistentry> + + <varlistentry> + <term>require_membership_of = [SID or NAME]</term> + <listitem><para> + If this option is set, pam_winbind will only succeed if the user is a member of the given SID or NAME. A SID + can be either a group-SID, an alias-SID or even an user-SID. It is also possible to give a NAME instead of the + SID. That name must have the form: <parameter>MYDOMAIN\mygroup</parameter> or + <parameter>MYDOMAIN\myuser</parameter> (where '\' character corresponds to the value of + <parameter>winbind separator</parameter> parameter). It is also possible to use a UPN in the form + <parameter>user@REALM</parameter> or <parameter>group@REALM</parameter>. pam_winbind will, in that case, lookup + the SID internally. Note that NAME may not contain any spaces. It is thus recommended to only use SIDs. You can + verify the list of SIDs a user is a member of with <command>wbinfo --user-sids=SID</command>. + This setting is empty by default. + </para> + <para>This option only operates during password authentication, and will not restrict access if a password is not required for any reason (such as SSH key-based login).</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>try_first_pass = yes|no</term> + <listitem><para> + By default, pam_winbind tries to get the authentication token from a previous module. If no token is available + it asks the user for the old password. With this option, pam_winbind aborts with an error if no authentication + token from a previous module is available. If a primary password is not valid, PAM will prompt for a password. + Default to "no". + </para></listitem> + </varlistentry> + + <varlistentry> + <term>krb5_auth = yes|no</term> + <listitem><para> + + pam_winbind can authenticate using Kerberos when winbindd is + talking to an Active Directory domain controller. Kerberos + authentication must be enabled with this parameter. When + Kerberos authentication can not succeed (e.g. due to clock + skew), winbindd will fallback to samlogon authentication over + MSRPC. When this parameter is used in conjunction with + <parameter>winbind refresh tickets</parameter>, winbind will + keep your Ticket Granting Ticket (TGT) up-to-date by refreshing + it whenever necessary. Defaults to "no". + + </para></listitem> + </varlistentry> + + <varlistentry> + <term>krb5_ccache_type = [type]</term> + <listitem><para> + + When pam_winbind is configured to try kerberos authentication + by enabling the <parameter>krb5_auth</parameter> option, it can + store the retrieved Ticket Granting Ticket (TGT) in a + credential cache. The type of credential cache can be + controlled with this option. The supported values are: + <parameter>KCM</parameter> or <parameter>KEYRING</parameter> + (when supported by the system's Kerberos library and + operating system), + <parameter>FILE</parameter> and <parameter>DIR</parameter> + (when the DIR type is supported by the system's Kerberos + library). In case of FILE a credential cache in the form of + /tmp/krb5cc_UID will be created - in case of DIR you NEED + to specify a directory. UID is replaced with the numeric + user id. The UID directory is being created. The path up to + the directory should already exist. Check the details of the + Kerberos implmentation.</para> + + <para>When using the KEYRING type, the supported mechanism is + <quote>KEYRING:persistent:UID</quote>, which uses the Linux + kernel keyring to store credentials on a per-UID basis. + The KEYRING has its limitations. As it is secure kernel memory, + for example bulk sorage of credentils is for not possible.</para> + + <para>When using th KCM type, the supported mechanism is + <quote>KCM:UID</quote>, which uses a Kerberos credential + manaager to store credentials on a per-UID basis similar to + KEYRING. This is the recommended choice on latest Linux + distributions, offering a Kerberos Credential Manager. If not + we suggest to use KEYRING as those are the most secure and + predictable method.</para> + + <para>It is also possible to define custom filepaths and use the "%u" + pattern in order to substitute the numeric user id. + Examples:</para> + + <variablelist> + <varlistentry> + <term>krb5_ccache_type = DIR:/run/user/%u/krb5cc</term> + <listitem><para>This will create a credential cache file in the specified directory.</para></listitem> + </varlistentry> + <varlistentry> + <term>krb5_ccache_type = FILE:/tmp/krb5cc_%u</term> + <listitem><para>This will create a credential cache file.</para></listitem> + </varlistentry> + </variablelist> + + <para> Leave empty to just do kerberos authentication without + having a ticket cache after the logon has succeeded. + This setting is empty by default. + + </para></listitem> + </varlistentry> + + <varlistentry> + <term>cached_login = yes|no</term> + <listitem><para> + Winbind allows one to logon using cached credentials when <parameter>winbind offline logon</parameter> is enabled. To use this feature from the PAM module this option must be set. Defaults to "no". + </para></listitem> + </varlistentry> + + <varlistentry> + <term>silent = yes|no</term> + <listitem><para> + Do not emit any messages. Defaults to "no". + </para></listitem> + </varlistentry> + + <varlistentry> + <term>mkhomedir = yes|no</term> + <listitem><para> + Create homedirectory for a user on-the-fly, option is valid in + PAM session block. Defaults to "no". + </para></listitem> + </varlistentry> + + <varlistentry> + <term>warn_pwd_expire = days</term> + <listitem><para> + Defines number of days before pam_winbind starts to warn about passwords that are + going to expire. Defaults to 14 days. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>pwd_change_prompt = yes|no</term> + <listitem><para> + Generate prompt for changing an expired password. Defaults to "no". + </para></listitem> + </varlistentry> + + </variablelist> + + </para> + +</refsect1> + +<refsect1> + <title>SEE ALSO</title> + <para><citerefentry> + <refentrytitle>pam_winbind</refentrytitle> + <manvolnum>8</manvolnum></citerefentry>, <citerefentry> + <refentrytitle>wbinfo</refentrytitle> + <manvolnum>1</manvolnum></citerefentry>, <citerefentry> + <refentrytitle>winbindd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry>, <citerefentry> + <refentrytitle>smb.conf</refentrytitle> + <manvolnum>5</manvolnum></citerefentry></para> +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of Samba.</para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para> + The original Samba software and related utilities were created by Andrew Tridgell. Samba is now developed by + the Samba Team as an Open Source project similar to the way the Linux kernel is developed. + </para> + + <para>This manpage was written by Jelmer Vernooij and Guenther Deschner.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/pdbedit.8.xml b/docs-xml/manpages/pdbedit.8.xml new file mode 100644 index 0000000..5849498 --- /dev/null +++ b/docs-xml/manpages/pdbedit.8.xml @@ -0,0 +1,567 @@ +<?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="pdbedit.8"> + +<refmeta> + <refentrytitle>pdbedit</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>pdbedit</refname> + <refpurpose>manage the SAM database (Database of Samba Users)</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>pdbedit</command> + <arg choice="opt">-L|--list</arg> + <arg choice="opt">-v|--verbose</arg> + <arg choice="opt">-w|--smbpasswd-style</arg> + <arg choice="opt">-u|--user=USER</arg> + <arg choice="opt">-N|--account-desc=STRING</arg> + <arg choice="opt">-f|--fullname=STRING</arg> + <arg choice="opt">-h|--homedir=STRING</arg> + <arg choice="opt">-D|--drive=STRING</arg> + <arg choice="opt">-S|--script=STRING</arg> + <arg choice="opt">-p|--profile=STRING</arg> + <arg choice="opt">-I|--domain=STRING</arg> + <arg choice="opt">-U|--user SID=STRING</arg> + <arg choice="opt">-M|--machine SID=STRING</arg> + <arg choice="opt">-a|--create</arg> + <arg choice="opt">-r|--modify</arg> + <arg choice="opt">-m|--machine</arg> + <arg choice="opt">-x|--delete</arg> + <arg choice="opt">-b|--backend=STRING</arg> + <arg choice="opt">-i|--import=STRING</arg> + <arg choice="opt">-e|--export=STRING</arg> + <arg choice="opt">-g|--group</arg> + <arg choice="opt">-y|--policies</arg> + <arg choice="opt">--policies-reset</arg> + <arg choice="opt">-P|--account-policy=STRING</arg> + <arg choice="opt">-C|--value=LONG</arg> + <arg choice="opt">-c|--account-control=STRING</arg> + <arg choice="opt">--force-initialized-passwords</arg> + <arg choice="opt">-z|--bad-password-count-reset</arg> + <arg choice="opt">-Z|--logon-hours-reset</arg> + <arg choice="opt">--time-format=STRING</arg> + <arg choice="opt">-t|--password-from-stdin</arg> + <arg choice="opt">-K|--kickoff-time=STRING</arg> + <arg choice="opt">--set-nt-hash=STRING</arg> + <arg choice="opt">-?|--help</arg> + <arg choice="opt">--usage</arg> + <arg choice="opt">-d|--debuglevel=DEBUGLEVEL</arg> + <arg choice="opt">--debug-stdout</arg> + <arg choice="opt">--configfile=CONFIGFILE</arg> + <arg choice="opt">--option=name=value</arg> + <arg choice="opt">-l|--log-basename=LOGFILEBASE</arg> + <arg choice="opt">--leak-report</arg> + <arg choice="opt">--leak-report-full</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>The pdbedit program is used to manage the users accounts + stored in the sam database and can only be run by root.</para> + + <para>The pdbedit tool uses the passdb modular interface and is + independent from the kind of users database used (currently there + are smbpasswd, ldap, nis+ and tdb based and more can be added + without changing the tool).</para> + + <para>There are five main ways to use pdbedit: adding a user account, + removing a user account, modifying a user account, listing user + accounts, importing users accounts.</para> +</refsect1> + +<refsect1> + <title>OPTIONS</title> + <variablelist> + <varlistentry> + <term>-L|--list</term> + <listitem><para>This option lists all the user accounts + present in the users database. + This option prints a list of user/uid pairs separated by + the ':' character.</para> + <para>Example: <command>pdbedit -L</command></para> + <para><programlisting> +sorce:500:Simo Sorce +samba:45:Test User +</programlisting></para> + </listitem> + </varlistentry> + + + + <varlistentry> + <term>-v|--verbose</term> + <listitem><para>This option enables the verbose listing format. + It causes pdbedit to list the users in the database, printing + out the account fields in a descriptive format. Used together + with -w also shows passwords hashes.</para> + + <para>Example: <command>pdbedit -L -v</command></para> + <para><programlisting> +--------------- +username: sorce +user ID/Group: 500/500 +user RID/GRID: 2000/2001 +Full Name: Simo Sorce +Home Directory: \\BERSERKER\sorce +HomeDir Drive: H: +Logon Script: \\BERSERKER\netlogon\sorce.bat +Profile Path: \\BERSERKER\profile +--------------- +username: samba +user ID/Group: 45/45 +user RID/GRID: 1090/1091 +Full Name: Test User +Home Directory: \\BERSERKER\samba +HomeDir Drive: +Logon Script: +Profile Path: \\BERSERKER\profile +</programlisting></para> + </listitem> + </varlistentry> + + + + <varlistentry> + <term>-w|--smbpasswd-style</term> + <listitem><para>This option sets the "smbpasswd" listing format. + It will make pdbedit list the users in the database, printing + out the account fields in a format compatible with the + <filename>smbpasswd</filename> file format. (see the + <citerefentry><refentrytitle>smbpasswd</refentrytitle> + <manvolnum>5</manvolnum></citerefentry> for details). + Instead used together with (-v) displays the passwords + hashes in verbose output.</para> + + <para>Example: <command>pdbedit -L -w</command></para> + <programlisting> +sorce:500:508818B733CE64BEAAD3B435B51404EE: + D2A2418EFC466A8A0F6B1DBB5C3DB80C: + [UX ]:LCT-00000000: +samba:45:0F2B255F7B67A7A9AAD3B435B51404EE: + BC281CE3F53B6A5146629CD4751D3490: + [UX ]:LCT-3BFA1E8D: +</programlisting> + </listitem> + </varlistentry> + + + <varlistentry> + <term>-u|--user username</term> + <listitem><para>This option specifies the username to be + used for the operation requested (listing, adding, removing). + It is <emphasis>required</emphasis> in add, remove and modify + operations and <emphasis>optional</emphasis> in list + operations.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>-f|--fullname fullname</term> + <listitem><para>This option can be used while adding or + modifying a user account. It will specify the user's full + name. </para> + + <para>Example: <command>-f "Simo Sorce"</command></para> + </listitem> + </varlistentry> + + <varlistentry> + <term>-h|--homedir homedir</term> + <listitem><para>This option can be used while adding or + modifying a user account. It will specify the user's home + directory network path.</para> + + <para>Example: <command>-h "\\\\BERSERKER\\sorce"</command> + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>-D|--drive drive</term> + <listitem><para>This option can be used while adding or + modifying a user account. It will specify the windows drive + letter to be used to map the home directory.</para> + + <para>Example: <command>-D "H:"</command> + </para> + </listitem> + </varlistentry> + + + <varlistentry> + <term>-S|--script script</term> + <listitem><para>This option can be used while adding or + modifying a user account. It will specify the user's logon + script path.</para> + + <para>Example: <command>-S "\\\\BERSERKER\\netlogon\\sorce.bat"</command> + </para> + </listitem> + </varlistentry> + + + <varlistentry> + <term>--set-nt-hash</term> + <listitem><para>This option can be used while modifying + a user account. It will set the user's password using + the nt-hash value given as hexadecimal string. + Useful to synchronize passwords.</para> + + <para>Example: <command>--set-nt-hash 8846F7EAEE8FB117AD06BDD830B7586C</command> + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>-p|--profile profile</term> + <listitem><para>This option can be used while adding or + modifying a user account. It will specify the user's profile + directory.</para> + + <para>Example: <command>-p "\\\\BERSERKER\\netlogon"</command> + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>-M|'--machine SID' SID|rid</term> + <listitem><para> + This option can be used while adding or modifying a machine account. It + will specify the machines' new primary group SID (Security Identifier) or + rid. </para> + + <para>Example: <command>-M S-1-5-21-2447931902-1787058256-3961074038-1201</command></para> + </listitem> + </varlistentry> + + <varlistentry> + <term>-U|'--user SID' SID|rid</term> + <listitem><para> + This option can be used while adding or modifying a user account. It + will specify the users' new SID (Security Identifier) or + rid. </para> + + <para>Example: <command>-U S-1-5-21-2447931902-1787058256-3961074038-5004</command></para> + <para>Example: <command>'--user SID' S-1-5-21-2447931902-1787058256-3961074038-5004</command></para> + <para>Example: <command>-U 5004</command></para> + <para>Example: <command>'--user SID' 5004</command></para> + </listitem> + </varlistentry> + + <varlistentry> + <term>-c|--account-control account-control</term> + <listitem><para>This option can be used while adding or modifying a user + account. It will specify the users' account control property. Possible flags are listed below. + </para> + + <para> + <itemizedlist> + <listitem><para>N: No password required</para></listitem> + <listitem><para>D: Account disabled</para></listitem> + <listitem><para>H: Home directory required</para></listitem> + <listitem><para>T: Temporary duplicate of other account</para></listitem> + <listitem><para>U: Regular user account</para></listitem> + <listitem><para>M: MNS logon user account</para></listitem> + <listitem><para>W: Workstation Trust Account</para></listitem> + <listitem><para>S: Server Trust Account</para></listitem> + <listitem><para>L: Automatic Locking</para></listitem> + <listitem><para>X: Password does not expire</para></listitem> + <listitem><para>I: Domain Trust Account</para></listitem> + </itemizedlist> + </para> + + <para>Example: <command>-c "[X ]"</command></para> + </listitem> + </varlistentry> + + <varlistentry> + <term>-K|--kickoff-time</term> + <listitem><para>This option is used to modify the kickoff + time for a certain user. Use "never" as argument to set the + kickoff time to unlimited. + </para> + <para>Example: <command>pdbedit -K never user</command></para> + </listitem> + </varlistentry> + + <varlistentry> + <term>-a|--create</term> + <listitem><para>This option is used to add a user into the + database. This command needs a user name specified with + the -u switch. When adding a new user, pdbedit will also + ask for the password to be used.</para> + + <para>Example: <command>pdbedit -a -u sorce</command> +<programlisting>new password: +retype new password +</programlisting> +</para> + + <note><para>pdbedit does not call the unix password synchronization + script if <smbconfoption name="unix password sync"/> + has been set. It only updates the data in the Samba + user database. + </para> + + <para>If you wish to add a user and synchronise the password + that immediately, use <command>smbpasswd</command>'s <option>-a</option> option. + </para> + </note> + </listitem> + </varlistentry> + + <varlistentry> + <term>-t|--password-from-stdin</term> + <listitem><para>This option causes pdbedit to read the password + from standard input, rather than from /dev/tty (like the + <command>passwd(1)</command> program does). The password has + to be submitted twice and terminated by a newline each.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>-r|--modify</term> + <listitem><para>This option is used to modify an existing user + in the database. This command needs a user name specified with the -u + switch. Other options can be specified to modify the properties of + the specified user. This flag is kept for backwards compatibility, but + it is no longer necessary to specify it. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-m|--machine</term> + <listitem><para>This option may only be used in conjunction + with the <parameter>-a</parameter> option. It will make + pdbedit to add a machine trust account instead of a user + account (-u username will provide the machine name).</para> + + <para>Example: <command>pdbedit -a -m -u w2k-wks</command> + </para> + </listitem> + </varlistentry> + + + <varlistentry> + <term>-x|--delete</term> + <listitem><para>This option causes pdbedit to delete an account + from the database. It needs a username specified with the + -u switch.</para> + + <para>Example: <command>pdbedit -x -u bob</command></para> + </listitem> + </varlistentry> + + + <varlistentry> + <term>-i|--import passdb-backend</term> + <listitem><para>Use a different passdb backend to retrieve users + than the one specified in smb.conf. Can be used to import data into + your local user database.</para> + + <para>This option will ease migration from one passdb backend to + another.</para> + + <para>Example: <command>pdbedit -i smbpasswd:/etc/smbpasswd.old + </command></para> + </listitem> + </varlistentry> + + <varlistentry> + <term>-e|--export passdb-backend</term> + <listitem><para>Exports all currently available users to the + specified password database backend.</para> + + <para>This option will ease migration from one passdb backend to + another and will ease backing up.</para> + + <para>Example: <command>pdbedit -e smbpasswd:/root/samba-users.backup</command></para> + </listitem> + </varlistentry> + + <varlistentry> + <term>-g|--group</term> + <listitem><para>If you specify <parameter>-g</parameter>, + then <parameter>-i in-backend -e out-backend</parameter> + applies to the group mapping instead of the user database.</para> + + <para>This option will ease migration from one passdb backend to + another and will ease backing up.</para> + + </listitem> + </varlistentry> + + <varlistentry> + <term>-b|--backend passdb-backend</term> + <listitem><para>Use a different default passdb backend. </para> + + <para>Example: <command>pdbedit -b xml:/root/pdb-backup.xml -l</command></para> + </listitem> + </varlistentry> + + <varlistentry> + <term>-P|--account-policy account-policy</term> + <listitem><para>Display an account policy</para> + <para>Valid policies are: minimum password age, reset count minutes, disconnect time, + user must logon to change password, password history, lockout duration, min password length, + maximum password age and bad lockout attempt.</para> + + <para>Example: <command>pdbedit -P "bad lockout attempt"</command></para> +<para><programlisting> +account policy value for bad lockout attempt is 0 +</programlisting></para> + + </listitem> + </varlistentry> + + + <varlistentry> + <term>-C|--value account-policy-value</term> + <listitem><para>Sets an account policy to a specified value. + This option may only be used in conjunction + with the <parameter>-P</parameter> option. + </para> + + <para>Example: <command>pdbedit -P "bad lockout attempt" -C 3</command></para> +<para><programlisting> +account policy value for bad lockout attempt was 0 +account policy value for bad lockout attempt is now 3 +</programlisting></para> + </listitem> + </varlistentry> + + <varlistentry> + <term>-y|--policies</term> + <listitem><para>If you specify <parameter>-y</parameter>, + then <parameter>-i in-backend -e out-backend</parameter> + applies to the account policies instead of the user database.</para> + + <para>This option will allow one to migrate account policies from their default + tdb-store into a passdb backend, e.g. an LDAP directory server.</para> + + <para>Example: <command>pdbedit -y -i tdbsam: -e ldapsam:ldap://my.ldap.host</command></para> + + </listitem> + </varlistentry> + + <varlistentry> + <term>--force-initialized-passwords</term> + <listitem><para>This option forces all users to change their + password upon next login. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>-N|--account-desc description</term> + <listitem><para>This option can be used while adding or + modifying a user account. It will specify the user's description + field.</para> + + <para>Example: <command>-N "test description"</command> + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>-Z|--logon-hours-reset</term> + <listitem><para>This option can be used while adding or + modifying a user account. It will reset the user's allowed logon + hours. A user may login at any time afterwards.</para> + + <para>Example: <command>-Z</command> + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>-z|--bad-password-count-reset</term> + <listitem><para>This option can be used while adding or + modifying a user account. It will reset the stored bad login + counter from a specified user.</para> + + <para>Example: <command>-z</command> + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>--policies-reset</term> + <listitem><para>This option can be used to reset the general + password policies stored for a domain to their + default values.</para> + <para>Example: <command>--policies-reset</command> + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>-I|--domain</term> + <listitem><para>This option can be used while adding or + modifying a user account. It will specify the user's domain field.</para> + + <para>Example: <command>-I "MYDOMAIN"</command> + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>--time-format</term> + <listitem><para>This option is currently not being used.</para> + </listitem> + </varlistentry> + + &popt.autohelp; + &cmdline.common.samba.client; + </variablelist> +</refsect1> + + +<refsect1> + <title>NOTES</title> + + <para>This command may be used only by root.</para> +</refsect1> + + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of + the Samba suite.</para> +</refsect1> + +<refsect1> + <title>SEE ALSO</title> + <para><citerefentry><refentrytitle>smbpasswd</refentrytitle> + <manvolnum>5</manvolnum></citerefentry>, <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry></para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + + <para>The pdbedit manpage was written by Simo Sorce and Jelmer Vernooij.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/profiles.1.xml b/docs-xml/manpages/profiles.1.xml new file mode 100644 index 0000000..9d57a7d --- /dev/null +++ b/docs-xml/manpages/profiles.1.xml @@ -0,0 +1,98 @@ +<?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="profiles.1"> + +<refmeta> + <refentrytitle>profiles</refentrytitle> + <manvolnum>1</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">User Commands</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>profiles</refname> + <refpurpose>A utility to report and change SIDs in registry files + </refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>profiles</command> + <arg choice="opt">-c|--change-sid=STRING</arg> + <arg choice="opt">-n|--new-sid=STRING</arg> + <arg choice="opt">-v|--verbose</arg> + <arg choice="opt">-?|--help</arg> + <arg choice="opt">--usage</arg> + <arg choice="opt">-d|--debuglevel=DEBUGLEVEL</arg> + <arg choice="opt">--debug-stdout</arg> + <arg choice="opt">--configfile=CONFIGFILE</arg> + <arg choice="opt">--option=name=value</arg> + <arg choice="opt">-l|--log-basename=LOGFILEBASE</arg> + <arg choice="opt">--leak-report</arg> + <arg choice="opt">--leak-report-full</arg> + <arg choice="req">FILE</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><command>profiles</command> is a utility that + reports and changes SIDs in windows registry files. It currently only + supports NT. + </para> +</refsect1> + + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + <varlistentry> + <term>file</term> + <listitem><para>Registry file to view or edit. </para></listitem> + </varlistentry> + + + <varlistentry> + <term>-v,--verbose</term> + <listitem><para>Increases verbosity of messages. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-c SID1 -n SID2</term> + <term>--change-sid SID1 --new-sid SID2</term> + <listitem><para>Change all occurrences of SID1 in <filename>file</filename> by SID2. + </para></listitem> + </varlistentry> + + &cmdline.common.samba.client; + &popt.autohelp; + </variablelist> +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of the Samba + suite.</para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + + <para>The profiles man page was written by Jelmer Vernooij. </para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/rpcclient.1.xml b/docs-xml/manpages/rpcclient.1.xml new file mode 100644 index 0000000..e57d614 --- /dev/null +++ b/docs-xml/manpages/rpcclient.1.xml @@ -0,0 +1,757 @@ +<?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="rpcclient.1"> + +<refmeta> + <refentrytitle>rpcclient</refentrytitle> + <manvolnum>1</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">User Commands</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>rpcclient</refname> + <refpurpose>tool for executing client side + MS-RPC functions</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>rpcclient</command> + <arg choice="opt">-c|--command=COMMANDS</arg> + <arg choice="opt">-I|--dest-ip=IP</arg> + <arg choice="opt">-p|--port=PORT</arg> + <arg choice="opt">-?|--help</arg> + <arg choice="opt">--usage</arg> + <arg choice="opt">-d|--debuglevel=DEBUGLEVEL</arg> + <arg choice="opt">--debug-stdout</arg> + <arg choice="opt">--configfile=CONFIGFILE</arg> + <arg choice="opt">--option=name=value</arg> + <arg choice="opt">-l|--log-basename=LOGFILEBASE</arg> + <arg choice="opt">--leak-report</arg> + <arg choice="opt">--leak-report-full</arg> + <arg choice="opt">-R|--name-resolve=NAME-RESOLVE-ORDER</arg> + <arg choice="opt">-O|--socket-options=SOCKETOPTIONS</arg> + <arg choice="opt">-m|--max-protocol=MAXPROTOCOL</arg> + <arg choice="opt">-n|--netbiosname=NETBIOSNAME</arg> + <arg choice="opt">--netbios-scope=SCOPE</arg> + <arg choice="opt">-W|--workgroup=WORKGROUP</arg> + <arg choice="opt">--realm=REALM</arg> + <arg choice="opt">-U|--user=[DOMAIN/]USERNAME[%PASSWORD]</arg> + <arg choice="opt">-N|--no-pass</arg> + <arg choice="opt">--password=STRING</arg> + <arg choice="opt">--pw-nt-hash</arg> + <arg choice="opt">-A|--authentication-file=FILE</arg> + <arg choice="opt">-P|--machine-pass</arg> + <arg choice="opt">--simple-bind-dn=DN</arg> + <arg choice="opt">--use-kerberos=desired|required|off</arg> + <arg choice="opt">--use-krb5-ccache=CCACHE</arg> + <arg choice="opt">--use-winbind-ccache</arg> + <arg choice="opt">--client-protection=sign|encrypt|off</arg> + <arg choice="opt">-V|--version</arg> + <arg choice="req">BINDING-STRING|HOST</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><command>rpcclient</command> is a utility initially developed + to test MS-RPC functionality in Samba itself. It has undergone + several stages of development and stability. Many system administrators + have now written scripts around it to manage Windows NT clients from + their UNIX workstation. </para> +</refsect1> + + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + <varlistentry> + <term>BINDING-STRING|HOST</term> + <listitem> + <para>When connecting to a dcerpc service you need to + specify a binding string.</para> + + <para>The format is:</para> + + <para>TRANSPORT:host[options]</para> + + <para>where TRANSPORT is either ncacn_np (named pipes) for SMB or + ncacn_ip_tcp for DCERPC over TCP/IP.</para> + + <para>"host" is an IP or hostname or netbios name. If the binding + string identifies the server side of an endpoint, "host" may be + an empty string. See below for more details.</para> + + <para>"options" can include a SMB pipe name if using the ncacn_np + transport or a TCP port number if using the ncacn_ip_tcp transport, + otherwise they will be auto-determined.</para> + + <para>Examples:</para> + + <itemizedlist> + <listitem><para><parameter moreinfo="none">ncacn_ip_tcp:samba.example.com[1024]</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">ncacn_ip_tcp:samba.example.com[sign,seal,krb5]</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">ncacn_ip_tcp:samba.example.com[sign,spnego]</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">ncacn_np:samba.example.com</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">ncacn_np:samba.example.com[samr]</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">ncacn_np:samba.example.com[samr,sign,print]</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">ncalrpc:/path/to/unix/socket</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">//SAMBA</parameter></para></listitem> + </itemizedlist> + + <para>The supported transports are:</para> + + <itemizedlist> + <listitem><para><parameter moreinfo="none">ncacn_np</parameter> - Connect using named pipes</para></listitem> + <listitem><para><parameter moreinfo="none">ncacn_ip_tcp</parameter> - Connect over TCP/IP</para></listitem> + <listitem><para><parameter moreinfo="none">ncalrpc</parameter> - Connect over local RPC (unix sockets)</para></listitem> + </itemizedlist> + + <para>The supported options are:</para> + + <itemizedlist> + <listitem><para><parameter moreinfo="none">sign</parameter> - Use RPC integrity authentication level</para></listitem> + <listitem><para><parameter moreinfo="none">seal</parameter> - Enable RPC privacy (encryption) authentication level</para></listitem> + <listitem><para><parameter moreinfo="none">connect</parameter> - Use RPC connect level authentication (auth, but no sign or seal)</para></listitem> + <listitem><para><parameter moreinfo="none">packet</parameter> - Use RPC packet authentication level</para></listitem> + + <listitem><para><parameter moreinfo="none">spnego</parameter> - Use SPNEGO instead of NTLMSSP authentication</para></listitem> + <listitem><para><parameter moreinfo="none">ntlm</parameter> - Use plain NTLM instead of SPNEGO or NTLMSSP</para></listitem> + <listitem><para><parameter moreinfo="none">krb5</parameter> - Use Kerberos instead of NTLMSSP authentication</para></listitem> + <listitem><para><parameter moreinfo="none">schannel</parameter> - Create a schannel connection</para></listitem> + + <listitem><para><parameter moreinfo="none">smb1</parameter> - Use SMB1 for named pipes</para></listitem> + <listitem><para><parameter moreinfo="none">smb2</parameter> - Use SMB2/3 for named pipes</para></listitem> + + <listitem><para><parameter moreinfo="none">validate</parameter> - Enable the NDR validator</para></listitem> + <listitem><para><parameter moreinfo="none">print</parameter> - Enable debug output of packets</para></listitem> + <listitem><para><parameter moreinfo="none">padcheck</parameter> - Check reply data for non-zero pad bytes</para></listitem> + <listitem><para><parameter moreinfo="none">bigendian</parameter> - Use big endian for RPC</para></listitem> + <listitem><para><parameter moreinfo="none">ndr64</parameter> - Use NDR64 for RPC</para></listitem> + </itemizedlist> + + </listitem> + </varlistentry> + + + <varlistentry> + <term>-c|--command=<command string></term> + <listitem><para>Execute semicolon separated commands (listed + below) </para></listitem> + </varlistentry> + + + <varlistentry> + <term>-I|--dest-ip IP-address</term> + <listitem><para><replaceable>IP address</replaceable> is the address of the server to connect to. + It should be specified in standard "a.b.c.d" notation. </para> + + <para>Normally the client would attempt to locate a named + SMB/CIFS server by looking it up via the NetBIOS name resolution + mechanism described above in the <parameter>name resolve order</parameter> + parameter above. Using this parameter will force the client + to assume that the server is on the machine with the specified IP + address and the NetBIOS name component of the resource being + connected to will be ignored. </para> + + <para>There is no default for this parameter. If not supplied, + it will be determined automatically by the client as described + above. </para></listitem> + </varlistentry> + + <varlistentry> + <term>-p|--port port</term> + <listitem><para>This number is the TCP port number that will be used + when making connections to the server. The standard (well-known) + TCP port number for an SMB/CIFS server is 139, which is the + default. </para></listitem> + </varlistentry> + + &popt.autohelp; + &cmdline.common.samba.client; + &cmdline.common.connection; + &cmdline.common.credentials; + </variablelist> +</refsect1> + + +<refsect1> + <title>COMMANDS</title> + + <refsect2> + <title>LSARPC</title> + <variablelist> + <varlistentry><term>lsaquery</term><listitem><para>Query info policy</para></listitem></varlistentry> + <varlistentry><term>lookupsids</term><listitem><para>Convert SIDs to names</para></listitem></varlistentry> + <varlistentry><term>lookupsids3</term><listitem><para>Convert SIDs to names</para></listitem></varlistentry> + <varlistentry><term>lookupsids_level</term><listitem><para>Convert SIDs to names</para></listitem></varlistentry> + <varlistentry><term>lookupnames</term><listitem><para>Convert names to SIDs</para></listitem></varlistentry> + <varlistentry><term>lookupnames4</term><listitem><para>Convert names to SIDs</para></listitem></varlistentry> + <varlistentry><term>lookupnames_level</term><listitem><para>Convert names to SIDs</para></listitem></varlistentry> + <varlistentry><term>enumtrust</term><listitem><para>Enumerate trusted domains</para></listitem></varlistentry> + <varlistentry><term>enumprivs</term><listitem><para>Enumerate privileges</para></listitem></varlistentry> + <varlistentry><term>getdispname</term><listitem><para>Get the privilege name</para></listitem></varlistentry> + <varlistentry><term>lsaenumsid</term><listitem><para>Enumerate the LSA SIDS</para></listitem></varlistentry> + <varlistentry><term>lsacreateaccount</term><listitem><para>Create a new lsa account</para></listitem></varlistentry> + <varlistentry><term>lsaenumprivsaccount</term><listitem><para>Enumerate the privileges of an SID</para></listitem></varlistentry> + <varlistentry><term>lsaenumacctrights</term><listitem><para>Enumerate the rights of an SID</para></listitem></varlistentry> + <varlistentry><term>lsaaddpriv</term><listitem><para>Assign a privilege to a SID</para></listitem></varlistentry> + <varlistentry><term>lsadelpriv</term><listitem><para>Revoke a privilege from a SID</para></listitem></varlistentry> + <varlistentry><term>lsaaddacctrights</term><listitem><para>Add rights to an account</para></listitem></varlistentry> + <varlistentry><term>lsaremoveacctrights</term><listitem><para>Remove rights from an account</para></listitem></varlistentry> + <varlistentry><term>lsalookupprivvalue</term><listitem><para>Get a privilege value given its name</para></listitem></varlistentry> + <varlistentry><term>lsaquerysecobj</term><listitem><para>Query LSA security object</para></listitem></varlistentry> + <varlistentry><term>lsaquerytrustdominfo</term><listitem><para>Query LSA trusted domains info (given a SID)</para></listitem></varlistentry> + <varlistentry><term>lsaquerytrustdominfobyname</term><listitem><para>Query LSA trusted domains info (given a name), only works for Windows > 2k</para></listitem></varlistentry> + <varlistentry><term>lsaquerytrustdominfobysid</term><listitem><para>Query LSA trusted domains info (given a SID)</para></listitem></varlistentry> + <varlistentry><term>lsasettrustdominfo</term><listitem><para>Set LSA trusted domain info</para></listitem></varlistentry> + <varlistentry><term>getusername</term><listitem><para>Get username</para></listitem></varlistentry> + <varlistentry><term>createsecret</term><listitem><para>Create Secret</para></listitem></varlistentry> + <varlistentry><term>deletesecret</term><listitem><para>Delete Secret</para></listitem></varlistentry> + <varlistentry><term>querysecret</term><listitem><para>Query Secret</para></listitem></varlistentry> + <varlistentry><term>setsecret</term><listitem><para>Set Secret</para></listitem></varlistentry> + <varlistentry><term>retrieveprivatedata</term><listitem><para>Retrieve Private Data</para></listitem></varlistentry> + <varlistentry><term>storeprivatedata</term><listitem><para>Store Private Data</para></listitem></varlistentry> + <varlistentry><term>createtrustdom</term><listitem><para>Create Trusted Domain</para></listitem></varlistentry> + <varlistentry><term>deletetrustdom</term><listitem><para>Delete Trusted Domain</para></listitem></varlistentry> + </variablelist> + </refsect2> + + + <refsect2> + <title>LSARPC-DS</title> + <variablelist> + <varlistentry><term>dsroledominfo</term><listitem><para>Get Primary Domain Information</para></listitem></varlistentry> + </variablelist> + </refsect2> + + + <refsect2> + <title>DFS</title> + <variablelist> + <varlistentry><term>dfsversion</term><listitem><para>Query DFS support</para></listitem></varlistentry> + <varlistentry><term>dfsadd</term><listitem><para>Add a DFS share</para></listitem></varlistentry> + <varlistentry><term>dfsremove</term><listitem><para>Remove a DFS share</para></listitem></varlistentry> + <varlistentry><term>dfsgetinfo</term><listitem><para>Query DFS share info</para></listitem></varlistentry> + <varlistentry><term>dfsenum</term><listitem><para>Enumerate dfs shares</para></listitem></varlistentry> + <varlistentry><term>dfsenumex</term><listitem><para>Enumerate dfs shares</para></listitem></varlistentry> + </variablelist> + </refsect2> + + + <refsect2> + <title>SHUTDOWN</title> + <variablelist> + <varlistentry><term>shutdowninit</term><listitem><para>syntax: shutdown [-m message] </para></listitem></varlistentry> + <varlistentry><term>shutdownabort</term><listitem><para>syntax: shutdownabort</para></listitem></varlistentry> + </variablelist> + </refsect2> + + + <refsect2> + <title>SRVSVC</title> + <variablelist> + <varlistentry><term>srvinfo</term><listitem><para>Server query info</para></listitem></varlistentry> + <varlistentry><term>netshareenum</term><listitem><para>Enumerate shares</para></listitem></varlistentry> + <varlistentry><term>netshareenumall</term><listitem><para>Enumerate all shares</para></listitem></varlistentry> + <varlistentry><term>netsharegetinfo</term><listitem><para>Get Share Info</para></listitem></varlistentry> + <varlistentry><term>netsharesetinfo</term><listitem><para>Set Share Info</para></listitem></varlistentry> + <varlistentry><term>netsharesetdfsflags</term><listitem><para>Set DFS flags</para></listitem></varlistentry> + <varlistentry><term>netfileenum</term><listitem><para>Enumerate open files</para></listitem></varlistentry> + <varlistentry><term>netremotetod</term><listitem><para>Fetch remote time of day</para></listitem></varlistentry> + <varlistentry><term>netnamevalidate</term><listitem><para>Validate sharename</para></listitem></varlistentry> + <varlistentry><term>netfilegetsec</term><listitem><para>Get File security</para></listitem></varlistentry> + <varlistentry><term>netsessdel</term><listitem><para>Delete Session</para></listitem></varlistentry> + <varlistentry><term>netsessenum</term><listitem><para>Enumerate Sessions</para></listitem></varlistentry> + <varlistentry><term>netdiskenum</term><listitem><para>Enumerate Disks</para></listitem></varlistentry> + <varlistentry><term>netconnenum</term><listitem><para>Enumerate Connections</para></listitem></varlistentry> + <varlistentry><term>netshareadd</term><listitem><para>Add share</para></listitem></varlistentry> + <varlistentry><term>netsharedel</term><listitem><para>Delete share</para></listitem></varlistentry> + </variablelist> + </refsect2> + + + <refsect2> + <title>SAMR</title> + <variablelist> + <varlistentry><term>queryuser</term><listitem><para>Query user info</para></listitem></varlistentry> + <varlistentry><term>querygroup</term><listitem><para>Query group info</para></listitem></varlistentry> + <varlistentry><term>queryusergroups</term><listitem><para>Query user groups</para></listitem></varlistentry> + <varlistentry><term>queryuseraliases</term><listitem><para>Query user aliases</para></listitem></varlistentry> + <varlistentry><term>querygroupmem</term><listitem><para>Query group membership</para></listitem></varlistentry> + <varlistentry><term>queryaliasmem</term><listitem><para>Query alias membership</para></listitem></varlistentry> + <varlistentry><term>queryaliasinfo</term><listitem><para>Query alias info</para></listitem></varlistentry> + <varlistentry><term>deletealias</term><listitem><para>Delete an alias</para></listitem></varlistentry> + <varlistentry><term>querydispinfo</term><listitem><para>Query display info</para></listitem></varlistentry> + <varlistentry><term>querydispinfo2</term><listitem><para>Query display info</para></listitem></varlistentry> + <varlistentry><term>querydispinfo3</term><listitem><para>Query display info</para></listitem></varlistentry> + <varlistentry><term>querydominfo</term><listitem><para>Query domain info</para></listitem></varlistentry> + <varlistentry><term>enumdomusers</term><listitem><para>Enumerate domain users</para></listitem></varlistentry> + <varlistentry><term>enumdomgroups</term><listitem><para>Enumerate domain groups</para></listitem></varlistentry> + <varlistentry><term>enumalsgroups</term><listitem><para>Enumerate alias groups</para></listitem></varlistentry> + <varlistentry><term>enumdomains</term><listitem><para>Enumerate domains</para></listitem></varlistentry> + <varlistentry><term>createdomuser</term><listitem><para>Create domain user</para></listitem></varlistentry> + <varlistentry><term>createdomgroup</term><listitem><para>Create domain group</para></listitem></varlistentry> + <varlistentry><term>createdomalias</term><listitem><para>Create domain alias</para></listitem></varlistentry> + <varlistentry><term>samlookupnames</term><listitem><para>Look up names</para></listitem></varlistentry> + <varlistentry><term>samlookuprids</term><listitem><para>Look up names</para></listitem></varlistentry> + <varlistentry><term>deletedomgroup</term><listitem><para>Delete domain group</para></listitem></varlistentry> + <varlistentry><term>deletedomuser</term><listitem><para>Delete domain user</para></listitem></varlistentry> + <varlistentry><term>samquerysecobj</term><listitem><para>Query SAMR security object</para></listitem></varlistentry> + <varlistentry><term>getdompwinfo</term><listitem><para>Retrieve domain password info</para></listitem></varlistentry> + <varlistentry><term>getusrdompwinfo</term><listitem><para>Retrieve user domain password info</para></listitem></varlistentry> + <varlistentry><term>lookupdomain</term><listitem><para>Lookup Domain Name</para></listitem></varlistentry> + <varlistentry><term>chgpasswd</term><listitem><para>Change user password</para></listitem></varlistentry> + <varlistentry><term>chgpasswd2</term><listitem><para>Change user password</para></listitem></varlistentry> + <varlistentry><term>chgpasswd3</term><listitem><para>Change user password (RC4 encrypted)</para></listitem></varlistentry> + <varlistentry><term>chgpasswd4</term><listitem><para>Change user password (AES encrypted)</para></listitem></varlistentry> + <varlistentry><term>getdispinfoidx</term><listitem><para>Get Display Information Index</para></listitem></varlistentry> + <varlistentry><term>setuserinfo</term><listitem><para>Set user info</para></listitem></varlistentry> + <varlistentry><term>setuserinfo2</term><listitem><para>Set user info2</para></listitem></varlistentry> + </variablelist> + </refsect2> + + + <refsect2> + <title>SPOOLSS</title> + + <variablelist> + <varlistentry><term>adddriver <arch> <config> [<version>]</term> + <listitem><para> + Execute an AddPrinterDriver() RPC to install the printer driver + information on the server. Note that the driver files should + already exist in the directory returned by + <command>getdriverdir</command>. Possible values for + <parameter>arch</parameter> are the same as those for + the <command>getdriverdir</command> command. + The <parameter>config</parameter> parameter is defined as + follows: </para> + +<para><programlisting> +Long Driver Name:\ +Driver File Name:\ +Data File Name:\ +Config File Name:\ +Help File Name:\ +Language Monitor Name:\ +Default Data Type:\ +Comma Separated list of Files +</programlisting></para> + + <para>Any empty fields should be enter as the string "NULL". </para> + + <para>Samba does not need to support the concept of Print Monitors + since these only apply to local printers whose driver can make + use of a bi-directional link for communication. This field should + be "NULL". On a remote NT print server, the Print Monitor for a + driver must already be installed prior to adding the driver or + else the RPC will fail. </para> + + <para>The <parameter>version</parameter> parameter lets you + specify the printer driver version number. If omitted, the + default driver version for the specified architecture will + be used. This option can be used to upload Windows 2000 + (version 3) printer drivers.</para></listitem></varlistentry> + + <varlistentry><term>addprinter <printername> + <sharename> <drivername> <port></term> + <listitem><para> + Add a printer on the remote server. This printer + will be automatically shared. Be aware that the printer driver + must already be installed on the server (see <command>adddriver</command>) + and the <parameter>port</parameter>must be a valid port name (see + <command>enumports</command>.</para> + </listitem></varlistentry> + + <varlistentry><term>deldriver <driver></term><listitem><para>Delete the + specified printer driver for all architectures. This + does not delete the actual driver files from the server, + only the entry from the server's list of drivers. + </para></listitem></varlistentry> + + <varlistentry><term>deldriverex <driver> [architecture] [version] [flags] + </term><listitem><para>Delete the specified printer driver and optionally files + associated with the driver. + You can limit this action to a specific architecture and a specific version. + If no architecture is given, all driver files of that driver will be deleted. + <parameter>flags</parameter> correspond to numeric DPD_* values, i.e. a value + of 3 requests (DPD_DELETE_UNUSED_FILES | DPD_DELETE_SPECIFIC_VERSION). + </para></listitem></varlistentry> + + <varlistentry><term>enumdata</term><listitem><para>Enumerate all + printer setting data stored on the server. On Windows NT clients, + these values are stored in the registry, while Samba servers + store them in the printers TDB. This command corresponds + to the MS Platform SDK GetPrinterData() function (* This + command is currently unimplemented).</para></listitem></varlistentry> + + <varlistentry><term>enumdataex</term><listitem><para>Enumerate printer data for a key</para></listitem></varlistentry> + + <varlistentry><term>enumkey</term><listitem><para>Enumerate printer keys</para></listitem></varlistentry> + + <varlistentry><term>enumjobs <printer></term> + <listitem><para>List the jobs and status of a given printer. + This command corresponds to the MS Platform SDK EnumJobs() + function</para></listitem></varlistentry> + + <varlistentry><term>getjob</term><listitem><para>Get print job</para></listitem></varlistentry> + <varlistentry><term>setjob</term><listitem><para>Set print job</para></listitem></varlistentry> + + + <varlistentry><term>enumports [level]</term> + <listitem><para> + Executes an EnumPorts() call using the specified + info level. Currently only info levels 1 and 2 are supported. + </para></listitem></varlistentry> + + <varlistentry><term>enumdrivers [level]</term> + <listitem><para> + Execute an EnumPrinterDrivers() call. This lists the various installed + printer drivers for all architectures. Refer to the MS Platform SDK + documentation for more details of the various flags and calling + options. Currently supported info levels are 1, 2, and 3.</para></listitem></varlistentry> + + <varlistentry><term>enumprinters [level]</term> + <listitem><para>Execute an EnumPrinters() call. This lists the various installed + and share printers. Refer to the MS Platform SDK documentation for + more details of the various flags and calling options. Currently + supported info levels are 1, 2 and 5.</para></listitem></varlistentry> + + <varlistentry><term>getdata <printername> <valuename;></term> + <listitem><para>Retrieve the data for a given printer setting. See + the <command>enumdata</command> command for more information. + This command corresponds to the GetPrinterData() MS Platform + SDK function. </para></listitem></varlistentry> + + <varlistentry><term>getdataex</term><listitem><para>Get + printer driver data with + keyname</para></listitem></varlistentry> + + + <varlistentry><term>getdriver <printername></term> + <listitem><para> + Retrieve the printer driver information (such as driver file, + config file, dependent files, etc...) for + the given printer. This command corresponds to the GetPrinterDriver() + MS Platform SDK function. Currently info level 1, 2, and 3 are supported. + </para></listitem></varlistentry> + + <varlistentry><term>getdriverdir <arch></term> + <listitem><para> + Execute a GetPrinterDriverDirectory() + RPC to retrieve the SMB share name and subdirectory for + storing printer driver files for a given architecture. Possible + values for <parameter>arch</parameter> are "Windows 4.0" + (for Windows 95/98), "Windows NT x86", "Windows NT PowerPC", "Windows + Alpha_AXP", and "Windows NT R4000". </para></listitem></varlistentry> + + <varlistentry><term>getdriverpackagepath</term> + <listitem><para>Get print driver package download directory</para></listitem></varlistentry> + + <varlistentry><term>getprinter <printername></term> + <listitem><para>Retrieve the current printer information. This command + corresponds to the GetPrinter() MS Platform SDK function. + </para></listitem></varlistentry> + + + <varlistentry><term>openprinter <printername></term> + <listitem><para>Execute an OpenPrinterEx() and ClosePrinter() RPC + against a given printer. </para></listitem></varlistentry> + + <varlistentry><term>openprinter_ex <printername></term> + <listitem><para>Open printer handle</para></listitem></varlistentry> + + <varlistentry><term>setdriver <printername> + <drivername></term> + <listitem><para>Execute a SetPrinter() command to update the printer driver + associated with an installed printer. The printer driver must + already be correctly installed on the print server. </para> + + <para>See also the <command>enumprinters</command> and + <command>enumdrivers</command> commands for obtaining a list of + of installed printers and drivers.</para></listitem></varlistentry> + + <varlistentry><term>getprintprocdir</term><listitem> + <para>Get print processor directory</para></listitem></varlistentry> + + <varlistentry><term>addform</term><listitem><para>Add form</para></listitem></varlistentry> + <varlistentry><term>setform</term><listitem><para>Set form</para></listitem></varlistentry> + <varlistentry><term>getform</term><listitem><para>Get form</para></listitem></varlistentry> + <varlistentry><term>deleteform</term><listitem><para>Delete form</para></listitem></varlistentry> + <varlistentry><term>enumforms</term><listitem><para>Enumerate form</para></listitem></varlistentry> + <varlistentry><term>setprinter</term><listitem><para>Set printer comment</para></listitem></varlistentry> + <varlistentry><term>setprinterdata</term><listitem><para>Set REG_SZ printer data</para></listitem></varlistentry> + + <varlistentry><term>setprintername <printername> <newprintername></term> + <listitem><para>Set printer name</para></listitem></varlistentry> + + <varlistentry><term>rffpcnex</term><listitem><para>Rffpcnex test</para></listitem></varlistentry> + <varlistentry><term>printercmp</term><listitem><para>Printer comparison test</para></listitem></varlistentry> + <varlistentry><term>enumprocs</term><listitem><para>Enumerate Print Processors</para></listitem></varlistentry> + <varlistentry><term>enumprocdatatypes</term><listitem><para>Enumerate Print Processor Data Types</para></listitem></varlistentry> + <varlistentry><term>enummonitors</term><listitem><para>Enumerate Print Monitors</para></listitem></varlistentry> + <varlistentry><term>createprinteric</term><listitem><para>Create Printer IC</para></listitem></varlistentry> + <varlistentry><term>playgdiscriptonprinteric</term><listitem><para>Create Printer IC</para></listitem></varlistentry> + <varlistentry><term>getcoreprinterdrivers</term><listitem><para>Get CorePrinterDriver</para></listitem></varlistentry> + <varlistentry><term>enumpermachineconnections</term><listitem><para>Enumerate Per Machine Connections</para></listitem></varlistentry> + <varlistentry><term>addpermachineconnection</term><listitem><para>Add Per Machine Connection</para></listitem></varlistentry> + <varlistentry><term>delpermachineconnection</term><listitem><para>Delete Per Machine Connection</para></listitem></varlistentry> + </variablelist> + </refsect2> + + + <refsect2> + <title>NETLOGON</title> + <variablelist> + <varlistentry><term>logonctrl2</term><listitem><para>Logon Control 2</para></listitem></varlistentry> + <varlistentry><term>getanydcname</term><listitem><para>Get trusted DC name</para></listitem></varlistentry> + <varlistentry><term>getdcname</term><listitem><para>Get trusted PDC name</para></listitem></varlistentry> + <varlistentry><term>dsr_getdcname</term><listitem><para>Get trusted DC name</para></listitem></varlistentry> + <varlistentry><term>dsr_getdcnameex</term><listitem><para>Get trusted DC name</para></listitem></varlistentry> + <varlistentry><term>dsr_getdcnameex2</term><listitem><para>Get trusted DC name</para></listitem></varlistentry> + <varlistentry><term>dsr_getsitename</term><listitem><para>Get sitename</para></listitem></varlistentry> + <varlistentry><term>dsr_getforesttrustinfo</term><listitem><para>Get Forest Trust Info</para></listitem></varlistentry> + <varlistentry><term>logonctrl</term><listitem><para>Logon Control</para></listitem></varlistentry> + <varlistentry><term>samlogon</term><listitem><para>Sam Logon</para></listitem></varlistentry> + <varlistentry><term>change_trust_pw</term><listitem><para>Change Trust Account Password</para></listitem></varlistentry> + <varlistentry><term>gettrustrid</term><listitem><para>Get trust rid</para></listitem></varlistentry> + <varlistentry><term>dsr_enumtrustdom</term><listitem><para>Enumerate trusted domains</para></listitem></varlistentry> + <varlistentry><term>dsenumdomtrusts</term><listitem><para>Enumerate all trusted domains in an AD forest</para></listitem></varlistentry> + <varlistentry><term>deregisterdnsrecords</term><listitem><para>Deregister DNS records</para></listitem></varlistentry> + <varlistentry><term>netrenumtrusteddomains</term><listitem><para>Enumerate trusted domains</para></listitem></varlistentry> + <varlistentry><term>netrenumtrusteddomainsex</term><listitem><para>Enumerate trusted domains</para></listitem></varlistentry> + <varlistentry><term>getdcsitecoverage</term><listitem><para>Get the Site-Coverage from a DC</para></listitem></varlistentry> + <varlistentry><term>capabilities</term><listitem><para>Return Capabilities</para></listitem></varlistentry> + <varlistentry><term>logongetdomaininfo</term><listitem><para>Return LogonGetDomainInfo</para></listitem></varlistentry> + </variablelist> + </refsect2> + + + <refsect2> + <title>FSRVP</title> + <variablelist> + <varlistentry><term>fss_is_path_sup</term><listitem><para>Check whether a share supports shadow-copy </para></listitem></varlistentry> + <varlistentry><term>fss_get_sup_version</term><listitem><para>Get supported FSRVP version from server</para></listitem></varlistentry> + <varlistentry><term>fss_create_expose</term><listitem><para>Request shadow-copy creation and exposure</para></listitem></varlistentry> + <varlistentry><term>fss_delete</term><listitem><para>Request shadow-copy share deletion</para></listitem></varlistentry> + <varlistentry><term>fss_has_shadow_copy</term><listitem><para>Check for an associated share shadow-copy</para></listitem></varlistentry> + <varlistentry><term>fss_get_mapping</term><listitem><para>Get shadow-copy share mapping information</para></listitem></varlistentry> + <varlistentry><term>fss_recovery_complete</term><listitem><para>Flag read-write snapshot as recovery complete, </para></listitem></varlistentry> + </variablelist> + </refsect2> + + + <refsect2> + <title>CLUSAPI</title> + <variablelist> + <varlistentry><term>clusapi_open_cluster</term><listitem><para>Open cluster</para></listitem></varlistentry> + <varlistentry><term>clusapi_get_cluster_name</term><listitem><para>Get cluster name</para></listitem></varlistentry> + <varlistentry><term>clusapi_get_cluster_version</term><listitem><para>Get cluster version</para></listitem></varlistentry> + <varlistentry><term>clusapi_get_quorum_resource</term><listitem><para>Get quorum resource</para></listitem></varlistentry> + <varlistentry><term>clusapi_create_enum</term><listitem><para>Create enum query</para></listitem></varlistentry> + <varlistentry><term>clusapi_create_enumex</term><listitem><para>Create enumex query</para></listitem></varlistentry> + <varlistentry><term>clusapi_open_resource</term><listitem><para>Open cluster resource</para></listitem></varlistentry> + <varlistentry><term>clusapi_online_resource</term><listitem><para>Set cluster resource online</para></listitem></varlistentry> + <varlistentry><term>clusapi_offline_resource</term><listitem><para>Set cluster resource offline</para></listitem></varlistentry> + <varlistentry><term>clusapi_get_resource_state</term><listitem><para>Get cluster resource state</para></listitem></varlistentry> + <varlistentry><term>clusapi_get_cluster_version2</term><listitem><para>Get cluster version2</para></listitem></varlistentry> + <varlistentry><term>clusapi_pause_node</term><listitem><para>Pause cluster node</para></listitem></varlistentry> + <varlistentry><term>clusapi_resume_node</term><listitem><para>Resume cluster node</para></listitem></varlistentry> + </variablelist> + </refsect2> + + + <refsect2> + <title>DRSUAPI</title> + <variablelist> + <varlistentry><term>dscracknames</term><listitem><para>Crack Name</para></listitem></varlistentry> + <varlistentry><term>dsgetdcinfo</term><listitem><para>Get Domain Controller Info</para></listitem></varlistentry> + <varlistentry><term>dsgetncchanges</term><listitem><para>Get NC Changes</para></listitem></varlistentry> + <varlistentry><term>dswriteaccountspn</term><listitem><para>Write Account SPN</para></listitem></varlistentry> + </variablelist> + </refsect2> + + + <refsect2> + <title>ECHO</title> + <variablelist> + <varlistentry><term>echoaddone</term><listitem><para>Add one to a number</para></listitem></varlistentry> + <varlistentry><term>echodata</term><listitem><para>Echo data</para></listitem></varlistentry> + <varlistentry><term>sinkdata</term><listitem><para>Sink data</para></listitem></varlistentry> + <varlistentry><term>sourcedata</term><listitem><para>Source data</para></listitem></varlistentry> + </variablelist> + </refsect2> + + + <refsect2> + <title>EPMAPPER</title> + <variablelist> + <varlistentry><term>epmmap</term><listitem><para>Map a binding</para></listitem></varlistentry> + <varlistentry><term>epmlookup</term><listitem><para>Lookup bindings</para></listitem></varlistentry> + </variablelist> + </refsect2> + + + <refsect2> + <title>EVENTLOG</title> + <variablelist> + <varlistentry><term>eventlog_readlog</term><listitem><para>Read Eventlog</para></listitem></varlistentry> + <varlistentry><term>eventlog_numrecord</term><listitem><para>Get number of records</para></listitem></varlistentry> + <varlistentry><term>eventlog_oldestrecord</term><listitem><para>Get oldest record</para></listitem></varlistentry> + <varlistentry><term>eventlog_reportevent</term><listitem><para>Report event</para></listitem></varlistentry> + <varlistentry><term>eventlog_reporteventsource</term><listitem><para>Report event and source</para></listitem></varlistentry> + <varlistentry><term>eventlog_registerevsource</term><listitem><para>Register event source</para></listitem></varlistentry> + <varlistentry><term>eventlog_backuplog</term><listitem><para>Backup Eventlog File</para></listitem></varlistentry> + <varlistentry><term>eventlog_loginfo</term><listitem><para>Get Eventlog Information</para></listitem></varlistentry> + </variablelist> + </refsect2> + + + <refsect2> + <title>IRemoteWinspool</title> + <variablelist> + <varlistentry><term>winspool_AsyncOpenPrinter</term><listitem><para>Open printer handle</para></listitem></varlistentry> + <varlistentry><term>winspool_AsyncCorePrinterDriverInstalled</term><listitem><para>Query Core Printer Driver Installed</para></listitem></varlistentry> + </variablelist> + </refsect2> + + + <refsect2> + <title>NTSVCS</title> + <variablelist> + <varlistentry><term>ntsvcs_getversion</term><listitem><para>Query NTSVCS version</para></listitem></varlistentry> + <varlistentry><term>ntsvcs_validatedevinst</term><listitem><para>Query NTSVCS device instance</para></listitem></varlistentry> + <varlistentry><term>ntsvcs_hwprofflags</term><listitem><para>Query NTSVCS HW prof flags</para></listitem></varlistentry> + <varlistentry><term>ntsvcs_hwprofinfo</term><listitem><para>Query NTSVCS HW prof info</para></listitem></varlistentry> + <varlistentry><term>ntsvcs_getdevregprop</term><listitem><para>Query NTSVCS device registry property</para></listitem></varlistentry> + <varlistentry><term>ntsvcs_getdevlistsize</term><listitem><para>Query NTSVCS device list size</para></listitem></varlistentry> + <varlistentry><term>ntsvcs_getdevlist</term><listitem><para>Query NTSVCS device list</para></listitem></varlistentry> + </variablelist> + </refsect2> + + + <refsect2> + <title>MDSSVC</title> + <variablelist> + <varlistentry><term>fetch_properties</term><listitem><para>Fetch connection properties</para></listitem></varlistentry> + <varlistentry><term>fetch_attributes</term><listitem><para>Fetch attributes for a CNID</para></listitem></varlistentry> + </variablelist> + </refsect2> + + + <refsect2> + <title>WINREG</title> + <variablelist> + <varlistentry><term>winreg_enumkey</term><listitem><para>Enumerate Keys</para></listitem></varlistentry> + <varlistentry><term>querymultiplevalues</term><listitem><para>Query multiple values</para></listitem></varlistentry> + <varlistentry><term>querymultiplevalues2</term><listitem><para>Query multiple values</para></listitem></varlistentry> + </variablelist> + </refsect2> + + + <refsect2> + <title>WITNESS</title> + <variablelist> + <varlistentry><term>GetInterfaceList</term><listitem><para>List the interfaces to which witness client connections can be made</para></listitem></varlistentry> + <varlistentry><term>Register</term><listitem><para>Register for resource state change notifications of a NetName and IPAddress</para></listitem></varlistentry> + <varlistentry><term>UnRegister</term><listitem><para>Unregister for notifications from the server</para></listitem></varlistentry> + <varlistentry><term>AsyncNotify</term><listitem><para>Request notification of registered resource changes from the server</para></listitem></varlistentry> + <varlistentry><term>RegisterEx</term><listitem><para>Register for resource state change notifications of a NetName, ShareName and multiple IPAddresses</para></listitem></varlistentry> + </variablelist> + </refsect2> + + + <refsect2> + <title>WKSSVC</title> + <variablelist> + <varlistentry><term>wkssvc_wkstagetinfo</term><listitem><para>Query WKSSVC Workstation Information</para></listitem></varlistentry> + <varlistentry><term>wkssvc_getjoininformation</term><listitem><para>Query WKSSVC Join Information</para></listitem></varlistentry> + <varlistentry><term>wkssvc_messagebuffersend</term><listitem><para>Send WKSSVC message</para></listitem></varlistentry> + <varlistentry><term>wkssvc_enumeratecomputernames</term><listitem><para>Enumerate WKSSVC computer names</para></listitem></varlistentry> + <varlistentry><term>wkssvc_enumerateusers</term><listitem><para>Enumerate WKSSVC users</para></listitem></varlistentry> + </variablelist> + </refsect2> + + + <refsect2> + <title>GENERAL OPTIONS</title> + <variablelist> + <varlistentry><term>help</term><listitem><para>Get help on commands</para></listitem></varlistentry> + <varlistentry><term>?</term><listitem><para>Get help on commands</para></listitem></varlistentry> + <varlistentry><term>debuglevel</term><listitem><para>Set debug level</para></listitem></varlistentry> + <varlistentry><term>debug</term><listitem><para>Set debug level</para></listitem></varlistentry> + <varlistentry><term>list</term><listitem><para>List available commands on pipe</para></listitem></varlistentry> + <varlistentry><term>exit</term><listitem><para>Exit program</para></listitem></varlistentry> + <varlistentry><term>quit</term><listitem><para>Exit program</para></listitem></varlistentry> + <varlistentry><term>sign</term><listitem><para>Force RPC pipe connections to be signed</para></listitem></varlistentry> + <varlistentry><term>seal</term><listitem><para>Force RPC pipe connections to be sealed</para></listitem></varlistentry> + <varlistentry><term>packet</term><listitem><para>Force RPC pipe connections with packet authentication level</para></listitem></varlistentry> + <varlistentry><term>schannel</term><listitem><para>Force RPC pipe connections to be sealed with 'schannel'. Force RPC pipe connections to be sealed with 'schannel'. Assumes valid machine account to this domain controller.</para></listitem></varlistentry> + <varlistentry><term>schannelsign</term><listitem><para>Force RPC pipe connections to be signed (not sealed) with 'schannel'. Assumes valid machine account to this domain controller.</para></listitem></varlistentry> + <varlistentry><term>timeout</term><listitem><para>Set timeout (in milliseconds) for RPC operations</para></listitem></varlistentry> + <varlistentry><term>transport</term><listitem><para>Choose ncacn transport for RPC operations</para></listitem></varlistentry> + <varlistentry><term>none</term><listitem><para>Force RPC pipe connections to have no special properties</para></listitem></varlistentry> + </variablelist> + </refsect2> + +</refsect1> + +<refsect1> + <title>BUGS</title> + + <para><command>rpcclient</command> is designed as a developer testing tool + and may not be robust in certain areas (such as command line parsing). + It has been known to generate a core dump upon failures when invalid + parameters where passed to the interpreter. </para> + + <para>From Luke Leighton's original rpcclient man page:</para> + + <para><emphasis>WARNING!</emphasis> The MSRPC over SMB code has + been developed from examining Network traces. No documentation is + available from the original creators (Microsoft) on how MSRPC over + SMB works, or how the individual MSRPC services work. Microsoft's + implementation of these services has been demonstrated (and reported) + to be... a bit flaky in places. </para> + + <para>The development of Samba's implementation is also a bit rough, + and as more of the services are understood, it can even result in + versions of <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> and <citerefentry><refentrytitle>rpcclient</refentrytitle> + <manvolnum>1</manvolnum></citerefentry> that are incompatible for some commands or services. Additionally, + the developers are sending reports to Microsoft, and problems found + or reported to Microsoft are fixed in Service Packs, which may + result in incompatibilities.</para> +</refsect1> + + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of the Samba + suite.</para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + + <para>The original rpcclient man page was written by Matthew + Geddes, Luke Kenneth Casson Leighton, and rewritten by Gerald Carter. + The conversion to DocBook for Samba 2.2 was done by Gerald + Carter. The conversion to DocBook XML 4.2 for Samba 3.0 was + done by Alexander Bokovoy.</para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/samba-bgqd.8.xml b/docs-xml/manpages/samba-bgqd.8.xml new file mode 100644 index 0000000..ef50a54 --- /dev/null +++ b/docs-xml/manpages/samba-bgqd.8.xml @@ -0,0 +1,48 @@ +<?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="samba-bgqd.8"> + +<refmeta> + <refentrytitle>samba-bgqd</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>samba-bgqd</refname> + <refpurpose>This is an internal helper program performing + asynchronous printing-related jobs.</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>samba-bgqd</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This tool is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para>samba-bgqd is an helper program to be spawned by smbd or + spoolssd to perform jobs like updating the printer list or + other management tasks asynchronously on demand. It is not + intended to be called by users or administrators.</para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/samba-dcerpcd.8.xml b/docs-xml/manpages/samba-dcerpcd.8.xml new file mode 100644 index 0000000..da8b77c --- /dev/null +++ b/docs-xml/manpages/samba-dcerpcd.8.xml @@ -0,0 +1,210 @@ +<?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="samba-dcerpcd.8"> + +<refmeta> + <refentrytitle>samba-dcerpcd</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>samba-dcerpcd</refname> + <refpurpose>This is one of Samba's DCERPC server processes + that can listen on sockets where RPC services are offered and + is the parent process of the DCERPC services it + invokes. Unless separately invoked it is started on demand + from <command>smbd</command> or <command>winbind</command> and + serves DCERPC only over named pipes (np) as a helper + process. This will be the standard setup for most + installations (standalone/member server/AD server) unless they + modify their startup scripts. Note in when Samba is configured + as an Active Directory Domain controller the + <command>samba</command> process that invokes + <command>smbd</command> will still provide its normal DCERPC + services, not <command>samba-dcerpcd</command>. When + separately invoked by system startup scripts or a a daemon, + the global smb.conf option <smbconfoption name="rpc start on + demand helpers">false</smbconfoption> MUST be set to allow + <command>samba-dcerpcd</command> to start standalone. + </refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>samba-dcerpcd</command> + <arg choice="opt">-D|--daemon</arg> + <arg choice="opt">-i|--interactive</arg> + <arg choice="opt">-F|--foreground</arg> + <arg choice="opt">--no-process-group</arg> + <arg choice="opt">-d <debug level></arg> + <arg choice="opt">--debug-stdout</arg> + <arg choice="opt">--configfile=<configuration file></arg> + <arg choice="opt">--option=<name>=<value></arg> + <arg choice="opt">--leak-report</arg> + <arg choice="opt">--leak-report-full</arg> + <arg choice="opt">-V|--version</arg> + <arg choice="opt">--libexec-rpcds</arg> + <arg choice="opt">--np-helper</arg> + <arg choice="opt">--ready-signal-fd=<fd></arg> + <arg choice="opt"><SERVICE_1></arg> + <arg choice="opt"><SERVICE_2></arg> + <arg choice="opt"><...></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> + samba-dcerpcd can be used in two ways. In the normal case + without startup script modification and the global smb.conf + option <smbconfoption name="rpc start on demand + helpers">true</smbconfoption> is set (the default setting), + it is invoked on demand from <command>smbd</command> or + <command>winbind</command> with a command line + containing--np-helper to serve DCERPC over named pipes + (np). It can also be used in a standalone mode where it is + started separately from <command>smbd</command> or + <command>winbind</command> via system startup scripts. If + invoked as a standalone daemon or started from system + startup scripts the global smb.conf option <smbconfoption + name="rpc start on demand helpers">false</smbconfoption> + MUST be set to false. If the global smb.conf option + <smbconfoption name="rpc start on demand + helpers">true</smbconfoption> is set to true or left as + default, <command>samba-dcerpcd</command> will fail to start + and log an error message. + </para> + <para> + Note that when Samba is run in the Active Directory Domain + Controller mode the <command>samba</command> AD code will + still provide its normal DCERPC services whilst allowing + samba-dcerpcd to provide services like SRVSVC in the same + way that <command>smbd</command> used to in this + configuration. + </para> + <para> + The standalone mode can also be useful for use outside of + the Samba framework, for example, use with the Linux kernel + SMB2 server ksmbd or possibly other SMB2 server + implementations. In this mode it behaves like inetd and + listens on sockets on behalf of RPC server implementations. + </para> + <para> + When a client connects, <command>samba-dcerpcd</command> + will start the relevant RPC service binary on demand and + hand over the connection to that service. When an RPC + service has been idle for a while, + <command>samba-dcerpcd</command> will ask it to shut down + again. + </para> + +</refsect1> + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + <varlistentry> + <term>-D|--daemon</term> + <listitem><para>If specified, this parameter causes + the server to operate as a daemon. That is, it + detaches itself and runs in the background, fielding + requests on the appropriate port. Operating the server + as a daemon is useful for running + <command>samba-dcerpcd</command> outside of the Samba + framework. However, it can also be used in this way + within Samba for member servers if configured to start + up via system startup scripts. This switch is assumed + if <command>samba-dcerpcd</command> is executed on the + command line of a shell. </para></listitem> + </varlistentry> + + <varlistentry> + <term>-i|--interactive</term> + <listitem><para>If this parameter is specified it + causes the server to run "interactively", not as a + daemon, even if the server is executed on the command + line of a shell. Setting this parameter negates the + implicit daemon mode when run from the command + line. <command>samba-dcerpcd</command> will only + accept one connection and terminate. It will also log + to standard output, as if the <command>-S</command> + parameter had been given. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-F|--foreground</term> + <listitem><para>If specified, this parameter causes + the main <command>samba-dcerpcd</command> process to + not daemonize, i.e. double-fork and disassociate with + the terminal. Child processes are still spawned as + normal to service each connection request, but the + main process does not exit. This operation mode is + suitable for running <command>samba-dcerpcd</command> + under process supervisors such as + <command>supervise</command> and + <command>svscan</command> from Daniel J. Bernstein's + <command>daemontools</command> package, or the AIX + process monitor. </para></listitem> + </varlistentry> + + <varlistentry> + <term>--no-process-group</term> + <listitem><para>Do not create a new process group for + samba-dcerpcd. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--libexec-rpcds</term> + <listitem><para>Offer RPC services for all daemons in + Samba's LIBEXECDIR, all programs starting with + "rpcd_" are assumed to offer RPC + services. If you don't use the + <command>--libexec-rpcds</command> option, you can + explicitly list all RPC service helpers explicitly on + the command line.</para></listitem> + </varlistentry> + + <varlistentry> + <term>--np-helper</term> + <listitem><para>Run <command>samba-dcerpcd</command> + on demand opening named pipe sockets as helpers for + <command>smbd</command> or <command>winbind</command>. + In order to run in this mode, the global smb.conf + option <smbconfoption name="rpc start on demand + helpers">true</smbconfoption> must be set to true + (this is the default setting). </para></listitem> + </varlistentry> + + <varlistentry> + <term>--ready-signal-fd=<fd></term> + <listitem><para>Report service readiness via this fd + to <command>smbd</command>. Only for internal use. + </para></listitem> + </varlistentry> + </variablelist> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para> + The original Samba software and related utilities were + created by Andrew Tridgell. Samba is now developed by the + Samba Team as an Open Source project similar to the way the + Linux kernel is developed. + </para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/samba-regedit.8.xml b/docs-xml/manpages/samba-regedit.8.xml new file mode 100644 index 0000000..2cda0c0 --- /dev/null +++ b/docs-xml/manpages/samba-regedit.8.xml @@ -0,0 +1,99 @@ +<?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="samba-regedit.8"> + +<refmeta> + <refentrytitle>samba-regedit</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>samba-regedit</refname> + <refpurpose>ncurses based tool to manage the Samba registry</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>samba-regedit</command> + <arg choice="opt">-?|--help</arg> + <arg choice="opt">--usage</arg> + <arg choice="opt">-d|--debuglevel=DEBUGLEVEL</arg> + <arg choice="opt">--debug-stdout</arg> + <arg choice="opt">--configfile=CONFIGFILE</arg> + <arg choice="opt">--option=name=value</arg> + <arg choice="opt">-l|--log-basename=LOGFILEBASE</arg> + <arg choice="opt">--leak-report</arg> + <arg choice="opt">--leak-report-full</arg> + <arg choice="opt">-R|--name-resolve=NAME-RESOLVE-ORDER</arg> + <arg choice="opt">-O|--socket-options=SOCKETOPTIONS</arg> + <arg choice="opt">-m|--max-protocol=MAXPROTOCOL</arg> + <arg choice="opt">-n|--netbiosname=NETBIOSNAME</arg> + <arg choice="opt">--netbios-scope=SCOPE</arg> + <arg choice="opt">-W|--workgroup=WORKGROUP</arg> + <arg choice="opt">--realm=REALM</arg> + <arg choice="opt">-U|--user=[DOMAIN/]USERNAME[%PASSWORD]</arg> + <arg choice="opt">-N|--no-pass</arg> + <arg choice="opt">--password=STRING</arg> + <arg choice="opt">--pw-nt-hash</arg> + <arg choice="opt">-A|--authentication-file=FILE</arg> + <arg choice="opt">-P|--machine-pass</arg> + <arg choice="opt">--simple-bind-dn=DN</arg> + <arg choice="opt">--use-kerberos=desired|required|off</arg> + <arg choice="opt">--use-krb5-ccache=CCACHE</arg> + <arg choice="opt">--use-winbind-ccache</arg> + <arg choice="opt">--client-protection=sign|encrypt|off</arg> + <arg choice="opt">-V|--version</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><command>samba-regedit</command> is a ncurses based tool to manage the Samba + registry. It can be used to show/edit registry keys/subkeys and + their values.</para> +</refsect1> + +<refsect1> + <title>OPTIONS</title> + <variablelist> + &popt.autohelp; + &cmdline.common.samba.client; + &cmdline.common.connection; + &cmdline.common.credentials; + </variablelist> +</refsect1> + + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of the Samba suite.</para> +</refsect1> + +<refsect1> + <title>SEE ALSO</title> + <para><citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry>, <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> and <citerefentry><refentrytitle>net</refentrytitle> + <manvolnum>8</manvolnum></citerefentry>.</para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + + <para>The samba-regedit man page was written by Karolin Seeger.</para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/samba-tool.8.xml b/docs-xml/manpages/samba-tool.8.xml new file mode 100644 index 0000000..8e9279c --- /dev/null +++ b/docs-xml/manpages/samba-tool.8.xml @@ -0,0 +1,1715 @@ +<?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="samba-tool.8"> + +<refmeta> + <refentrytitle>samba-tool</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>samba-tool</refname> + <refpurpose>Main Samba administration tool. + </refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>samba-tool</command> + <arg choice="opt">-h</arg> + <arg choice="opt">-W myworkgroup</arg> + <arg choice="opt">-U user</arg> + <arg choice="opt">-d debuglevel</arg> + <arg choice="opt">--v</arg> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + <para>This tool is part of the <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> +</refsect1> + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + + <varlistentry> + <term>-h|--help</term> + <listitem><para> + Show this help message and exit + </para></listitem> + </varlistentry> + + &cmdline.common.connection.realm; + + &cmdline.common.credentials.simplebinddn; + + &cmdline.common.credentials.password; + + &cmdline.common.credentials.user; + + &cmdline.common.connection.workgroup; + + &cmdline.common.credentials.nopass; + + &cmdline.common.credentials.usekerberos; + + &cmdline.common.credentials.usekrb5ccache; + + <varlistentry> + <term>--ipaddress=IPADDRESS</term> + <listitem><para> + IP address of the server + </para></listitem> + </varlistentry> + + &cmdline.common.debug.client; + + </variablelist> +</refsect1> + +<refsect1> +<title>COMMANDS</title> + +<refsect2> + <title>computer</title> + <para>Manage computer accounts.</para> +</refsect2> + +<refsect3> + <title>computer add <replaceable>computername</replaceable> [options]</title> + <para>Add a new computer to the Active Directory Domain.</para> + <para>The new computer name specified on the command is the + sAMAccountName, with or without the trailing dollar sign.</para> + + <variablelist> + <varlistentry> + <term>--computerou=COMPUTEROU</term> + <listitem><para> + DN of alternative location (with or without domainDN counterpart) to + default CN=Computers in which new computer object will be created. + E.g. 'OU=OUname'. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--description=DESCRIPTION</term> + <listitem><para> + The new computers's description. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--ip-address=IP_ADDRESS_LIST</term> + <listitem><para> + IPv4 address for the computer's A record, or IPv6 address for AAAA record, + can be provided multiple times. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--service-principal-name=SERVICE_PRINCIPAL_NAME_LIST</term> + <listitem><para> + Computer's Service Principal Name, can be provided multiple times. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--prepare-oldjoin</term> + <listitem><para> + Prepare enabled machine account for oldjoin mechanism. + </para></listitem> + </varlistentry> + </variablelist> +</refsect3> + +<refsect3> + <title>computer create <replaceable>computername</replaceable> [options]</title> + <para>Add a new computer. This is a synonym for the + <command>samba-tool computer add</command> command and is available + for compatibility reasons only. Please use + <command>samba-tool computer add</command> instead.</para> +</refsect3> + +<refsect3> + <title>computer delete <replaceable>computername</replaceable> [options]</title> + <para>Delete an existing computer account.</para> + <para>The computer name specified on the command is the + sAMAccountName, with or without the trailing dollar sign.</para> +</refsect3> + +<refsect3> + <title>computer edit <replaceable>computername</replaceable></title> + <para>Edit a computer AD object.</para> + <para>The computer name specified on the command is the + sAMAccountName, with or without the trailing dollar sign.</para> + + <variablelist> + <varlistentry> + <term>--editor=EDITOR</term> + <listitem><para> + Specifies the editor to use instead of the system default, or 'vi' if no + system default is set. + </para></listitem> + </varlistentry> + </variablelist> +</refsect3> + +<refsect3> + <title>computer list</title> + <para>List all computers.</para> +</refsect3> + +<refsect3> + <title>computer move <replaceable>computername</replaceable> <replaceable>new_parent_dn</replaceable> [options]</title> + <para>This command moves a computer account into the specified + organizational unit or container.</para> + <para>The computername specified on the command is the + sAMAccountName, with or without the trailing dollar sign.</para> + <para>The name of the organizational unit or container can be + specified as a full DN or without the domainDN component.</para> +</refsect3> + +<refsect3> + <title>computer show <replaceable>computername</replaceable> [options]</title> + <para>Display a computer AD object.</para> + <para>The computer name specified on the command is the + sAMAccountName, with or without the trailing dollar sign.</para> + + <variablelist> + <varlistentry> + <term>--attributes=USER_ATTRS</term> + <listitem><para> + Comma separated list of attributes, which will be printed. + </para></listitem> + </varlistentry> + </variablelist> +</refsect3> + +<refsect2> + <title>contact</title> + <para>Manage contacts.</para> +</refsect2> + +<refsect3> + <title>contact add [<replaceable>contactname</replaceable>] [options]</title> + <para>Add a new contact to the Active Directory Domain.</para> + <para>The name of the new contact can be specified by the first + argument 'contactname' or the --given-name, --initial and --surname + arguments. If no 'contactname' is given, contact's name will be made + up of the given arguments by combining the given-name, initials and + surname. Each argument is optional. A dot ('.') will be appended to + the initials automatically.</para> + + <variablelist> + <varlistentry> + <term>--ou=OU</term> + <listitem><para> + DN of alternative location (with or without domainDN counterpart) in + which the new contact will be created. + E.g. 'OU=OUname'. + Default is the domain base. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--description=DESCRIPTION</term> + <listitem><para> + The new contacts's description. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--surname=SURNAME</term> + <listitem><para> + Contact's surname. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--given-name=GIVEN_NAME</term> + <listitem><para> + Contact's given name. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--initials=INITIALS</term> + <listitem><para> + Contact's initials. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--display-name=DISPLAY_NAME</term> + <listitem><para> + Contact's display name. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--job-title=JOB_TITLE</term> + <listitem><para> + Contact's job title. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--department=DEPARTMENT</term> + <listitem><para> + Contact's department. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--company=COMPANY</term> + <listitem><para> + Contact's company. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--mail-address=MAIL_ADDRESS</term> + <listitem><para> + Contact's email address. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--internet-address=INTERNET_ADDRESS</term> + <listitem><para> + Contact's home page. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--telephone-number=TELEPHONE_NUMBER</term> + <listitem><para> + Contact's phone number. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--mobile-number=MOBILE_NUMBER</term> + <listitem><para> + Contact's mobile phone number. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--physical-delivery-office=PHYSICAL_DELIVERY_OFFICE</term> + <listitem><para> + Contact's office location. + </para></listitem> + </varlistentry> + + </variablelist> +</refsect3> + +<refsect3> + <title>contact create [<replaceable>contactname</replaceable>] [options]</title> + <para>Add a new contact. This is a synonym for the + <command>samba-tool contact add</command> command and is available + for compatibility reasons only. Please use + <command>samba-tool contact add</command> instead.</para> +</refsect3> + +<refsect3> + <title>contact delete <replaceable>contactname</replaceable> [options]</title> + <para>Delete an existing contact.</para> + <para>The contactname specified on the command is the common name or the + distinguished name of the contact object. The distinguished name of the + contact can be specified with or without the domainDN component.</para> +</refsect3> + +<refsect3> + <title>contact edit <replaceable>contactname</replaceable></title> + <para>Modify a contact AD object.</para> + <para>The contactname specified on the command is the common name or the + distinguished name of the contact object. The distinguished name of the + contact can be specified with or without the domainDN component.</para> + + <variablelist> + <varlistentry> + <term>--editor=EDITOR</term> + <listitem><para> + Specifies the editor to use instead of the system default, or 'vi' if no + system default is set. + </para></listitem> + </varlistentry> + </variablelist> +</refsect3> + +<refsect3> + <title>contact list [options]</title> + <para>List all contacts.</para> + + <variablelist> + <varlistentry> + <term>--full-dn</term> + <listitem><para> + Display contact's full DN instead of the name. + </para></listitem> + </varlistentry> + </variablelist> +</refsect3> + +<refsect3> + <title>contact move <replaceable>contactname</replaceable> <replaceable>new_parent_dn</replaceable> [options]</title> + <para>This command moves a contact into the specified organizational + unit or container.</para> + <para>The contactname specified on the command is the common name or the + distinguished name of the contact object. The distinguished name of the + contact can be specified with or without the domainDN component.</para> +</refsect3> + +<refsect3> + <title>contact show <replaceable>contactname</replaceable> [options]</title> + <para>Display a contact AD object.</para> + <para>The contactname specified on the command is the common name or the + distinguished name of the contact object. The distinguished name of the + contact can be specified with or without the domainDN component.</para> + + <variablelist> + <varlistentry> + <term>--attributes=CONTACT_ATTRS</term> + <listitem><para> + Comma separated list of attributes, which will be printed. + </para></listitem> + </varlistentry> + </variablelist> +</refsect3> + +<refsect3> + <title>contact rename <replaceable>contactname</replaceable> [options]</title> + <para>Rename a contact and related attributes.</para> + <para>This command allows to set the contact's name related attributes. The contact's + CN will be renamed automatically. + The contact's new CN will be made up by combining the given-name, initials + and surname. A dot ('.') will be appended to the initials automatically, + if required. + Use the --force-new-cn option to specify the new CN manually and --reset-cn + to reset this change.</para> + <para>Use an empty attribute value to remove the specified attribute.</para> + <para>The contact name specified on the command is the CN.</para> + + <variablelist> + <varlistentry> + <term>--surname=SURNAME</term> + <listitem><para> + New surname. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--given-name=GIVEN_NAME</term> + <listitem><para> + New given name. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--initials=INITIALS</term> + <listitem><para> + New initials. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--force-new-cn=NEW_CN</term> + <listitem><para> + Specify a new CN (RDN) instead of using a combination + of the given name, initials and surname. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--reset-cn</term> + <listitem><para> + Set the CN to the default combination of given name, + initials and surname. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--display-name=DISPLAY_NAME</term> + <listitem><para> + New display name. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--mail-address=MAIL_ADDRESS</term> + <listitem><para> + New email address. + </para></listitem> + </varlistentry> + </variablelist> +</refsect3> + +<refsect2> + <title>dbcheck</title> + <para>Check the local AD database for errors.</para> +</refsect2> + +<refsect2> + <title>delegation</title> + <para>Manage Delegations.</para> +</refsect2> + +<refsect3> + <title>delegation add-service <replaceable>accountname</replaceable> <replaceable>principal</replaceable> [options]</title> + <para>Add a service principal as msDS-AllowedToDelegateTo.</para> +</refsect3> + +<refsect3> + <title>delegation del-service <replaceable>accountname</replaceable> <replaceable>principal</replaceable> [options]</title> + <para>Delete a service principal as msDS-AllowedToDelegateTo.</para> +</refsect3> + +<refsect3> + <title>delegation for-any-protocol <replaceable>accountname</replaceable> [(on|off)] [options]</title> + <para>Set/unset UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION (S4U2Proxy) + for an account.</para> +</refsect3> + +<refsect3> + <title>delegation for-any-service <replaceable>accountname</replaceable> [(on|off)] [options]</title> + <para>Set/unset UF_TRUSTED_FOR_DELEGATION for an account.</para> +</refsect3> + +<refsect3> + <title>delegation show <replaceable>accountname</replaceable> [options] </title> + <para>Show the delegation setting of an account.</para> +</refsect3> + +<refsect2> + <title>dns</title> + <para>Manage Domain Name Service (DNS).</para> +</refsect2> + +<refsect3> + <title>dns add <replaceable>server</replaceable> <replaceable>zone</replaceable> <replaceable>name</replaceable> <replaceable>A|AAAA|PTR|CNAME|NS|MX|SRV|TXT</replaceable> <replaceable>data</replaceable></title> + <para>Add a DNS record.</para> +</refsect3> + +<refsect3> + <title>dns delete <replaceable>server</replaceable> <replaceable>zone</replaceable> <replaceable>name</replaceable> <replaceable>A|AAAA|PTR|CNAME|NS|MX|SRV|TXT</replaceable> <replaceable>data</replaceable></title> + <para>Delete a DNS record.</para> +</refsect3> + +<refsect3> + <title>dns query <replaceable>server</replaceable> <replaceable>zone</replaceable> <replaceable>name</replaceable> <replaceable>A|AAAA|PTR|CNAME|NS|MX|SRV|TXT|ALL</replaceable> [options] <replaceable>data</replaceable></title> + <para>Query a name.</para> +</refsect3> + +<refsect3> + <title>dns roothints <replaceable>server</replaceable> [<replaceable>name</replaceable>] [options]</title> + <para>Query root hints.</para> +</refsect3> + +<refsect3> + <title>dns serverinfo <replaceable>server</replaceable> [options]</title> + <para>Query server information.</para> +</refsect3> + +<refsect3> + <title>dns update <replaceable>server</replaceable> <replaceable>zone</replaceable> <replaceable>name</replaceable> <replaceable>A|AAAA|PTR|CNAME|NS|MX|SRV|TXT</replaceable> <replaceable>olddata</replaceable> <replaceable>newdata</replaceable></title> + <para>Update a DNS record.</para> +</refsect3> + +<refsect3> + <title>dns zonecreate <replaceable>server</replaceable> <replaceable>zone</replaceable> [options]</title> + <para>Create a zone.</para> +</refsect3> + +<refsect3> + <title>dns zonedelete <replaceable>server</replaceable> <replaceable>zone</replaceable> [options]</title> + <para>Delete a zone.</para> +</refsect3> + +<refsect3> + <title>dns zoneinfo <replaceable>server</replaceable> <replaceable>zone</replaceable> [options]</title> + <para>Query zone information.</para> +</refsect3> + +<refsect3> + <title>dns zonelist <replaceable>server</replaceable> [options]</title> + <para>List zones.</para> +</refsect3> + +<refsect2> + <title>domain</title> + <para>Manage Domain.</para> +</refsect2> + +<refsect3> + <title>domain backup</title> + <para>Create or restore a backup of the domain.</para> +</refsect3> + +<refsect3> + <title>domain backup offline</title> + <para>Backup (with proper locking) local domain directories into a tar file.</para> +</refsect3> + +<refsect3> + <title>domain backup online</title> + <para>Copy a running DC's current DB into a backup tar file.</para> +</refsect3> + +<refsect3> + <title>domain backup rename</title> + <para>Copy a running DC's DB to backup file, renaming the domain in the process.</para> +</refsect3> + +<refsect3> + <title>domain backup restore</title> + <para>Restore the domain's DB from a backup-file.</para> +</refsect3> + +<refsect3> + <title>domain classicupgrade [options] <replaceable>classic_smb_conf</replaceable></title> + <para>Upgrade from Samba classic (NT4-like) database to Samba AD DC + database.</para> +</refsect3> + +<refsect3> + <title>domain dcpromo <replaceable>dnsdomain</replaceable> [DC|RODC] [options]</title> + <para>Promote an existing domain member or NT4 PDC to an AD DC.</para> +</refsect3> + +<refsect3> + <title>domain demote</title> + <para>Demote ourselves from the role of domain controller.</para> +</refsect3> + +<refsect3> + <title>domain exportkeytab <replaceable>keytab</replaceable> [options]</title> + <para>Dumps Kerberos keys of the domain into a keytab.</para> +</refsect3> + +<refsect3> + <title>domain info <replaceable>ip_address</replaceable> [options]</title> + <para>Print basic info about a domain and the specified DC. +</para> +</refsect3> + +<refsect3> + <title>domain join <replaceable>dnsdomain</replaceable> [DC|RODC|MEMBER|SUBDOMAIN] [options]</title> + <para>Join a domain as either member or backup domain controller.</para> +</refsect3> + +<refsect3> + <title>domain level <replaceable>show|raise</replaceable> <replaceable>options</replaceable> [options]</title> + <para>Show/raise domain and forest function levels.</para> +</refsect3> + +<refsect3> + <title>domain passwordsettings <replaceable>show|set</replaceable> <replaceable>options</replaceable> [options]</title> + <para>Show/set password settings.</para> +</refsect3> + +<refsect3> + <title>domain passwordsettings pso</title> + <para>Manage fine-grained Password Settings Objects (PSOs).</para> +</refsect3> + +<refsect3> + <title>domain passwordsettings pso apply <replaceable>pso-name</replaceable> <replaceable>user-or-group-name</replaceable> [options]</title> + <para>Applies a PSO's password policy to a user or group.</para> +</refsect3> + +<refsect3> + <title>domain passwordsettings pso create <replaceable>pso-name</replaceable> <replaceable>precedence</replaceable> [options]</title> + <para>Creates a new Password Settings Object (PSO).</para> +</refsect3> + +<refsect3> + <title>domain passwordsettings pso delete <replaceable>pso-name</replaceable> [options]</title> + <para>Deletes a Password Settings Object (PSO).</para> +</refsect3> + +<refsect3> + <title>domain passwordsettings pso list [options]</title> + <para>Lists all Password Settings Objects (PSOs).</para> +</refsect3> + +<refsect3> + <title>domain passwordsettings pso set <replaceable>pso-name</replaceable> [options]</title> + <para>Modifies a Password Settings Object (PSO).</para> +</refsect3> + +<refsect3> + <title>domain passwordsettings pso show <replaceable>user-name</replaceable> [options]</title> + <para>Displays a Password Settings Object (PSO).</para> +</refsect3> + +<refsect3> + <title>domain passwordsettings pso show-user <replaceable>pso-name</replaceable> [options]</title> + <para>Displays the Password Settings that apply to a user.</para> +</refsect3> + +<refsect3> + <title>domain passwordsettings pso unapply <replaceable>pso-name</replaceable> <replaceable>user-or-group-name</replaceable> [options]</title> + <para>Updates a PSO to no longer apply to a user or group.</para> +</refsect3> + +<refsect3> + <title>domain provision</title> + <para>Promote an existing domain member or NT4 PDC to an AD DC.</para> +</refsect3> + +<refsect3> + <title>domain trust</title> + <para>Domain and forest trust management.</para> +</refsect3> + +<refsect3> + <title>domain trust create <replaceable>DOMAIN</replaceable> <replaceable>options</replaceable> [options]</title> + <para>Create a domain or forest trust.</para> +</refsect3> + +<refsect3> + <title>domain trust modify <replaceable>DOMAIN</replaceable> <replaceable>options</replaceable> [options]</title> + <para>Modify a domain or forest trust.</para> +</refsect3> + +<refsect3> + <title>domain trust delete <replaceable>DOMAIN</replaceable> <replaceable>options</replaceable> [options]</title> + <para>Delete a domain trust.</para> +</refsect3> + +<refsect3> + <title>domain trust list <replaceable>options</replaceable> [options]</title> + <para>List domain trusts.</para> +</refsect3> + +<refsect3> + <title>domain trust namespaces [<replaceable>DOMAIN</replaceable>] <replaceable>options</replaceable> [options]</title> + <para>Manage forest trust namespaces.</para> +</refsect3> + +<refsect3> + <title>domain trust show <replaceable>DOMAIN</replaceable> <replaceable>options</replaceable> [options]</title> + <para>Show trusted domain details.</para> +</refsect3> + +<refsect3> + <title>domain trust validate <replaceable>DOMAIN</replaceable> <replaceable>options</replaceable> [options]</title> + <para>Validate a domain trust.</para> +</refsect3> + +<refsect2> + <title>drs</title> + <para>Manage Directory Replication Services (DRS).</para> +</refsect2> + +<refsect3> + <title>drs bind</title> + <para>Show DRS capabilities of a server.</para> +</refsect3> + +<refsect3> + <title>drs kcc</title> + <para>Trigger knowledge consistency center run.</para> +</refsect3> + +<refsect3> + <title>drs options</title> + <para>Query or change <replaceable>options</replaceable> for NTDS Settings + object of a domain controller.</para> +</refsect3> + +<refsect3> + <title>drs replicate <replaceable>destination_DC</replaceable> <replaceable>source_DC</replaceable> <replaceable>NC</replaceable> [options]</title> + <para>Replicate a naming context between two DCs.</para> +</refsect3> + +<refsect3> + <title>drs showrepl</title> + <para>Show replication status. The <arg + choice="opt">--json</arg> option results in JSON output, and + with the <arg choice="opt">--summary</arg> option produces + very little output when the replication status seems healthy. + </para> +</refsect3> + +<refsect2> + <title>dsacl</title> + <para>Administer DS ACLs</para> +</refsect2> + +<refsect3> + <title>dsacl set</title> + <para>Modify access list on a directory object.</para> +</refsect3> + +<refsect2> + <title>forest</title> + <para>Manage Forest configuration.</para> +</refsect2> + +<refsect3> + <title>forest directory_service</title> + <para>Manage directory_service behaviour for the forest.</para> +</refsect3> + +<refsect3> + <title>forest directory_service dsheuristics <replaceable>VALUE</replaceable></title> + <para>Modify dsheuristics directory_service configuration for the forest.</para> +</refsect3> + +<refsect3> + <title>forest directory_service show</title> + <para>Show current directory_service configuration for the forest.</para> +</refsect3> + +<refsect2> + <title>fsmo</title> + <para>Manage Flexible Single Master Operations (FSMO).</para> +</refsect2> + +<refsect3> + <title>fsmo seize [options]</title> + <para>Seize the role.</para> +</refsect3> + +<refsect3> + <title>fsmo show</title> + <para>Show the roles.</para> +</refsect3> + +<refsect3> + <title>fsmo transfer [options]</title> + <para>Transfer the role.</para> +</refsect3> + +<refsect2> + <title>gpo</title> + <para>Manage Group Policy Objects (GPO).</para> +</refsect2> + +<refsect3> + <title>gpo create <replaceable>displayname</replaceable> [options]</title> + <para>Create an empty GPO.</para> +</refsect3> + +<refsect3> + <title>gpo del <replaceable>gpo</replaceable> [options]</title> + <para>Delete GPO.</para> +</refsect3> + +<refsect3> + <title>gpo dellink <replaceable>container_dn</replaceable> <replaceable>gpo</replaceable> [options]</title> + <para>Delete GPO link from a container.</para> +</refsect3> + +<refsect3> + <title>gpo fetch <replaceable>gpo</replaceable> [options]</title> + <para>Download a GPO.</para> +</refsect3> + +<refsect3> + <title>gpo getinheritance <replaceable>container_dn</replaceable> [options]</title> + <para>Get inheritance flag for a container.</para> +</refsect3> + +<refsect3> + <title>gpo getlink <replaceable>container_dn</replaceable> [options]</title> + <para>List GPO Links for a container.</para> +</refsect3> + +<refsect3> + <title>gpo list <replaceable>username</replaceable> [options]</title> + <para>List GPOs for an account.</para> +</refsect3> + +<refsect3> + <title>gpo listall</title> + <para>List all GPOs.</para> +</refsect3> + +<refsect3> + <title>gpo listcontainers <replaceable>gpo</replaceable> [options]</title> + <para>List all linked containers for a GPO.</para> +</refsect3> + +<refsect3> + <title>gpo setinheritance <replaceable>container_dn</replaceable> <replaceable>block|inherit</replaceable> [options]</title> + <para>Set inheritance flag on a container.</para> +</refsect3> + +<refsect3> + <title>gpo setlink <replaceable>container_dn</replaceable> <replaceable>gpo</replaceable> [options]</title> + <para>Add or Update a GPO link to a container.</para> +</refsect3> + +<refsect3> + <title>gpo show <replaceable>gpo</replaceable> [options]</title> + <para>Show information for a GPO.</para> +</refsect3> + +<refsect3> + <title>gpo manage symlink list</title> + <para>List VGP Symbolic Link Group Policy from the sysvol</para> +</refsect3> + +<refsect3> + <title>gpo manage symlink add</title> + <para>Adds a VGP Symbolic Link Group Policy to the sysvol</para> +</refsect3> + +<refsect3> + <title>gpo manage symlink remove</title> + <para>Removes a VGP Symbolic Link Group Policy from the sysvol</para> +</refsect3> + +<refsect3> + <title>gpo manage files list</title> + <para>List VGP Files Group Policy from the sysvol</para> +</refsect3> + +<refsect3> + <title>gpo manage files add</title> + <para>Add VGP Files Group Policy to the sysvol</para> +</refsect3> + +<refsect3> + <title>gpo manage files remove</title> + <para>Remove VGP Files Group Policy from the sysvol</para> +</refsect3> + +<refsect3> + <title>gpo manage openssh list</title> + <para>List VGP OpenSSH Group Policy from the sysvol</para> +</refsect3> + +<refsect3> + <title>gpo manage openssh set</title> + <para>Sets a VGP OpenSSH Group Policy to the sysvol</para> +</refsect3> + +<refsect3> + <title>gpo manage sudoers add</title> + <para>Adds a Samba Sudoers Group Policy to the sysvol.</para> +</refsect3> + +<refsect3> + <title>gpo manage sudoers list</title> + <para>List Samba Sudoers Group Policy from the sysvol.</para> +</refsect3> + +<refsect3> + <title>gpo manage sudoers remove</title> + <para>Removes a Samba Sudoers Group Policy from the sysvol.</para> +</refsect3> + +<refsect3> + <title>gpo manage scripts startup list</title> + <para>List VGP Startup Script Group Policy from the sysvol</para> +</refsect3> + +<refsect3> + <title>gpo manage scripts startup add</title> + <para>Adds VGP Startup Script Group Policy to the sysvol</para> +</refsect3> + +<refsect3> + <title>gpo manage scripts startup remove</title> + <para>Removes VGP Startup Script Group Policy from the sysvol</para> +</refsect3> + +<refsect3> + <title>gpo manage motd list</title> + <para>List VGP MOTD Group Policy from the sysvol.</para> +</refsect3> + +<refsect3> + <title>gpo manage motd set</title> + <para>Sets a VGP MOTD Group Policy to the sysvol</para> +</refsect3> + +<refsect3> + <title>gpo manage issue list</title> + <para>List VGP Issue Group Policy from the sysvol.</para> +</refsect3> + +<refsect3> + <title>gpo manage issue set</title> + <para>Sets a VGP Issue Group Policy to the sysvol</para> +</refsect3> + +<refsect3> + <title>gpo manage access add</title> + <para>Adds a VGP Host Access Group Policy to the sysvol</para> +</refsect3> + +<refsect3> + <title>gpo manage access list</title> + <para>List VGP Host Access Group Policy from the sysvol</para> +</refsect3> + +<refsect3> + <title>gpo manage access remove</title> + <para>Remove a VGP Host Access Group Policy from the sysvol</para> +</refsect3> + +<refsect2> + <title>group</title> + <para>Manage groups.</para> +</refsect2> + +<refsect3> + <title>group add <replaceable>groupname</replaceable> [options]</title> + <para>Create a new AD group.</para> +</refsect3> + +<refsect3> + <title>group create <replaceable>groupname</replaceable> [options]</title> + <para>Add a new AD group. This is a synonym for the + <command>samba-tool group add</command> command and is available + for compatibility reasons only. Please use + <command>samba-tool group add</command> instead.</para> +</refsect3> + +<refsect3> + <title>group addmembers <replaceable>groupname</replaceable> <replaceable>members</replaceable> [options]</title> + <para>Add members to an AD group.</para> +</refsect3> + +<refsect3> + <title>group delete <replaceable>groupname</replaceable> [options]</title> + <para>Delete an AD group.</para> +</refsect3> + +<refsect3> + <title>group edit <replaceable>groupname</replaceable></title> + <para>Edit a group AD object.</para> + + <variablelist> + <varlistentry> + <term>--editor=EDITOR</term> + <listitem><para> + Specifies the editor to use instead of the system default, or 'vi' if no + system default is set. + </para></listitem> + </varlistentry> + </variablelist> +</refsect3> + +<refsect3> + <title>group list</title> + <para>List all groups.</para> +</refsect3> + +<refsect3> + <title>group listmembers <replaceable>groupname</replaceable> [options]</title> + <para>List all members of the specified AD group.</para> + <para>By default the sAMAccountNames are listed. If no sAMAccountName + is available, the CN will be used instead.</para> + <variablelist> + <varlistentry> + <term>--full-dn</term> + <listitem><para> + List the distinguished names instead of the sAMAccountNames. + </para></listitem> + </varlistentry> + <varlistentry> + <term>--hide-expired</term> + <listitem><para> + Do not list expired group members. + </para></listitem> + </varlistentry> + <varlistentry> + <term>--hide-disabled</term> + <listitem><para> + Do not list disabled group members. + </para></listitem> + </varlistentry> + </variablelist> +</refsect3> + +<refsect3> + <title>group move <replaceable>groupname</replaceable> <replaceable>new_parent_dn</replaceable> [options]</title> + <para>This command moves a group into the specified organizational unit + or container.</para> + <para>The groupname specified on the command is the sAMAccountName. + </para> + <para>The name of the organizational unit or container can be + specified as a full DN or without the domainDN component.</para> + <para></para> +</refsect3> + +<refsect3> + <title>group removemembers <replaceable>groupname</replaceable> <replaceable>members</replaceable> [options]</title> + <para>Remove members from the specified AD group.</para> +</refsect3> + +<refsect3> + <title>group show <replaceable>groupname</replaceable> [options]</title> + <para>Show group object and it's attributes.</para> +</refsect3> + +<refsect3> + <title>group stats [options]</title> + <para>Show statistics for overall groups and group memberships.</para> +</refsect3> + +<refsect3> + <title>group rename <replaceable>groupname</replaceable> [options]</title> + <para>Rename a group and related attributes.</para> + <para>This command allows to set the group's name related attributes. The + group's CN will be renamed automatically. + The group's CN will be the sAMAccountName. + Use the --force-new-cn option to specify the new CN manually and the + --reset-cn to reset this change.</para> + <para>Use an empty attribute value to remove the specified attribute.</para> + <para>The groupname specified on the command is the sAMAccountName.</para> + + <variablelist> + <varlistentry> + <term>--force-new-cn=NEW_CN</term> + <listitem><para> + Specify a new CN (RDN) instead of using the sAMAccountName. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--reset-cn</term> + <listitem><para> + Set the CN to the sAMAccountName. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--mail-address=MAIL_ADDRESS</term> + <listitem><para> + New mail address + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--samaccountname=SAMACCOUNTNAME</term> + <listitem><para> + New account name (sAMAccountName/logon name) + </para></listitem> + </varlistentry> + </variablelist> +</refsect3> + +<refsect2> + <title>ldapcmp <replaceable>URL1</replaceable> <replaceable>URL2</replaceable> <replaceable>domain|configuration|schema|dnsdomain|dnsforest</replaceable> [options] </title> + <para>Compare two LDAP databases.</para> +</refsect2> + +<refsect2> + <title>ntacl</title> + <para>Manage NT ACLs.</para> +</refsect2> + +<refsect3> + <title>ntacl changedomsid <replaceable>original-domain-SID</replaceable> <replaceable>new-domain-SID</replaceable> <replaceable>file</replaceable> [options]</title> + <para>Change the domain SID for ACLs. + Can be used to change all entries in acl_xattr when the machine's SID + has accidentally changed or the data set has been copied + to another machine either via backup/restore or rsync.</para> + + <variablelist> + <varlistentry> + <term>--use-ntvfs</term> + <listitem><para> + Set the ACLs directly to the TDB or xattr. The POSIX permissions will + NOT be changed, only the NT ACL will be stored. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--service=SERVICE</term> + <listitem><para> + Specify the name of the smb.conf service to use. This option is + required in combination with the --use-s3fs option. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--use-s3fs</term> + <listitem><para> + Set the ACLs for use with the default s3fs file server via the VFS + layer. This option requires a smb.conf service, specified by the + --service=SERVICE option. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--xattr-backend=[native|tdb]</term> + <listitem><para> + Specify the xattr backend type (native fs or tdb). + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--eadb-file=EADB_FILE</term> + <listitem><para> + Name of the tdb file where attributes are stored. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--recursive</term> + <listitem><para> + Set the ACLs for directories and their contents recursively. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--follow-symlinks</term> + <listitem><para> + Follow symlinks when --recursive is specified. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--verbose</term> + <listitem><para> + Verbosely list files and ACLs which are being processed. + </para></listitem> + </varlistentry> + </variablelist> +</refsect3> + + +<refsect3> + <title>ntacl get <replaceable>file</replaceable> [options]</title> + <para>Get ACLs on a file.</para> +</refsect3> + +<refsect3> + <title>ntacl set <replaceable>acl</replaceable> <replaceable>file</replaceable> [options]</title> + <para>Set ACLs on a file.</para> +</refsect3> + +<refsect3> + <title>ntacl sysvolcheck</title> + <para>Check sysvol ACLs match defaults (including correct ACLs on GPOs).</para> +</refsect3> + +<refsect3> + <title>ntacl sysvolreset</title> + <para>Reset sysvol ACLs to defaults (including correct ACLs on GPOs).</para> +</refsect3> + +<refsect2> + <title>ou</title> + <para>Manage organizational units (OUs).</para> +</refsect2> + +<refsect3> + <title>ou add <replaceable>ou_dn</replaceable> [options]</title> + <para>Add a new organizational unit.</para> + <para>The name of the organizational unit can be specified as a full DN + or without the domainDN component.</para> + + <variablelist> + <varlistentry> + <term>--description=DESCRIPTION</term> + <listitem><para> + Specify OU's description. + </para></listitem> + </varlistentry> + </variablelist> +</refsect3> + +<refsect3> + <title>ou create <replaceable>ou_dn</replaceable> [options]</title> + <para>Add a new organizational unit. This is a synonym for the + <command>samba-tool ou add</command> command and is available + for compatibility reasons only. Please use + <command>samba-tool ou add</command> instead.</para> +</refsect3> + +<refsect3> + <title>ou delete <replaceable>ou_dn</replaceable> [options]</title> + <para>Delete an organizational unit.</para> + <para>The name of the organizational unit can be specified as a full DN + or without the domainDN component.</para> + + <variablelist> + <varlistentry> + <term>--force-subtree-delete</term> + <listitem><para> + Delete organizational unit and all children reclusively. + </para></listitem> + </varlistentry> + </variablelist> +</refsect3> + +<refsect3> + <title>ou list [options]</title> + <para>List all organizational units.</para> + <variablelist> + <varlistentry> + <term>--full-dn</term> + <listitem><para> + Display DNs including the base DN. + </para></listitem> + </varlistentry> + </variablelist> +</refsect3> + +<refsect3> + <title>ou listobjects <replaceable>ou_dn</replaceable> [options]</title> + <para>List all objects in an organizational unit.</para> + <para>The name of the organizational unit can be specified as a full DN + or without the domainDN component.</para> + + <variablelist> + <varlistentry> + <term>--full-dn</term> + <listitem><para> + Display DNs including the base DN. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-r|--recursive</term> + <listitem><para> + List objects recursively. + </para></listitem> + </varlistentry> + </variablelist> +</refsect3> + +<refsect3> + <title>ou move <replaceable>old_ou_dn</replaceable> <replaceable>new_parent_dn</replaceable> [options]</title> + <para>Move an organizational unit.</para> + <para>The name of the organizational units can be specified as a full DN + or without the domainDN component.</para> +</refsect3> + +<refsect3> + <title>ou rename <replaceable>old_ou_dn</replaceable> <replaceable>new_ou_dn</replaceable> [options]</title> + <para>Rename an organizational unit.</para> + <para>The name of the organizational units can be specified as a full DN + or without the domainDN component.</para> +</refsect3> + +<refsect2> + <title>rodc</title> + <para>Manage Read-Only Domain Controller (RODC).</para> +</refsect2> + +<refsect3> + <title>rodc preload <replaceable>SID</replaceable>|<replaceable>DN</replaceable>|<replaceable>accountname</replaceable> [options]</title> + <para>Preload one account for an RODC.</para> +</refsect3> + +<refsect2> + <title>schema</title> + <para>Manage and query schema.</para> +</refsect2> + +<refsect3> + <title>schema attribute modify <replaceable>attribute</replaceable> [options]</title> + <para>Modify the behaviour of an attribute in schema.</para> +</refsect3> + +<refsect3> + <title>schema attribute show <replaceable>attribute</replaceable> [options]</title> + <para>Display an attribute schema definition.</para> +</refsect3> + +<refsect3> + <title>schema attribute show_oc <replaceable>attribute</replaceable> [options]</title> + <para>Show objectclasses that MAY or MUST contain this attribute.</para> +</refsect3> + +<refsect3> + <title>schema objectclass show <replaceable>objectclass</replaceable> [options]</title> + <para>Display an objectclass schema definition.</para> +</refsect3> + +<refsect2> + <title>sites</title> + <para>Manage sites.</para> +</refsect2> + +<refsect3> + <title>sites create <replaceable>site</replaceable> [options]</title> + <para>Create a new site.</para> +</refsect3> + +<refsect3> + <title>sites remove <replaceable>site</replaceable> [options]</title> + <para>Delete an existing site.</para> +</refsect3> + +<refsect2> + <title>spn</title> + <para>Manage Service Principal Names (SPN).</para> +</refsect2> + +<refsect3> + <title>spn add <replaceable>name</replaceable> <replaceable>user</replaceable> [options]</title> + <para>Create a new SPN.</para> +</refsect3> + +<refsect3> + <title>spn delete <replaceable>name</replaceable> [<replaceable>user</replaceable>] [options]</title> + <para>Delete an existing SPN.</para> +</refsect3> + +<refsect3> + <title>spn list <replaceable>user</replaceable> [options]</title> + <para>List SPNs of a given user.</para> +</refsect3> + +<refsect2> + <title>testparm</title> + <para>Check the syntax of the configuration file.</para> +</refsect2> + +<refsect2> + <title>time</title> + <para>Retrieve the time on a server.</para> +</refsect2> + +<refsect2> + <title>user</title> + <para>Manage users.</para> +</refsect2> + +<refsect3> + <title>user add <replaceable>username</replaceable> [<replaceable>password</replaceable>]</title> + <para>Add a new user to the Active Directory Domain.</para> +</refsect3> + +<refsect3> + <title>user create <replaceable>username</replaceable> [<replaceable>password</replaceable>]</title> + <para>Add a new user. This is a synonym for the + <command>samba-tool user add</command> command and is available + for compatibility reasons only. Please use + <command>samba-tool user add</command> instead.</para> +</refsect3> + +<refsect3> + <title>user delete <replaceable>username</replaceable> [options]</title> + <para>Delete an existing user account.</para> +</refsect3> + +<refsect3> + <title>user disable <replaceable>username</replaceable></title> + <para>Disable a user account.</para> +</refsect3> + +<refsect3> + <title>user edit <replaceable>username</replaceable></title> + <para>Edit a user account AD object.</para> + + <variablelist> + <varlistentry> + <term>--editor=EDITOR</term> + <listitem><para> + Specifies the editor to use instead of the system default, or 'vi' if no + system default is set. + </para></listitem> + </varlistentry> + </variablelist> +</refsect3> + +<refsect3> + <title>user enable <replaceable>username</replaceable></title> + <para>Enable a user account.</para> +</refsect3> + +<refsect3> + <title>user list</title> + <para>List all users.</para> + <para>By default the user's sAMAccountNames are listed.</para> + <variablelist> + <varlistentry> + <term>--full-dn</term> + <listitem><para> + List user's distinguished names instead of the sAMAccountNames. + </para></listitem> + </varlistentry> + <varlistentry> + <term>-b BASE_DN|--base-dn=BASE_DN</term> + <listitem><para> + Specify base DN to use. Only users under the specified base DN will be + listed. + </para></listitem> + </varlistentry> + <varlistentry> + <term>--hide-expired</term> + <listitem><para> + Do not list expired user accounts. + </para></listitem> + </varlistentry> + <varlistentry> + <term>--hide-disabled</term> + <listitem><para> + Do not list disabled user accounts. + </para></listitem> + </varlistentry> + </variablelist> +</refsect3> + +<refsect3> + <title>user setprimarygroup <replaceable>username</replaceable> <replaceable>primarygroupname</replaceable></title> + <para>Set the primary group a user account.</para> +</refsect3> + +<refsect3> + <title>user getgroups <replaceable>username</replaceable></title> + <para>Get the direct group memberships of a user account.</para> +</refsect3> + +<refsect3> + <title>user show <replaceable>username</replaceable> [options]</title> + <para>Display a user AD object.</para> + + <variablelist> + <varlistentry> + <term>--attributes=USER_ATTRS</term> + <listitem><para> + Comma separated list of attributes, which will be printed. + </para></listitem> + </varlistentry> + </variablelist> +</refsect3> + +<refsect3> + <title>user move <replaceable>username</replaceable> <replaceable>new_parent_dn</replaceable> [options]</title> + <para>This command moves a user account into the specified + organizational unit or container.</para> + <para>The username specified on the command is the + sAMAccountName.</para> + <para>The name of the organizational unit or container can be + specified as a full DN or without the domainDN component.</para> +</refsect3> + +<refsect3> + <title>user password [options]</title> + <para>Change password for a user account (the one provided in + authentication).</para> +</refsect3> + +<refsect3> + <title>user rename <replaceable>username</replaceable> [options]</title> + <para>Rename a user and related attributes.</para> + <para>This command allows to set the user's name related attributes. The user's + CN will be renamed automatically. + The user's new CN will be made up by combining the given-name, initials + and surname. A dot ('.') will be appended to the initials automatically, + if required. + Use the --force-new-cn option to specify the new CN manually and --reset-cn + to reset this change.</para> + <para>Use an empty attribute value to remove the specified attribute.</para> + <para>The username specified on the command is the sAMAccountName.</para> + + <variablelist> + <varlistentry> + <term>--surname=SURNAME</term> + <listitem><para> + New surname + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--given-name=GIVEN_NAME</term> + <listitem><para> + New given name + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--initials=INITIALS</term> + <listitem><para> + New initials + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--force-new-cn=NEW_CN</term> + <listitem><para> + Specify a new CN (RDN) instead of using a combination + of the given name, initials and surname. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--reset-cn</term> + <listitem><para> + Set the CN to the default combination of given name, + initials and surname. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--display-name=DISPLAY_NAME</term> + <listitem><para> + New display name + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--mail-address=MAIL_ADDRESS</term> + <listitem><para> + New email address + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--samaccountname=SAMACCOUNTNAME</term> + <listitem><para> + New account name (sAMAccountName/logon name) + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--upn=UPN</term> + <listitem><para> + New user principal name + </para></listitem> + </varlistentry> + </variablelist> +</refsect3> + +<refsect3> + <title>user setexpiry <replaceable>username</replaceable> [options]</title> + <para>Set the expiration of a user account.</para> +</refsect3> + +<refsect3> + <title>user setpassword <replaceable>username</replaceable> [options]</title> + <para>Sets or resets the password of a user account.</para> +</refsect3> + +<refsect3> + <title>user unlock <replaceable>username</replaceable> [options]</title> + <para>This command unlocks a user account in the Active Directory + domain.</para> +</refsect3> + +<refsect3> + <title>user getpassword <replaceable>username</replaceable> [options]</title> + <para>Gets the password of a user account.</para> +</refsect3> + +<refsect3> + <title>user syncpasswords <replaceable>--cache-ldb-initialize</replaceable> [options]</title> + <para>Syncs the passwords of all user accounts, using an optional script.</para> + <para>Note that this command should run on a single domain controller only + (typically the PDC-emulator).</para> +</refsect3> + +<refsect2> + <title>vampire [options] <replaceable>domain</replaceable></title> + <para>Join and synchronise a remote AD domain to the local server. + Please note that <command>samba-tool vampire</command> is deprecated, + please use <command>samba-tool domain join</command> instead.</para> +</refsect2> + +<refsect2> + <title>visualize [options] <replaceable>subcommand</replaceable></title> + <para>Produce graphical representations of Samba network state. + To work out what is happening in a replication graph, it is sometimes + helpful to use visualisations.</para> + + <para> + There are two subcommands, two graphical modes, and (roughly) two modes + of operation with respect to the location of authority.</para> + + <refsect3><title>MODES OF OPERATION</title> + <varlistentry> + <term>samba-tool visualize ntdsconn</term> + <listitem><para>Looks at NTDS connections. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>samba-tool visualize reps</term> + <listitem><para>Looks at repsTo and repsFrom objects. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>samba-tool visualize uptodateness</term> + <listitem><para>Looks at replication lag as shown by the + uptodateness vectors. + </para></listitem> + </varlistentry> + </refsect3> + + <refsect3><title>GRAPHICAL MODES</title> + <varlistentry> + <term>--distance</term> + <listitem><para>Distances between DCs are shown in a matrix in + the terminal. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--dot</term> + <listitem><para>Generate Graphviz dot output (for + ntdsconn and reps modes). When viewed using dot or + xdot, this shows the network as a graph with DCs as + vertices and connections edges. Certain types of + degenerate edges are shown in different colours or + line-styles. </para></listitem> + </varlistentry> + <varlistentry> + <term>--xdot</term> + <listitem><para>Generate Graphviz dot output as with + <arg choice="opt">--dot</arg> and attempt to view it + immediately using <command>/usr/bin/xdot</command>. + </para></listitem> + </varlistentry> + </refsect3> + + <varlistentry> + <term>-r</term> + <listitem><para>Normally, + <command>samba-tool</command> talks to one database; + with the <arg choice="opt">-r</arg> option attempts + are made to contact all the DCs known to the first + database. This is necessary for <command>samba-tool + visualize uptodateness</command> and for + <command>samba-tool visualize reps</command> because + the repsFrom/To objects are not replicated, and it can + reveal replication issues in other modes. + </para></listitem> + </varlistentry> +</refsect2> + +<refsect2> +<title>help</title> +<para>Gives usage information.</para> +</refsect2> + +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is complete for version &doc.version; of the Samba + suite.</para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/samba.7.xml b/docs-xml/manpages/samba.7.xml new file mode 100644 index 0000000..627ba63 --- /dev/null +++ b/docs-xml/manpages/samba.7.xml @@ -0,0 +1,332 @@ +<?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="samba.7"> + +<refmeta> + <refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">Miscellanea</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>samba</refname> + <refpurpose>A Windows AD and SMB/CIFS fileserver for UNIX</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis><command>samba</command></cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>The Samba software suite is a collection of programs + that implements the Server Message Block (commonly abbreviated + as SMB) protocol for UNIX systems and provides Active Directory + services. The first version of the SMB protocol is sometimes also + referred to as the Common Internet File System (CIFS). For a more + thorough description, see <ulink url="http://www.ubiqx.org/cifs/"> + http://www.ubiqx.org/cifs/</ulink>. Samba also implements the NetBIOS + protocol in nmbd.</para> + + <variablelist> + <varlistentry> + <term><citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>8</manvolnum></citerefentry></term> + <listitem><para>The <command>samba</command> daemon provides the + Active Directory services and file and print services to + SMB clients. The configuration file + for this daemon is described in <citerefentry><refentrytitle>smb.conf</refentrytitle> + <manvolnum>5</manvolnum></citerefentry>. + </para></listitem> + </varlistentry> + + <varlistentry> + <term><citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry></term> + <listitem><para>The <command>smbd</command> daemon provides the file and print services to + SMB clients. The configuration file + for this daemon is described in <citerefentry><refentrytitle>smb.conf</refentrytitle> + <manvolnum>5</manvolnum></citerefentry>. + </para></listitem> + </varlistentry> + + <varlistentry> + <term><citerefentry><refentrytitle>nmbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry></term> + <listitem><para>The <command>nmbd</command> + daemon provides NetBIOS nameservice and browsing + support. The configuration file for this daemon + is described in <citerefentry><refentrytitle>smb.conf</refentrytitle> + <manvolnum>5</manvolnum></citerefentry>.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><citerefentry><refentrytitle>winbindd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry></term> + <listitem><para><command>winbindd</command> is a daemon + that is used for integrating authentication and + the user database into unix.</para></listitem> + </varlistentry> + + <varlistentry> + <term><citerefentry><refentrytitle>smbclient</refentrytitle> + <manvolnum>1</manvolnum></citerefentry></term> + <listitem><para>The <command>smbclient</command> + program implements a simple ftp-like client. This + is useful for accessing SMB shares on other compatible + SMB servers, and can also be used + to allow a UNIX box to print to a printer attached to + any SMB server.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><citerefentry><refentrytitle>samba-tool</refentrytitle> + <manvolnum>8</manvolnum></citerefentry></term> + <listitem><para>The <command>samba-tool</command> + is the main Samba Administration tool regarding + Active Directory services.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><citerefentry><refentrytitle>testparm</refentrytitle> + <manvolnum>1</manvolnum></citerefentry></term> + <listitem><para>The <command>testparm</command> + utility is a simple syntax checker for Samba's <citerefentry><refentrytitle>smb.conf</refentrytitle> + <manvolnum>5</manvolnum></citerefentry> configuration file. + In AD server mode <command>samba-tool testparm</command> + should be used though.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><citerefentry><refentrytitle>smbstatus</refentrytitle> + <manvolnum>1</manvolnum></citerefentry></term> + <listitem><para>The <command>smbstatus</command> + tool provides access to information about the + current connections to <command>smbd</command>.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><citerefentry><refentrytitle>nmblookup</refentrytitle> + <manvolnum>1</manvolnum></citerefentry></term> + <listitem><para>The <command>nmblookup</command> + tool allows NetBIOS name queries to be made.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><citerefentry><refentrytitle>smbpasswd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry></term> + <listitem><para>The <command>smbpasswd</command> + command is a tool for setting passwords on local Samba but + also on remote SMB servers.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><citerefentry><refentrytitle>smbcacls</refentrytitle> + <manvolnum>1</manvolnum></citerefentry></term> + <listitem><para>The <command>smbcacls</command> command is + a tool to set ACL's on remote SMB servers.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><citerefentry><refentrytitle>smbtree</refentrytitle> + <manvolnum>1</manvolnum></citerefentry></term> + <listitem><para>The <command>smbtree</command> command + is a text-based network neighborhood tool.</para></listitem> + </varlistentry> + + <varlistentry> + <term><citerefentry><refentrytitle>smbtar</refentrytitle> + <manvolnum>1</manvolnum></citerefentry></term> + <listitem><para>The <command>smbtar</command> can make + backups of data directly from SMB servers.</para></listitem> + </varlistentry> + + <varlistentry> + <term><citerefentry><refentrytitle>smbspool</refentrytitle> + <manvolnum>8</manvolnum></citerefentry></term> + <listitem><para><command>smbspool</command> is a + helper utility for printing on printers connected + to SMB servers. </para></listitem> + </varlistentry> + + <varlistentry> + <term><citerefentry><refentrytitle>smbcontrol</refentrytitle> + <manvolnum>1</manvolnum></citerefentry></term> + <listitem><para><command>smbcontrol</command> is a utility + that can change the behaviour of running + <command>samba</command>, <command>smbd</command>, <command>nmbd</command> and + <command>winbindd</command> daemons. + </para></listitem> + </varlistentry> + + <varlistentry> + <term><citerefentry><refentrytitle>rpcclient</refentrytitle> + <manvolnum>1</manvolnum></citerefentry></term> + <listitem><para><command>rpcclient</command> is a utility + that can be used to execute RPC commands on remote + SMB servers.</para></listitem> + </varlistentry> + + <varlistentry> + <term><citerefentry><refentrytitle>pdbedit</refentrytitle> + <manvolnum>8</manvolnum></citerefentry></term> + <listitem><para>The <command>pdbedit</command> command + can be used to maintain the local user database on + a Samba server.</para></listitem></varlistentry> + + <varlistentry> + <term><citerefentry><refentrytitle>net</refentrytitle> + <manvolnum>8</manvolnum></citerefentry></term> + <listitem><para>The <command>net</command> command + is the main administration tool for Samba member and + standalone servers.</para></listitem> + </varlistentry> + + <varlistentry> + <term><citerefentry><refentrytitle>wbinfo</refentrytitle> + <manvolnum>1</manvolnum></citerefentry></term> + <listitem><para><command>wbinfo</command> is a utility + that retrieves and stores information related to winbind. + </para></listitem> + </varlistentry> + + <varlistentry> + <term><citerefentry><refentrytitle>profiles</refentrytitle> + <manvolnum>1</manvolnum></citerefentry></term> + <listitem><para><command>profiles</command> is a command-line + utility that can be used to replace all occurrences of + a certain SID with another SID. + </para></listitem> + </varlistentry> + + <varlistentry> + <term><citerefentry><refentrytitle>log2pcap</refentrytitle> + <manvolnum>1</manvolnum></citerefentry></term> + <listitem><para><command>log2pcap</command> is a utility + for generating pcap trace files from Samba log + files.</para></listitem> + </varlistentry> + + <varlistentry> + <term><citerefentry><refentrytitle>vfstest</refentrytitle> + <manvolnum>1</manvolnum></citerefentry></term> + <listitem><para><command>vfstest</command> is a utility + that can be used to test vfs modules.</para></listitem> + </varlistentry> + + <varlistentry> + <term><citerefentry><refentrytitle>ntlm_auth</refentrytitle> + <manvolnum>1</manvolnum></citerefentry></term> + <listitem><para><command>ntlm_auth</command> is a helper-utility + for external programs wanting to do NTLM-authentication. + </para></listitem></varlistentry> + + <varlistentry> + <term><citerefentry><refentrytitle>smbcquotas</refentrytitle> + <manvolnum>1</manvolnum></citerefentry></term> + <listitem><para><command>smbcquotas</command> is a tool to + manage quotas on remote SMB servers. </para> + </listitem> + </varlistentry> + </variablelist> +</refsect1> + +<refsect1> + <title>COMPONENTS</title> + + <para>The Samba suite is made up of several components. Each + component is described in a separate manual page. It is strongly + recommended that you read the documentation that comes with Samba + and the manual pages of those components that you use. If the + manual pages and documents aren't clear enough then please visit + <ulink url="https://devel.samba.org/">https://devel.samba.org</ulink> + for information on how to file a bug report or submit a patch.</para> + + <para>If you require help, visit the Samba webpage at + <ulink url="https://www.samba.org/">https://www.samba.org/</ulink> and + explore the many option available to you. + </para> +</refsect1> + +<refsect1> + <title>AVAILABILITY</title> + + <para>The Samba software suite is licensed under the + GNU Public License(GPL). A copy of that license should + have come with the package in the file COPYING. You are + encouraged to distribute copies of the Samba suite, but + please obey the terms of this license.</para> + + <para>The latest version of the Samba suite can be + obtained from <ulink url="https://download.samba.org/pub/samba/"> + https://download.samba.org/pub/samba/</ulink>. + </para> + + <para>The Samba Wiki at + <ulink url="https://wiki.samba.org/">https://wiki.samba.org</ulink> + has also a lot of useful information. + On the Samba mailing list at + <ulink url="https://lists.samba.org/">https://lists.samba.org</ulink> + you can find a lot of information in the archives and you can + subscribe to the samba list and ask for help or discuss things. + </para> +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of the + Samba suite. </para> +</refsect1> + +<refsect1> + <title>CONTRIBUTIONS</title> + + <para>If you wish to contribute to the Samba project, + then I suggest you join the Samba mailing list at + <ulink url="https://lists.samba.org/">https://lists.samba.org</ulink>. + </para> + + <para>If you have patches to submit, visit + <ulink url="https://devel.samba.org/">https://devel.samba.org/</ulink> + for information on how to do it properly. We prefer patches + in <command>git format-patch</command> format.</para> +</refsect1> + +<refsect1> + <title>CONTRIBUTORS</title> + + <para>Contributors to the project are now too numerous + to mention here but all deserve the thanks of all Samba + users. To see a full list, look at the + <filename>change-log</filename> in the source package + for the pre-CVS changes and at <ulink + url="https://git.samba.org/"> + https://git.samba.org/</ulink> + for the contributors to Samba post-GIT. GIT is the Open Source + source code control system used by the Samba Team to develop + Samba. The project would have been unmanageable without it.</para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/samba.8.xml b/docs-xml/manpages/samba.8.xml new file mode 100644 index 0000000..c2fd49d --- /dev/null +++ b/docs-xml/manpages/samba.8.xml @@ -0,0 +1,260 @@ +<?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="samba.8"> + +<refmeta> + <refentrytitle>samba</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>samba</refname> + <refpurpose>Server to provide AD and SMB/CIFS services to clients</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>samba</command> + <arg choice="opt">-D|--daemon</arg> + <arg choice="opt">-F|--foreground</arg> + <arg choice="opt">-i|--interactive</arg> + <arg choice="opt">-M|--model=MODEL</arg> + <arg choice="opt">--maximum-runtime=seconds</arg> + <arg choice="opt">-b|--show-build</arg> + <arg choice="opt">--no-process-group</arg> + <arg choice="opt">-d|--debuglevel=DEBUGLEVEL</arg> + <arg choice="opt">--debug-stdout</arg> + <arg choice="opt">--configfile=CONFIGFILE</arg> + <arg choice="opt">--option=name=value</arg> + <arg choice="opt">-l|--log-basename=LOGFILEBASE</arg> + <arg choice="opt">--leak-report</arg> + <arg choice="opt">--leak-report-full</arg> + <arg choice="opt">-V|--version</arg> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + <para>This program is part of the <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para><command>samba</command> is the server daemon that + provides Active Directory, filesharing and printing services to clients. + The server provides filespace and directory services to + clients using the SMB (or CIFS) protocol and other + related protocols such as DCE/RPC, LDAP and Kerberos. + </para> + + <para> + Clients supported include MSCLIENT 3.0 for DOS, Windows for + Workgroups, Windows 95/98/ME, Windows NT, Windows 2000/XP/2003, + OS/2, DAVE for Macintosh, and cifsfs for Linux.</para> + + <para>An extensive description of the services that the + server can provide is given in the man page for the + configuration file controlling the attributes of those + services (see <citerefentry><refentrytitle>smb.conf</refentrytitle> + <manvolnum>5</manvolnum></citerefentry>. This man page will not describe the + services, but will concentrate on the administrative aspects + of running the server. + </para> + + <para>Please note that there are significant security + implications to running this server, and the <citerefentry><refentrytitle>smb.conf</refentrytitle> + <manvolnum>5</manvolnum></citerefentry> manual page should be regarded as mandatory reading before + proceeding with installation. + </para> +</refsect1> + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + <varlistentry> + <term>-D|--daemon</term> + <listitem><para>If specified, this parameter causes + the server to operate as a daemon. That is, it detaches + itself and runs in the background, fielding requests + on the appropriate ports. Operating the server as a + daemon is the recommended way of running + <command>samba</command> for servers that provide more + than casual use file and print services. This switch is + assumed if <command>samba</command> is executed on the + command line of a shell. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-F|--foreground</term> + <listitem><para>If specified, this parameter causes + the <command>samba</command> process to not daemonize, + i.e. double-fork and disassociate with the terminal. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-i|--interactive</term> + <listitem><para>If this parameter is specified it causes the + server to run "interactively", not as a daemon, even if the + server is executed on the command line of a shell. Setting this + parameter negates the implicit daemon mode when run from the + command line. <command>samba</command> also logs to standard + output, as if the <command>-S</command> parameter had been + given. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-M|--model</term> + <listitem><para>This parameter can be used to specify the + "process model" samba should use. This determines + how concurrent clients are handled. Available process + models include: + <itemizedlist> + <listitem><para><emphasis>single</emphasis></para> + <para>All Samba services run in a single process. This is + not recommended for production configurations. + </para></listitem> + + <listitem><para><emphasis>standard</emphasis></para> + <para>A process is created for each Samba service, + and for those services that support it (currently only + LDAP and NETLOGON) a new processes is started + for each new client connection.</para> + + <para>Historically, this was the 'standard' way Samba behaved + up until v4.10. Note that this model can be resource intensive + if you have a large number of client connections.</para> + </listitem> + + <listitem><para><emphasis>prefork</emphasis></para> + <para>The default. A process is started for each Samba service, + and a fixed number of worker processes are started for those + services that support it (currently LDAP, NETLOGON, and KDC). + The client connections are then shared amongst the worker + processes. + Requests for services not supporting prefork are handled + by a single process for that service.</para> + <para>The number of prefork worker processes started is + controlled by the + <citerefentry><refentrytitle>smb.conf</refentrytitle> + <manvolnum>5</manvolnum></citerefentry> parameter + <smbconfoption name="prefork children"/>, + which defaults to 4. + </para></listitem> + </itemizedlist> + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--maximum-runtime=seconds</term> + <listitem><para>Set maximum runtime of the server process till + autotermination in seconds. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-b|--show-build</term> + <listitem><para>Print information about how Samba was built. + </para></listitem> + </varlistentry> + + &cmdline.common.samba.server; + &popt.autohelp; + </variablelist> +</refsect1> + +<refsect1> + <title>FILES</title> + + <variablelist> + <varlistentry> + <term><filename>/etc/rc</filename></term> + <listitem><para>or whatever initialization script your + system uses.</para> + + <para>If running the server as a daemon at startup, + this file will need to contain an appropriate startup + sequence for the server. </para></listitem> + </varlistentry> + + <varlistentry> + <term><filename>/etc/services</filename></term> + <listitem><para>If running the server via the + meta-daemon <command>inetd</command>, this file + must contain a mapping of service name (e.g., netbios-ssn) + to service port (e.g., 139) and protocol type (e.g., tcp). + </para></listitem> + </varlistentry> + + <varlistentry> + <term><filename>/usr/local/samba/lib/smb.conf</filename></term> + <listitem><para>This is the default location of the <citerefentry><refentrytitle>smb.conf</refentrytitle> + <manvolnum>5</manvolnum></citerefentry> server configuration file. Other common places that systems + install this file are <filename>/usr/samba/lib/smb.conf</filename> + and <filename>/etc/samba/smb.conf</filename>.</para> + + <para>This file describes all the services the server + is to make available to clients. See <citerefentry><refentrytitle>smb.conf</refentrytitle> + <manvolnum>5</manvolnum></citerefentry> for more information.</para> + </listitem> + </varlistentry> + </variablelist> +</refsect1> + +<refsect1> + <title>DIAGNOSTICS</title> + + <para>Most diagnostics issued by the server are logged + in a specified log file. The log file name is specified + at compile time, but may be overridden on the command line.</para> + + <para>The number and nature of diagnostics available depends + on the debug level used by the server. If you have problems, set + the debug level to 3 and peruse the log files.</para> + + <para>Most messages are reasonably self-explanatory. Unfortunately, + at the time this man page was created, there are too many diagnostics + available in the source code to warrant describing each and every + diagnostic. At this stage your best bet is still to grep the + source code and inspect the conditions that gave rise to the + diagnostics you are seeing.</para> +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of the Samba suite.</para> +</refsect1> + +<refsect1> + <title>SEE ALSO</title> + <para><citerefentry><refentrytitle>hosts_access</refentrytitle> + <manvolnum>5</manvolnum></citerefentry> + <citerefentry><refentrytitle>smb.conf</refentrytitle> + <manvolnum>5</manvolnum></citerefentry>, <citerefentry><refentrytitle>smbclient</refentrytitle> + <manvolnum>8</manvolnum></citerefentry>, <citerefentry><refentrytitle>samba-tool</refentrytitle> + <manvolnum>8</manvolnum></citerefentry>, <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry>, <citerefentry><refentrytitle>nmbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry>, <citerefentry><refentrytitle>winbindd</refentrytitle> + <manvolnum>1</manvolnum></citerefentry>, and the + Internet RFC's <filename>rfc1001.txt</filename>, <filename>rfc1002.txt</filename>. + In addition the CIFS (formerly SMB) specification is available + as a link from the Web page <ulink noescape="1" url="https://www.samba.org/cifs/"> + https://www.samba.org/cifs/</ulink>.</para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/samba_downgrade_db.8.xml b/docs-xml/manpages/samba_downgrade_db.8.xml new file mode 100644 index 0000000..7b0c822 --- /dev/null +++ b/docs-xml/manpages/samba_downgrade_db.8.xml @@ -0,0 +1,95 @@ +<?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="samba_downgrade_db.8"> + +<refmeta> + <refentrytitle>samba_downgrade_db</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">User Commands</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>samba_downgrade_db</refname> + <refpurpose>Samba tool for downgrading AD databases + </refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>samba_downgrade_db</command> + <arg choice="opt">-H</arg> + <arg choice="opt">-s</arg> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + <para>This tool is part of the <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> suite.</para> + + <para>The format of the Samba Active Directory (AD) database changed in + version 4.8 and 4.11. When downgrading a Samba AD Domain Controller (DC) + to a release that is older than either of these versions (e.g. 4.11 to + 4.10), the AD database must be manually downgraded + <emphasis>before</emphasis> the Samba packages can be safely downgraded. + </para> + + <para>This tool downgrades a Samba sam.ldb database from the format + used in version &doc.version; to that of version 4.7. The v4.7 database + format can safely be read by any version of Samba. If necessary, later + versions of Samba will repack and reconfigure a v4.7-format database when + the samba executable is first started.</para> + + <para>Note that all Samba services must be stopped on the DC before running + this tool. Once the tool has run, do not restart samba or modify the + database before the Samba software package has been downgraded. + </para> +</refsect1> + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + + <varlistentry> + <term>-H [sam.ldb file]</term> + <listitem><para> + Link directly to a sam.ldb file instead of using path in system + smb.conf + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-s [smb.conf file]</term> + <listitem><para> + Link directly to smb.conf file instead of system default (usually + in /usr/local/samba/etc/smb.conf) + </para></listitem> + </varlistentry> + + </variablelist> +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is complete for version &doc.version; of the Samba + suite.</para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + + <para>The samba_downgrade_db tool was developed by the Samba team + at Catalyst IT Ltd.</para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/sharesec.1.xml b/docs-xml/manpages/sharesec.1.xml new file mode 100644 index 0000000..897adbc --- /dev/null +++ b/docs-xml/manpages/sharesec.1.xml @@ -0,0 +1,256 @@ +<?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="sharesec.1"> + +<refmeta> + <refentrytitle>sharesec</refentrytitle> + <manvolnum>1</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">User Commands</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>sharesec</refname> + <refpurpose>Set or get share ACLs</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>sharesec</command> + <arg choice="req">sharename</arg> + <arg choice="opt">-r, --remove=ACL</arg> + <arg choice="opt">-m, --modify=ACL</arg> + <arg choice="opt">-a, --add=ACL</arg> + <arg choice="opt">-R, --replace=ACLs</arg> + <arg choice="opt">-D, --delete</arg> + <arg choice="opt">-v, --view</arg> + <arg choice="opt">--view-all</arg> + <arg choice="opt">-M, --machine-sid</arg> + <arg choice="opt">-F, --force</arg> + <arg choice="opt">-d, --debuglevel=DEBUGLEVEL</arg> + <arg choice="opt">-s, --configfile=CONFIGFILE</arg> + <arg choice="opt">-l, --log-basename=LOGFILEBASE</arg> + <arg choice="opt">-S, --setsddl=STRING</arg> + <arg choice="opt">--viewsddl</arg> + <arg choice="opt">-?|--help</arg> + <arg choice="opt">--usage</arg> + <arg choice="opt">-d|--debuglevel=DEBUGLEVEL</arg> + <arg choice="opt">--debug-stdout</arg> + <arg choice="opt">--configfile=CONFIGFILE</arg> + <arg choice="opt">--option=name=value</arg> + <arg choice="opt">-l|--log-basename=LOGFILEBASE</arg> + <arg choice="opt">--leak-report</arg> + <arg choice="opt">--leak-report-full</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>The <command>sharesec</command> program manipulates share permissions + on SMB file shares.</para> +</refsect1> + + +<refsect1> + <title>OPTIONS</title> + + <para>The following options are available to the <command>sharesec</command> program. + The format of ACLs is described in the section ACL FORMAT </para> + + <variablelist> + <varlistentry> + <term>-a|--add=ACL</term> + <listitem><para>Add the ACEs specified to the ACL list. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-D|--delete</term> + <listitem><para>Delete the entire security descriptor. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-F|--force</term> + <listitem><para>Force storing the ACL. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-m|--modify=ACL</term> + <listitem><para>Modify existing ACEs. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-M|--machine-sid</term> + <listitem><para>Initialize the machine SID. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-r|--remove=ACL</term> + <listitem><para>Remove ACEs. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-R|--replace=ACLS</term> + <listitem><para> + Overwrite an existing share permission ACL. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-v|--view</term> + <listitem><para> + List a share acl + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--view-all</term> + <listitem><para> + List all share acls + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-S|--setsddl=STRING</term> + <listitem><para> + Set security descriptor by providing ACL in SDDL format. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--viewsddl</term> + <listitem><para> + List a share acl in SDDL format. + </para></listitem> + </varlistentry> + + &popt.autohelp; + &cmdline.common.samba.client; + </variablelist> +</refsect1> + + +<refsect1> + <title>ACL FORMAT</title> + + <para>The format of an ACL is one or more ACL entries separated by + either commas or newlines. An ACL entry is one of the following: </para> + + <para><programlisting> + REVISION:<revision number> + OWNER:<sid or name> + GROUP:<sid or name> + ACL:<sid or name>:<type>/<flags>/<mask> + </programlisting></para> + + <para>The revision of the ACL specifies the internal Windows + NT ACL revision for the security descriptor. + If not specified it defaults to 1. Using values other than 1 may + cause strange behaviour.</para> + + <para>The owner and group specify the owner and group SIDs for + the object. Share ACLs do not specify an owner or a group, so + these fields are empty.</para> + + <para>ACLs specify permissions granted to the SID. This SID + can be specified in S-1-x-y-z format or as a name in which case + it is resolved against the server on which the file or directory + resides. The type, flags and mask values determine the type of + access granted to the SID.</para> + + <para>The type can be either ALLOWED or DENIED to allow/deny access + to the SID. The flags values are generally zero for share ACLs. + </para> + + <para>The mask is a value which expresses the access right + granted to the SID. It can be given as a decimal or hexadecimal value, + or by using one of the following text strings which map to the NT + file permissions of the same name.</para> + + <itemizedlist> + <listitem><para><emphasis>R</emphasis> - Allow read access </para></listitem> + <listitem><para><emphasis>W</emphasis> - Allow write access</para></listitem> + <listitem><para><emphasis>X</emphasis> - Execute permission on the object</para></listitem> + <listitem><para><emphasis>D</emphasis> - Delete the object</para></listitem> + <listitem><para><emphasis>P</emphasis> - Change permissions</para></listitem> + <listitem><para><emphasis>O</emphasis> - Take ownership</para></listitem> + </itemizedlist> + + <para>The following combined permissions can be specified:</para> + + <itemizedlist> + <listitem><para><emphasis>READ</emphasis> - Equivalent to 'RX' + permissions</para></listitem> + <listitem><para><emphasis>CHANGE</emphasis> - Equivalent to 'RXWD' permissions + </para></listitem> + <listitem><para><emphasis>FULL</emphasis> - Equivalent to 'RWXDPO' + permissions</para></listitem> + </itemizedlist> + </refsect1> + +<refsect1> + <title>EXIT STATUS</title> + + <para>The <command>sharesec</command> program sets the exit status + depending on the success or otherwise of the operations performed. + The exit status may be one of the following values. </para> + + <para>If the operation succeeded, sharesec returns and exit + status of 0. If <command>sharesec</command> couldn't connect to the specified server, + or there was an error getting or setting the ACLs, an exit status + of 1 is returned. If there was an error parsing any command line + arguments, an exit status of 2 is returned. </para> +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + + <para>Add full access for SID + <parameter>S-1-5-21-1866488690-1365729215-3963860297-17724</parameter> on + <parameter>share</parameter>: + </para> + + <programlisting> + host:~ # sharesec share -a S-1-5-21-1866488690-1365729215-3963860297-17724:ALLOWED/0/FULL + </programlisting> + + <para>List all ACEs for <parameter>share</parameter>: + </para> + + <programlisting> + host:~ # sharesec share -v + REVISION:1 + CONTROL:SR|DP + OWNER: + GROUP: + ACL:S-1-1-0:ALLOWED/0x0/FULL + ACL:S-1-5-21-1866488690-1365729215-3963860297-17724:ALLOWED/0x0/FULL + </programlisting> +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of the Samba suite.</para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/smb.conf.5.xml b/docs-xml/manpages/smb.conf.5.xml new file mode 100644 index 0000000..4b33c0f --- /dev/null +++ b/docs-xml/manpages/smb.conf.5.xml @@ -0,0 +1,924 @@ +<?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="smb.conf.5" xmlns:xi="http://www.w3.org/2003/XInclude" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + +<refmeta> + <refentrytitle>smb.conf</refentrytitle> + <manvolnum>5</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">File Formats and Conventions</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>smb.conf</refname> + <refpurpose>The configuration file for the Samba suite</refpurpose> +</refnamediv> + +<refsect1> + <title>SYNOPSIS</title> + + <para> + The <filename moreinfo="none">smb.conf</filename> file is a configuration file for the Samba suite. <filename + moreinfo="none">smb.conf</filename> contains runtime configuration information for the Samba programs. The + complete description of the file format and possible parameters held within are here for reference purposes. + </para> +</refsect1> + +<refsect1> + <title>HOW CONFIGURATION CHANGES ARE APPLIED</title> + + <para> + The Samba suite includes a number of different programs. Some of them operate in a client mode, others are + server daemons that provide various services to its clients. The <filename moreinfo="none">smb.conf + </filename> file is processed in the following way: + </para> + + <itemizedlist> + <listitem><para> + The Samba suite's client applications read their configuration only once. Any changes made after start aren't + reflected in the context of already running client code. + </para></listitem> + + <listitem><para> + The Samba suite's server daemons reload their configuration when requested. However, already active connections + do not change their configuration. More detailed information can be found in + <citerefentry><refentrytitle>smbd</refentrytitle><manvolnum>8</manvolnum></citerefentry> and <citerefentry> + <refentrytitle>winbindd</refentrytitle><manvolnum>8</manvolnum></citerefentry> manual pages. + </para></listitem> + </itemizedlist> + + <para> + To request Samba server daemons to refresh their configuration, please use + <citerefentry><refentrytitle>smbcontrol</refentrytitle><manvolnum>1</manvolnum></citerefentry> utility. + </para> + +</refsect1> + +<refsect1 id="FILEFORMATSECT"> + <title>FILE FORMAT</title> + + <para> + The file consists of sections and parameters. A section begins with the name of the section in square brackets + and continues until the next section begins. Sections contain parameters of the form: +<programlisting> +<replaceable>name</replaceable> = <replaceable>value </replaceable> +</programlisting> + </para> + + <para> + The file is line-based - that is, each newline-terminated line represents either a comment, a section name or + a parameter. + </para> + + <para>Section and parameter names are not case sensitive.</para> + + <para> + Only the first equals sign in a parameter is significant. Whitespace before or after the first equals sign is + discarded. Leading, trailing and internal whitespace in section and parameter names is irrelevant. Leading + and trailing whitespace in a parameter value is discarded. Internal whitespace within a parameter value is + retained verbatim. + </para> + + <para> + Any line beginning with a semicolon (<quote>;</quote>) or a hash (<quote>#</quote>) + character is ignored, as are lines containing only whitespace. + </para> + + <para> + Any line ending in a <quote><literal>\</literal></quote> is continued on the next line in the customary UNIX fashion. + </para> + + <para> + The values following the equals sign in parameters are all either a string (no quotes needed) or a boolean, + which may be given as yes/no, 1/0 or true/false. Case is not significant in boolean values, but is preserved + in string values. Some items such as create masks are numeric. + </para> + +</refsect1> + +<refsect1> + <title>SECTION DESCRIPTIONS</title> + + <para> + Each section in the configuration file (except for the [global] section) describes a shared resource (known as + a <quote>share</quote>). The section name is the name of the shared resource and the parameters within the + section define the shares attributes. + </para> + + <para> + There are three special sections, [global], [homes] and [printers], which are described under + <emphasis>special sections</emphasis>. The following notes apply to ordinary section descriptions. + </para> + + <para> + A share consists of a directory to which access is being given plus a description of the access rights + which are granted to the user of the service. Some housekeeping options are also specifiable. + </para> + + <para> + Sections are either file share services (used by the client as an extension of their native file systems) + or printable services (used by the client to access print services on the host running the server). + </para> + + <para> + Sections may be designated <emphasis>guest</emphasis> services, in which case no password is required to + access them. A specified UNIX <emphasis>guest account</emphasis> is used to define access privileges in this + case. + </para> + + <para> + Sections other than guest services will require a password to access them. The client provides the + username. As older clients only provide passwords and not usernames, you may specify a list of usernames to + check against the password using the <literal>user =</literal> option in the share definition. For modern clients + such as Windows 95/98/ME/NT/2000, this should not be necessary. + </para> + + <para> + The access rights granted by the server are masked by the access rights granted to the specified or guest + UNIX user by the host system. The server does not grant more access than the host system grants. + </para> + + <para> + The following sample section defines a file space share. The user has write access to the path <filename + moreinfo="none">/home/bar</filename>. The share is accessed via the share name <literal>foo</literal>: +<programlisting> + <smbconfsection name="[foo]"/> + <smbconfoption name="path">/home/bar</smbconfoption> + <smbconfoption name="read only">no</smbconfoption> +</programlisting> + </para> + + <para> + The following sample section defines a printable share. The share is read-only, but printable. That is, + the only write access permitted is via calls to open, write to and close a spool file. The <emphasis>guest + ok</emphasis> parameter means access will be permitted as the default guest user (specified elsewhere): +<programlisting> + <smbconfsection name="[aprinter]"/> + <smbconfoption name="path">/var/tmp</smbconfoption> + <smbconfoption name="read only">yes</smbconfoption> + <smbconfoption name="printable">yes</smbconfoption> + <smbconfoption name="guest ok">yes</smbconfoption> +</programlisting> + </para> + +</refsect1> + +<refsect1> + <title>SPECIAL SECTIONS</title> + + <refsect2> + <title>The [global] section</title> + + <para> + Parameters in this section apply to the server as a whole, or are defaults for sections that do not + specifically define certain items. See the notes under PARAMETERS for more information. + </para> + </refsect2> + + <refsect2 id="HOMESECT"> + <title>The [homes] section</title> + + <para> + If a section called [homes] is included in the configuration file, services connecting clients + to their home directories can be created on the fly by the server. + </para> + + <para> + When the connection request is made, the existing sections are scanned. If a match is found, it is + used. If no match is found, the requested section name is treated as a username and looked up in the local + password file. If the name exists and the correct password has been given, a share is created by cloning the + [homes] section. + </para> + + <para> + Some modifications are then made to the newly created share: + </para> + + <itemizedlist> + <listitem><para> + The share name is changed from homes to the located username. + </para></listitem> + + <listitem><para> + If no path was given, the path is set to the user's home directory. + </para></listitem> + </itemizedlist> + + <para> + If you decide to use a <emphasis>path =</emphasis> line in your [homes] section, it may be useful + to use the %S macro. For example: +<programlisting> +<userinput moreinfo="none">path = /data/pchome/%S</userinput> +</programlisting> + is useful if you have different home directories for your PCs than for UNIX access. + </para> + + <para> + This is a fast and simple way to give a large number of clients access to their home directories with a minimum + of fuss. + </para> + + <para> + A similar process occurs if the requested section name is <quote>homes</quote>, except that the share + name is not changed to that of the requesting user. This method of using the [homes] section works well if + different users share a client PC. + </para> + + <para> + The [homes] section can specify all the parameters a normal service section can specify, though some make more sense + than others. The following is a typical and suitable [homes] section: +<programlisting> +<smbconfsection name="[homes]"/> +<smbconfoption name="read only">no</smbconfoption> +</programlisting> + </para> + + <para> + An important point is that if guest access is specified in the [homes] section, all home directories will be + visible to all clients <emphasis>without a password</emphasis>. In the very unlikely event that this is actually + desirable, it is wise to also specify <emphasis>read only access</emphasis>. + </para> + + <para> + The <emphasis>browseable</emphasis> flag for auto home directories will be inherited from the global browseable + flag, not the [homes] browseable flag. This is useful as it means setting <emphasis>browseable = no</emphasis> in + the [homes] section will hide the [homes] share but make any auto home directories visible. + </para> + </refsect2> + + <refsect2 id="PRINTERSSECT"> + <title>The [printers] section</title> + + <para> + This section works like [homes], but for printers. + </para> + + <para> + If a [printers] section occurs in the configuration file, users are able to connect to any printer + specified in the local host's printcap file. + </para> + + <para> + When a connection request is made, the existing sections are scanned. If a match is found, it is used. + If no match is found, but a [homes] section exists, it is used as described above. Otherwise, the requested + section name is treated as a printer name and the appropriate printcap file is scanned to see if the requested + section name is a valid printer share name. If a match is found, a new printer share is created by cloning the + [printers] section. + </para> + + <para> + A few modifications are then made to the newly created share: + </para> + + <itemizedlist> + <listitem><para>The share name is set to the located printer name</para></listitem> + + <listitem><para>If no printer name was given, the printer name is set to the located printer name</para></listitem> + + <listitem><para>If the share does not permit guest access and no username was given, the username is set + to the located printer name.</para></listitem> + </itemizedlist> + + <para> + The [printers] service MUST be printable - if you specify otherwise, the server will refuse + to load the configuration file. + </para> + + <para> + Typically the path specified is that of a world-writeable spool directory with the sticky bit set on + it. A typical [printers] entry looks like this: +<programlisting> +<smbconfsection name="[printers]"/> +<smbconfoption name="path">/var/tmp</smbconfoption> +<smbconfoption name="guest ok">yes</smbconfoption> +<smbconfoption name="printable">yes</smbconfoption> +</programlisting> + </para> + + <para> + All aliases given for a printer in the printcap file are legitimate printer names as far as the server is concerned. + If your printing subsystem doesn't work like that, you will have to set up a pseudo-printcap. This is a file + consisting of one or more lines like this: +<programlisting> +alias|alias|alias|alias... +</programlisting> + </para> + + <para> + Each alias should be an acceptable printer name for your printing subsystem. In the [global] section, + specify the new file as your printcap. The server will only recognize names found in your pseudo-printcap, + which of course can contain whatever aliases you like. The same technique could be used simply to limit access + to a subset of your local printers. + </para> + + <para> + An alias, by the way, is defined as any component of the first entry of a printcap record. Records are separated by newlines, + components (if there are more than one) are separated by vertical bar symbols (<literal>|</literal>). + </para> + + <note><para> + On SYSV systems which use lpstat to determine what printers are defined on the system you may be able to use + <literal>printcap name = lpstat</literal> to automatically obtain a list of printers. See the + <literal>printcap name</literal> option for more details. + </para></note> + </refsect2> +</refsect1> + +<refsect1> + <title>USERSHARES</title> + + <para>Starting with Samba version 3.0.23 the capability for non-root users to add, modify, and delete + their own share definitions has been added. This capability is called <emphasis>usershares</emphasis> and + is controlled by a set of parameters in the [global] section of the smb.conf. + The relevant parameters are : + </para> + + <variablelist> + <varlistentry> + <term>usershare allow guests</term> + <listitem><para>Controls if usershares can permit guest access.</para></listitem> + </varlistentry> + + <varlistentry> + <term>usershare max shares</term> + <listitem><para>Maximum number of user defined shares allowed.</para></listitem> + </varlistentry> + + <varlistentry> + <term>usershare owner only</term> + <listitem><para>If set only directories owned by the sharing user can be shared.</para></listitem> + </varlistentry> + + <varlistentry> + <term>usershare path</term> + <listitem><para>Points to the directory containing the user defined share definitions. + The filesystem permissions on this directory control who can create user defined shares.</para></listitem> + </varlistentry> + + <varlistentry> + <term>usershare prefix allow list</term> + <listitem><para>Comma-separated list of absolute pathnames restricting what directories + can be shared. Only directories below the pathnames in this list are permitted.</para></listitem> + </varlistentry> + + <varlistentry> + <term>usershare prefix deny list</term> + <listitem><para>Comma-separated list of absolute pathnames restricting what directories + can be shared. Directories below the pathnames in this list are prohibited.</para></listitem> + </varlistentry> + + <varlistentry> + <term>usershare template share</term> + <listitem><para>Names a pre-existing share used as a template for creating new usershares. + All other share parameters not specified in the user defined share definition + are copied from this named share.</para></listitem> + </varlistentry> + </variablelist> + + <para>To allow members of the UNIX group <literal>foo</literal> to create user defined + shares, create the directory to contain the share definitions as follows: + </para> + <para>Become root:</para> +<programlisting> +mkdir /usr/local/samba/lib/usershares +chgrp foo /usr/local/samba/lib/usershares +chmod 1770 /usr/local/samba/lib/usershares +</programlisting> +<para>Then add the parameters + +<programlisting> + <smbconfoption name="usershare path">/usr/local/samba/lib/usershares</smbconfoption> + <smbconfoption name="usershare max shares">10</smbconfoption> # (or the desired number of shares) +</programlisting> + + to the global + section of your <filename>smb.conf</filename>. Members of the group foo may then manipulate the user defined shares + using the following commands.</para> + + <variablelist> + <varlistentry> + <term>net usershare add sharename path [comment] [acl] [guest_ok=[y|n]]</term> + <listitem><para>To create or modify (overwrite) a user defined share.</para></listitem> + </varlistentry> + + <varlistentry> + <term>net usershare delete sharename</term> + <listitem><para>To delete a user defined share.</para></listitem> + </varlistentry> + + <varlistentry> + <term>net usershare list wildcard-sharename</term> + <listitem><para>To list user defined shares.</para></listitem> + </varlistentry> + + <varlistentry> + <term>net usershare info wildcard-sharename</term> + <listitem><para>To print information about user defined shares.</para></listitem> + </varlistentry> + </variablelist> +</refsect1> + +<refsect1> + <title>PARAMETERS</title> + + <para>Parameters define the specific attributes of sections.</para> + + <para> + Some parameters are specific to the [global] section (e.g., <emphasis>security</emphasis>). Some parameters + are usable in all sections (e.g., <emphasis>create mask</emphasis>). All others are permissible only in normal + sections. For the purposes of the following descriptions the [homes] and [printers] sections will be + considered normal. The letter <emphasis>G</emphasis> in parentheses indicates that a parameter is specific to + the [global] section. The letter <emphasis>S</emphasis> indicates that a parameter can be specified in a + service specific section. All <emphasis>S</emphasis> parameters can also be specified in the [global] section + - in which case they will define the default behavior for all services. + </para> + + <para> + Parameters are arranged here in alphabetical order - this may not create best bedfellows, but at least you can + find them! Where there are synonyms, the preferred synonym is described, others refer to the preferred + synonym. + </para> +</refsect1> + +<refsect1> + <title>VARIABLE SUBSTITUTIONS</title> + + <para> + Many of the strings that are settable in the config file can take substitutions. For example the option + <quote>path = /tmp/%u</quote> is interpreted as <quote>path = /tmp/john</quote> if the user connected with the + username john. + </para> + + <para> + These substitutions are mostly noted in the descriptions below, but there are some general substitutions + which apply whenever they might be relevant. These are: + </para> + + <variablelist> + <varlistentry> + <term>%U</term> + <listitem><para>session username (the username that the client wanted, not + necessarily the same as the one they got).</para></listitem> + </varlistentry> + + <varlistentry> + <term>%G</term> + <listitem><para>primary group name of %U.</para></listitem> + </varlistentry> + + <varlistentry> + <term>%h</term> + <listitem><para>the Internet hostname that Samba is running on.</para></listitem> + </varlistentry> + + <varlistentry> + <term>%m</term> + <listitem><para>the NetBIOS name of the client machine (very useful).</para> + + <para>This parameter is not available when Samba listens on port 445, as clients no longer + send this information. If you use this macro in an include statement on a domain that has + a Samba domain controller be sure to set in the [global] section <parameter>smb ports = + 139</parameter>. This will cause Samba to not listen on port 445 and will permit include + functionality to function as it did with Samba 2.x. + </para></listitem> + + </varlistentry> + + <varlistentry> + <term>%L</term> + <listitem><para>the NetBIOS name of the server. This allows you to change your config based on what + the client calls you. Your server can have a <quote>dual personality</quote>. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>%M</term> + <listitem><para>the Internet name of the client machine. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>%R</term> + <listitem><para>the selected protocol level after protocol negotiation. It can be one of + CORE, COREPLUS, LANMAN1, LANMAN2, NT1, + SMB2_02, SMB2_10, SMB3_00, SMB3_02, SMB3_11 + or SMB2_FF.</para></listitem> + </varlistentry> + + <varlistentry> + <term>%d</term> + <listitem><para>the process id of the current server + process.</para></listitem> + </varlistentry> + + <varlistentry> + <term>%a</term> + <listitem><para> + The architecture of the remote + machine. It currently recognizes Samba (<constant>Samba</constant>), + the Linux CIFS file system (<constant>CIFSFS</constant>), OS/2, (<constant>OS2</constant>), + Mac OS X (<constant>OSX</constant>), Windows for Workgroups (<constant>WfWg</constant>), Windows 9x/ME + (<constant>Win95</constant>), Windows NT (<constant>WinNT</constant>), + Windows 2000 (<constant>Win2K</constant>), + Windows XP (<constant>WinXP</constant>), + Windows XP 64-bit(<constant>WinXP64</constant>), + Windows 2003 including + 2003R2 (<constant>Win2K3</constant>), and Windows + Vista (<constant>Vista</constant>). Anything else will be known as + <constant>UNKNOWN</constant>.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>%I</term> + <listitem><para>the IP address of the client machine.</para> + <para>Before 4.0.0 it could contain IPv4 mapped IPv6 addresses, + now it only contains IPv4 or IPv6 addresses.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>%J</term> + <listitem><para>the IP address of the client machine, + colons/dots replaced by underscores.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>%i</term> + <listitem><para>the local IP address to which a client connected.</para> + <para>Before 4.0.0 it could contain IPv4 mapped IPv6 addresses, + now it only contains IPv4 or IPv6 addresses.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>%j</term> + <listitem><para>the local IP address to which a client connected, + colons/dots replaced by underscores.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>%T</term> + <listitem><para>the current date and time.</para></listitem> + </varlistentry> + + <varlistentry> + <term>%t</term> + <listitem><para>the current date and time in a minimal format without colons (YYYYYmmdd_HHMMSS).</para></listitem> + </varlistentry> + + <varlistentry> + <term>%D</term> + <listitem><para>name of the domain or workgroup of the current user.</para></listitem> + </varlistentry> + + <varlistentry> + <term>%w</term> + <listitem><para>the winbind separator.</para></listitem> + </varlistentry> + + <varlistentry> + <term>%$(<replaceable>envvar</replaceable>)</term> + <listitem><para>the value of the environment variable + <replaceable>envar</replaceable>.</para></listitem> + </varlistentry> + </variablelist> + + <para> + The following substitutes apply only to some configuration options (only those that are + used when a connection has been established): + </para> + + <variablelist> + <varlistentry> + <term>%S</term> + <listitem><para>the name of the current service, if any.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>%P</term> + <listitem><para>the root directory of the current service, if any.</para></listitem> + </varlistentry> + + <varlistentry> + <term>%u</term> + <listitem><para>username of the current service, if any.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>%g</term> + <listitem><para>primary group name of %u.</para></listitem> + </varlistentry> + + <varlistentry> + <term>%H</term> + <listitem><para>the home directory of the user given by %u.</para></listitem> + </varlistentry> + + <varlistentry> + <term>%N</term> + <listitem><para>This value is the same as %L.</para></listitem> + </varlistentry> + </variablelist> + + <para> + There are some quite creative things that can be done with these substitutions and other + <filename moreinfo="none">smb.conf</filename> options. + </para> +</refsect1> + +<refsect1 id="NAMEMANGLINGSECT"> + <title>NAME MANGLING</title> + + <para> + Samba supports <literal>name mangling</literal> so that DOS and Windows clients can use files that don't + conform to the 8.3 format. It can also be set to adjust the case of 8.3 format filenames. + </para> + + <para> + There are several options that control the way mangling is performed, and they are grouped here rather + than listed separately. For the defaults look at the output of the testparm program. + </para> + + <para> + These options can be set separately for each service. + </para> + + <para> + The options are: + </para> + + <variablelist> + + <varlistentry> + <term>case sensitive = yes/no/auto</term> + <listitem><para> + controls whether filenames are case sensitive. If they aren't, Samba must do a filename search and match on + passed names. The default setting of auto allows clients that support case sensitive filenames (Linux CIFSVFS + and smbclient 3.0.5 and above currently) to tell the Samba server on a per-packet basis that they wish to + access the file system in a case-sensitive manner (to support UNIX case sensitive semantics). No Windows or + DOS system supports case-sensitive filename so setting this option to auto is that same as setting it to no + for them. Default <emphasis>auto</emphasis>. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>default case = upper/lower</term> + <listitem><para> + controls what the default case is for new filenames (ie. files that don't currently exist in the filesystem). + Default <emphasis>lower</emphasis>. IMPORTANT NOTE: As part of the optimizations for directories containing + large numbers of files, the following special case applies. If the options + <smbconfoption name="case sensitive">yes</smbconfoption>, <smbconfoption name="preserve case">No</smbconfoption>, and + <smbconfoption name="short preserve case">No</smbconfoption> are set, then the case of <emphasis>all</emphasis> + incoming client filenames, not just new filenames, will be modified. See additional notes below. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>preserve case = yes/no</term> + <listitem><para> + controls whether new files (ie. files that don't currently exist in the filesystem) are created with the case + that the client passes, or if they are forced to be the <literal>default</literal> case. Default + <emphasis>yes</emphasis>. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>short preserve case = yes/no</term> + <listitem><para> + controls if new files (ie. files that don't currently exist in the filesystem) which conform to 8.3 syntax, + that is all in upper case and of suitable length, are created upper case, or if they are forced to be the + <literal>default</literal> case. This option can be used with <literal>preserve case = yes</literal> to permit + long filenames to retain their case, while short names are lowercased. Default <emphasis>yes</emphasis>. + </para></listitem> + </varlistentry> + </variablelist> + + <para> + By default, Samba 3.0 has the same semantics as a Windows NT server, in that it is case insensitive + but case preserving. As a special case for directories with large numbers of files, if the case + options are set as follows, "case sensitive = yes", "case preserve = no", "short preserve case = no" + then the "default case" option will be applied and will modify all filenames sent from the client + when accessing this share. + </para> + +</refsect1> + +<refsect1> + <title>REGISTRY-BASED CONFIGURATION</title> + + <para> + Starting with Samba version 3.2.0, the capability to + store Samba configuration in the registry is available. + The configuration is stored in the registry key + <emphasis><literal>HKLM\Software\Samba\smbconf</literal></emphasis>. + There are two levels of registry configuration: + </para> + + <orderedlist continuation="restarts" inheritnum="ignore" numeration="arabic"> + <listitem><para>Share definitions stored in registry are used. + This is triggered by setting the global + parameter <parameter>registry shares</parameter> + to <quote>yes</quote> in <emphasis>smb.conf</emphasis>. + </para> + + <para>The registry shares are loaded not at startup but + on demand at runtime by <emphasis>smbd</emphasis>. + Shares defined in <emphasis>smb.conf</emphasis> take + priority over shares of the same name defined in + registry.</para></listitem> + + <listitem> + <para>Global <emphasis>smb.conf</emphasis> + options stored in registry are used. This can be activated + in two different ways:</para> + + <para>Firstly, a registry only configuration is triggered + by setting + <smbconfoption name="config backend">registry</smbconfoption> + in the [global] section of <emphasis>smb.conf</emphasis>. + This resets everything that has been read from config files + to this point and reads the content of the global configuration + section from the registry. + This is the recommended method of using registry based + configuration.</para> + + <para>Secondly, a mixed configuration can be activated + by a special new meaning of the parameter + <smbconfoption name="include">registry</smbconfoption> + in the [global] section of <emphasis>smb.conf</emphasis>. + This reads the global options from registry with the same + priorities as for an include of a text file. + This may be especially useful in cases where an initial + configuration is needed to access the registry.</para> + + <para>Activation of global registry options automatically + activates registry shares. So in the registry only case, + shares are loaded on demand only.</para> + </listitem> + </orderedlist> + + <para> + Note: To make registry-based configurations foolproof + at least to a certain extent, the use + of <parameter>lock directory</parameter> and + <parameter>config backend</parameter> + inside the registry configuration has been disabled: + Especially by changing the + <parameter>lock directory</parameter> inside the registry + configuration, one would create a broken setup where the daemons + do not see the configuration they loaded once it is active. + </para> + + <para> + The registry configuration can be accessed with + tools like <emphasis>regedit</emphasis> or <emphasis>net (rpc) + registry</emphasis> in the key + <emphasis><literal>HKLM\Software\Samba\smbconf</literal></emphasis>. + + More conveniently, the <emphasis>conf</emphasis> subcommand of the + <citerefentry><refentrytitle>net</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> utility + offers a dedicated interface to read and write the + registry based configuration locally, i.e. directly + accessing the database file, circumventing the + server. + </para> + +</refsect1> + +<refsect1 ID="IDMAPCONSIDERATIONS"> + <title>IDENTITY MAPPING CONSIDERATIONS</title> + + <para> + In the SMB protocol, users, groups, and machines are represented by their security identifiers (SIDs). + On POSIX system Samba processes need to run under corresponding POSIX user identities and + with supplemental POSIX groups to allow access to the files owned by those users and groups. + The process of mapping SIDs to POSIX users and groups is called <emphasis>IDENTITY MAPPING</emphasis> + or, in short, <emphasis>ID MAPPING</emphasis>. + </para> + + <para> + Samba supports multiple ways to map SIDs to POSIX users and groups. The configuration is driven by + the <smbconfoption name="idmap config DOMAIN : OPTION"/> option which allows one to specify identity + mapping (idmap) options for each domain separately. + </para> + + <para> + Identity mapping modules implement different strategies for mapping of SIDs to POSIX user and group + identities. They are applicable to different use cases and scenarios. It is advised to read the documentation + of the individual identity mapping modules before choosing a specific scenario to use. Each identity + management module is documented in a separate manual page. The standard idmap backends are + tdb (<citerefentry><refentrytitle>idmap_tdb</refentrytitle><manvolnum>8</manvolnum></citerefentry>), + tdb2 (<citerefentry><refentrytitle>idmap_tdb2</refentrytitle><manvolnum>8</manvolnum></citerefentry>), + ldap (<citerefentry><refentrytitle>idmap_ldap</refentrytitle><manvolnum>8</manvolnum></citerefentry>), + rid (<citerefentry><refentrytitle>idmap_rid</refentrytitle><manvolnum>8</manvolnum></citerefentry>), + hash (<citerefentry><refentrytitle>idmap_hash</refentrytitle><manvolnum>8</manvolnum></citerefentry>), + autorid (<citerefentry><refentrytitle>idmap_autorid</refentrytitle><manvolnum>8</manvolnum></citerefentry>), + ad (<citerefentry><refentrytitle>idmap_ad</refentrytitle> <manvolnum>8</manvolnum></citerefentry>), + nss (<citerefentry><refentrytitle>idmap_nss</refentrytitle> <manvolnum>8</manvolnum></citerefentry>), and + rfc2307 (<citerefentry><refentrytitle>idmap_rfc2307</refentrytitle> <manvolnum>8</manvolnum></citerefentry>). + </para> + + <para> + Overall, ID mapping configuration should be decided carefully. Changes to the already deployed ID mapping + configuration may create the risk of losing access to the data or disclosing the data to the wrong parties. + </para> + + <para> + This example shows how to configure two domains with <citerefentry><refentrytitle>idmap_rid</refentrytitle> + <manvolnum>8</manvolnum> </citerefentry>, the principal domain and a trusted domain, + leaving the default id mapping scheme at tdb. + </para> + + <programlisting> + [global] + security = domain + workgroup = MAIN + + idmap config * : backend = tdb + idmap config * : range = 1000000-1999999 + + idmap config MAIN : backend = rid + idmap config MAIN : range = 5000000-5999999 + + idmap config TRUSTED : backend = rid + idmap config TRUSTED : range = 6000000-6999999 + </programlisting> +</refsect1> + +<refsect1> + <title>EXPLANATION OF EACH PARAMETER</title> + + <samba:parameterlist> + <!-- The URI below is resolved to local generated version of parameters.all.xml //--> + <!-- WAF build places it in bin/default/docs-xml/smbdotconf/parameters.all.xml //--> + <!-- and we redirect there via use of XML_CATALOG_FILES, see docs-xml/build/catalog.xml.in //--> + <xi:include href="http://www.samba.org/samba/smbdotconf/parameters.all.xml" parse="xml"/> + </samba:parameterlist> + +</refsect1> + +<refsect1> + <title>WARNINGS</title> + + <para> + Although the configuration file permits service names to contain spaces, your client software may not. + Spaces will be ignored in comparisons anyway, so it shouldn't be a problem - but be aware of the possibility. + </para> + + <para> + On a similar note, many clients - especially DOS clients - limit service names to eight characters. + <citerefentry><refentrytitle>smbd</refentrytitle> <manvolnum>8</manvolnum></citerefentry> has no such + limitation, but attempts to connect from such clients will fail if they truncate the service names. For this + reason you should probably keep your service names down to eight characters in length. + </para> + + <para> + Use of the <literal>[homes]</literal> and <literal>[printers]</literal> special sections make life + for an administrator easy, but the various combinations of default attributes can be tricky. Take extreme + care when designing these sections. In particular, ensure that the permissions on spool directories are + correct. + </para> + +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of the Samba suite.</para> +</refsect1> + +<refsect1> + <title>SEE ALSO</title> + <para> + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry>, <citerefentry><refentrytitle>smbpasswd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry>, <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry>, <citerefentry><refentrytitle>nmbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry>, <citerefentry><refentrytitle>winbindd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry>, <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>8</manvolnum></citerefentry>, <citerefentry><refentrytitle>samba-tool</refentrytitle> + <manvolnum>8</manvolnum></citerefentry>, <citerefentry><refentrytitle>smbclient</refentrytitle> + <manvolnum>1</manvolnum></citerefentry>, <citerefentry><refentrytitle>nmblookup</refentrytitle> + <manvolnum>1</manvolnum></citerefentry>, <citerefentry><refentrytitle>testparm</refentrytitle> + <manvolnum>1</manvolnum></citerefentry>.</para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para> + The original Samba software and related utilities were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar to the way the Linux kernel is developed. + </para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/smbcacls.1.xml b/docs-xml/manpages/smbcacls.1.xml new file mode 100644 index 0000000..ef504b4 --- /dev/null +++ b/docs-xml/manpages/smbcacls.1.xml @@ -0,0 +1,456 @@ +<?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="smbcacls.1"> + +<refmeta> + <refentrytitle>smbcacls</refentrytitle> + <manvolnum>1</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">User Commands</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>smbcacls</refname> + <refpurpose>Set or get ACLs on an NT file or directory names</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>smbcacls</command> + <arg choice="req">//server/share</arg> + <arg choice="req">/filename</arg> + + <arg choice="opt">-D|--delete=ACL</arg> + <arg choice="opt">-M|--modify=ACL</arg> + <arg choice="opt">-a|--add=ACL</arg> + <arg choice="opt">-S|--set=ACLS</arg> + <arg choice="opt">-C|--chown=USERNAME</arg> + <arg choice="opt">-G|--chgrp=GROUPNAME</arg> + <arg choice="opt">-I|--inherit=STRING</arg> + <arg choice="opt">--propagate-inheritance</arg> + <arg choice="opt">--numeric</arg> + <arg choice="opt">--sddl</arg> + <arg choice="opt">--query-security-info=INT</arg> + <arg choice="opt">--set-security-info=INT</arg> + <arg choice="opt">-t|--test-args</arg> + <arg choice="opt">--domain-sid=SID</arg> + <arg choice="opt">-x|--maximum-access</arg> + <arg choice="opt">-?|--help</arg> + <arg choice="opt">--usage</arg> + <arg choice="opt">-d|--debuglevel=DEBUGLEVEL</arg> + <arg choice="opt">--debug-stdout</arg> + <arg choice="opt">--configfile=CONFIGFILE</arg> + <arg choice="opt">--option=name=value</arg> + <arg choice="opt">-l|--log-basename=LOGFILEBASE</arg> + <arg choice="opt">--leak-report</arg> + <arg choice="opt">--leak-report-full</arg> + <arg choice="opt">-R|--name-resolve=NAME-RESOLVE-ORDER</arg> + <arg choice="opt">-O|--socket-options=SOCKETOPTIONS</arg> + <arg choice="opt">-m|--max-protocol=MAXPROTOCOL</arg> + <arg choice="opt">-n|--netbiosname=NETBIOSNAME</arg> + <arg choice="opt">--netbios-scope=SCOPE</arg> + <arg choice="opt">-W|--workgroup=WORKGROUP</arg> + <arg choice="opt">--realm=REALM</arg> + <arg choice="opt">-U|--user=[DOMAIN/]USERNAME[%PASSWORD]</arg> + <arg choice="opt">-N|--no-pass</arg> + <arg choice="opt">--password=STRING</arg> + <arg choice="opt">--pw-nt-hash</arg> + <arg choice="opt">-A|--authentication-file=FILE</arg> + <arg choice="opt">-P|--machine-pass</arg> + <arg choice="opt">--simple-bind-dn=DN</arg> + <arg choice="opt">--use-kerberos=desired|required|off</arg> + <arg choice="opt">--use-krb5-ccache=CCACHE</arg> + <arg choice="opt">--use-winbind-ccache</arg> + <arg choice="opt">--client-protection=sign|encrypt|off</arg> + <arg choice="opt">-V|--version</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>The <command>smbcacls</command> program manipulates NT Access Control + Lists (ACLs) on SMB file shares. An ACL is comprised zero or more Access + Control Entries (ACEs), which define access restrictions for a specific + user or group.</para> +</refsect1> + + +<refsect1> + <title>OPTIONS</title> + + <para>The following options are available to the <command>smbcacls</command> program. + The format of ACLs is described in the section ACL FORMAT </para> + + + <variablelist> + <varlistentry> + <term>-a|--add acl</term> + <listitem><para>Add the entries specified to the ACL. Existing + access control entries are unchanged.</para></listitem> + </varlistentry> + + + + <varlistentry> + <term>-M|--modify acl</term> + <listitem><para>Modify the mask value (permissions) for the ACEs + specified on the command line. An error will be printed for each + ACE specified that was not already present in the object's ACL. + </para></listitem> + </varlistentry> + + + + <varlistentry> + <term>-D|--delete acl</term> + <listitem><para>Delete any ACEs specified on the command line. + An error will be printed for each ACE specified that was not + already present in the object's ACL. </para></listitem> + </varlistentry> + + + + <varlistentry> + <term>-S|--set acl</term> + <listitem><para>This command sets the ACL on the object with + only what is specified on the command line. Any existing ACL + is erased. Note that the ACL specified must contain at least a revision, + type, owner and group for the call to succeed. </para></listitem> + </varlistentry> + + + + <varlistentry> + <term>-C|--chown name</term> + <listitem><para>The owner of a file or directory can be changed + to the name given using the <parameter>-C</parameter> option. + The name can be a sid in the form S-1-x-y-z or a name resolved + against the server specified in the first argument. </para> + + <para>This command is a shortcut for -M OWNER:name. + </para></listitem> + </varlistentry> + + + + <varlistentry> + <term>-G|--chgrp name</term> + <listitem><para>The group owner of a file or directory can + be changed to the name given using the <parameter>-G</parameter> + option. The name can be a sid in the form S-1-x-y-z or a name + resolved against the server specified n the first argument. + </para> + + <para>This command is a shortcut for -M GROUP:name.</para></listitem> + </varlistentry> + + + + <varlistentry> + <term>-I|--inherit allow|remove|copy</term> + <listitem><para>Set or unset the windows "Allow inheritable + permissions" check box using the <parameter>-I</parameter> + option. To set the check box pass allow. To unset the check + box pass either remove or copy. Remove will remove all + inherited ACEs. Copy will copy all the inherited ACEs. + </para></listitem> + + </varlistentry> + + <varlistentry> + <term>--propagate-inheritance</term> + <listitem><para>Add, modify, delete or set ACEs on an entire + directory tree according to the inheritance flags. Refer to the + INHERITANCE section for details. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--numeric</term> + <listitem><para>This option displays all ACL information in numeric + format. The default is to convert SIDs to names and ACE types + and masks to a readable string format. </para></listitem> + </varlistentry> + + <varlistentry> + <term>-m|--max-protocol PROTOCOL_NAME</term> + <listitem><para>This allows the user to select the + highest SMB protocol level that smbcacls will use to + connect to the server. By default this is set to + NT1, which is the highest available SMB1 protocol. + To connect using SMB2 or SMB3 protocol, use the + strings SMB2 or SMB3 respectively. Note that to connect + to a Windows 2012 server with encrypted transport selecting + a max-protocol of SMB3 is required. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-t|--test-args</term> + <listitem><para> + Don't actually do anything, only validate the correctness of + the arguments. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--query-security-info FLAGS</term> + <listitem><para>The security-info flags for queries. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--set-security-info FLAGS</term> + <listitem><para>The security-info flags for queries. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--sddl</term> + <listitem><para>Output and input acls in sddl format. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--domain-sid SID</term> + <listitem><para>SID used for sddl processing. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-x|--maximum-access</term> + <listitem><para>When displaying an ACL additionally query + the server for effective maximum permissions. Note that this + is only supported with SMB protocol version 2 or higher. + </para></listitem> + </varlistentry> + + &popt.autohelp; + &cmdline.common.samba.client; + &cmdline.common.connection; + &cmdline.common.credentials; + </variablelist> +</refsect1> + + +<refsect1> + <title>ACL FORMAT</title> + + <para>The format of an ACL is one or more entries separated by + either commas or newlines. An ACL entry is one of the following: </para> + +<para><programlisting> +REVISION:<revision number> +OWNER:<sid or name> +GROUP:<sid or name> +ACL:<sid or name>:<type>/<flags>/<mask> +</programlisting></para> + + <para>Control bits related to automatic inheritance</para> + + + <itemizedlist> + <listitem><para><emphasis>OD</emphasis> - "Owner Defaulted" - Indicates that the SID of the owner of the security descriptor was provided by a default mechanism.</para></listitem> + <listitem><para><emphasis>GD</emphasis> - "Group Defaulted" - Indicates that the SID of the security descriptor group was provided by a default mechanism.</para></listitem> + <listitem><para><emphasis>DP</emphasis> - "DACL Present" - Indicates a security descriptor that has a discretionary access control list (DACL).</para></listitem> + <listitem><para><emphasis>DD</emphasis> - "DACL Defaulted" - Indicates a security descriptor with a default DACL.</para></listitem> + <listitem><para><emphasis>SP</emphasis> - "SACL Present" - Indicates a security descriptor that has a system access control list (SACL).</para></listitem> + <listitem><para><emphasis>SD</emphasis> - "SACL Defaulted" - A default mechanism, rather than the original provider of the security descriptor, provided the SACL.</para></listitem> + <listitem><para><emphasis>DT</emphasis> - "DACL Trusted"</para></listitem> + <listitem><para><emphasis>SS</emphasis> - "Server Security"</para></listitem> + <listitem><para><emphasis>DR</emphasis> - "DACL Inheritance Required" - Indicates a required security descriptor in which the DACL is set up to support automatic propagation of inheritable access control entries (ACEs) to existing child objects.</para></listitem> + <listitem><para><emphasis>SR</emphasis> - "SACL Inheritance Required" - Indicates a required security descriptor in which the SACL is set up to support automatic propagation of inheritable ACEs to existing child objects.</para></listitem> + <listitem><para><emphasis>DI</emphasis> - "DACL Auto Inherited" - Indicates a security descriptor in which the DACL is set up to support automatic propagation of inheritable access control entries (ACEs) to existing child objects.</para></listitem> + <listitem><para><emphasis>SI</emphasis> - "SACL Auto Inherited" - Indicates a security descriptor in which the SACL is set up to support automatic propagation of inheritable ACEs to existing child objects.</para></listitem> + <listitem><para><emphasis>PD</emphasis> - "DACL Protected" - Prevents the DACL of the security descriptor from being modified by inheritable ACEs.</para></listitem> + <listitem><para><emphasis>PS</emphasis> - "SACL Protected" - Prevents the SACL of the security descriptor from being modified by inheritable ACEs.</para></listitem> + <listitem><para><emphasis>RM</emphasis> - "RM Control Valid" - Indicates that the resource manager control is valid.</para></listitem> + <listitem><para><emphasis>SR</emphasis> - "Self Relative" - Indicates a self-relative security descriptor.</para></listitem> + </itemizedlist> + + <para>The revision of the ACL specifies the internal Windows + NT ACL revision for the security descriptor. + If not specified it defaults to 1. Using values other than 1 may + cause strange behaviour. </para> + + <para>The owner and group specify the owner and group sids for the + object. If a SID in the format S-1-x-y-z is specified this is used, + otherwise the name specified is resolved using the server on which + the file or directory resides. </para> + + <para>ACEs are specified with an "ACL:" prefix, and define permissions + granted to an SID. The SID again can be specified in S-1-x-y-z format + or as a name in which case it is resolved against the server on which + the file or directory resides. The type, flags and mask values + determine the type of access granted to the SID. </para> + + <para>The type can be either ALLOWED or DENIED to allow/deny access + to the SID.</para> + + <para>The flags field defines how the ACE should be considered when + performing inheritance. <command>smbcacls</command> uses these flags + when run with <parameter>--propagate-inheritance</parameter>.</para> + + <para>Flags can be specified as decimal or hexadecimal values, or with + the respective (XX) aliases, separated by a vertical bar "|".</para> + + <itemizedlist> + <listitem><para><emphasis>(OI)</emphasis> Object Inherit 0x1</para></listitem> + <listitem><para><emphasis>(CI)</emphasis> Container Inherit 0x2</para></listitem> + <listitem><para><emphasis>(NP)</emphasis> No Propagate Inherit 0x4</para></listitem> + <listitem><para><emphasis>(IO)</emphasis> Inherit Only 0x8</para></listitem> + <listitem><para><emphasis>(I)</emphasis> ACE was inherited 0x10</para></listitem> + </itemizedlist> + + + <para>The mask is a value which expresses the access right + granted to the SID. It can be given as a decimal or hexadecimal value, + or by using one of the following text strings which map to the NT + file permissions of the same name. </para> + + <itemizedlist> + <listitem><para><emphasis>R</emphasis> - Allow read access </para></listitem> + <listitem><para><emphasis>W</emphasis> - Allow write access</para></listitem> + <listitem><para><emphasis>X</emphasis> - Execute permission on the object</para></listitem> + <listitem><para><emphasis>D</emphasis> - Delete the object</para></listitem> + <listitem><para><emphasis>P</emphasis> - Change permissions</para></listitem> + <listitem><para><emphasis>O</emphasis> - Take ownership</para></listitem> + </itemizedlist> + + + <para>The following combined permissions can be specified:</para> + + + <itemizedlist> + <listitem><para><emphasis>READ</emphasis> - Equivalent to 'RX' + permissions</para></listitem> + <listitem><para><emphasis>CHANGE</emphasis> - Equivalent to 'RXWD' permissions + </para></listitem> + <listitem><para><emphasis>FULL</emphasis> - Equivalent to 'RWXDPO' + permissions</para></listitem> + </itemizedlist> + </refsect1> + +<refsect1> + <title>INHERITANCE</title> + + <para>Per-ACE inheritance flags can be set in the ACE flags field. By + default, inheritable ACEs e.g. those marked for object inheritance (OI) + or container inheritance (CI), are not propagated to sub-files or + folders. However, with the + <parameter>--propagate-inheritance</parameter> argument specified, such + ACEs are automatically propagated according to some inheritance + rules. + <itemizedlist> + <listitem><para>Inheritable (OI)(OI) ACE flags can only be + applied to folders. </para></listitem> + <listitem><para>Any inheritable ACEs applied to sub-files or + folders are marked with the inherited (I) flag. Inheritable + ACE(s) are applied to folders unless the no propagation (NP) + flag is set. </para> + </listitem> + <listitem><para>When an ACE with the (OI) flag alone set is + propagated to a child folder the inheritance only flag (IO) is + also applied. This indicates the permissions associated with + the ACE don't apply to the folder itself (only to it's + child files). When applying the ACE to a child file the ACE is + inherited as normal.</para></listitem> + <listitem><para>When an ace with the (CI) flag alone set is + propagated to a child file there is no effect, when propagated + to a child folder it is inherited as normal. + </para></listitem> + <listitem><para>When an ACE that has both (OI) & (CI) flags + set the ACE is inherited as normal by both folders and + files.</para></listitem> + </itemizedlist></para> +<para>(OI)(READ) added to parent folder</para> +<para><programlisting> ++-parent/ (OI)(READ) +| +-file.1 (I)(READ) +| +-nested/ (OI)(IO)(I)(READ) + | +-file.2 (I)(READ) +</programlisting></para> +<para>(CI)(READ) added to parent folder</para> +<para><programlisting> ++-parent/ (CI)(READ) +| +-file.1 +| +-nested/ (CI)(I)(READ) + | +-file.2 +</programlisting></para> +<para>(OI)(CI)(READ) added to parent folder</para> +<para><programlisting> ++-parent/ (OI)(CI)(READ) +| +-file.1 (I)(READ) +| +-nested/ (OI)(CI)(I)(READ) + | +-file.2 (I)(READ) +</programlisting></para> +<para>(OI)(NP)(READ) added to parent folder</para> +<para><programlisting> ++-oi_dir/ (OI)(NP)(READ) +| +-file.1 (I)(READ) +| +-nested/ +| +-file.2 +</programlisting></para> +<para>(CI)(NP)(READ) added to parent folder</para> +<para><programlisting> ++-oi_dir/ (CI)(NP)(READ) +| +-file.1 +| +-nested/ (I)(READ) +| +-file.2 +</programlisting></para> +<para>(OI)(CI)(NP)(READ) added to parent folder</para> +<para><programlisting> ++-parent/ (CI)(OI)(NP)(READ) +| +-file.1 (I)(READ) +| +-nested/ (I)(READ) +| +-file.2 +</programlisting></para> + <para>Files and folders with protected ACLs do not allow inheritable + permissions (set with <parameter>-I</parameter>). Such objects will + not receive ACEs flagged for inheritance with (CI) or (OI).</para> + +</refsect1> + +<refsect1> + <title>EXIT STATUS</title> + + <para>The <command>smbcacls</command> program sets the exit status + depending on the success or otherwise of the operations performed. + The exit status may be one of the following values. </para> + + <para>If the operation succeeded, smbcacls returns and exit + status of 0. If <command>smbcacls</command> couldn't connect to the specified server, + or there was an error getting or setting the ACLs, an exit status + of 1 is returned. If there was an error parsing any command line + arguments, an exit status of 2 is returned. </para> +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of the Samba suite.</para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + + <para><command>smbcacls</command> was written by Andrew Tridgell + and Tim Potter.</para> + + <para>The conversion to DocBook for Samba 2.2 was done + by Gerald Carter. The conversion to DocBook XML 4.2 for Samba 3.0 was done + by Alexander Bokovoy.</para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/smbclient.1.xml b/docs-xml/manpages/smbclient.1.xml new file mode 100644 index 0000000..40f9d89 --- /dev/null +++ b/docs-xml/manpages/smbclient.1.xml @@ -0,0 +1,1210 @@ +<?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="smbclient.1"> + +<refmeta> + <refentrytitle>smbclient</refentrytitle> + <manvolnum>1</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">User Commands</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>smbclient</refname> + <refpurpose>ftp-like client to access SMB/CIFS resources + on servers</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>smbclient</command> + <arg choice="opt">-M|--message=HOST</arg> + <arg choice="opt">-I|--ip-address=IP</arg> + <arg choice="opt">-E|--stderr</arg> + <arg choice="opt">-L|--list=HOST</arg> + <arg choice="opt">-T|--tar=<c|x>IXFvgbNan</arg> + <arg choice="opt">-D|--directory=DIR</arg> + <arg choice="opt">-b|--send-buffer=BYTES</arg> + <arg choice="opt">-t|--timeout=SECONDS</arg> + <arg choice="opt">-p|--port=PORT</arg> + <arg choice="opt">-g|--grepable</arg> + <arg choice="opt">-q|--quiet</arg> + <arg choice="opt">-B|--browse</arg> + <arg choice="opt">-?|--help</arg> + <arg choice="opt">--usage</arg> + <arg choice="opt">-d|--debuglevel=DEBUGLEVEL</arg> + <arg choice="opt">--debug-stdout</arg> + <arg choice="opt">-s|--configfile=CONFIGFILE</arg> + <arg choice="opt">--option=name=value</arg> + <arg choice="opt">-l|--log-basename=LOGFILEBASE</arg> + <arg choice="opt">--leak-report</arg> + <arg choice="opt">--leak-report-full</arg> + <arg choice="opt">-R|--name-resolve=NAME-RESOLVE-ORDER</arg> + <arg choice="opt">-O|--socket-options=SOCKETOPTIONS</arg> + <arg choice="opt">-m|--max-protocol=MAXPROTOCOL</arg> + <arg choice="opt">-n|--netbiosname=NETBIOSNAME</arg> + <arg choice="opt">--netbios-scope=SCOPE</arg> + <arg choice="opt">-W|--workgroup=WORKGROUP</arg> + <arg choice="opt">--realm=REALM</arg> + <arg choice="opt">-U|--user=[DOMAIN/]USERNAME%[PASSWORD]</arg> + <arg choice="opt">-N|--no-pass</arg> + <arg choice="opt">--password=STRING</arg> + <arg choice="opt">--pw-nt-hash</arg> + <arg choice="opt">-A|--authentication-file=FILE</arg> + <arg choice="opt">-P|--machine-pass</arg> + <arg choice="opt">--simple-bind-dn=DN</arg> + <arg choice="opt">--use-kerberos=desired|required|off</arg> + <arg choice="opt">--use-krb5-ccache=CCACHE</arg> + <arg choice="opt">--use-winbind-ccache</arg> + <arg choice="opt">--client-protection=sign|encrypt|off</arg> + <arg choice="opt">-V|--version</arg> + <arg choice="opt">-c|--command=STRING</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><command>smbclient</command> is a client that can + 'talk' to an SMB/CIFS server. It offers an interface + similar to that of the ftp program (see <citerefentry><refentrytitle>ftp</refentrytitle> + <manvolnum>1</manvolnum></citerefentry>). + Operations include things like getting files from the server + to the local machine, putting files from the local machine to + the server, retrieving directory information from the server + and so on. </para> +</refsect1> + + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + <varlistentry> + <term>servicename</term> + <listitem><para>servicename is the name of the service + you want to use on the server. A service name takes the form + <filename>//server/service</filename> where <parameter>server + </parameter> is the NetBIOS name of the SMB/CIFS server + offering the desired service and <parameter>service</parameter> + is the name of the service offered. Thus to connect to + the service "printer" on the SMB/CIFS server "smbserver", + you would use the servicename <filename>//smbserver/printer + </filename></para> + + <para>Note that the server name required is NOT necessarily + the IP (DNS) host name of the server ! The name required is + a NetBIOS server name, which may or may not be the + same as the IP hostname of the machine running the server. + </para> + + <para>The server name is looked up according to either + the <parameter>-R|--name-resolve</parameter> parameter to <command>smbclient</command> or + using the name resolve order parameter in + the <citerefentry><refentrytitle>smb.conf</refentrytitle> + <manvolnum>5</manvolnum></citerefentry> file, + allowing an administrator to change the order and methods + by which server names are looked up. </para></listitem> + </varlistentry> + + <varlistentry> + <term>password</term> + <listitem><para>The password required to access the specified + service on the specified server. If this parameter is + supplied, the <parameter>-N</parameter> option (suppress + password prompt) is assumed. </para> + + <para>There is no default password. If no password is supplied + on the command line (either by using this parameter or adding + a password to the <parameter>-U</parameter> option (see + below)) and the <parameter>-N</parameter> option is not + specified, the client will prompt for a password, even if + the desired service does not require one. (If no password is + required, simply press ENTER to provide a null password.) + </para> + + <para>Note: Some servers (including OS/2 and Windows for + Workgroups) insist on an uppercase password. Lowercase + or mixed case passwords may be rejected by these servers. + </para> + + <para>Be cautious about including passwords in scripts. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-M|--message NetBIOS name</term> + <listitem><para>This options allows you to send messages, using + the "WinPopup" protocol, to another computer. Once a connection is + established you then type your message, pressing ^D (control-D) to + end. </para> + + <para>If the receiving computer is running WinPopup the user will + receive the message and probably a beep. If they are not running + WinPopup the message will be lost, and no error message will + occur. </para> + + <para>The message is also automatically truncated if the message + is over 1600 bytes, as this is the limit of the protocol. + </para> + + <para> + One useful trick is to pipe the message through <command>smbclient</command>. + For example: smbclient -M FRED < mymessage.txt will send the + message in the file <filename>mymessage.txt</filename> to the + machine FRED. + </para> + + <para>You may also find the <parameter>-U</parameter> and + <parameter>-I</parameter> options useful, as they allow you to + control the FROM and TO parts of the message. </para> + + <para>See the <parameter>message command</parameter> parameter in the <citerefentry><refentrytitle>smb.conf</refentrytitle> + <manvolnum>5</manvolnum></citerefentry> for a description of how to handle incoming + WinPopup messages in Samba. </para> + + <para><emphasis>Note</emphasis>: Copy WinPopup into the startup group + on your WfWg PCs if you want them to always be able to receive + messages. </para></listitem> + </varlistentry> + + <varlistentry> + <term>-p|--port port</term> + <listitem><para>This number is the TCP port number that will be used + when making connections to the server. The standard (well-known) + TCP port number for an SMB/CIFS server is 139, which is the + default. </para></listitem> + </varlistentry> + + <varlistentry> + <term>-g|--grepable</term> + <listitem><para>This parameter provides combined with + <parameter>-L</parameter> easy parseable output that allows processing + with utilities such as grep and cut. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-m|--max-protocol protocol</term> + <listitem><para>This allows the user to select the + highest SMB protocol level that smbclient will use to + connect to the server. By default this is set to + highest available SMB3 protocol version. + To connect using SMB2 or SMB1 protocol, use the + strings SMB2 or NT1 respectively. Note that to connect + to a Windows 2012 server with encrypted transport selecting + a max-protocol of SMB3 is required. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-P|--machine-pass</term> + <listitem><para> + Make queries to the external server using the machine account of the local server. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-I|--ip-address IP-address</term> + <listitem><para><replaceable>IP address</replaceable> is the address of the server to connect to. + It should be specified in standard "a.b.c.d" notation. </para> + + <para>Normally the client would attempt to locate a named + SMB/CIFS server by looking it up via the NetBIOS name resolution + mechanism described above in the <parameter>name resolve order</parameter> + parameter above. Using this parameter will force the client + to assume that the server is on the machine with the specified IP + address and the NetBIOS name component of the resource being + connected to will be ignored. </para> + + <para>There is no default for this parameter. If not supplied, + it will be determined automatically by the client as described + above. </para></listitem> + </varlistentry> + + <varlistentry> + <term>-E|--stderr</term> + <listitem><para>This parameter causes the client to write messages + to the standard error stream (stderr) rather than to the standard + output stream. </para> + + <para>By default, the client writes messages to standard output + - typically the user's tty. </para></listitem> + </varlistentry> + + <varlistentry> + <term>-L|--list</term> + <listitem><para>This option allows you to look at what services + are available on a server. You use it as <command>smbclient -L + host</command> and a list should appear. The <parameter>-I + </parameter> option may be useful if your NetBIOS names don't + match your TCP/IP DNS host names or if you are trying to reach a + host on another network. </para></listitem> + </varlistentry> + + <varlistentry> + <term>-b|--send-buffer buffersize</term> + <listitem><para> + When sending or receiving files, smbclient uses an + internal buffer sized by the maximum number of allowed requests + to the connected server. This command allows this size to be set to any + range between 0 (which means use the default server controlled size) bytes + and 16776960 (0xFFFF00) bytes. Using the server controlled size is the + most efficient as smbclient will pipeline as many simultaneous reads or + writes needed to keep the server as busy as possible. Setting this to + any other size will slow down the transfer. This can also be set + using the <command>iosize</command> command inside smbclient. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-B|--browse</term> + <listitem><para>Browse SMB servers using DNS.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>-t|--timeout <timeout-seconds></term> + <listitem><para>This allows the user to tune the default + timeout used for each SMB request. The default setting is + 20 seconds. Increase it if requests to the server sometimes + time out. This can happen when SMB3 encryption is selected + and smbclient is overwhelming the server with requests. + This can also be set using the <command>timeout</command> + command inside smbclient. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-T|--tar tar options</term> + <listitem><para>smbclient may be used to create <command>tar(1) + </command> compatible backups of all the files on an SMB/CIFS + share. The secondary tar flags that can be given to this option + are:</para> + + <itemizedlist> + <listitem><para><parameter>c</parameter> - Create a tar + backup archive on the local system. Must be followed by + the name of a tar file, tape device or "-" for standard + output. If using standard output you must turn the log + level to its lowest value -d0 to avoid corrupting your tar + file. This flag is mutually exclusive with the + <parameter>x</parameter> flag. </para></listitem> + + <listitem><para><parameter>n</parameter> - In + combination with the <parameter>c</parameter> + flag, do not actually create the archive, + instead perform a dry run that attempts + everything that involved in creation other than + writing the file.</para></listitem> + + <listitem><para><parameter>x</parameter> - Extract (restore) a local + tar file back to a share. Unless the -D option is given, the tar + files will be restored from the top level of the share. Must be + followed by the name of the tar file, device or "-" for standard + input. Mutually exclusive with the <parameter>c</parameter> flag. + Restored files have their creation times (mtime) set to the + date saved in the tar file. Directories currently do not get + their creation dates restored properly. </para></listitem> + + <listitem><para><parameter>I</parameter> - Include files and directories. + Is the default behavior when filenames are specified above. Causes + files to be included in an extract or create (and therefore + everything else to be excluded). See example below. Filename globbing + works in one of two ways. See <parameter>r</parameter> below. </para></listitem> + + <listitem><para><parameter>X</parameter> - Exclude files and directories. + Causes files to be excluded from an extract or create. See + example below. Filename globbing works in one of two ways. + See <parameter>r</parameter> below. </para></listitem> + + <listitem><para><parameter>F</parameter> - File containing a list of files and directories. + The <parameter>F</parameter> causes the name following the tarfile to + create to be read as a filename that contains a list of files and directories to + be included in an extract or create (and therefore everything else to be excluded). + See example below. Filename globbing works in one of two ways. + See <parameter>r</parameter> below. + </para></listitem> + + <listitem><para><parameter>b</parameter> - Blocksize. Must be followed + by a valid (greater than zero) blocksize. Causes tar file to be + written out in blocksize*TBLOCK (512 byte) blocks. + </para></listitem> + + <listitem><para><parameter>g</parameter> - Incremental. Only back up + files that have the archive bit set. Useful only with the + <parameter>c</parameter> flag. </para></listitem> + + <listitem><para><parameter>v</parameter> - Verbose. Makes tar + print out the files being processed. By default tar is not verbose. + This is the same as tarmode verbose. + </para></listitem> + + <listitem><para><parameter>r</parameter> - Use wildcard + matching to include or exclude. Deprecated. + </para></listitem> + + <listitem><para><parameter>N</parameter> - Newer than. Must be followed + by the name of a file whose date is compared against files found + on the share during a create. Only files newer than the file + specified are backed up to the tar file. Useful only with the + <parameter>c</parameter> flag. </para></listitem> + + <listitem><para><parameter>a</parameter> - Set archive bit. Causes the + archive bit to be reset when a file is backed up. Useful with the + <parameter>g</parameter> and <parameter>c</parameter> flags. + </para></listitem> + + </itemizedlist> + + <para><emphasis>Tar Long File Names</emphasis></para> + + <para><command>smbclient</command>'s tar option now supports long + file names both on backup and restore. However, the full path + name of the file must be less than 1024 bytes. Also, when + a tar archive is created, <command>smbclient</command>'s tar option places all + files in the archive with relative names, not absolute names. + </para> + + <para><emphasis>Tar Filenames</emphasis></para> + + <para>All file names can be given as DOS path names (with '\\' + as the component separator) or as UNIX path names (with '/' as + the component separator). </para> + + <para><emphasis>Examples</emphasis></para> + + <para>Restore from tar file <filename>backup.tar</filename> into myshare on mypc + (no password on share). </para> + + <para><command>smbclient //mypc/myshare "" -N -Tx backup.tar + </command></para> + + <para>Restore everything except <filename>users/docs</filename> + </para> + + <para><command>smbclient //mypc/myshare "" -N -TXx backup.tar + users/docs</command></para> + + <para>Create a tar file of the files beneath <filename> + users/docs</filename>. </para> + + <para><command>smbclient //mypc/myshare "" -N -Tc + backup.tar users/docs </command></para> + + <para>Create the same tar file as above, but now use + a DOS path name. </para> + + <para><command>smbclient //mypc/myshare "" -N -Tc backup.tar + users\edocs </command></para> + + <para>Create a tar file of the files listed in the file <filename>tarlist</filename>.</para> + + <para><command>smbclient //mypc/myshare "" -N -TcF + backup.tar tarlist</command></para> + + <para>Create a tar file of all the files and directories in + the share. </para> + + <para><command>smbclient //mypc/myshare "" -N -Tc backup.tar * + </command></para> + </listitem> + </varlistentry> + + <varlistentry> + <term>-D|--directory initial directory</term> + <listitem><para>Change to initial directory before starting. Probably + only of any use with the tar -T option. </para></listitem> + </varlistentry> + + <varlistentry> + <term>-c|--command command string</term> + <listitem><para>command string is a semicolon-separated list of + commands to be executed instead of prompting from stdin. <parameter> + -N</parameter> is implied by <parameter>-c</parameter>.</para> + + <para>This is particularly useful in scripts and for printing stdin + to the server, e.g. <command>-c 'print -'</command>. </para></listitem> + </varlistentry> + + &popt.autohelp; + &cmdline.common.samba.client; + &cmdline.common.connection; + &cmdline.common.credentials; + </variablelist> +</refsect1> + + +<refsect1> + <title>OPERATIONS</title> + + <para>Once the client is running, the user is presented with + a prompt : </para> + + <para><prompt>smb:\> </prompt></para> + + <para>The backslash ("\\") indicates the current working directory + on the server, and will change if the current working directory + is changed. </para> + + <para>The prompt indicates that the client is ready and waiting to + carry out a user command. Each command is a single word, optionally + followed by parameters specific to that command. Command and parameters + are space-delimited unless these notes specifically + state otherwise. All commands are case-insensitive. Parameters to + commands may or may not be case sensitive, depending on the command. + </para> + + <para>You can specify file names which have spaces in them by quoting + the name with double quotes, for example "a long file name". </para> + + <para>Parameters shown in square brackets (e.g., "[parameter]") are + optional. If not given, the command will use suitable defaults. Parameters + shown in angle brackets (e.g., "<parameter>") are required. + </para> + + + <para>Note that all commands operating on the server are actually + performed by issuing a request to the server. Thus the behavior may + vary from server to server, depending on how the server was implemented. + </para> + + <para>The commands available are given here in alphabetical order. </para> + + <variablelist> + <varlistentry> + <term>? [command]</term> + <listitem><para>If <replaceable>command</replaceable> is specified, the ? command will display + a brief informative message about the specified command. If no + command is specified, a list of available commands will + be displayed. </para></listitem> + </varlistentry> + + <varlistentry> + <term>! [shell command]</term> + <listitem><para>If <replaceable>shell command</replaceable> is specified, the ! + command will execute a shell locally and run the specified shell + command. If no command is specified, a local shell will be run. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>allinfo file</term> + <listitem><para>The client will request that the server return + all known information about a file or directory (including streams). + </para></listitem> + </varlistentry> + + <varlistentry> + <term>altname file</term> + <listitem><para>The client will request that the server return + the "alternate" name (the 8.3 name) for a file or directory. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>archive <number></term> + <listitem><para>Sets the archive level when operating on files. + 0 means ignore the archive bit, 1 means only operate on files with this bit set, + 2 means only operate on files with this bit set and reset it after operation, + 3 means operate on all files and reset it after operation. The default is 0. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>backup</term> + <listitem><para>Toggle the state of the "backup intent" flag + sent to the server on directory listings and file opens. If + the "backup intent" flag is true, the server will try and + bypass some file system checks if the user has been granted + SE_BACKUP or SE_RESTORE privileges. This state is useful when + performing a backup or restore operation. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>blocksize <number></term> + <listitem><para>Sets the blocksize parameter for a tar operation. The default is 20. + Causes tar file to be written out in blocksize*TBLOCK (normally 512 byte) units. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>cancel jobid0 [jobid1] ... [jobidN]</term> + <listitem><para>The client will request that the server cancel + the printjobs identified by the given numeric print job ids. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>case_sensitive</term> + <listitem><para>Toggles the setting of the flag in SMB packets that + tells the server to treat filenames as case sensitive. Set to OFF by + default (tells file server to treat filenames as case insensitive). Only + currently affects Samba 3.0.5 and above file servers with the case sensitive + parameter set to auto in the smb.conf. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>cd <directory name></term> + <listitem><para>If "directory name" is specified, the current + working directory on the server will be changed to the directory + specified. This operation will fail if for any reason the specified + directory is inaccessible. </para> + + <para>If no directory name is specified, the current working + directory on the server will be reported. </para></listitem> + </varlistentry> + + <varlistentry> + <term>chmod file mode in octal</term> + <listitem><para>This command depends on the server supporting the CIFS + UNIX extensions and will fail if the server does not. The client requests that the server + change the UNIX permissions to the given octal mode, in standard UNIX format. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>chown file uid gid</term> + <listitem><para>This command depends on the server supporting the CIFS + UNIX extensions and will fail if the server does not. The client requests that the server + change the UNIX user and group ownership to the given decimal values. Note there is + currently no way to remotely look up the UNIX uid and gid values for a given name. + This may be addressed in future versions of the CIFS UNIX extensions. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>close <fileid></term> + <listitem><para>Closes a file explicitly opened by the open command. Used for + internal Samba testing purposes. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>del <mask></term> + <listitem><para>The client will request that the server attempt + to delete all files matching <replaceable>mask</replaceable> from the current working + directory on the server. </para></listitem> + </varlistentry> + + <varlistentry> + <term>deltree <mask></term> + <listitem><para>The client will request that the server attempt + to delete all files and directories matching <replaceable>mask</replaceable> from the current working + directory on the server. Note this will recursively delete files and directories within + the directories selected even without the recurse command being set. If any of the delete + requests fail the command will stop processing at that point, leaving files and directories + not yet processed untouched. This is by design.</para></listitem> + </varlistentry> + + <varlistentry> + <term>dir <mask></term> + <listitem><para>A list of the files matching <replaceable>mask</replaceable> in the current + working directory on the server will be retrieved from the server + and displayed. </para></listitem> + </varlistentry> + + <varlistentry> + <term>du <filename></term> + <listitem><para>Does a directory listing and then prints out the current disk usage and free space on a share. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>echo <number> <data></term> + <listitem><para>Does an SMBecho request to ping the server. Used for internal Samba testing purposes. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>exit</term> + <listitem><para>Terminate the connection with the server and exit + from the program. </para></listitem> + </varlistentry> + + <varlistentry> + <term>get <remote file name> [local file name]</term> + <listitem><para>Copy the file called <filename>remote file name</filename> from + the server to the machine running the client. If specified, name + the local copy <filename>local file name</filename>. Note that all transfers in + <command>smbclient</command> are binary. See also the + lowercase command. </para></listitem> + </varlistentry> + + <varlistentry> + <term>getfacl <filename></term> + <listitem><para>Requires the server support the UNIX extensions. Requests and prints + the POSIX ACL on a file. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>hardlink <src> <dest></term> + <listitem><para>Creates a hardlink on the server using Windows CIFS semantics. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>help [command]</term> + <listitem><para>See the ? command above. </para></listitem> + </varlistentry> + + <varlistentry> + <term>history</term> <listitem><para>Displays the command history.</para></listitem> + </varlistentry> + + <varlistentry> + <term>iosize <bytes></term> + <listitem><para> + When sending or receiving files, smbclient uses an + internal buffer sized by the maximum number of allowed requests + to the connected server. This command allows this size to be set to any + range between 0 (which means use the default server controlled size) bytes + and 16776960 (0xFFFF00) bytes. Using the server controlled size is the + most efficient as smbclient will pipeline as many simultaneous reads or + writes needed to keep the server as busy as possible. Setting this to + any other size will slow down the transfer. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>lcd [directory name]</term> + <listitem><para>If <replaceable>directory name</replaceable> is specified, the current + working directory on the local machine will be changed to + the directory specified. This operation will fail if for any + reason the specified directory is inaccessible. </para> + + <para>If no directory name is specified, the name of the + current working directory on the local machine will be reported. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>link target linkname</term> + <listitem><para>This command depends on the server supporting the CIFS + UNIX extensions and will fail if the server does not. The client requests that the server + create a hard link between the linkname and target files. The linkname file + must not exist. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>listconnect</term> + <listitem><para>Show the current connections held for DFS purposes. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>lock <filenum> <r|w> <hex-start> <hex-len></term> + <listitem><para>This command depends on the server supporting the CIFS + UNIX extensions and will fail if the server does not. Tries to set a POSIX + fcntl lock of the given type on the given range. Used for internal Samba testing purposes. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>logon <username> <password></term> + <listitem><para>Establishes a new vuid for this session by logging on again. + Replaces the current vuid. Prints out the new vuid. Used for internal Samba testing purposes. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>logoff</term> + <listitem><para>Logs the user off the server, closing the session. + Used for internal Samba testing purposes. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>lowercase</term> + <listitem><para>Toggle lowercasing of filenames for the get and + mget commands. + </para> + + <para>When lowercasing is toggled ON, local filenames are converted + to lowercase when using the get and mget commands. This is + often useful when copying (say) MSDOS files from a server, because + lowercase filenames are the norm on UNIX systems. </para></listitem> + </varlistentry> + + <varlistentry> + <term>ls <mask></term> + <listitem><para>See the dir command above. </para></listitem> + </varlistentry> + + <varlistentry> + <term>mask <mask></term> + <listitem><para>This command allows the user to set up a mask + which will be used during recursive operation of the mget and + mput commands. </para> + + <para>The masks specified to the mget and mput commands act as + filters for directories rather than files when recursion is + toggled ON. </para> + + <para>The mask specified with the mask command is necessary + to filter files within those directories. For example, if the + mask specified in an mget command is "source*" and the mask + specified with the mask command is "*.c" and recursion is + toggled ON, the mget command will retrieve all files matching + "*.c" in all directories below and including all directories + matching "source*" in the current working directory. </para> + + <para>Note that the value for mask defaults to blank (equivalent + to "*") and remains so until the mask command is used to change it. + It retains the most recently specified value indefinitely. To + avoid unexpected results it would be wise to change the value of + mask back to "*" after using the mget or mput commands. </para></listitem> + </varlistentry> + + <varlistentry> + <term>md <directory name></term> + <listitem><para>See the mkdir command. </para></listitem> + </varlistentry> + + <varlistentry> + <term>mget <mask></term> + <listitem><para>Copy all files matching <replaceable>mask</replaceable> from the server to + the machine running the client. </para> + + <para>Note that <replaceable>mask</replaceable> is interpreted differently during recursive + operation and non-recursive operation - refer to the recurse and + mask commands for more information. Note that all transfers in + <command>smbclient</command> are binary. See also the lowercase command. </para></listitem> + </varlistentry> + + <varlistentry> + <term>mkdir <directory name></term> + <listitem><para>Create a new directory on the server (user access + privileges permitting) with the specified name. </para></listitem> + </varlistentry> + + <varlistentry> + <term>more <file name></term> + <listitem><para>Fetch a remote file and view it with the contents + of your PAGER environment variable. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>mput <mask></term> + <listitem><para>Copy all files matching <replaceable>mask</replaceable> in the current working + directory on the local machine to the current working directory on + the server. </para> + + <para>Note that <replaceable>mask</replaceable> is interpreted differently during recursive + operation and non-recursive operation - refer to the recurse and mask + commands for more information. Note that all transfers in <command>smbclient</command> + are binary. </para></listitem> + </varlistentry> + + <varlistentry> + <term>notify <dir name></term> + <listitem><para>Query a directory for change + notifications. This command issues a recursive + filechangenotify call for all possible changes. As + changes come in will print one line per change. See + <ulink url="https://msdn.microsoft.com/en-us/library/dn392331.aspx">https://msdn.microsoft.com/en-us/library/dn392331.aspx</ulink> + for a description of the action numbers that this + command prints.</para> + <para>This command never ends, it waits for event + indefinitely. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>posix</term> + <listitem><para>Query the remote server to see if it supports the CIFS UNIX + extensions and prints out the list of capabilities supported. If so, turn + on POSIX pathname processing and large file read/writes (if available),. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>posix_encrypt <domain> <username> <password></term> + <listitem><para>This command depends on the server supporting the CIFS + UNIX extensions and will fail if the server does not. Attempt to negotiate + SMB encryption on this connection. If smbclient connected with kerberos + credentials (-k) the arguments to this command are ignored and the kerberos + credentials are used to negotiate GSSAPI signing and sealing instead. See + also the -e option to smbclient to force encryption on initial connection. + This command is new with Samba 3.2. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>posix_open <filename> <octal mode></term> + <listitem><para>This command depends on the server supporting the CIFS + UNIX extensions and will fail if the server does not. Opens a remote file + using the CIFS UNIX extensions and prints a fileid. Used for internal Samba + testing purposes. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>posix_mkdir <directoryname> <octal mode></term> + <listitem><para>This command depends on the server supporting the CIFS + UNIX extensions and will fail if the server does not. Creates a remote directory + using the CIFS UNIX extensions with the given mode. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>posix_rmdir <directoryname></term> + <listitem><para>This command depends on the server supporting the CIFS + UNIX extensions and will fail if the server does not. Deletes a remote directory + using the CIFS UNIX extensions. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>posix_unlink <filename></term> + <listitem><para>This command depends on the server supporting the CIFS + UNIX extensions and will fail if the server does not. Deletes a remote file + using the CIFS UNIX extensions. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>posix_whoami</term> + <listitem><para>Query the remote server for the user token using the CIFS UNIX + extensions WHOAMI call. Prints out the guest status, user, group, group list and + sid list that the remote server is using on behalf of the logged on user. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>print <file name></term> + <listitem><para>Print the specified file from the local machine + through a printable service on the server. </para></listitem> + </varlistentry> + + <varlistentry> + <term>prompt</term> + <listitem><para>Toggle prompting for filenames during operation + of the mget and mput commands. </para> + + <para>When toggled ON, the user will be prompted to confirm + the transfer of each file during these commands. When toggled + OFF, all specified files will be transferred without prompting. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>put <local file name> [remote file name]</term> + <listitem><para>Copy the file called <filename>local file name</filename> from the + machine running the client to the server. If specified, + name the remote copy <filename>remote file name</filename>. Note that all transfers + in <command>smbclient</command> are binary. See also the lowercase command. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>queue</term> + <listitem><para>Displays the print queue, showing the job id, + name, size and current status. </para></listitem> + </varlistentry> + + <varlistentry> + <term>quit</term> + <listitem><para>See the exit command. </para></listitem> + </varlistentry> + + <varlistentry> + <term>readlink symlinkname</term> + <listitem><para>This command depends on the server supporting the CIFS + UNIX extensions and will fail if the server does not. Print + the value of the symlink "symlinkname". + </para></listitem> + </varlistentry> + + <varlistentry> + <term>rd <directory name></term> + <listitem><para>See the rmdir command. </para></listitem> + </varlistentry> + + <varlistentry> + <term>recurse</term> + <listitem><para>Toggle directory recursion for the commands mget + and mput. </para> + + <para>When toggled ON, these commands will process all directories + in the source directory (i.e., the directory they are copying + from ) and will recurse into any that match the mask specified + to the command. Only files that match the mask specified using + the mask command will be retrieved. See also the mask command. + </para> + + <para>When recursion is toggled OFF, only files from the current + working directory on the source machine that match the mask specified + to the mget or mput commands will be copied, and any mask specified + using the mask command will be ignored. </para></listitem> + </varlistentry> + + <varlistentry> + <term>rename <old filename> <new filename> [-f]</term> + <listitem><para>Rename files in the current working directory on the + server from <replaceable>old filename</replaceable> to + <replaceable>new filename</replaceable>. The optional + -f switch allows for superseding the destination file, + if it exists. This is supported by NT1 protocol dialect + and SMB2 protocol family.</para></listitem> + </varlistentry> + + <varlistentry> + <term>rm <mask></term> + <listitem><para>Remove all files matching <replaceable>mask</replaceable> from the current + working directory on the server. </para></listitem> + </varlistentry> + + <varlistentry> + <term>rmdir <directory name></term> + <listitem><para>Remove the specified directory (user access + privileges permitting) from the server. </para></listitem> + </varlistentry> + + <varlistentry> + <term>scopy <source filename> <destination filename></term> + <listitem><para>Attempt to copy a file on the server using the + most efficient server-side copy calls. Falls back to using + read then write if server doesn't support server-side copy. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>setmode <filename> <perm=[+|\-]rsha></term> + <listitem><para>A version of the DOS attrib command to set + file permissions. For example: </para> + + <para><command>setmode myfile +r </command></para> + + <para>would make myfile read only. </para></listitem> + </varlistentry> + + <varlistentry> + <term>showconnect</term> + <listitem><para>Show the currently active connection held for DFS purposes. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>stat file</term> + <listitem><para>This command depends on the server supporting the CIFS + UNIX extensions and will fail if the server does not. The client requests the + UNIX basic info level and prints out the same info that the Linux stat command + would about the file. This includes the size, blocks used on disk, file type, + permissions, inode number, number of links and finally the three timestamps + (access, modify and change). If the file is a special file (symlink, character or + block device, fifo or socket) then extra information may also be printed. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>symlink target linkname</term> + <listitem><para>This command depends on the server supporting the CIFS + UNIX extensions and will fail if the server does not. The client requests that the server + create a symbolic hard link between the target and linkname files. The linkname file + must not exist. Note that the server will not create a link to any path that lies + outside the currently connected share. This is enforced by the Samba server. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>tar <c|x>[IXbgNa]</term> + <listitem><para>Performs a tar operation - see the + <parameter>-T</parameter> command line option above. Behavior + may be affected by the tarmode command (see below). Using g + (incremental) and N (newer) will affect tarmode settings. Note + that using the "-" option with tar x may not work - use the + command line option instead.</para></listitem> + </varlistentry> + + <varlistentry> + <term>blocksize <blocksize></term> + <listitem><para>Blocksize. Must be followed by a valid (greater + than zero) blocksize. Causes tar file to be written out in + <replaceable>blocksize</replaceable>*TBLOCK (512 byte) blocks. </para></listitem> + </varlistentry> + + <varlistentry> + <term>tarmode <full|inc|reset|noreset|system|nosystem|hidden|nohidden|verbose|noverbose></term> + <listitem><para>Changes tar's behavior with regard to DOS + attributes. There are 4 modes which can be turned on or + off.</para> + + <para>Incremental mode (default off). When off (using + <command>full</command>) tar will back up everything + regardless of the <emphasis>archive</emphasis> bit + setting. When on (using <command>inc</command>), tar will only + back up files with the archive bit set.</para> + + <para>Reset mode (default off). When on (using + <command>reset</command>), tar will remove the archive bit on + all files it backs up (implies read/write share). Use + <command>noreset</command> to turn off.</para> + + <para>System mode (default on). When off, tar will not backup + system files. Use <command>nosystem</command> to turn off.</para> + + <para>Hidden mode (default on). When off, tar will not backup + hidden files. Use <command>nohidden</command> to turn off.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>timeout <per-operation timeout in seconds></term> + <listitem><para>This allows the user to tune the default + timeout used for each SMB request. The default setting is + 20 seconds. Increase it if requests to the server sometimes + time out. This can happen when SMB3 encryption is selected + and smbclient is overwhelming the server with requests. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>unlock <filenum> <hex-start> <hex-len></term> + <listitem><para>This command depends on the server supporting the CIFS + UNIX extensions and will fail if the server does not. Tries to unlock a POSIX + fcntl lock on the given range. Used for internal Samba testing purposes. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>volume</term> + <listitem><para>Prints the current volume name of the share. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>vuid <number></term> + <listitem><para>Changes the currently used vuid in the protocol to + the given arbitrary number. Without an argument prints out the current + vuid being used. Used for internal Samba testing purposes. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>tcon <sharename></term> + <listitem><para>Establishes a new tree connect (connection to a share). + Replaces the current tree connect. Prints the new tid (tree id). + Used for internal Samba testing purposes. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>tdis</term> + <listitem><para>Close the current share connection (tree disconnect). + Used for internal Samba testing purposes. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>tid <number></term> + <listitem><para>Changes the current tree id (tid) in the + protocol to a new arbitrary number. Without an argument, it + prints out the tid currently used. + Used for internal Samba testing purposes. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>utimes <filename> <create time> <access time> <write time> < + change time></term> + <listitem><para>Changes the timestamps on a file by name. + Times should be specified in the format [YY]YY:MM:DD-HH:MM:SS or -1 for no change. + </para></listitem> + </varlistentry> + + </variablelist> +</refsect1> + +<refsect1> + <title>NOTES</title> + + <para>Some servers are fussy about the case of supplied usernames, + passwords, share names (AKA service names) and machine names. + If you fail to connect try giving all parameters in uppercase. + </para> + + <para>It is often necessary to use the -n option when connecting + to some types of servers. For example OS/2 LanManager insists + on a valid NetBIOS name being used, so you need to supply a valid + name that would be known to the server.</para> + + <para>smbclient supports long file names where the server + supports the LANMAN2 protocol or above. </para> +</refsect1> + +<refsect1> + <title>ENVIRONMENT VARIABLES</title> + + <para>See the <command>--user</command> and + <command>--password</command> options for details on ways to + specify a username and password via an environment variable. + </para> +</refsect1> + + +<refsect1> + <title>INSTALLATION</title> + + <para>The location of the client program is a matter for + individual system administrators. The following are thus + suggestions only. </para> + + <para>It is recommended that the smbclient software be installed + in the <filename>/usr/local/samba/bin/</filename> or <filename> + /usr/samba/bin/</filename> directory, this directory readable + by all, writeable only by root. The client program itself should + be executable by all. The client should <emphasis>NOT</emphasis> be + setuid or setgid! </para> + + <para>The client log files should be put in a directory readable + and writeable only by the user. </para> + + <para>To test the client, you will need to know the name of a + running SMB/CIFS server. It is possible to run <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> as an ordinary user - running that server as a daemon + on a user-accessible port (typically any port number over 1024) + would provide a suitable test server. </para> +</refsect1> + + +<refsect1> + <title>DIAGNOSTICS</title> + + <para>Most diagnostics issued by the client are logged in a + specified log file. The log file name is specified at compile time, + but may be overridden on the command line. </para> + + <para>The number and nature of diagnostics available depends + on the debug level used by the client. If you have problems, + set the debug level to 3 and peruse the log files. </para> +</refsect1> + + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of the Samba suite.</para> +</refsect1> + + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/smbcontrol.1.xml b/docs-xml/manpages/smbcontrol.1.xml new file mode 100644 index 0000000..4b5d90c --- /dev/null +++ b/docs-xml/manpages/smbcontrol.1.xml @@ -0,0 +1,363 @@ +<?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="smbcontrol.1"> + +<refmeta> + <refentrytitle>smbcontrol</refentrytitle> + <manvolnum>1</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">User Commands</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>smbcontrol</refname> + <refpurpose>send messages to smbd, nmbd or winbindd processes</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>smbcontrol</command> + <arg choice="opt">-?|--help</arg> + <arg choice="opt">--usage</arg> + <arg choice="opt">-t|--timeout</arg> + <arg choice="opt">-d|--debuglevel=DEBUGLEVEL</arg> + <arg choice="opt">--debug-stdout</arg> + <arg choice="opt">--configfile=CONFIGFILE</arg> + <arg choice="opt">--option=name=value</arg> + <arg choice="opt">-l|--log-basename=LOGFILEBASE</arg> + <arg choice="opt">--leak-report</arg> + <arg choice="opt">--leak-report-full</arg> + </cmdsynopsis> + + <cmdsynopsis> + <command>smbcontrol</command> + <arg>destination</arg> + <arg>message-type</arg> + <arg>parameter</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><command>smbcontrol</command> is a very small program, which + sends messages to a <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry>, a <citerefentry><refentrytitle>nmbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry>, or a <citerefentry><refentrytitle>winbindd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> daemon running on the system.</para> +</refsect1> + + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + <varlistentry> + <term>-t|--timeout</term> + <listitem><para> + Set timeout to seconds. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>destination</term> + <listitem><para>One of <parameter>nmbd</parameter>, + <parameter>smbd</parameter>, <parameter>winbindd</parameter> + or a process ID.</para> + + <para>The <parameter>all</parameter> destination causes the + message to "broadcast" to all running daemons including nmbd and + winbind. This is a change for Samba 3.3, prior to this the + parameter smbd used to do this.</para> + + <para>The <parameter>smbd</parameter> destination causes the + message to be sent to the smbd daemon specified in the + <filename>smbd.pid</filename> file.</para> + + <para>The <parameter>nmbd</parameter> destination causes the + message to be sent to the nmbd daemon specified in the + <filename>nmbd.pid</filename> file.</para> + + <para>The <parameter>winbindd</parameter> destination causes the + message to be sent to the winbind daemon specified in the + <filename>winbindd.pid</filename> file.</para> + + <para>If a single process ID is given, the message is sent + to only that process.</para></listitem> + </varlistentry> + + <varlistentry> + <term>message-type</term> + <listitem><para>Type of message to send. See + the section <constant>MESSAGE-TYPES</constant> for details. + </para></listitem></varlistentry> + + <varlistentry> + <term>parameters</term> + <listitem><para>any parameters required for the message-type</para> + </listitem> + </varlistentry> + + &popt.autohelp; + &cmdline.common.samba.client; + </variablelist> + +</refsect1> + +<refsect1> + <title>MESSAGE-TYPES</title> + + <para>Available message types are:</para> + + <variablelist> + <varlistentry><term>close-share</term> + <listitem><para>Order smbd to close the client + connections to the named share. Note that this doesn't affect client + connections to any other shares. This message-type takes an argument of the + share name for which client connections will be closed, or the + "*" character which will close all currently open shares. + This may be useful if you made changes to the access controls on the share. + This message can only be sent to <constant>smbd</constant>.</para> + </listitem> + </varlistentry> + + <varlistentry><term>close-denied-share</term> + <listitem><para>Behave like <constant>close-share</constant>, + but don't disconnect users that are still allowed to access + the share. It can safely be sent to all smbds after changing + share access controls. It will only affect users who have been + denied access since having connected initially. This message + can only be sent to <constant>smbd</constant>.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>debug</term> + <listitem><para>Set debug level to the value specified by the + parameter. This can be sent to any of the destinations. If this + message is sent to either the smbd or winbindd daemons, the parent + process will rebroadcast the message to all child processes changing + the debug level in each one.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>kill-client-ip</term> + <listitem><para>Order smbd to close the client connections from a + given IP address. This message-type takes an argument of the IP + address from which client connections will be closed. This message + can only be sent to <constant>smbd</constant>.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>force-election</term> + <listitem><para>This message causes the <command>nmbd</command> daemon to + force a new browse master election. </para> + </listitem></varlistentry> + + <varlistentry> + <term>ping</term> + <listitem><para> + Send specified number of "ping" messages and + wait for the same number of reply "pong" messages. This can be sent to + any of the destinations.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>profile</term> + <listitem><para>Change profile settings of a daemon, based on the + parameter. The parameter can be "on" to turn on profile stats + collection, "off" to turn off profile stats collection, "count" + to enable only collection of count stats (time stats are + disabled), and "flush" to zero the current profile stats. This can + be sent to any smbd or nmbd destinations.</para> + </listitem></varlistentry> + + <varlistentry> + <term>debuglevel</term> + <listitem><para> + Request debuglevel of a certain daemon and write it to stdout. This + can be sent to any of the destinations.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>profilelevel</term> + <listitem><para> + Request profilelevel of a certain daemon and write it to stdout. + This can be sent to any smbd or nmbd destinations.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>printnotify</term> + <listitem><para> + Order smbd to send a printer notify message to any Windows NT clients + connected to a printer. This message-type takes the following arguments: + </para> + + <variablelist> + + <varlistentry> + <term>queuepause printername</term> + <listitem><para>Send a queue pause change notify + message to the printer specified.</para></listitem> + </varlistentry> + + <varlistentry> + <term>queueresume printername</term> + <listitem><para>Send a queue resume change notify + message for the printer specified.</para></listitem> + </varlistentry> + + <varlistentry> + <term>jobpause printername unixjobid</term> + <listitem><para>Send a job pause change notify + message for the printer and unix jobid + specified.</para></listitem> + </varlistentry> + + <varlistentry> + <term>jobresume printername unixjobid</term> + <listitem><para>Send a job resume change notify + message for the printer and unix jobid + specified.</para></listitem> + </varlistentry> + + <varlistentry> + <term>jobdelete printername unixjobid</term> + <listitem><para>Send a job delete change notify + message for the printer and unix jobid + specified.</para></listitem> + </varlistentry> + </variablelist> + + <para> + Note that this message only sends notification that an + event has occurred. It doesn't actually cause the + event to happen. + </para> + + <para>This message can only be sent to <constant>smbd</constant>. </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>dmalloc-mark</term> + <listitem><para>Set a mark for dmalloc. Can be sent to both smbd and nmbd. Only available if samba is built with dmalloc support. </para></listitem> + </varlistentry> + + <varlistentry> + <term>dmalloc-log-changed</term> + <listitem><para> + Dump the pointers that have changed since the mark set by dmalloc-mark. + Can be sent to both smbd and nmbd. Only available if samba is built with dmalloc support. </para></listitem> + </varlistentry> + + <varlistentry> + <term>shutdown</term> + <listitem><para>Shut down specified daemon. Can be sent to both smbd and nmbd.</para></listitem> + </varlistentry> + + <varlistentry> + <term>pool-usage</term> + <listitem><para>Print a human-readable description of all + talloc(pool) memory usage by the specified daemon/process. Available + for both smbd and nmbd.</para></listitem> + </varlistentry> + + <varlistentry> + <term>ringbuf-log</term> + <listitem><para>Fetch and print the ringbuf log. Requires + <parameter>logging = ringbuf</parameter>. Available for smbd, winbindd + and nmbd.</para></listitem> + </varlistentry> + + <varlistentry> + <term>drvupgrade</term> + <listitem><para>Force clients of printers using specified driver + to update their local version of the driver. Can only be + sent to smbd.</para></listitem> + </varlistentry> + + <varlistentry> + <term>reload-config</term> + <listitem><para>Force daemon to reload smb.conf configuration file. Can be sent + to <constant>smbd</constant>, <constant>nmbd</constant>, or <constant>winbindd</constant>. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>reload-printers</term> + <listitem><para>Force smbd to reload printers. Can only be sent to + <constant>smbd</constant>. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>idmap</term> + <listitem><para>Notify about changes of id mapping. Can be sent + to <constant>smbd</constant> or (not implemented yet) <constant>winbindd</constant>. + </para></listitem> + + <variablelist> + <varlistentry> + <term>flush [uid|gid]</term> + <listitem><para>Flush caches for sid <-> gid and/or sid <-> uid mapping. + </para></listitem> + </varlistentry> + <varlistentry> + <term>delete <ID></term> + <listitem><para>Remove a mapping from cache. The mapping is given by <ID> + which may either be a sid: S-x-..., a gid: "GID number" or a uid: "UID number". + </para></listitem> + </varlistentry> + <varlistentry> + <term>kill <ID></term> + <listitem><para>Remove a mapping from cache. Terminate <constant>smbd</constant> if + the id is currently in use.</para></listitem> + </varlistentry> + </variablelist> + </varlistentry> + + <varlistentry> + <term>num-children</term> + <listitem><para>Query the number of smbd child processes. This + message can only be sent + to <constant>smbd</constant>.</para></listitem> + </varlistentry> + +</variablelist> +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of + the Samba suite.</para> +</refsect1> + +<refsect1> + <title>SEE ALSO</title> + <para><citerefentry><refentrytitle>nmbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> and <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry>.</para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/smbcquotas.1.xml b/docs-xml/manpages/smbcquotas.1.xml new file mode 100644 index 0000000..b5ce53c --- /dev/null +++ b/docs-xml/manpages/smbcquotas.1.xml @@ -0,0 +1,199 @@ +<?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="smbcquotas.1"> + +<refmeta> + <refentrytitle>smbcquotas</refentrytitle> + <manvolnum>1</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">User Commands</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>smbcquotas</refname> + <refpurpose>Set or get QUOTAs of NTFS 5 shares</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>smbcquotas</command> + <arg choice="req">//server/share</arg> + <arg choice="opt">-u|--quota-user=USER</arg> + <arg choice="opt">-L|--list</arg> + <arg choice="opt">-F|--fs</arg> + <arg choice="opt">-S|--set=SETSTRING</arg> + <arg choice="opt">-n|--numeric</arg> + <arg choice="opt">-v|--verbose</arg> + <arg choice="opt">-t|--test-args</arg> + <arg choice="opt">-?|--help</arg> + <arg choice="opt">--usage</arg> + <arg choice="opt">-d|--debuglevel=DEBUGLEVEL</arg> + <arg choice="opt">--debug-stdout</arg> + <arg choice="opt">--configfile=CONFIGFILE</arg> + <arg choice="opt">--option=name=value</arg> + <arg choice="opt">-l|--log-basename=LOGFILEBASE</arg> + <arg choice="opt">--leak-report</arg> + <arg choice="opt">--leak-report-full</arg> + <arg choice="opt">-R|--name-resolve=NAME-RESOLVE-ORDER</arg> + <arg choice="opt">-O|--socket-options=SOCKETOPTIONS</arg> + <arg choice="opt">-m|--max-protocol=MAXPROTOCOL</arg> + <arg choice="opt">-n|--netbiosname=NETBIOSNAME</arg> + <arg choice="opt">--netbios-scope=SCOPE</arg> + <arg choice="opt">-W|--workgroup=WORKGROUP</arg> + <arg choice="opt">--realm=REALM</arg> + <arg choice="opt">-U|--user=[DOMAIN/]USERNAME[%PASSWORD]</arg> + <arg choice="opt">-N|--no-pass</arg> + <arg choice="opt">--password=STRING</arg> + <arg choice="opt">--pw-nt-hash</arg> + <arg choice="opt">-A|--authentication-file=FILE</arg> + <arg choice="opt">-P|--machine-pass</arg> + <arg choice="opt">--simple-bind-dn=DN</arg> + <arg choice="opt">--use-kerberos=desired|required|off</arg> + <arg choice="opt">--use-krb5-ccache=CCACHE</arg> + <arg choice="opt">--use-winbind-ccache</arg> + <arg choice="opt">--client-protection=sign|encrypt|off</arg> + <arg choice="opt">-V|--version</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>The <command>smbcquotas</command> program manipulates NT Quotas on SMB file shares. </para> +</refsect1> + + +<refsect1> + <title>OPTIONS</title> + + <para>The following options are available to the <command>smbcquotas</command> program. </para> + + + <variablelist> + <varlistentry> + <term>-u|--quota-user user</term> + <listitem><para> Specifies the user of whom the quotas are get or set. + By default the current user's username will be used.</para></listitem> + </varlistentry> + + + + <varlistentry> + <term>-L|--list</term> + <listitem><para>Lists all quota records of the share.</para></listitem> + </varlistentry> + + + + <varlistentry> + <term>-F|--fs</term> + <listitem><para>Show the share quota status and default limits.</para></listitem> + </varlistentry> + + + + <varlistentry> + <term>-S|--set QUOTA_SET_COMMAND</term> + <listitem><para>This command sets/modifies quotas for a user or on the share, + depending on the QUOTA_SET_COMMAND parameter which is described later.</para></listitem> + </varlistentry> + + + <varlistentry> + <term>-n|--numeric</term> + <listitem><para>This option displays all QUOTA information in numeric + format. The default is to convert SIDs to names and QUOTA limits + to a readable string format.</para></listitem> + </varlistentry> + + <varlistentry> + <term>-t|--test-args</term> + <listitem><para> + Don't actually do anything, only validate the correctness of the arguments. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-v|--verbose</term> + <listitem><para> + Be verbose. + </para></listitem> + </varlistentry> + + &popt.autohelp; + &cmdline.common.samba.client; + &cmdline.common.connection; + &cmdline.common.credentials; + </variablelist> +</refsect1> + + +<refsect1> + <title>QUOTA_SET_COMMAND</title> + + <para>The format of an the QUOTA_SET_COMMAND is an operation + name followed by a set of parameters specific to that operation. + </para> + + <para>To set user quotas for the user specified by -u or for the + current username: </para> + + <para><userinput> + UQLIM:<username>:<softlimit>/<hardlimit> + </userinput></para> + + <para>To set the default quotas for a share: + </para> + + <para><userinput> + FSQLIM:<softlimit>/<hardlimit> + </userinput></para> + + <para> + To change the share quota settings: + </para> + + <para><userinput> + FSQFLAGS:QUOTA_ENABLED/DENY_DISK/LOG_SOFTLIMIT/LOG_HARD_LIMIT + </userinput></para> + + <para>All limits are specified as a number of bytes.</para> +</refsect1> + +<refsect1> + <title>EXIT STATUS</title> + + <para>The <command>smbcquotas</command> program sets the exit status + depending on the success or otherwise of the operations performed. + The exit status may be one of the following values. </para> + + <para>If the operation succeeded, smbcquotas returns an exit + status of 0. If <command>smbcquotas</command> couldn't connect to the specified server, + or when there was an error getting or setting the quota(s), an exit status + of 1 is returned. If there was an error parsing any command line + arguments, an exit status of 2 is returned. </para> +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of the Samba suite.</para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + + <para><command>smbcquotas</command> was written by Stefan Metzmacher.</para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/smbd.8.xml b/docs-xml/manpages/smbd.8.xml new file mode 100644 index 0000000..ac4164f --- /dev/null +++ b/docs-xml/manpages/smbd.8.xml @@ -0,0 +1,448 @@ +<?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="smbd.8"> + +<refmeta> + <refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>smbd</refname> + <refpurpose>server to provide SMB/CIFS services to clients</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>smbd</command> + <arg choice="opt">-D|--daemon</arg> + <arg choice="opt">-i|--interactive</arg> + <arg choice="opt">-F|--foreground</arg> + <arg choice="opt">--no-process-group</arg> + <arg choice="opt">-b|--build-options</arg> + <arg choice="opt">-p <port number(s)></arg> + <arg choice="opt">-P <profiling level></arg> + <arg choice="opt">-d <debug level></arg> + <arg choice="opt">--debug-stdout</arg> + <arg choice="opt">--configfile=<configuration file></arg> + <arg choice="opt">--option=<name>=<value></arg> + <arg choice="opt">-l|--log-basename <log directory></arg> + <arg choice="opt">--leak-report</arg> + <arg choice="opt">--leak-report-full</arg> + <arg choice="opt">-V|--version</arg> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + <para>This program is part of the <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para><command>smbd</command> is the server daemon that + provides filesharing and printing services to Windows clients. + The server provides filespace and printer services to + clients using the SMB (or CIFS) protocol. This is compatible + with the LanManager protocol, and can service LanManager + clients. These include MSCLIENT 3.0 for DOS, Windows for + Workgroups, Windows 95/98/ME, Windows NT, Windows 2000, + OS/2, DAVE for Macintosh, and smbfs for Linux.</para> + + <para>An extensive description of the services that the + server can provide is given in the man page for the + configuration file controlling the attributes of those + services (see <citerefentry><refentrytitle>smb.conf</refentrytitle> + <manvolnum>5</manvolnum></citerefentry>. This man page will not describe the + services, but will concentrate on the administrative aspects + of running the server.</para> + + <para>Please note that there are significant security + implications to running this server, and the <citerefentry><refentrytitle>smb.conf</refentrytitle> + <manvolnum>5</manvolnum></citerefentry> manual page should be regarded as mandatory reading before + proceeding with installation.</para> + + <para>A session is created whenever a client requests one. + Each client gets a copy of the server for each session. This + copy then services all connections made by the client during + that session. When all connections from its client are closed, + the copy of the server for that client terminates.</para> + + <para>The configuration file, and any files that it includes, + are automatically reloaded every three minutes, if they change. + One can force a reload by sending a SIGHUP to the server. Reloading + the configuration file will not affect connections to any service + that is already established. Either the user will have to + disconnect from the service, or <command>smbd</command> killed and restarted. + </para> + + <para>Instead of sending a SIGHUP signal, a request to reload configuration + file may be sent using <citerefentry><refentrytitle>smbcontrol</refentrytitle> + <manvolnum>1</manvolnum></citerefentry> program. + </para> + +</refsect1> + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + <varlistentry> + <term>-D|--daemon</term> + <listitem><para>If specified, this parameter causes + the server to operate as a daemon. That is, it detaches + itself and runs in the background, fielding requests + on the appropriate port. Operating the server as a + daemon is the recommended way of running <command>smbd</command> for + servers that provide more than casual use file and + print services. This switch is assumed if <command>smbd + </command> is executed on the command line of a shell. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-i|--interactive</term> + <listitem><para>If this parameter is specified it causes the + server to run "interactively", not as a daemon, even if the + server is executed on the command line of a shell. Setting this + parameter negates the implicit daemon mode when run from the + command line. <command>smbd</command> will only accept one + connection and terminate. It will also log to standard output, + as if the <command>-S</command> parameter had been given. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-F|--foreground</term> + <listitem><para>If specified, this parameter causes + the main <command>smbd</command> process to not daemonize, + i.e. double-fork and disassociate with the terminal. + Child processes are still created as normal to service + each connection request, but the main process does not + exit. This operation mode is suitable for running + <command>smbd</command> under process supervisors such + as <command>supervise</command> and <command>svscan</command> + from Daniel J. Bernstein's <command>daemontools</command> + package, or the AIX process monitor. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--no-process-group</term> + <listitem><para>Do not create a new process group for smbd. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-b|--build-options</term> + <listitem><para>Prints information about how + Samba was built.</para></listitem> + </varlistentry> + + <varlistentry> + <term>-p|--port<port number(s)></term> + <listitem><para><replaceable>port number(s)</replaceable> is a + space or comma-separated list of TCP ports smbd should listen on. + The default value is taken from the <smbconfoption name="ports"/> parameter in &smb.conf;</para> + + <para>The default ports are 139 (used for SMB over NetBIOS over TCP) + and port 445 (used for plain SMB over TCP). + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-P|--profiling-level<profiling level></term> + <listitem><para><replaceable>profiling level</replaceable> is a + number specifying the level of profiling data to be collected. + 0 turns off profiling, 1 turns on counter profiling only, + 2 turns on complete profiling, and 3 resets all profiling data. + </para></listitem> + </varlistentry> + + &cmdline.common.samba.server; + &popt.autohelp; + + </variablelist> +</refsect1> + +<refsect1> + <title>FILES</title> + + <variablelist> + <varlistentry> + <term><filename>/etc/inetd.conf</filename></term> + <listitem><para>If the server is to be run by the + <command>inetd</command> meta-daemon, this file + must contain suitable startup information for the + meta-daemon. + </para></listitem> + </varlistentry> + + <varlistentry> + <term><filename>/etc/rc</filename></term> + <listitem><para>or whatever initialization script your + system uses).</para> + + <para>If running the server as a daemon at startup, + this file will need to contain an appropriate startup + sequence for the server. </para></listitem> + </varlistentry> + + <varlistentry> + <term><filename>/etc/services</filename></term> + <listitem><para>If running the server via the + meta-daemon <command>inetd</command>, this file + must contain a mapping of service name (e.g., netbios-ssn) + to service port (e.g., 139) and protocol type (e.g., tcp). + </para></listitem> + </varlistentry> + + <varlistentry> + <term><filename>/usr/local/samba/lib/smb.conf</filename></term> + <listitem><para>This is the default location of the <citerefentry><refentrytitle>smb.conf</refentrytitle> + <manvolnum>5</manvolnum></citerefentry> server configuration file. Other common places that systems + install this file are <filename>/usr/samba/lib/smb.conf</filename> + and <filename>/etc/samba/smb.conf</filename>.</para> + + <para>This file describes all the services the server + is to make available to clients. See <citerefentry><refentrytitle>smb.conf</refentrytitle> + <manvolnum>5</manvolnum></citerefentry> for more information.</para> + </listitem> + </varlistentry> + </variablelist> +</refsect1> + +<refsect1> + <title>LIMITATIONS</title> + <para>On some systems <command>smbd</command> cannot change uid back + to root after a setuid() call. Such systems are called + trapdoor uid systems. If you have such a system, + you will be unable to connect from a client (such as a PC) as + two different users at once. Attempts to connect the + second user will result in access denied or + similar.</para> +</refsect1> + +<refsect1> + <title>ENVIRONMENT VARIABLES</title> + + <variablelist> + <varlistentry> + <term><envar>PRINTER</envar></term> + <listitem><para>If no printer name is specified to + printable services, most systems will use the value of + this variable (or <constant>lp</constant> if this variable is + not defined) as the name of the printer to use. This + is not specific to the server, however.</para></listitem> + </varlistentry> + </variablelist> +</refsect1> + + +<refsect1> + <title>PAM INTERACTION</title> + <para>Samba uses PAM for authentication (when presented with a plaintext + password), for account checking (is this account disabled?) and for + session management. The degree too which samba supports PAM is restricted + by the limitations of the SMB protocol and the <smbconfoption name="obey pam restrictions"/> <citerefentry><refentrytitle>smb.conf</refentrytitle> + <manvolnum>5</manvolnum></citerefentry> parameter. When this is set, the following restrictions apply: + </para> + + <itemizedlist> + <listitem><para><emphasis>Account Validation</emphasis>: All accesses to a + samba server are checked + against PAM to see if the account is valid, not disabled and is permitted to + login at this time. This also applies to encrypted logins. + </para></listitem> + + <listitem><para><emphasis>Session Management</emphasis>: When not using share + level security, users must pass PAM's session checks before access + is granted. Note however, that this is bypassed in share level security. + Note also that some older pam configuration files may need a line + added for session support. + </para></listitem> + </itemizedlist> +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of + the Samba suite.</para> +</refsect1> + +<refsect1> + <title>DIAGNOSTICS</title> + + <para>Most diagnostics issued by the server are logged + in a specified log file. The log file name is specified + at compile time, but may be overridden on the command line.</para> + + <para>The number and nature of diagnostics available depends + on the debug level used by the server. If you have problems, set + the debug level to 3 and peruse the log files.</para> + + <para>Most messages are reasonably self-explanatory. Unfortunately, + at the time this man page was created, there are too many diagnostics + available in the source code to warrant describing each and every + diagnostic. At this stage your best bet is still to grep the + source code and inspect the conditions that gave rise to the + diagnostics you are seeing.</para> +</refsect1> + +<refsect1> + <title>TDB FILES</title> + + <para>Samba stores it's data in several TDB (Trivial Database) files, usually located in <filename>/var/lib/samba</filename>.</para> + + <para> + (*) information persistent across restarts (but not + necessarily important to backup). + </para> + +<variablelist> +<varlistentry><term>account_policy.tdb*</term> +<listitem> +<para>NT account policy settings such as pw expiration, etc...</para> +</listitem> +</varlistentry> + +<varlistentry><term>brlock.tdb</term> +<listitem><para>byte range locks</para></listitem> +</varlistentry> + +<varlistentry><term>browse.dat</term> +<listitem><para>browse lists</para></listitem> +</varlistentry> + +<varlistentry><term>gencache.tdb</term> +<listitem><para>generic caching db</para></listitem> +</varlistentry> + +<varlistentry><term>group_mapping.tdb*</term> +<listitem><para>group mapping information</para></listitem> +</varlistentry> + +<varlistentry><term>locking.tdb</term> +<listitem><para>share modes & oplocks</para></listitem> +</varlistentry> + +<varlistentry><term>login_cache.tdb*</term> +<listitem><para>bad pw attempts</para></listitem> +</varlistentry> + +<varlistentry><term>messages.tdb</term> +<listitem><para>Samba messaging system</para></listitem> +</varlistentry> + +<varlistentry><term>netsamlogon_cache.tdb*</term> +<listitem><para>cache of user net_info_3 struct from net_samlogon() request (as a domain member)</para></listitem> +</varlistentry> + +<varlistentry><term>ntdrivers.tdb*</term> +<listitem><para>installed printer drivers</para></listitem> +</varlistentry> + +<varlistentry><term>ntforms.tdb*</term> +<listitem><para>installed printer forms</para></listitem> +</varlistentry> + +<varlistentry><term>ntprinters.tdb*</term> +<listitem><para>installed printer information</para></listitem> +</varlistentry> + +<varlistentry><term>printing/</term> +<listitem><para>directory containing tdb per print queue of cached lpq output</para></listitem> +</varlistentry> + +<varlistentry><term>registry.tdb</term> +<listitem><para>Windows registry skeleton (connect via regedit.exe)</para></listitem> +</varlistentry> + +<varlistentry><term>smbXsrv_session_global.tdb</term> +<listitem><para>session information (e.g. support for 'utmp = yes')</para></listitem> +</varlistentry> + +<varlistentry><term>smbXsrv_tcon_global.tdb</term> +<listitem><para>share connections (used to enforce max connections, etc...)</para></listitem> +</varlistentry> + +<varlistentry><term>smbXsrv_open_global.tdb</term> +<listitem><para>open file handles (used durable handles, etc...)</para></listitem> +</varlistentry> + +<varlistentry><term>share_info.tdb*</term> +<listitem><para>share acls</para></listitem> +</varlistentry> + +<varlistentry><term>winbindd_cache.tdb</term> +<listitem><para>winbindd's cache of user lists, etc...</para></listitem> +</varlistentry> + +<varlistentry><term>winbindd_idmap.tdb*</term> +<listitem><para>winbindd's local idmap db</para></listitem> +</varlistentry> + +<varlistentry><term>wins.dat*</term> +<listitem><para>wins database when 'wins support = yes'</para></listitem> +</varlistentry> + +</variablelist> + +</refsect1> + +<refsect1> + <title>SIGNALS</title> + + <para>Sending the <command>smbd</command> a SIGHUP will cause it to + reload its <filename>smb.conf</filename> configuration + file within a short period of time.</para> + + <para>To shut down a user's <command>smbd</command> process it is recommended + that <command>SIGKILL (-9)</command> <emphasis>NOT</emphasis> + be used, except as a last resort, as this may leave the shared + memory area in an inconsistent state. The safe way to terminate + an <command>smbd</command> is to send it a SIGTERM (-15) signal and wait for + it to die on its own.</para> + + <para>The debug log level of <command>smbd</command> may be raised + or lowered using <citerefentry><refentrytitle>smbcontrol</refentrytitle> + <manvolnum>1</manvolnum></citerefentry> program (SIGUSR[1|2] signals are no longer + used since Samba 2.2). This is to allow transient problems to be diagnosed, + whilst still running at a normally low log level.</para> + + <para>Note that as the signal handlers send a debug write, + they are not re-entrant in <command>smbd</command>. This you should wait until + <command>smbd</command> is in a state of waiting for an incoming SMB before + issuing them. It is possible to make the signal handlers safe + by un-blocking the signals before the select call and re-blocking + them after, however this would affect performance.</para> +</refsect1> + +<refsect1> + <title>SEE ALSO</title> + <para><citerefentry><refentrytitle>hosts_access</refentrytitle> + <manvolnum>5</manvolnum></citerefentry>, <citerefentry><refentrytitle>inetd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry>, <citerefentry><refentrytitle>nmbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry>, <citerefentry><refentrytitle>smb.conf</refentrytitle> + <manvolnum>5</manvolnum></citerefentry>, <citerefentry><refentrytitle>smbclient</refentrytitle> + <manvolnum>1</manvolnum></citerefentry>, <citerefentry><refentrytitle>testparm</refentrytitle> + <manvolnum>1</manvolnum></citerefentry>, and the + Internet RFC's <filename>rfc1001.txt</filename>, <filename>rfc1002.txt</filename>. + In addition the CIFS (formerly SMB) specification is available + as a link from the Web page <ulink noescape="1" url="https://www.samba.org/cifs/"> + https://www.samba.org/cifs/</ulink>.</para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/smbget.1.xml b/docs-xml/manpages/smbget.1.xml new file mode 100644 index 0000000..64924ef --- /dev/null +++ b/docs-xml/manpages/smbget.1.xml @@ -0,0 +1,218 @@ +<?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="smbget.1"> + +<refmeta> + <refentrytitle>smbget</refentrytitle> + <manvolnum>1</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">User Commands</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>smbget</refname> + <refpurpose>wget-like utility for download files over SMB</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>smbget</command> + <arg choice="opt">-a, --guest</arg> + <arg choice="opt">-r, --resume</arg> + <arg choice="opt">-R, --recursive</arg> + <arg choice="opt">-U, --user=STRING</arg> + <arg choice="opt">-w, --workgroup=STRING</arg> + <arg choice="opt">-n, --nonprompt</arg> + <arg choice="opt">-d, --debuglevel=INT</arg> + <arg choice="opt">-D, --dots</arg> + <arg choice="opt">-o, --outputfile</arg> + <arg choice="opt">-f, --rcfile</arg> + <arg choice="opt">-q, --quiet</arg> + <arg choice="opt">-v, --verbose</arg> + <arg choice="opt">-b, --blocksize</arg> + <arg choice="opt">-O, --stdout</arg> + <arg choice="opt">-u, --update</arg> + <arg choice="opt">-e, --encrypt</arg> + <arg choice="opt">-?, --help</arg> + <arg choice="opt">--usage</arg> + <arg choice="req">smb://host/share/path/to/file</arg> + <arg choice="opt">smb://url2/</arg> + <arg choice="opt">...</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>smbget is a simple utility with wget-like semantics, that can download files from SMB servers. You can specify the files you would like to download on the command-line. + </para> + + <para> + The files should be in the smb-URL standard, e.g. use smb://host/share/file + for the UNC path <emphasis>\\\\HOST\\SHARE\\file</emphasis>. + </para> +</refsect1> + +<refsect1> + <title>OPTIONS</title> + + <varlistentry> + <term>-a, --guest</term> + <listitem><para>Work as user guest</para></listitem> + </varlistentry> + + <varlistentry> + <term>-r, --resume</term> + <listitem><para>Automatically resume aborted files</para></listitem> + </varlistentry> + + <varlistentry> + <term>-R, --recursive</term> + <listitem><para>Recursively download files</para></listitem> + </varlistentry> + + <varlistentry> + <term> -U, --user=<replaceable>username[%password]</replaceable></term> + <listitem><para>Username (and password) to use</para></listitem> + </varlistentry> + + <varlistentry> + <term>-w, --workgroup=STRING</term> + <listitem><para>Workgroup to use (optional)</para></listitem> + </varlistentry> + + <varlistentry> + <term>-n, --nonprompt</term> + <listitem><para>Don't ask anything (non-interactive)</para></listitem> + </varlistentry> + + <varlistentry> + <term>-d, --debuglevel=INT</term> + <listitem><para>Debuglevel to use</para></listitem> + </varlistentry> + + <varlistentry> + <term>-D, --dots</term> + <listitem><para>Show dots as progress indication</para></listitem> + </varlistentry> + + <varlistentry> + <term>-o, --outputfile</term> + <listitem><para>Write the file that is being downloaded to the specified file. Can not be used together with -R.</para></listitem> + </varlistentry> + + <varlistentry> + <term>-O, --stdout</term> + <listitem><para>Write the file that is being downloaded to standard output.</para></listitem> + </varlistentry> + + <varlistentry> + <term>-f, --rcfile</term> + <listitem><para>Use specified rcfile. This will be loaded in the order it was specified - e.g. if you specify any options before this one, they might get overridden by the contents of the rcfile.</para></listitem> + </varlistentry> + + <varlistentry> + <term>-q, --quiet</term> + <listitem><para>Be quiet</para></listitem> + </varlistentry> + + <varlistentry> + <term>-v, --verbose</term> + <listitem><para>Be verbose</para></listitem> + </varlistentry> + + <varlistentry> + <term>-b, --blocksize</term> + <listitem><para>Number of bytes to download in a block. Defaults to 64000.</para></listitem> + </varlistentry> + + <varlistentry> + <term>-?, --help</term> + <listitem><para>Show help message</para></listitem> + </varlistentry> + + <varlistentry> + <term>--usage</term> + <listitem><para>Display brief usage message</para></listitem> + </varlistentry> + + <varlistentry> + <term>-u, --update</term> + <listitem><para>Download only when remote file is newer than local file or local file is missing.</para></listitem> + </varlistentry> + + <varlistentry> + <term>-e, --encrypt</term> + <listitem><para>Enable SMB encryption.</para></listitem> + </varlistentry> + +</refsect1> + +<refsect1> + <title>SMB URLS</title> + + <para> SMB URL's should be specified in the following format:</para> + + <para><programlisting> +smb://[[[domain;]user[:password@]]server[/share[/path[/file]]]] +</programlisting></para> + +<para><programlisting> +smb:// means all the workgroups +</programlisting></para> + +<para><programlisting> +smb://name/ means, if <replaceable>name</replaceable> is a workgroup, all the servers in this workgroup, or if <replaceable>name</replaceable> is a server, all the shares on this server. +</programlisting></para> + +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + +<programlisting> +# Recursively download 'src' directory +smbget -R smb://rhonwyn/jelmer/src +# Download FreeBSD ISO and enable resuming +smbget -r smb://rhonwyn/isos/FreeBSD5.1.iso +# Recursively download all ISOs +smbget -Rr smb://rhonwyn/isos +# Backup my data on rhonwyn +smbget -Rr smb://rhonwyn/ +</programlisting> + +</refsect1> + +<refsect1> + <title>BUGS</title> + + <para>Permission denied is returned in some cases where the cause of the error is unknown +(such as an illegally formatted smb:// url or trying to get a directory without -R +turned on).</para> +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of + the Samba suite.</para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + + <para>The smbget manpage was written by Jelmer Vernooij.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/smbgetrc.5.xml b/docs-xml/manpages/smbgetrc.5.xml new file mode 100644 index 0000000..4431535 --- /dev/null +++ b/docs-xml/manpages/smbgetrc.5.xml @@ -0,0 +1,112 @@ +<?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="smbgetrc.5"> + +<refmeta> + <refentrytitle>smbgetrc</refentrytitle> + <manvolnum>5</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">File Formats and Conventions</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>smbgetrc</refname> + <refpurpose>configuration file for smbget</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <para><filename>smbgetrc</filename></para> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para> + This manual page documents the format and options of the <emphasis>smbgetrc</emphasis> + file. This is the configuration file used by the <citerefentry><refentrytitle>smbget</refentrytitle><manvolnum>1</manvolnum></citerefentry> + utility. The file contains of key-value pairs, one pair on each line. The key + and value should be separated by a space. + </para> + + <para>By default, smbget reads its configuration from <emphasis>$HOME/.smbgetrc</emphasis>, though + other locations can be specified using the command-line options.</para> +</refsect1> + +<refsect1> + <title>OPTIONS</title> + + <para> + The following keys can be set: +</para> + + <variablelist> + <varlistentry><term>resume on|off</term> + <listitem><para> + Whether aborted downloads should be automatically resumed. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>recursive on|off</term> + <listitem><para>Whether directories should be downloaded recursively</para></listitem> + </varlistentry> + + <varlistentry><term>user <replaceable>name[%password]</replaceable></term> + <listitem><para>Username (and password) to use when logging in to the remote server. Use an empty string for anonymous access. + </para></listitem> + </varlistentry> + + <varlistentry><term>workgroup <replaceable>wg</replaceable></term> + <listitem><para>Workgroup to use when logging in</para></listitem> + </varlistentry> + + <varlistentry><term>nonprompt on|off</term> + <listitem><para>Turns off asking for username and password. Useful for scripts.</para></listitem> + </varlistentry> + + <varlistentry><term>debuglevel <replaceable>int</replaceable></term> + <listitem><para>(Samba) debuglevel to run at. Useful for tracking down protocol level problems.</para></listitem> + </varlistentry> + + <varlistentry><term>dots on|off</term> + <listitem><para>Whether a single dot should be printed for each block that has been downloaded, instead of the default progress indicator.</para></listitem> + </varlistentry> + + <varlistentry><term>blocksize <replaceable>int</replaceable></term> + <listitem><para>Number of bytes to put in a block. </para></listitem> + </varlistentry> + </variablelist> +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of + the Samba suite.</para> +</refsect1> + +<refsect1> + <title>SEE ALSO</title> + <para><citerefentry><refentrytitle>smbget</refentrytitle> + <manvolnum>1</manvolnum></citerefentry> and <citerefentry><refentrytitle>Samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry>. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + + <para>This manual page was written by Jelmer Vernooij</para> + +</refsect1> + +</refentry> + + diff --git a/docs-xml/manpages/smbpasswd.5.xml b/docs-xml/manpages/smbpasswd.5.xml new file mode 100644 index 0000000..6705362 --- /dev/null +++ b/docs-xml/manpages/smbpasswd.5.xml @@ -0,0 +1,203 @@ +<?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="smbpasswd.5"> + +<refmeta> + <refentrytitle>smbpasswd</refentrytitle> + <manvolnum>5</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">File Formats and Conventions</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>smbpasswd</refname> + <refpurpose>The Samba encrypted password file</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <para><filename>smbpasswd</filename></para> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This tool is part of the <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para>smbpasswd is the Samba encrypted password file. It contains + the username, Unix user id and the SMB hashed passwords of the + user, as well as account flag information and the time the + password was last changed. This file format has been evolving with + Samba and has had several different formats in the past. </para> +</refsect1> + +<refsect1> + <title>FILE FORMAT</title> + + <para>The format of the smbpasswd file used by Samba 2.2 + is very similar to the familiar Unix <filename>passwd(5)</filename> + file. It is an ASCII file containing one line for each user. Each field + within each line is separated from the next by a colon. Any entry + beginning with '#' is ignored. The smbpasswd file contains the + following information for each user: </para> + + <variablelist> + <varlistentry> + <term>name</term> + <listitem><para> This is the user name. It must be a name that + already exists in the standard UNIX passwd file. </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>uid</term> + <listitem><para>This is the UNIX uid. It must match the uid + field for the same user entry in the standard UNIX passwd file. + If this does not match then Samba will refuse to recognize + this smbpasswd file entry as being valid for a user. + </para></listitem> + </varlistentry> + + + <varlistentry> + <term>Lanman Password Hash</term> + <listitem><para>This is the LANMAN hash of the user's password, + encoded as 32 hex digits. The LANMAN hash is created by DES + encrypting a well known string with the user's password as the + DES key. This is the same password used by Windows 95/98 machines. + Note that this password hash is regarded as weak as it is + vulnerable to dictionary attacks and if two users choose the + same password this entry will be identical (i.e. the password + is not "salted" as the UNIX password is). If the user has a + null password this field will contain the characters "NO PASSWORD" + as the start of the hex string. If the hex string is equal to + 32 'X' characters then the user's account is marked as + <constant>disabled</constant> and the user will not be able to + log onto the Samba server. </para> + + <para><emphasis>WARNING !!</emphasis> Note that, due to + the challenge-response nature of the SMB/CIFS authentication + protocol, anyone with a knowledge of this password hash will + be able to impersonate the user on the network. For this + reason these hashes are known as <emphasis>plain text + equivalents</emphasis> and must <emphasis>NOT</emphasis> be made + available to anyone but the root user. To protect these passwords + the smbpasswd file is placed in a directory with read and + traverse access only to the root user and the smbpasswd file + itself must be set to be read/write only by root, with no + other access. </para></listitem> + </varlistentry> + + + <varlistentry> + <term>NT Password Hash</term> + <listitem><para>This is the Windows NT hash of the user's + password, encoded as 32 hex digits. The Windows NT hash is + created by taking the user's password as represented in + 16-bit, little-endian UNICODE and then applying the MD4 + (internet rfc1321) hashing algorithm to it. </para> + + <para>This password hash is considered more secure than + the LANMAN Password Hash as it preserves the case of the + password and uses a much higher quality hashing algorithm. + However, it is still the case that if two users choose the same + password this entry will be identical (i.e. the password is + not "salted" as the UNIX password is). </para> + + <para><emphasis>WARNING !!</emphasis>. Note that, due to + the challenge-response nature of the SMB/CIFS authentication + protocol, anyone with a knowledge of this password hash will + be able to impersonate the user on the network. For this + reason these hashes are known as <emphasis>plain text + equivalents</emphasis> and must <emphasis>NOT</emphasis> be made + available to anyone but the root user. To protect these passwords + the smbpasswd file is placed in a directory with read and + traverse access only to the root user and the smbpasswd file + itself must be set to be read/write only by root, with no + other access. </para></listitem> + </varlistentry> + + + <varlistentry> + <term>Account Flags</term> + <listitem><para>This section contains flags that describe + the attributes of the users account. This field is bracketed by + '[' and ']' characters and is always 13 characters in length + (including the '[' and ']' characters). + The contents of this field may be any of the following characters: + </para> + + <itemizedlist> + <listitem><para><emphasis>U</emphasis> - This means + this is a "User" account, i.e. an ordinary user.</para></listitem> + + <listitem><para><emphasis>N</emphasis> - This means the + account has no password (the passwords in the fields LANMAN + Password Hash and NT Password Hash are ignored). Note that this + will only allow users to log on with no password if the <parameter> + null passwords</parameter> parameter is set in the + <citerefentry><refentrytitle>smb.conf</refentrytitle> + <manvolnum>5</manvolnum></citerefentry> config file. </para></listitem> + + <listitem><para><emphasis>D</emphasis> - This means the account + is disabled and no SMB/CIFS logins will be allowed for this user. </para></listitem> + + <listitem><para><emphasis>X</emphasis> - This means the password + does not expire. </para></listitem> + + <listitem><para><emphasis>W</emphasis> - This means this account + is a "Workstation Trust" account. This kind of account is used + in the Samba PDC code stream to allow Windows NT Workstations + and Servers to join a Domain hosted by a Samba PDC. </para> + </listitem> + </itemizedlist> + + <para>Other flags may be added as the code is extended in future. + The rest of this field space is filled in with spaces. For further + information regarding the flags that are supported please refer to the + man page for the <command>pdbedit</command> command.</para> + </listitem> + </varlistentry> + + + <varlistentry> + <term>Last Change Time</term> + <listitem><para>This field consists of the time the account was + last modified. It consists of the characters 'LCT-' (standing for + "Last Change Time") followed by a numeric encoding of the UNIX time + in seconds since the epoch (1970) that the last change was made. + </para></listitem> + </varlistentry> + </variablelist> + + <para>All other colon separated fields are ignored at this time.</para> +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of + the Samba suite.</para> +</refsect1> + +<refsect1> + <title>SEE ALSO</title> + <para><citerefentry><refentrytitle>smbpasswd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry>, <citerefentry><refentrytitle>Samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry>, and + the Internet RFC1321 for details on the MD4 algorithm. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/smbpasswd.8.xml b/docs-xml/manpages/smbpasswd.8.xml new file mode 100644 index 0000000..ba0e549 --- /dev/null +++ b/docs-xml/manpages/smbpasswd.8.xml @@ -0,0 +1,422 @@ +<?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="smbpasswd.8"> + +<refmeta> + <refentrytitle>smbpasswd</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>smbpasswd</refname> + <refpurpose>change a user's SMB password</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>smbpasswd</command> + <arg choice="opt">-a</arg> + <arg choice="opt">-c <config file></arg> + <arg choice="opt">-x</arg> + <arg choice="opt">-d</arg> + <arg choice="opt">-e</arg> + <arg choice="opt">-D debuglevel</arg> + <arg choice="opt">-n</arg> + <arg choice="opt">-r <remote machine></arg> + <arg choice="opt">-R <name resolve order></arg> + <arg choice="opt">-m</arg> + <arg choice="opt">-U username[%password]</arg> + <arg choice="opt">-h</arg> + <arg choice="opt">-s</arg> + <arg choice="opt">-w pass</arg> + <arg choice="opt">-W</arg> + <arg choice="opt">-i</arg> + <arg choice="opt">-L</arg> + <arg choice="opt">username</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>The smbpasswd program has several different + functions, depending on whether it is run by the <emphasis>root</emphasis> user + or not. When run as a normal user it allows the user to change + the password used for their SMB sessions on any machines that store + SMB passwords. </para> + + <para>By default (when run with no arguments) it will attempt to + change the current user's SMB password on the local machine. This is + similar to the way the <command>passwd(1)</command> program works. <command> + smbpasswd</command> differs from how the passwd program works + however in that it is not <emphasis>setuid root</emphasis> but works in + a client-server mode and communicates with a + locally running <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry>. As a consequence in order for this to + succeed the smbd daemon must be running on the local machine. On a + UNIX machine the encrypted SMB passwords are usually stored in + the default passdb backend.</para> + + <para>When run by an ordinary user with no options, smbpasswd + will prompt them for their old SMB password and then ask them + for their new password twice, to ensure that the new password + was typed correctly. No passwords will be echoed on the screen + whilst being typed. If you have a blank SMB password (specified by + the string "NO PASSWORD" in the smbpasswd file) then just press + the <Enter> key when asked for your old password. </para> + + <para>smbpasswd can also be used by a normal user to change their + SMB password on remote machines, such as Windows NT Primary Domain + Controllers. See the (<parameter>-r</parameter>) and <parameter>-U</parameter> options + below. </para> + + <para>When run by root, smbpasswd allows new users to be added + and deleted in the smbpasswd file, as well as allows changes to + the attributes of the user in this file to be made. When run by root, <command> + smbpasswd</command> accesses the local smbpasswd file + directly, thus enabling changes to be made even if smbd is not + running. </para> +</refsect1> + +<refsect1> + <title>OPTIONS</title> + <variablelist> + <varlistentry> + <term>-a</term> + <listitem><para> + This option specifies that the username following should be added to the local smbpasswd file, with the new + password typed (type <Enter> for the old password). This option is ignored if the username following + already exists in the smbpasswd file and it is treated like a regular change password command. Note that the + default passdb backends require the user to already exist in the system password file (usually + <filename>/etc/passwd</filename>), else the request to add the user will fail. + </para> + + <para>This option is only available when running smbpasswd + as root. </para></listitem> + </varlistentry> + + + <varlistentry> + <term>-c</term> + <listitem><para> + This option can be used to specify the path and file name of the &smb.conf; configuration file when it + is important to use other than the default file and / or location. + </para></listitem> + </varlistentry> + + + <varlistentry> + <term>-x</term> + <listitem><para> + This option specifies that the username following should be deleted from the local smbpasswd file. + </para> + + <para> + This option is only available when running smbpasswd as root. + </para></listitem> + </varlistentry> + + + + <varlistentry> + <term>-d</term> + <listitem><para>This option specifies that the username following + should be <constant>disabled</constant> in the local smbpasswd + file. This is done by writing a <constant>'D'</constant> flag + into the account control space in the smbpasswd file. Once this + is done all attempts to authenticate via SMB using this username + will fail. </para> + + <para>If the smbpasswd file is in the 'old' format (pre-Samba 2.0 + format) there is no space in the user's password entry to write + this information and the command will FAIL. See <citerefentry><refentrytitle>smbpasswd</refentrytitle> + <manvolnum>5</manvolnum></citerefentry> for details on the 'old' and new password file formats. + </para> + + <para>This option is only available when running smbpasswd as + root.</para></listitem> + </varlistentry> + + + <varlistentry> + <term>-e</term> + <listitem><para>This option specifies that the username following + should be <constant>enabled</constant> in the local smbpasswd file, + if the account was previously disabled. If the account was not + disabled this option has no effect. Once the account is enabled then + the user will be able to authenticate via SMB once again. </para> + + <para>If the smbpasswd file is in the 'old' format, then <command> + smbpasswd</command> will FAIL to enable the account. + See <citerefentry><refentrytitle>smbpasswd</refentrytitle> + <manvolnum>5</manvolnum></citerefentry> for + details on the 'old' and new password file formats. </para> + + <para>This option is only available when running smbpasswd as root. + </para></listitem> + </varlistentry> + + + + <varlistentry> + <term>-D debuglevel</term> + <listitem><para><replaceable>debuglevel</replaceable> is an integer + from 0 to 10. The default value if this parameter is not specified + is zero. </para> + + <para>The higher this value, the more detail will be logged to the + log files about the activities of smbpasswd. At level 0, only + critical errors and serious warnings will be logged. </para> + + <para>Levels above 1 will generate considerable amounts of log + data, and should only be used when investigating a problem. Levels + above 3 are designed for use only by developers and generate + HUGE amounts of log data, most of which is extremely cryptic. + </para></listitem> + </varlistentry> + + + + <varlistentry> + <term>-n</term> + <listitem><para>This option specifies that the username following + should have their password set to null (i.e. a blank password) in + the local smbpasswd file. This is done by writing the string "NO + PASSWORD" as the first part of the first password stored in the + smbpasswd file. </para> + + <para>Note that to allow users to logon to a Samba server once + the password has been set to "NO PASSWORD" in the smbpasswd + file the administrator must set the following parameter in the [global] + section of the <filename>smb.conf</filename> file : </para> + + <para><command>null passwords = yes</command></para> + + <para>This option is only available when running smbpasswd as + root.</para></listitem> + </varlistentry> + + + + <varlistentry> + <term>-r remote machine name</term> + <listitem><para>This option allows a user to specify what machine + they wish to change their password on. Without this parameter + smbpasswd defaults to the local host. The <replaceable>remote + machine name</replaceable> is the NetBIOS name of the SMB/CIFS + server to contact to attempt the password change. This name is + resolved into an IP address using the standard name resolution + mechanism in all programs of the Samba suite. See the <parameter>-R + name resolve order</parameter> parameter for details on changing + this resolving mechanism. </para> + + <para>The username whose password is changed is that of the + current UNIX logged on user. See the <parameter>-U username</parameter> + parameter for details on changing the password for a different + username. </para> + + <para>Note that if changing a Windows NT Domain password the + remote machine specified must be the Primary Domain Controller for + the domain (Backup Domain Controllers only have a read-only + copy of the user account database and will not allow the password + change).</para> + + <para><emphasis>Note</emphasis> that Windows 95/98 do not have + a real password database so it is not possible to change passwords + specifying a Win95/98 machine as remote machine target. </para> + </listitem> + </varlistentry> + + + <varlistentry> + <term>-R name resolve order</term> + <listitem><para>This option allows the user of smbpasswd to determine + what name resolution services to use when looking up the NetBIOS + name of the host being connected to. </para> + + <para>The options are :"lmhosts", "host", "wins" and "bcast". They + cause names to be resolved as follows: </para> + <itemizedlist> + <listitem><para><constant>lmhosts</constant>: Lookup an IP + address in the Samba lmhosts file. If the line in lmhosts has + no name type attached to the NetBIOS name (see the <citerefentry><refentrytitle>lmhosts</refentrytitle> + <manvolnum>5</manvolnum></citerefentry> for details) then + any name type matches for lookup.</para></listitem> + + <listitem><para><constant>host</constant>: Do a standard host + name to IP address resolution, using the system <filename>/etc/hosts + </filename>, NIS, or DNS lookups. This method of name resolution + is operating system depended for instance on IRIX or Solaris this + may be controlled by the <filename>/etc/nsswitch.conf</filename> + file). Note that this method is only used if the NetBIOS name + type being queried is the 0x20 (server) name type, otherwise + it is ignored.</para></listitem> + + <listitem><para><constant>wins</constant>: Query a name with + the IP address listed in the <parameter>wins server</parameter> + parameter. If no WINS server has been specified this method + will be ignored.</para></listitem> + + <listitem><para><constant>bcast</constant>: Do a broadcast on + each of the known local interfaces listed in the + <parameter>interfaces</parameter> parameter. This is the least + reliable of the name resolution methods as it depends on the + target host being on a locally connected subnet.</para></listitem> + </itemizedlist> + + <para>The default order is <command>lmhosts, host, wins, bcast</command> + and without this parameter or any entry in the <citerefentry><refentrytitle>smb.conf</refentrytitle> + <manvolnum>5</manvolnum></citerefentry> file the name resolution methods will + be attempted in this order. </para></listitem> + </varlistentry> + + + <varlistentry> + <term>-m</term> + <listitem><para>This option tells smbpasswd that the account + being changed is a MACHINE account. Currently this is used + when Samba is being used as an NT Primary Domain Controller.</para> + + <para>This option is only available when running smbpasswd as root. + </para></listitem> + </varlistentry> + + + <varlistentry> + <term>-U username</term> + <listitem><para>This option may only be used in conjunction + with the <parameter>-r</parameter> option. When changing + a password on a remote machine it allows the user to specify + the user name on that machine whose password will be changed. It + is present to allow users who have different user names on + different systems to change these passwords. </para></listitem> + </varlistentry> + + + <varlistentry> + <term>-h</term> + <listitem><para>This option prints the help string for <command> + smbpasswd</command>, selecting the correct one for running as root + or as an ordinary user. </para></listitem> + </varlistentry> + + + <varlistentry> + <term>-s</term> + <listitem><para>This option causes smbpasswd to be silent (i.e. + not issue prompts) and to read its old and new passwords from + standard input, rather than from <filename>/dev/tty</filename> + (like the <command>passwd(1)</command> program does). This option + is to aid people writing scripts to drive smbpasswd</para> + </listitem> + </varlistentry> + + + <varlistentry> + <term>-w password</term> + <listitem><para>This parameter is only available if Samba + has been compiled with LDAP support. The <parameter>-w</parameter> + switch is used to specify the password to be used with the + <smbconfoption name="ldap admin dn"/>. Note that the password is stored in + the <filename>secrets.tdb</filename> and is keyed off + of the admin's DN. This means that if the value of <parameter>ldap + admin dn</parameter> ever changes, the password will need to be + manually updated as well. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>-W</term> + <listitem><para><command>NOTE: </command> This option is same as "-w" + except that the password should be entered using stdin. + </para> + <para>This parameter is only available if Samba + has been compiled with LDAP support. The <parameter>-W</parameter> + switch is used to specify the password to be used with the + <smbconfoption name="ldap admin dn"/>. Note that the password is stored in + the <filename>secrets.tdb</filename> and is keyed off + of the admin's DN. This means that if the value of <parameter>ldap + admin dn</parameter> ever changes, the password will need to be + manually updated as well. + </para> + </listitem> + </varlistentry> + + + <varlistentry> + <term>-i</term> + <listitem><para>This option tells smbpasswd that the account + being changed is an interdomain trust account. Currently this is used + when Samba is being used as an NT Primary Domain Controller. + The account contains the info about another trusted domain.</para> + + <para>This option is only available when running smbpasswd as root. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-L</term> + <listitem><para>Run in local mode.</para></listitem> + </varlistentry> + + <varlistentry> + <term>username</term> + <listitem><para>This specifies the username for all of the + <emphasis>root only</emphasis> options to operate on. Only root + can specify this parameter as only root has the permission needed + to modify attributes directly in the local smbpasswd file. + </para></listitem> + </varlistentry> + </variablelist> +</refsect1> + + +<refsect1> + <title>NOTES</title> + + <para>Since <command>smbpasswd</command> works in client-server + mode communicating with a local smbd for a non-root user then + the smbd daemon must be running for this to work. A common problem + is to add a restriction to the hosts that may access the <command> + smbd</command> running on the local machine by specifying either <parameter>allow + hosts</parameter> or <parameter>deny hosts</parameter> entry in + the <citerefentry><refentrytitle>smb.conf</refentrytitle> + <manvolnum>5</manvolnum></citerefentry> file and neglecting to + allow "localhost" access to the smbd. </para> + + <para>In addition, the smbpasswd command is only useful if Samba + has been set up to use encrypted passwords. </para> +</refsect1> + + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of the Samba suite.</para> +</refsect1> + +<refsect1> + <title>SEE ALSO</title> + <para><citerefentry><refentrytitle>smbpasswd</refentrytitle> + <manvolnum>5</manvolnum></citerefentry>, <citerefentry><refentrytitle>Samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry>.</para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/smbspool.8.xml b/docs-xml/manpages/smbspool.8.xml new file mode 100644 index 0000000..fba8ca3 --- /dev/null +++ b/docs-xml/manpages/smbspool.8.xml @@ -0,0 +1,125 @@ +<?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="smbspool.8"> + +<refmeta> + <refentrytitle>smbspool</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>smbspool</refname> + <refpurpose>send a print file to an SMB printer</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>smbspool</command> + <arg choice="req">job</arg> + <arg choice="req">user</arg> + <arg choice="req">title</arg> + <arg choice="req">copies</arg> + <arg choice="req">options</arg> + <arg choice="opt">filename</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>smbspool is a very small print spooling program that + sends a print file to an SMB printer. The command-line arguments + are position-dependent for compatibility with the Common UNIX + Printing System, but you can use smbspool with any printing system + or from a program or script.</para> + + <para><emphasis>DEVICE URI</emphasis></para> + + <para>smbspool specifies the destination using a Uniform Resource + Identifier ("URI") with a method of "smb". This string can take + a number of forms:</para> + + <itemizedlist> + <listitem><para>smb://server[:port]/printer</para></listitem> + <listitem><para>smb://workgroup/server[:port]/printer</para></listitem> + <listitem><para>smb://username:password@server[:port]/printer</para></listitem> + <listitem><para>smb://username:password@workgroup/server[:port]/printer</para></listitem> + </itemizedlist> + + <para>smbspool tries to get the URI from the environment variable + <envar>DEVICE_URI</envar>. If <envar>DEVICE_URI</envar> is not present, + smbspool will use argv[0] if that starts with <quote>smb://</quote> + or argv[1] if that is not the case.</para> + + <para>Programs using the <command>exec(2)</command> functions can + pass the URI in argv[0], while shell scripts must set the + <envar>DEVICE_URI</envar> environment variable prior to + running smbspool.</para> +</refsect1> + +<refsect1> + <title>OPTIONS</title> + + <itemizedlist> + <listitem><para>The job argument (argv[1]) contains the + job ID number and is presently not used by smbspool. + </para></listitem> + + <listitem><para>The user argument (argv[2]) contains the + print user's name and is presently not used by smbspool. + </para></listitem> + + <listitem><para>The title argument (argv[3]) contains the + job title string and is passed as the remote file name + when sending the print job.</para></listitem> + + <listitem><para>The copies argument (argv[4]) contains + the number of copies to be printed of the named file. If + no filename is provided then this argument is not used by + smbspool.</para></listitem> + + <listitem><para>The options argument (argv[5]) contains + the print options in a single string and is currently + not used by smbspool.</para></listitem> + + <listitem><para>The filename argument (argv[6]) contains the + name of the file to print. If this argument is not specified + then the print file is read from the standard input.</para> + </listitem> + </itemizedlist> +</refsect1> + + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of the Samba suite.</para> +</refsect1> + +<refsect1> + <title>SEE ALSO</title> + <para><citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> and <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry>.</para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para><command>smbspool</command> was written by Michael Sweet + at Easy Software Products.</para> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/smbspool_krb5_wrapper.8.xml b/docs-xml/manpages/smbspool_krb5_wrapper.8.xml new file mode 100644 index 0000000..3835719 --- /dev/null +++ b/docs-xml/manpages/smbspool_krb5_wrapper.8.xml @@ -0,0 +1,64 @@ +<?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="smbspool.8"> + +<refmeta> + <refentrytitle>smbspool_krb5_wrapper</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>smbspool_krb5_wrapper</refname> + <refpurpose>This is a CUPS printing backend which calls smbspool</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>smbspool_krb5_wrapper</command> + <arg choice="req">job</arg> + <arg choice="req">user</arg> + <arg choice="req">title</arg> + <arg choice="req">copies</arg> + <arg choice="req">options</arg> + <arg choice="opt">filename</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>smbspool_krb5_wrapper is a tool that can be used to print using + Kerberos credentials. To get this working smbspool_krb5_wrapper + needs to be the smb backend of CUPS. It needs to be owned by + root and the permissions for the binary need to be 0700. Once + smbspool_krb5_wrapper switched to the user trying to print it + executes smbspool. It should not be called by a user.</para> + +</refsect1> + +<refsect1> + <title>SEE ALSO</title> + <para><citerefentry><refentrytitle>smbspool</refentrytitle> + <manvolnum>8</manvolnum></citerefentry>.</para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + + <para>The smbspool_krb5_wrapper manpage was written by Andreas + Schneider.</para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/smbstatus.1.xml b/docs-xml/manpages/smbstatus.1.xml new file mode 100644 index 0000000..63ae464 --- /dev/null +++ b/docs-xml/manpages/smbstatus.1.xml @@ -0,0 +1,431 @@ +<?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="smbstatus.1"> + +<refmeta> + <refentrytitle>smbstatus</refentrytitle> + <manvolnum>1</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">User Commands</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>smbstatus</refname> + <refpurpose>report on current Samba connections</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>smbstatus</command> + <arg choice="opt">-p|--processes</arg> + <arg choice="opt">-v|--verbose</arg> + <arg choice="opt">-L|--locks</arg> + <arg choice="opt">-S|--shares</arg> + <arg choice="opt">-N|--notify</arg> + <arg choice="opt">-u|--user=STRING</arg> + <arg choice="opt">-b|--brief</arg> + <arg choice="opt">-P|--profile</arg> + <arg choice="opt">-R|--profile-rates</arg> + <arg choice="opt">-B|--byterange</arg> + <arg choice="opt">-n|--numeric</arg> + <arg choice="opt">-f|--fast</arg> + <arg choice="opt">-j|--json</arg> + <arg choice="opt">--resolve-uids</arg> + <arg choice="opt">-?|--help</arg> + <arg choice="opt">--usage</arg> + <arg choice="opt">-d|--debuglevel=DEBUGLEVEL</arg> + <arg choice="opt">--debug-stdout</arg> + <arg choice="opt">--configfile=CONFIGFILE</arg> + <arg choice="opt">--option=name=value</arg> + <arg choice="opt">-l|--log-basename=LOGFILEBASE</arg> + <arg choice="opt">--leak-report</arg> + <arg choice="opt">--leak-report-full</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><command>smbstatus</command> is a very simple program to + list the current Samba connections.</para> +</refsect1> + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + <varlistentry> + <term>-P|--profile</term> + <listitem><para>If samba has been compiled with the + profiling option, print only the contents of the profiling + shared memory area.</para></listitem> + </varlistentry> + + <varlistentry> + <term>-R|--profile-rates</term> + <listitem><para>If samba has been compiled with the + profiling option, print the contents of the profiling + shared memory area and the call rates.</para></listitem> + </varlistentry> + + <varlistentry> + <term>-b|--brief</term> + <listitem><para>gives brief output.</para></listitem> + </varlistentry> + + <varlistentry> + <term>-v|--verbose</term> + <listitem><para>gives verbose output.</para></listitem> + </varlistentry> + + <varlistentry> + <term>-L|--locks</term> + <listitem><para>causes smbstatus to only list locks.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>-B|--byterange</term> + <listitem><para>causes smbstatus to include byte range locks. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-p|--processes</term> + <listitem><para>print a list of <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> processes and exit. + Useful for scripting.</para></listitem> + </varlistentry> + + <varlistentry> + <term>-S|--shares</term> + <listitem><para>causes smbstatus to only list shares.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>-N|--notify</term> + <listitem><para>causes smbstatus to display registered file + notifications</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>-f|--fast</term> + <listitem><para>causes smbstatus to not check if the status data + is valid by checking if the processes that the status data refer to all still + exist. This speeds up execution on busy systems and clusters but + might display stale data of processes that died without cleaning up properly.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>-u|--user=<username></term> + <listitem><para>selects information relevant to <parameter>username</parameter> only.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>-n|--numeric</term> + <listitem><para>causes smbstatus to display numeric UIDs and GIDs instead of + resolving them to names.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>-j|--json</term> + <listitem><para>Output more detailed information in JSON format instead + of human readable. + The output has the following format: + <programlisting> +{ + "timestamp": "2022-04-15T18:25:15.364891+0200", + "version": "4.17.0pre1-GIT-a0f12b9c80b", + "smb_conf": "/opt/samba/etc/smb.conf", + "sessions": { + "3639217376": { + "session_id": "3639217376", + "server_id": { + "pid": "69650", + "task_id": "0", + "vnn": "4294967295", + "unique_id": "10756714984493602300" + }, + "uid": 1000, + "gid": 1000, + "username": "johndoe", + "groupname": "johndoe", + "remote_machine": "127.0.0.1", + "hostname": "ipv4:127.0.0.1:59944", + "session_dialect": "SMB3_11", + "encryption": { + "cipher": "", + "degree": "none" + }, + "signing": { + "cipher": "AES-128-GMAC", + "degree": "partial" + } + } + }, + "tcons": { + "3813255619": { + "service": "sharename", + "server_id": { + "pid": "69650", + "task_id": "0", + "vnn": "4294967295", + "unique_id": "10756714984493602300" + }, + "tcon_id": "3813255619", + "session_id": "3639217376", + "machine": "127.0.0.1", + "connected_at": "2022-04-15T17:30:37+0200", + "encryption": { + "cipher": "AES-128-GMAC", + "degree": "full" + }, + "signing": { + "cipher": "", + "degree": "none" + } + } + }, + "open_files": { + "/home/johndoe/testfolder/sample": { + "service_path": "/home/johndoe/testfolder", + "filename": "sample", + "fileid": { + "devid": 59, + "inode": 11404245, + "extid": 0 + }, + "num_pending_deletes": 0, + "opens": { + "56839/2": { + "server_id": { + "pid": "69650", + "task_id": "0", + "vnn": "4294967295", + "unique_id": "10756714984493602300" + }, + "uid": 1000, + "share_file_id": 2, + "sharemode": { + "hex": "0x00000003", + "NONE": false, + "READ": true, + "WRITE": true, + "DELETE": false, + "text": "RW" + }, + "access_mask": { + "hex": "0x00000003", + "READ_DATA": true, + "WRITE_DATA": true, + "APPEND_DATA": false, + "READ_EA": false, + "WRITE_EA": false, + "EXECUTE": false, + "READ_ATTRIBUTES": false, + "WRITE_ATTRIBUTES": false, + "DELETE_CHILD": false, + "DELETE": false, + "READ_CONTROL": false, + "WRITE_DAC": false, + "SYNCHRONIZE": false, + "ACCESS_SYSTEM_SECURITY": false, + "text": "RW" + }, + "caching": { + "READ": false, + "WRITE": false, + "HANDLE": false, + "hex": "0x00000000", + "text": "" + }, + "oplock": {}, + "lease": {}, + "opened_at": "2022-04-15T17:30:38+0200" + } + } + } + } +} + </programlisting> </para> + + <para>If oplocks are used: + <programlisting> + "oplock": { + "EXCLUSIVE": false, + "BATCH": false, + "LEVEL_II": true, + "LEASE": false, + "text": "LEVEL_II" + } + </programlisting> </para> + + <para>If leases are used: + + <programlisting> + "lease": { + "lease_key": "29316055-f55c-de10-c813-af7bf5a430bb", + "hex": "0x00000005", + "READ": true, + "WRITE": true, + "HANDLE": false, + "text": "RW" + } + </programlisting> </para> + + <para>With byte-range locks (-B, --byterange): + <programlisting> + "byte_range_locks": { + "/home/johndoe/testfolder/sample": { + "fileid": { + "devid": 59, + "inode": 11404245, + "extid": 0 + }, + "file_name": "sample", + "share_path": "/home/johndoe/testfolder", + "locks": [ + { + "server_id": { + "pid": "69650", + "task_id": "0", + "vnn": "4294967295", + "unique_id": "10756714984493602300" + }, + "type": "R", + "flavour": "Posix", + "start": 0, + "size": 16 + } + ] + } + </programlisting> </para> + + <para> With notifies (-N, --notify): + <programlisting> + "notify": { + "77247": { + "server_id": { + "pid": "69650", + "task_id": "0", + "vnn": "4294967295", + "unique_id": "10756714984493602300" + }, + "path": "/home/johndoe/testfolder/testdir", + "filter": 4095, + "subdir_filter": 4095, + "creation_time": "1970-01-01T01:00:14.326582+01:00" + } + } + </programlisting> </para> + + <para> For profiling (-P, --profile): + <programlisting> +{ + "timestamp": "2022-04-15T18:40:43.112216+0200", + "version": "4.17.0pre1-GIT-a0f12b9c80b", + "smb_conf": "/opt/samba/etc/smb.conf", + "SMBD loop": { + "connect": { + "count": 2 + }, + "disconnect": { + "count": 1 + }, + ... + }, + "System Calls": { + "syscall_opendir": { + "count": 0, + "time": 0 + }, + ... + }, + "ACL Calls": { + "get_nt_acl": { + "count": 0, + "time": 0 + }, + ... + }, + "Stat Cache": { + "statcache_lookups": { + "count": 2 + }, + ... + }, + "SMB Calls": { + "SMBmkdir": { + "count": 0, + "time": 0 + }, + ... + }, + "Trans2 Calls": { + "Trans2_open": { + "count": 0, + "time": 0 + }, + ... + }, + "NT Transact Calls": { + "NT_transact_create": { + "count": 0, + "time": 0 + }, + ... + }, + "SMB2 Calls": { + "smb2_negprot": { + "count": 2, + "time": 3060, + "idle": 0, + "inbytes": 452, + "outbytes": 568 + }, + ... + } +} + </programlisting> </para> + </listitem> + </varlistentry> + + &popt.autohelp; + &cmdline.common.samba.client; + </variablelist> +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of + the Samba suite.</para> +</refsect1> + +<refsect1> + <title>SEE ALSO</title> + <para><citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> and <citerefentry><refentrytitle>smb.conf</refentrytitle> + <manvolnum>5</manvolnum></citerefentry>.</para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/smbtar.1.xml b/docs-xml/manpages/smbtar.1.xml new file mode 100644 index 0000000..c1b3450 --- /dev/null +++ b/docs-xml/manpages/smbtar.1.xml @@ -0,0 +1,237 @@ +<?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="smbtar.1"> + +<refmeta> + <refentrytitle>smbtar</refentrytitle> + <manvolnum>1</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">User Commands</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>smbtar</refname> + <refpurpose>shell script for backing up SMB/CIFS shares + directly to UNIX tape drives</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>smbtar</command> + <arg choice="opt">-r</arg> + <arg choice="opt">-i</arg> + <arg choice="opt">-a</arg> + <arg choice="opt">-v</arg> + <arg choice="req">-s server</arg> + <arg choice="opt">-p password</arg> + <arg choice="opt">-x services</arg> + <arg choice="opt">-X</arg> + <arg choice="opt">-N filename</arg> + <arg choice="opt">-b blocksize</arg> + <arg choice="opt">-d directory</arg> + <arg choice="opt">-l loglevel</arg> + <arg choice="opt">-u user</arg> + <arg choice="opt">-t tape</arg> + <arg choice="req">filenames</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><command>smbtar</command> is a very small shell script on top + of <citerefentry><refentrytitle>smbclient</refentrytitle><manvolnum>1</manvolnum> + </citerefentry> which dumps SMB shares directly to tape.</para> +</refsect1> + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + <varlistentry> + <term>-s server</term> + <listitem><para>The SMB/CIFS server that the share resides + upon.</para></listitem> + </varlistentry> + + + <varlistentry> + <term>-x service</term> + <listitem><para>The share name on the server to connect to. + The default is "backup".</para></listitem> + </varlistentry> + + + <varlistentry> + <term>-X</term> + <listitem><para>Exclude mode. Exclude filenames... from tar + create or restore. </para></listitem> + </varlistentry> + + + + <varlistentry> + <term>-d directory</term> + <listitem><para>Change to initial <parameter>directory + </parameter> before restoring / backing up files. </para></listitem> + </varlistentry> + + + + <varlistentry> + <term>-v</term> + <listitem><para>Verbose mode.</para></listitem> + </varlistentry> + + + + <varlistentry> + <term>-p password</term> + <listitem><para>The password to use to access a share. + Default: none </para></listitem> + </varlistentry> + + + <varlistentry> + <term>-u user</term> + <listitem><para>The user id to connect as. Default: + UNIX login name. </para></listitem> + </varlistentry> + + + <varlistentry> + <term>-a</term> + <listitem><para>Reset DOS archive bit mode to + indicate file has been archived. </para></listitem> + </varlistentry> + + <varlistentry> + <term>-t tape</term> + <listitem><para>Tape device. May be regular file or tape + device. Default: <parameter>$TAPE</parameter> environmental + variable; if not set, a file called <filename>tar.out + </filename>. </para></listitem> + </varlistentry> + + + <varlistentry> + <term>-b blocksize</term> + <listitem><para>Blocking factor. Defaults to 20. See + <command>tar(1)</command> for a fuller explanation. </para></listitem> + </varlistentry> + + + <varlistentry> + <term>-N filename</term> + <listitem><para>Backup only files newer than filename. Could + be used (for example) on a log file to implement incremental + backups. </para></listitem> + </varlistentry> + + + <varlistentry> + <term>-i</term> + <listitem><para>Incremental mode; tar files are only backed + up if they have the archive bit set. The archive bit is reset + after each file is read. </para></listitem> + </varlistentry> + + + <varlistentry> + <term>-r</term> + <listitem><para>Restore. Files are restored to the share + from the tar file. </para></listitem> + </varlistentry> + + + + <varlistentry> + <term>-l log level</term> + <listitem><para>Log (debug) level. Corresponds to the + <parameter>-d</parameter> flag of <citerefentry> + <refentrytitle>smbclient</refentrytitle><manvolnum>1</manvolnum> + </citerefentry>.</para></listitem> + </varlistentry> + </variablelist> +</refsect1> + + +<refsect1> + <title>ENVIRONMENT VARIABLES</title> + + <para>The <parameter>$TAPE</parameter> variable specifies the + default tape device to write to. May be overridden + with the -t option. </para> +</refsect1> + + +<refsect1> + <title>BUGS</title> + + <para>The <command>smbtar</command> script has different + options from ordinary tar and from smbclient's tar command. </para> + +</refsect1> + +<refsect1> + <title>CAVEATS</title> + + <para>Sites that are more careful about security may not like + the way the script handles PC passwords. Backup and restore work + on entire shares; should work on file lists. smbtar works best + with GNU tar and may not work well with other versions. </para> +</refsect1> + + +<refsect1> + <title>DIAGNOSTICS</title> + + <para>See the <emphasis>DIAGNOSTICS</emphasis> section for the <citerefentry> + <refentrytitle>smbclient</refentrytitle><manvolnum>1</manvolnum> + </citerefentry> command.</para> +</refsect1> + + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of + the Samba suite.</para> +</refsect1> + +<refsect1> + <title>SEE ALSO</title> + <para><citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry>, <citerefentry> + <refentrytitle>smbclient</refentrytitle><manvolnum>1</manvolnum> + </citerefentry>, <citerefentry><refentrytitle>smb.conf</refentrytitle> + <manvolnum>5</manvolnum></citerefentry>.</para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + +<para><ulink noescape="1" url="mailto:poultenr@logica.co.uk">Ricky Poulten</ulink> + wrote the tar extension and this man page. The <command>smbtar</command> + script was heavily rewritten and improved by <ulink noescape="1" + url="mailto:Martin.Kraemer@mch.sni.de">Martin Kraemer</ulink>. Many + thanks to everyone who suggested extensions, improvements, bug + fixes, etc. The man page sources were converted to YODL format (another + excellent piece of Open Source software, available at <ulink noescape="1" url="ftp://ftp.icce.rug.nl/pub/unix/"> + ftp://ftp.icce.rug.nl/pub/unix/</ulink>) and updated for the Samba 2.0 + release by Jeremy Allison. The conversion to DocBook for + Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML 4.2 for + Samba 3.0 was done by Alexander Bokovoy.</para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/smbtree.1.xml b/docs-xml/manpages/smbtree.1.xml new file mode 100644 index 0000000..b1ba700 --- /dev/null +++ b/docs-xml/manpages/smbtree.1.xml @@ -0,0 +1,107 @@ +<?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="smbtree.1"> + +<refmeta> + <refentrytitle>smbtree</refentrytitle> + <manvolnum>1</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">User Commands</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>smbtree</refname> + <refpurpose>A text based smb network browser + </refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>smbtree</command> + <arg choice="opt">-D|--domains</arg> + <arg choice="opt">-S|--servers</arg> + <arg choice="opt">-?|--help</arg> + <arg choice="opt">--usage</arg> + <arg choice="opt">-d|--debuglevel=DEBUGLEVEL</arg> + <arg choice="opt">--debug-stdout</arg> + <arg choice="opt">--configfile=CONFIGFILE</arg> + <arg choice="opt">--option=name=value</arg> + <arg choice="opt">-l|--log-basename=LOGFILEBASE</arg> + <arg choice="opt">--leak-report</arg> + <arg choice="opt">--leak-report-full</arg> + <arg choice="opt">-U|--user=[DOMAIN/]USERNAME[%PASSWORD]</arg> + <arg choice="opt">-N|--no-pass</arg> + <arg choice="opt">--password=STRING</arg> + <arg choice="opt">--pw-nt-hash</arg> + <arg choice="opt">-A|--authentication-file=FILE</arg> + <arg choice="opt">-P|--machine-pass</arg> + <arg choice="opt">--simple-bind-dn=DN</arg> + <arg choice="opt">--use-kerberos=desired|required|off</arg> + <arg choice="opt">--use-krb5-ccache=CCACHE</arg> + <arg choice="opt">--use-winbind-ccache</arg> + <arg choice="opt">--client-protection=sign|encrypt|off</arg> + <arg choice="opt">-V|--version</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><command>smbtree</command> is a smb browser program + in text mode. It is similar to the "Network Neighborhood" found + on Windows computers. It prints a tree with all + the known domains, the servers in those domains and + the shares on the servers. + </para> +</refsect1> + + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + <varlistentry> + <term>-D|--domains</term> + <listitem><para>Only print a list of all + the domains known on broadcast or by the + master browser</para></listitem> + </varlistentry> + + <varlistentry> + <term>-S|--servers</term> + <listitem><para>Only print a list of + all the domains and servers responding on broadcast or + known by the master browser. + </para></listitem> + </varlistentry> + + &popt.autohelp; + &cmdline.common.samba.client; + &cmdline.common.credentials; + </variablelist> +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of the Samba + suite.</para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + + <para>The smbtree man page was written by Jelmer Vernooij. </para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/testparm.1.xml b/docs-xml/manpages/testparm.1.xml new file mode 100644 index 0000000..578eb78 --- /dev/null +++ b/docs-xml/manpages/testparm.1.xml @@ -0,0 +1,215 @@ +<?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="testparm.1"> + +<refmeta> + <refentrytitle>testparm</refentrytitle> + <manvolnum>1</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">User Commands</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>testparm</refname> + <refpurpose>check an smb.conf configuration file for + internal correctness</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>testparm</command> + <arg choice="opt">-s|--suppress-prompt</arg> + <arg choice="opt">-v|--verbose</arg> + <arg choice="opt">-?|--help</arg> + <arg choice="opt">--usage</arg> + <arg choice="opt">-d|--debuglevel=DEBUGLEVEL</arg> + <arg choice="opt">--debug-stdout</arg> + <arg choice="req">config filename</arg> + <arg choice="opt">hostname hostIP</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><command>testparm</command> is a very simple test program + to check an <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> configuration file for + internal correctness. If this program reports no problems, you + can use the configuration file with confidence that <command>smbd + </command> will successfully load the configuration file.</para> + + + <para>Note that this is <emphasis>NOT</emphasis> a guarantee that + the services specified in the configuration file will be + available or will operate as expected. </para> + + <para>If the optional host name and host IP address are + specified on the command line, this test program will run through + the service entries reporting whether the specified host + has access to each service. </para> + + <para>If <command>testparm</command> finds an error in the <filename> + smb.conf</filename> file it returns an exit code of 1 to the calling + program, else it returns an exit code of 0. This allows shell scripts + to test the output from <command>testparm</command>.</para> +</refsect1> + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + <varlistentry> + <term>-s|--suppress-prompt</term> + <listitem><para>Without this option, <command>testparm</command> + will prompt for a carriage return after printing the service + names and before dumping the service definitions.</para></listitem> + </varlistentry> + + <varlistentry> + <term>-v|--verbose</term> + <listitem><para>If this option is specified, testparm + will also output all options that were not used in <citerefentry> + <refentrytitle>smb.conf</refentrytitle><manvolnum>5</manvolnum> + </citerefentry> and are thus set to their defaults.</para></listitem> + </varlistentry> + + <varlistentry> + <term>--parameter-name parametername</term> + <listitem><para> + Dumps the named parameter. If no section-name is set the view + is limited by default to the global section. + + It is also possible to dump a parametrical option. Therefore + the option has to be separated by a colon from the + parametername. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--section-name sectionname</term> + <listitem><para> + Dumps the named section. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--show-all-parameters</term> + <listitem><para> + Show the parameters, type, possible values. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-l|--skip-logic-checks</term> + <listitem><para> + Skip the global checks. + </para></listitem> + </varlistentry> + + &popt.autohelp; + &cmdline.common.debug.client; + &cmdline.common.config.client; + &cmdline.common.option; + &cmdline.version; + + <varlistentry> + <term>configfilename</term> + <listitem><para>This is the name of the configuration file + to check. If this parameter is not present then the + default <citerefentry><refentrytitle>smb.conf</refentrytitle><manvolnum>5</manvolnum> + </citerefentry> file will be checked. + </para></listitem> + </varlistentry> + + + <varlistentry> + <term>hostname</term> + <listitem><para>If this parameter and the following are + specified, then <command>testparm</command> will examine the <parameter>hosts + allow</parameter> and <parameter>hosts deny</parameter> + parameters in the <citerefentry> + <refentrytitle>smb.conf</refentrytitle><manvolnum>5</manvolnum> + </citerefentry> file to + determine if the hostname with this IP address would be + allowed access to the <command>smbd</command> server. If + this parameter is supplied, the hostIP parameter must also + be supplied.</para></listitem> + </varlistentry> + + + <varlistentry> + <term>hostIP</term> + <listitem><para>This is the IP address of the host specified + in the previous parameter. This address must be supplied + if the hostname parameter is supplied. </para></listitem> + </varlistentry> + </variablelist> +</refsect1> + +<refsect1> + <title>FILES</title> + + <variablelist> + <varlistentry> + <term><citerefentry><refentrytitle>smb.conf</refentrytitle><manvolnum>5</manvolnum> + </citerefentry></term> + <listitem><para>This is usually the name of the configuration + file used by <citerefentry><refentrytitle>smbd</refentrytitle><manvolnum>8</manvolnum> + </citerefentry>. + </para></listitem> + </varlistentry> + </variablelist> +</refsect1> + +<refsect1> + <title>DIAGNOSTICS</title> + + <para>The program will issue a message saying whether the + configuration file loaded OK or not. This message may be preceded by + errors and warnings if the file did not load. If the file was + loaded OK, the program then dumps all known service details + to stdout. </para> + + <para>For certain use cases, SMB protocol requires use of + cryptographic algorithms which are known to be weak and already + broken. DES and ARCFOUR (RC4) ciphers and the SHA1 and MD5 hash + algorithms are considered weak but they are required for backward + compatibility. The testparm utility shows whether the Samba tools + will fall back to these weak crypto algorithms if it is not possible + to use strong cryptography by default. + In FIPS mode weak crypto cannot be enabled.</para> +</refsect1> + + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of + the Samba suite.</para> +</refsect1> + +<refsect1> + <title>SEE ALSO</title> + <para><citerefentry> + <refentrytitle>smb.conf</refentrytitle><manvolnum>5</manvolnum> + </citerefentry>, <citerefentry> + <refentrytitle>smbd</refentrytitle><manvolnum>8</manvolnum> + </citerefentry></para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/traffic_learner.7.xml b/docs-xml/manpages/traffic_learner.7.xml new file mode 100644 index 0000000..b921035 --- /dev/null +++ b/docs-xml/manpages/traffic_learner.7.xml @@ -0,0 +1,199 @@ +<?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="traffic_learner.7"> + +<refmeta> + <refentrytitle>traffic_learner</refentrytitle> + <manvolnum>7</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">User Commands</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>traffic_learner</refname> + <refpurpose>Samba tool to assist with traffic generation. + </refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>traffic_learner</command> + <arg choice="req">-o OUTPUT_FILE ...</arg> + <arg choice="opt">-h</arg> + <arg choice="opt">--dns-mode {inline|count}</arg> + <arg choice="opt">SUMMARY_FILE</arg> + <arg choice="opt">SUMMARY_FILE ...</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>This tool assists with generation of Samba traffic. + It takes a traffic-summary file (produced by + <command>traffic_summary.pl</command>) as input and produces a + traffic-model file that can be used by <command>traffic_replay</command> + for traffic generation.</para> + + <para>The model file summarizes the types of traffic ('conversations' + between a host and a Samba DC) that occur on a network. The model file + describes the traffic in a way that allows it to be scaled so that + either more (or fewer) packets get sent, and the packets can be sent at + a faster (or slower) rate than that seen in the network.</para> +</refsect1> + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + + <varlistentry> + <term>-h|--help</term> + <listitem><para> + Print a summary of command line options. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>SUMMARY_FILE</term> + <listitem><para> + File containing a network traffic-summary. The traffic-summary file + should be generated by <command>traffic_summary.pl</command> from a + packet capture of actual network traffic. + More than one file can be specified, in which case the traffic will + be combined into a single traffic-model. If no SUMMARY_FILE is + specified, this tool will read the traffic-summary from STDIN, i.e. + you can pipe the output from traffic_summary.pl directly to this tool. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-o|--out OUTPUT_FILE</term> + <listitem><para> + The traffic-model that is produced will be written to this file. The + OUTPUT_FILE can then be passed to <command>traffic_replay</command> + to generate (and manipulate) Samba network traffic. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--dns-mode [inline|count]</term> + <listitem><para> + How DNS traffic should be handled by the model. + </para></listitem> + </varlistentry> + + </variablelist> +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + + <para>To take a traffic-summary file and produce a traffic-model + file, use:</para> + + <para><command>traffic_learner traffic-summary.txt + -o traffic-model.txt</command></para> + + <para>To generate a traffic-model from a packet capture, you can + pipe the traffic summary to STDIN using:</para> + + <para><command>tshark -r capture.pcapng -T pdml | + traffic_summary.pl | traffic_learner -o traffic-model.txt</command></para> +</refsect1> + +<refsect1> + <title>OUTPUT FILE FORMAT</title> + + <para>The output model file describes a Markov model estimating the + probability of a packet occurring given the last two packets.</para> + + <para>The count of each continuation after a pair of + successive packets is stored, and the ratios of these counts + is used to calculate probabilities for the next packet. + </para> + + <para>The model is stored in JSON format, and also contains + information about the packet rate and DNS traffic rate.</para> + + +<refsect2> + <title>Example ngram listing</title> + <para>The following listing shows a contrived example of a single ngram entry. + </para> + + <programlisting> + "ngrams": { + "ldap:0\tdcerpc:11": { + "lsarpc:77": 1, + "ldap:2": 370, + "ldap:3": 62, + "wait:3": 2, + "-": 1 + }, <lineannotation>[...]</lineannotation> + } + </programlisting> + <para> This counts the observed continuations after an ldap + packet with opcode 0 (a bind) followed by a dcerpc packet with + opcode 11 (also a bind). The most common next packet is + "<code>ldap:2</code>" which is an unbind, so this is the most + likely packet type to be selected in replay. At the other + extreme, lsarpc opcode 77 (lookup names) has been seen only + once, and it is unlikely but possible that this will be + selected in replay. + </para> + <para> There are two special packet types here. + "<code>wait:3</code>" refers to a temporary pause in the + conversation, where the "<code>3</code>" pseudo-opcode indicates + the length of the wait on an exponential scale. That is, a + "<code>wait:4</code>" pause would be about 2.7 times longer that + a "<code>wait:3</code>", which in turn would be similarly longer + than a "<code>wait:2</code>". + </para> + + <para>The other special packet is "-", which represents the + limit of the conversation. In the example, this indicates that + one observed conversation ended after this particular ngram. + This special opcode is also used at the beginning of + conversations, which are indicated by the ngram "<code>-\t-</code>". + </para> + + +</refsect2> +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is complete for version &doc.version; of the Samba + suite.</para> +</refsect1> + +<refsect1> + <title>SEE ALSO</title> + <para> + <citerefentry> + <refentrytitle>traffic_replay</refentrytitle><manvolnum>7</manvolnum> + </citerefentry>. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + + <para>The traffic_learner tool was developed by the Samba team at + Catalyst IT Ltd.</para> + + <para>The traffic_learner manpage was written by Tim Beale.</para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/traffic_replay.7.xml b/docs-xml/manpages/traffic_replay.7.xml new file mode 100644 index 0000000..f0d6ac1 --- /dev/null +++ b/docs-xml/manpages/traffic_replay.7.xml @@ -0,0 +1,621 @@ +<?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="traffic_replay.7"> + +<refmeta> + <refentrytitle>traffic_replay</refentrytitle> + <manvolnum>7</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">User Commands</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>traffic_replay</refname> + <refpurpose>Samba traffic generation tool. + </refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>traffic_replay</command> + <arg choice="opt">-F, --fixed-password <test-password></arg> + <arg choice="opt">-T, --packets-per-second <number></arg> + <arg choice="opt">-S, --scale-traffic <scale by factor></arg> + <arg choice="opt">-r, --replay-rate <scale by factor></arg> + <arg choice="opt">-D, --duration <seconds></arg> + <arg choice="opt">--traffic-summary <output file></arg> + <arg choice="opt">-I, --instance-id <id></arg> + <arg choice="opt">-K, --prefer-kerberos</arg> + <arg choice="opt">-B, --badpassword-frequency <frequency></arg> + <arg choice="opt">--dns-rate <rate></arg> + <arg choice="opt">-t, --timing-data <file></arg> + <arg choice="opt">--random-seed <seed></arg> + <arg choice="opt">-U, --username user</arg> + <arg choice="opt">--password <password></arg> + <arg choice="opt">-W --workgroup <workgroup></arg> + <arg choice="opt">--realm <realm></arg> + <arg choice="opt">-s, --config-file <file></arg> + <arg choice="opt">-k, --kerberos <kerberos></arg> + <arg choice="opt">--ipaddress <address></arg> + <arg choice="opt">-P, --machine-pass</arg> + <arg choice="opt">--option <option></arg> + <arg choice="opt">-d, --debuglevel <debug level></arg> + <arg choice="opt">--conversation-persistence <0-1></arg> + <arg choice="opt">--latency-timeout <seconds></arg> + <arg choice="opt">--stop-on-any-error</arg> + <arg choice="req">summary-file</arg> + <arg choice="req">dns-hostname</arg> + </cmdsynopsis> + + <cmdsynopsis> + <command>traffic_replay</command> + <arg choice="opt">-G, --generate-users-only</arg> + <arg choice="opt">-F, --fixed-password <test-password></arg> + <arg choice="opt">-n, --number-of-users <total users></arg> + <arg choice="opt">--number-of-groups <total groups></arg> + <arg choice="opt">--average-groups-per-user <average number></arg> + <arg choice="opt">--group-memberships <total memberships></arg> + <arg choice="opt">--max-members <group size></arg> + <arg choice="req">dns-hostname</arg> + </cmdsynopsis> + + <cmdsynopsis> + <command>traffic_replay</command> + <arg choice="req">-c|--clean-up</arg> + <arg choice="req">dns-hostname</arg> + </cmdsynopsis> + + <cmdsynopsis> + <command>traffic_replay</command> + <arg choice="opt">-h, --help</arg> + <arg choice="opt">-V, --version</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>This tool generates traffic in order to measure the performance + of a Samba DC, and to test how well Samba will scale as a network + increases in size. It can simulate multiple different hosts making + multiple different types of requests to a DC.</para> + + <para>This tool is intended to run against a dedicated test DC (rather + than a live DC that is handling real network traffic).</para> + + <para>Note that a side-effect of running this tool is that user + accounts will be created on the DC, in order to test various Samba + operations. As creating accounts can be very time-consuming, these + users will remain on the DC by default. To remove these accounts, use + the --clean-up option. + </para> +</refsect1> + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + + <varlistentry> + <term>-h|--help</term> + <listitem><para> + Print a summary of command line options. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>summary-file</term> + <listitem><para> + File containing the network traffic to replay. This should be a + traffic-model (generated by <command>traffic_learner</command>). + Based on this file, this tool will generate 'conversations' which + represent Samba activity between a network host and the DC. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>dns-hostname</term> + <listitem><para> + The full DNS hostname of the DC that's being tested. The Samba activity + in the summary-file will be replicated and directed at this DC. It's + recommended that you use a dedicated DC for testing and don't try to run + this tool against a DC that's processing live network traffic. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-F|--fixed-password <test-password></term> + <listitem><para> + Test users are created when this tool is run, so that actual Samba + activity, such as authorizing users, can be mimicked. This option + specifies the password that will be used for any test users that are + created.</para> + + <para>Note that any users created by this tool will remain on the DC + until you run the --clean-up option. Therefore, the fixed-password + option needs to be the same each time the tool is run, otherwise the + test users won't authenticate correctly. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>random-seed</term> + <listitem><para> + A number to seed the random number generator with. When traffic is + generated from a model-file, use this option to keep the traffic + consistent across multiple test runs. This allows you to compare the + performance of Samba between different releases. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>Traffic Model Options</term> + <listitem><para> + When the summary-file is a traffic-model (produced by + <command>traffic_learner</command>), use these options to alter the + traffic that gets generated.</para> + <variablelist> + <varlistentry> + <term>-D|--duration <seconds></term> + <listitem><para> + Specifies the approximate duration in seconds to generate + traffic for. The default is 60 seconds. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-T|--packets-per-second <number></term> + <listitem><para> + Generate this many packets per second, regardless of + the traffic rate of the sample on which the model + was based. This cannot be used with <option>-S</option>. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-S|--scale-traffic <factor></term> + <listitem><para> + Increases the number of conversations by this factor, + relative to the original traffic sample on which the + model was based. This option won't affect the rate at + which packets get sent (which is still based on the + traffic model), but it will mean more conversations + get replayed. It cannot be combined with + <option>-T</option>, which sets the traffic rate in a + different way. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-r|--replay-rate <factor></term> + <listitem><para> Replays the traffic faster by this + factor. This option won't affect the number of packets + sent, but it will squeeze them into fewer + conversations, which may reduce resource usage. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--traffic-summary <output-file></term> + <listitem><para> + Instead of replaying a traffic-model, this option generates a + traffic-summary file based on what traffic would be sent. Using + a traffic-model allows you to scale the packet rate and number + of packets sent. However, using a traffic-model introduces + some randomness into the traffic generation. So running the + same traffic_replay command multiple times using a model file + may result in some differences in the actual traffic sent. + However, running the same traffic_replay command multiple times + with a traffic-summary file will always result in the same + traffic being sent. </para> + <para> + For taking performance measurements over several test runs, + it's recommended to use this option and replay the traffic from + a traffic-summary file, or to use the --random-seed option. + </para></listitem> + </varlistentry> + <varlistentry> + <term>--stop-on-any-error</term> + <listitem><para> Any client error causes the whole run to stop. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--conversation-persistence <0-1></term> + <listitem><para> Conversation termination (as decided + by the model) is re-interpreted as a long pause with + this probability. </para></listitem> + </varlistentry> + + <varlistentry> + <term>--latency-timeout <seconds></term> + <listitem><para> Wait this long at the end of the run + for outstanding reply packets. The number of + conversations that have not finished at the end of the + timeout is a failure metric. </para></listitem> + </varlistentry> + + </variablelist> + </listitem> + </varlistentry> + + <varlistentry> + <term>--generate-users-only</term> + <listitem><para>Add extra user/groups on the DC to increase the DB + size. By default, this tool automatically creates test users that map + to the traffic conversations being generated. This option allows extra + users to be created on top of this. Note that these extra users may + not actually used for traffic generation - the traffic generation is + still based on the number of conversations from the model/summary file. + </para> + + <para> + Generating a large number of users can take a long time, so it this + option allows this to be done only once.</para> + + <para>Note that the users created will remain on the DC until the + tool is run with the --clean-up option. This means that it is best to + only assign group memberships once, i.e. run --clean-up before + assigning a different allocation of group memberships.</para> + <itemizedlist> + + <varlistentry> + <term>-n|--number-of-users <total-users></term> + <listitem><para> + Specifies the total number of test users to create (excluding + any machine accounts required for the traffic). Note that these + extra users simply populate the DC's DB - the actual user + traffic generated is still based on the summary-file. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--number-of-groups <total-groups></term> + <listitem><para> + Creates the specified number of groups, for assigning the test + users to. Note that users are not automatically assigned to + groups - use either --average-groups-per-user or + --group-memberships to do this. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--average-groups-per-user <average-groups></term> + <listitem><para> + Randomly assigns the test users to the test groups created. + The group memberships are distributed so that the overall + average groups that a user is member of matches this number. + Some users will belong to more groups and some users will + belong to fewer groups. This option is incompatible with + the --group-membership option. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--group-memberships <total-memberships></term> + <listitem><para> + Randomly assigns the test users to the test groups created. + The group memberships are distributed so that the total + groups that a user is member of, across all users, matches + this number. For example, with 100 users and 10 groups, + --group-memberships=300 would assign a user to 3 groups + on average. Some users will belong to more groups and some + users will belong to fewer groups, but the total of all + member linked attributes would be 300. This option is + incompatible with the --average-groups-per-user option. + </para></listitem> + </varlistentry> + <varlistentry> + <term>--max-members <group size></term> + <listitem><para> Limit the largest group to this size, + even if the other group options would have it otherwise. + </para></listitem> + </varlistentry> + </itemizedlist> + </listitem> + </varlistentry> + + <varlistentry> + <term>--clean-up</term> + <listitem><para> + Cleans up any users and groups that were created by previously running + this tool. It is recommended you always clean up after running the tool. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-I|--instance-id <id></term> + <listitem><para> + Use this option to run multiple instances of the tool on the same DC at + the same time. This adds a prefix to the test users generated to keep + them separate on the DC. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-K|--prefer-kerberos</term> + <listitem><para> + Use Kerberos to authenticate the test users. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-B|--badpassword-frequency <frequency></term> + <listitem><para> + Use this option to simulate users trying to authenticate with an + incorrect password. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--dns-rate <rate></term> + <listitem><para> + Increase the rate at which DNS packets get sent. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-t|--timing-data <file></term> + <listitem><para> + This writes extra timing data to the file specified. This is mostly + used for reporting options, such as generating graphs. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>Samba Common Options</term> + <listitem> + <itemizedlist> + &cmdline.common.debug.client; + &cmdline.common.config.client; + &cmdline.common.option; + <varlistentry> + <term>--realm=REALM</term> + <listitem><para> + Set the realm name + </para></listitem> + </varlistentry> + &cmdline.version; + </itemizedlist> + </listitem> + </varlistentry> + + <varlistentry> + <term>Credential Options</term> + <listitem> + <itemizedlist> + <varlistentry> + <term>--simple-bind-dn=DN</term> + <listitem><para> + DN to use for a simple bind + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--password=PASSWORD</term> + <listitem><para> + Password + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-U USERNAME|--username=USERNAME</term> + <listitem><para> + Username + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-W WORKGROUP|--workgroup=WORKGROUP</term> + <listitem><para> + Workgroup + </para></listitem> + </varlistentry> + + &cmdline.common.credentials.usekerberos; + + <varlistentry> + <term>--ipaddress=IPADDRESS</term> + <listitem><para> + IP address of the server + </para></listitem> + </varlistentry> + + &cmdline.common.credentials.machinepass; + </itemizedlist> + </listitem> + </varlistentry> + + </variablelist> +</refsect1> + +<refsect1> +<title>OPERATIONS</title> + +<refsect2> + <title>Generating a traffic-summary file</title> + <para>To use this tool, you need either a traffic-summary file or a + traffic-model file. To generate either of these files, you will need a + packet capture of actual Samba activity on your network.</para> + + <para>Use Wireshark to take a packet capture on your network of the + traffic you want to generate. For example, if you want to simulate lots + of users logging on, then take a capture at 8:30am when users are + logging in.</para> + + <para>Next, you need to convert your packet capture into a traffic + summary file, using <command>traffic_summary.pl</command>. Basically + this removes any sensitive information from the capture and summarizes + what type of packet was sent and when.</para> + + <para>Refer to the <command>traffic_summary.pl --help</command> help for more + details, but the basic command will look something like:</para> + + <para><command>tshark -r capture.pcapng -T pdml | + traffic_summary.pl > traffic-summary.txt</command></para> +</refsect2> + +<refsect2> + <title>Replaying a traffic-summary file</title> + <para>Once you have a traffic-summary file, you can use it to generate + traffic. The traffic_replay tool gets passed the traffic-summary file, + along with the full DNS hostname of the DC being tested. You also need + to provide some user credentials, and possibly the Samba realm and + workgroup (although the realm and workgroup may be determined + automatically, for example from the /etc/smb.conf file, if one is + present). E.g.</para> + + <para><command>traffic_replay traffic-summary.txt + my-dc.samdom.example.com -UAdmin%password -W samdom + --realm=samdom.example.com --fixed-password=blahblah123!</command> + </para> + + <para>This simply regenerates Samba activity seen in the traffic + summary. The traffic is grouped into 'conversations' between a host and + the DC. A user and machine account is created on the DC for each + conversation, in order to allow logon and other operations to succeed. + The script generates the same types of packets as those seen in the + summary.</para> + + <para>Creating users can be quite a time-consuming process, especially + if a lot of conversations are being generated. To save time, the test + users remain on the DC by default. You will need to run the --clean-up + option to remove them, once you have finished generating traffic. + Because the same test users are used across multiple runs of the tool, + a consistent password for these users needs to be used - this is + specified by the --fixed-password option. + </para> + + <para>The benefit of this tool over simply using tcprelay is that the + traffic generated is independent of any specific network. No setup is + needed beforehand on the test DC. The traffic no longer contains + sensitive details, so the traffic summary could be potentially shared + with other Samba developers.</para> + + <para>However, replaying a traffic-summary directly is somewhat limited + in what you can actually do. A more flexible approach is to generate + the traffic using a model file.</para> +</refsect2> + +<refsect2> + <title>Generating a traffic-model file</title> + <para>To create a traffic-model file, simply pass the traffic-summary + file to the <command>traffic_learner</command> script. E.g.</para> + + <para><command>traffic_learner traffic-summary.txt + -o traffic-model.txt</command></para> + + <para>This generates a model of the Samba activity in your network. + This model-file can now be used to generate traffic.</para> +</refsect2> + +<refsect2> + <title>Replaying the traffic-model file</title> + <para>Packet generation using a traffic-model file uses the same + command as a traffic-summary file, e.g.</para> + + <para><command>traffic_replay traffic-model.txt + my-dc.samdom.example.com -UAdmin%password</command> + </para> + + <para>By default, this will generate 60 seconds worth of traffic based + on the model. You can specify longer using the --duration parameter. + </para> + + <para>The traffic generated is an approximation of what was seen in + the network capture. The traffic generation involves some randomness, + so running the same command multiple times may result in slightly + different traffic being generated (although you can avoid this, by + specifying the --random-seed option).</para> + + <para>As well as changing how long the model runs for, you can also + change how many conversations get generated and how fast the traffic + gets replayed. To roughly double the number of conversations that get + replayed, use --scale-traffic=2 or to approximately halve the number + use --scale-traffic=0.5. To approximately double how quickly the + conversations get replayed, use --replay-rate=2, or to halve this use + --replay-rate=0.5</para> + + <para>For example, to generate approximately 10 times the amount of + traffic seen over a two-minute period (based on the network capture), + use:</para> + + <para><command>traffic_replay traffic-model.txt + my-dc.samdom.example.com -UAdmin%password --fixed-password=blahblah123! + --scale-traffic=10 --duration=120</command></para> +</refsect2> + +<refsect2> + <title>Scaling the number of users</title> + <para>The performance of a Samba DC running a small subset of test + users will be different to a fully-populated Samba DC running in a + network. As the number of users increases, the size of the DB + increases, and a very large DB will perform worse than a smaller DB. + </para> + + <para>To increase the size of the Samba DB, this tool can also create + extra users and groups. These extra users are basically 'filler' for + the DB. They won't actually be used to generate traffic, but they may + slow down authentication of the test users.</para> + + <para>For example, to populate the DB with an extra 5000 users (note + this will take a while), use the command:</para> + + <para><command>traffic_replay my-dc.samdom.example.com + -UAdmin%password --generate-users-only --fixed-password=blahblah123! + --number-of-users=5000</command></para> + + <para>You can also create groups and assign users to groups. The users + can be randomly assigned to groups - this includes any extra users + created as well as the users that map to conversations. Use either + --average-groups-per-user or --group-memberships to specify how many + group memberships should be assigned to the test users.</para> + + <para>For example, to assign the users in the replayed conversations + into 10 groups on average, use a command like:</para> + + <para><command>traffic_replay traffic-model.txt my-dc.samdom.example.com + -UAdmin%password --fixed-password=blahblah123! + --generate-users-only --number-of-groups=25 --average-groups-per-user=10 + </command></para> + + <para>The users created by the test will have names like STGU-0-xyz. + The groups generated have names like STGG-0-xyz.</para> +</refsect2> +</refsect1> + + +<refsect1> + <title>VERSION</title> + + <para>This man page is complete for version &doc.version; of the Samba + suite.</para> +</refsect1> + +<refsect1> + <title>SEE ALSO</title> + <para> + <citerefentry> + <refentrytitle>traffic_learner</refentrytitle><manvolnum>7</manvolnum> + </citerefentry>. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + + <para>The traffic_replay tool was developed by the Samba team at + Catalyst IT Ltd.</para> + + <para>The traffic_replay manpage was written by Tim Beale.</para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_acl_tdb.8.xml b/docs-xml/manpages/vfs_acl_tdb.8.xml new file mode 100644 index 0000000..5f3c6ba --- /dev/null +++ b/docs-xml/manpages/vfs_acl_tdb.8.xml @@ -0,0 +1,132 @@ +<?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="vfs_acl_tdb.8"> + +<refmeta> + <refentrytitle>vfs_acl_tdb</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_acl_tdb</refname> + <refpurpose>Save NTFS-ACLs in a tdb file</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = acl_tdb</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para>The <command>vfs_acl_tdb</command> VFS module stores + NTFS Access Control Lists (ACLs) in a tdb file. + This enables the full mapping of Windows ACLs on Samba + servers. + </para> + + <para> + The ACL settings are stored in + <filename>$LOCKDIR/file_ntacls.tdb</filename>. + </para> + + <para> + This module forces the following parameters: + <itemizedlist> + <listitem><para>inherit acls = true</para></listitem> + <listitem><para>dos filemode = true</para></listitem> + <listitem><para>force unknown acl user = true</para></listitem> + </itemizedlist> + </para> + + <para>This module is stackable.</para> +</refsect1> + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + <!-- please keep in sync with the other acl vfs modules that provide the same options --> + <varlistentry> + <term>acl_tdb:ignore system acls = [yes|no]</term> + <listitem> + <para> + When set to <emphasis>yes</emphasis>, a best effort mapping + from/to the POSIX ACL layer will <emphasis>not</emphasis> be + done by this module. The default is <emphasis>no</emphasis>, + which means that Samba keeps setting and evaluating both the + system ACLs and the NT ACLs. This is better if you need your + system ACLs be set for local or NFS file access, too. If you only + access the data via Samba you might set this to yes to achieve + better NT ACL compatibility. + </para> + + <para> + If <emphasis>acl_tdb:ignore system acls</emphasis> + is set to <emphasis>yes</emphasis>, the following + additional settings will be enforced: + <itemizedlist> + <listitem><para>create mask = 0666</para></listitem> + <listitem><para>directory mask = 0777</para></listitem> + <listitem><para>map archive = no</para></listitem> + <listitem><para>map hidden = no</para></listitem> + <listitem><para>map readonly = no</para></listitem> + <listitem><para>map system = no</para></listitem> + <listitem><para>store dos attributes = yes</para></listitem> + </itemizedlist> + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>acl_tdb:default acl style = [posix|windows|everyone]</term> + <listitem> + <para> + This parameter determines the type of ACL that is synthesized in + case a file or directory lacks an + <emphasis>security.NTACL</emphasis> xattr. + </para> + <para> + When set to <emphasis>posix</emphasis>, an ACL will be + synthesized based on the POSIX mode permissions for user, group + and others, with an additional ACE for <emphasis>NT + Authority\SYSTEM</emphasis> will full rights. + </para> + <para> + When set to <emphasis>windows</emphasis>, an ACL is synthesized + the same way Windows does it, only including permissions for the + owner and <emphasis>NT Authority\SYSTEM</emphasis>. + </para> + <para> + When set to <emphasis>everyone</emphasis>, an ACL is synthesized + giving full permissions to everyone (S-1-1-0). + </para> + <para> + The default for this option is <emphasis>posix</emphasis>. + </para> + </listitem> + </varlistentry> + </variablelist> + +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_acl_xattr.8.xml b/docs-xml/manpages/vfs_acl_xattr.8.xml new file mode 100644 index 0000000..5a26359 --- /dev/null +++ b/docs-xml/manpages/vfs_acl_xattr.8.xml @@ -0,0 +1,155 @@ +<?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="vfs_acl_xattr.8"> + +<refmeta> + <refentrytitle>vfs_acl_xattr</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_acl_xattr</refname> + <refpurpose>Save NTFS-ACLs in Extended Attributes (EAs)</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = acl_xattr</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para>The <command>vfs_acl_xattr</command> VFS module stores + NTFS Access Control Lists (ACLs) in Extended Attributes (EAs). + This enables the full mapping of Windows ACLs on Samba + servers. + </para> + + <para>The ACLs are stored in the Extended Attribute + <parameter>security.NTACL</parameter> of a file or directory. + This Attribute is <emphasis>not</emphasis> listed by + <command>getfattr -d <filename>filename</filename></command>. + To show the current value, the name of the EA must be specified + (e.g. <command>getfattr -n security.NTACL <filename>filename</filename> + </command>). + </para> + + <para> + This module forces the following parameters: + <itemizedlist> + <listitem><para>inherit acls = true</para></listitem> + <listitem><para>dos filemode = true</para></listitem> + <listitem><para>force unknown acl user = true</para></listitem> + </itemizedlist> + </para> + + <para>This module is stackable.</para> +</refsect1> + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + <!-- please keep in sync with the other acl vfs modules that provide the same options --> + <varlistentry> + <term>acl_xattr:security_acl_name = NAME</term> + <listitem> + <para> + This option allows to redefine the default location for the + NTACL extended attribute (xattr). If not set, NTACL xattrs are + written to security.NTACL which is a protected location, which + means the content of the security.NTACL attribute is not + accessible from normal users outside of Samba. When this option + is set to use a user-defined value, e.g. user.NTACL then any + user can potentially access and overwrite this information. The + module prevents access to this xattr over SMB, but the xattr may + still be accessed by other means (eg local access, SSH, NFS). This option must only be used + when this consequence is clearly understood and when specific precautions + are taken to avoid compromising the ACL content. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>acl_xattr:ignore system acls = [yes|no]</term> + <listitem> + <para> + When set to <emphasis>yes</emphasis>, a best effort mapping + from/to the POSIX ACL layer will <emphasis>not</emphasis> be + done by this module. The default is <emphasis>no</emphasis>, + which means that Samba keeps setting and evaluating both the + system ACLs and the NT ACLs. This is better if you need your + system ACLs be set for local or NFS file access, too. If you only + access the data via Samba you might set this to yes to achieve + better NT ACL compatibility. + </para> + + <para> + If <emphasis>acl_xattr:ignore system acls</emphasis> + is set to <emphasis>yes</emphasis>, the following + additional settings will be enforced: + <itemizedlist> + <listitem><para>create mask = 0666</para></listitem> + <listitem><para>directory mask = 0777</para></listitem> + <listitem><para>map archive = no</para></listitem> + <listitem><para>map hidden = no</para></listitem> + <listitem><para>map readonly = no</para></listitem> + <listitem><para>map system = no</para></listitem> + <listitem><para>store dos attributes = yes</para></listitem> + </itemizedlist> + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>acl_xattr:default acl style = [posix|windows|everyone]</term> + <listitem> + <para> + This parameter determines the type of ACL that is synthesized in + case a file or directory lacks an + <emphasis>security.NTACL</emphasis> xattr. + </para> + <para> + When set to <emphasis>posix</emphasis>, an ACL will be + synthesized based on the POSIX mode permissions for user, group + and others, with an additional ACE for <emphasis>NT + Authority\SYSTEM</emphasis> will full rights. + </para> + <para> + When set to <emphasis>windows</emphasis>, an ACL is synthesized + the same way Windows does it, only including permissions for the + owner and <emphasis>NT Authority\SYSTEM</emphasis>. + </para> + <para> + When set to <emphasis>everyone</emphasis>, an ACL is synthesized + giving full permissions to everyone (S-1-1-0). + </para> + <para> + The default for this option is <emphasis>posix</emphasis>. + </para> + </listitem> + </varlistentry> + </variablelist> + +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_aio_fork.8.xml b/docs-xml/manpages/vfs_aio_fork.8.xml new file mode 100644 index 0000000..d55af32 --- /dev/null +++ b/docs-xml/manpages/vfs_aio_fork.8.xml @@ -0,0 +1,86 @@ +<?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="vfs_aio_fork.8"> + +<refmeta> + <refentrytitle>vfs_aio_fork</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_aio_fork</refname> + <refpurpose>implement async I/O in Samba vfs</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = aio_fork</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para>The <command>aio_fork</command> VFS module enables async + I/O for Samba on platforms where the system level Posix AIO + interface is insufficient. Posix AIO can suffer from severe + limitations. For example, on some Linux versions the + real-time signals that it uses are broken under heavy load. + Other systems only allow AIO when special kernel modules are + loaded or only allow a certain system-wide amount of async + requests being scheduled. Systems based on glibc (most Linux + systems) only allow a single outstanding request per file + descriptor. </para> + + <para>To work around all these limitations, the aio_fork module + was written. It uses forked helper processes instead of the + internal Posix AIO interface to create asynchronousity for + read and write calls. It has no parameters, it will create + helper processes when async requests come in as needed. Idle + helper processes will be removed every 30 seconds. + </para> + + <para>This module is stackable.</para> + +</refsect1> + + +<refsect1> + <title>EXAMPLES</title> + + <para>Straight forward use:</para> + +<programlisting> + <smbconfsection name="[cooldata]"/> + <smbconfoption name="path">/data/ice</smbconfoption> + <smbconfoption name="vfs objects">aio_fork</smbconfoption> +</programlisting> + +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of the Samba suite. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_aio_pthread.8.xml b/docs-xml/manpages/vfs_aio_pthread.8.xml new file mode 100644 index 0000000..c6f291b --- /dev/null +++ b/docs-xml/manpages/vfs_aio_pthread.8.xml @@ -0,0 +1,97 @@ +<?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="vfs_aio_pthread.8"> + +<refmeta> + <refentrytitle>vfs_aio_pthread</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_aio_pthread</refname> + <refpurpose>implement async open in Samba vfs using a pthread pool</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = aio_pthread</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para>The <command>aio_pthread</command> VFS module enables asynchronous + opens (for new files) with <smbconfoption name="aio_pthread:aio open">yes</smbconfoption> + on platforms which have the pthreads API available, + support the openat() syscall and support per thread credentials (modern Linux kernels). + </para> + + <para>The module makes use of the global thread pool which uses the + <smbconfoption name="aio max threads"/> option.</para> + + <para>This module MUST be listed last in any module stack as + the Samba VFS open interface is not thread-safe. This + module makes direct openat() system calls and does + NOT call the Samba VFS open interfaces.</para> + +</refsect1> + + +<refsect1> + <title>EXAMPLES</title> + + <para>Straight forward use:</para> + +<programlisting> + <smbconfsection name="[cooldata]"/> + <smbconfoption name="path">/data/ice</smbconfoption> + <smbconfoption name="vfs objects">aio_pthread</smbconfoption> + <smbconfoption name="aio_pthread:aio open">yes</smbconfoption> +</programlisting> + +</refsect1> + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + + <varlistentry> + <term>aio_pthread:aio open = BOOL</term> + <listitem> + <para>Try async opens for creating new files. + </para> + <para>The default is 'no'.</para> + </listitem> + </varlistentry> + + </variablelist> +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of the Samba suite. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_audit.8.xml b/docs-xml/manpages/vfs_audit.8.xml new file mode 100644 index 0000000..3a1576d --- /dev/null +++ b/docs-xml/manpages/vfs_audit.8.xml @@ -0,0 +1,120 @@ +<?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="vfs_audit.8"> + +<refmeta> + <refentrytitle>vfs_audit</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_audit</refname> + <refpurpose>record selected Samba VFS operations in the system log</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = audit</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para>The <command>vfs_audit</command> VFS module records selected + client operations to the system log using + <citerefentry><refentrytitle>syslog</refentrytitle> + <manvolnum>3</manvolnum></citerefentry>.</para> + + <para>The following Samba VFS operations are recorded:</para> + <simplelist> + <member>connect</member> + <member>disconnect</member> + <member>opendir</member> + <member>mkdir</member> + <member>rmdir</member> + <member>open</member> + <member>close</member> + <member>rename</member> + <member>unlink</member> + <member>chmod</member> + <member>fchmod</member> + </simplelist> + + <para>This module is stackable.</para> + +</refsect1> + + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + + <varlistentry> + <term>audit:facility = FACILITY</term> + <listitem> + <para>Log messages to the named + <citerefentry><refentrytitle>syslog</refentrytitle> + <manvolnum>3</manvolnum></citerefentry> facility. + + </para> + + </listitem> + </varlistentry> + + <varlistentry> + <term>audit:priority = PRIORITY</term> + <listitem> + <para>Log messages with the named + <citerefentry><refentrytitle>syslog</refentrytitle> + <manvolnum>3</manvolnum></citerefentry> priority. + </para> + + </listitem> + </varlistentry> + + </variablelist> +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + + <para>Log operations on all shares using the LOCAL1 facility + and NOTICE priority:</para> + +<programlisting> + <smbconfsection name="[global]"/> + <smbconfoption name="vfs objects">audit</smbconfoption> + <smbconfoption name="audit:facility">LOCAL1</smbconfoption> + <smbconfoption name="audit:priority">NOTICE</smbconfoption> +</programlisting> + +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of the Samba suite. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_btrfs.8.xml b/docs-xml/manpages/vfs_btrfs.8.xml new file mode 100644 index 0000000..c617a27 --- /dev/null +++ b/docs-xml/manpages/vfs_btrfs.8.xml @@ -0,0 +1,137 @@ +<?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="vfs_btrfs.8"> + +<refmeta> + <refentrytitle>vfs_btrfs</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_btrfs</refname> + <refpurpose> + Utilize features provided by the Btrfs filesystem + </refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = btrfs</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> suite.</para> + + <para> + The <command>vfs_btrfs</command> VFS module exposes Btrfs + specific features for use by Samba. + </para> + + <para> + Btrfs allows for multiple files to share the same on-disk data + through the use cloned ranges. When an SMB client issues a + request to copy duplicate data (via FSCTL_SRV_COPYCHUNK), this + module maps the request to a Btrfs clone range IOCTL, instead + of performing reads and writes required by a traditional copy. + Doing so saves storage capacity and greatly reduces disk IO. + </para> + + <para> + This module also exposes Btrfs per-file compression support to + SMB clients via the get/set compression fsctls. + </para> + + <para> + Btrfs snapshots can be manipulated by Samba's FSRVP server. + Snapshot manipulation using this module is currently considered + experimental, and is therefore disabled by default. The + <command>vfs_snapper</command> module is instead recommended for + this purpose. + </para> + + <para> + This module is stackable. + </para> +</refsect1> + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + <varlistentry> + <term>btrfs: manipulate snapshots = [yes|no]</term> + <listitem> + <para> + When set to <emphasis>yes</emphasis>, experimental support for + the creation and deletion of snapshots via corresponding Btrfs + IOCTLs will be enabled. The default is <emphasis>no</emphasis>, + which means that such requests are passed through to any + underlying VFS module. + </para> + </listitem> + </varlistentry> + </variablelist> +</refsect1> + +<refsect1> + <title>CONFIGURATION</title> + + <para> + <command>vfs_btrfs</command> requires that the underlying share + path is a Btrfs subvolume. + </para> + <programlisting> + <smbconfsection name="[share]"/> + <smbconfoption name="vfs objects">btrfs</smbconfoption> + <smbconfoption name="btrfs: manipulate snapshots">no</smbconfoption> + </programlisting> + <para> + To use the experimental snapshot manipulation functionality + provided by this module, it must be explicitly enabled, and + Samba's FSRVP server must be running. + </para> + <para> + The <command>vfs_shadow_copy</command> module can be used to + expose snapshots created by <command>vfs_btrfs</command> to + Windows Explorer as file / directory "previous versions". + </para> + + <programlisting> + <smbconfsection name="[global]"/> + <smbconfoption name="registry shares">yes</smbconfoption> + <smbconfoption name="include">registry</smbconfoption> + + <smbconfsection name="[share]"/> + <smbconfoption name="vfs objects">btrfs shadow_copy</smbconfoption> + <smbconfoption name="btrfs: manipulate snapshots">yes</smbconfoption> + </programlisting> +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para> + This man page is part of version &doc.version; of the Samba suite. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_cacheprime.8.xml b/docs-xml/manpages/vfs_cacheprime.8.xml new file mode 100644 index 0000000..51b2446 --- /dev/null +++ b/docs-xml/manpages/vfs_cacheprime.8.xml @@ -0,0 +1,110 @@ +<?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="vfs_cacheprime.8"> + +<refmeta> + <refentrytitle>vfs_cacheprime</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_cacheprime</refname> + <refpurpose>prime the kernel file data cache</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = cacheprime</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para>The <command>vfs_cacheprime</command> VFS module reads chunks + of file data near the range requested by clients in order to + make sure the data is present in the kernel file data cache at + the time when it is actually requested by clients. </para> + + <para>The size of the disk read operations performed + by <command>vfs_cacheprime</command> is determined by the + cacheprime:rsize option. All disk read operations are aligned + on boundaries that are a multiple of this size. Each range of + the file data is primed at most once during the time the client + has the file open. </para> + + <para>This module is stackable.</para> +</refsect1> + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + + <varlistentry> + <term>cacheprime:rsize = BYTES</term> + <listitem> + <para>The number of bytes with which to prime + the kernel data cache.</para> + <para>The following suffixes may be applied to BYTES:</para> + <itemizedlist> + <listitem><para><command>K</command> - BYTES is a number of kilobytes</para></listitem> + <listitem><para><command>M</command> - BYTES is a number of megabytes</para></listitem> + <listitem><para><command>G</command> - BYTES is a number of gigabytes</para></listitem> + </itemizedlist> + + </listitem> + </varlistentry> + + </variablelist> +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + + <para>For a hypothetical disk array, it is necessary to ensure + that all read operations are of size 1 megabyte (1048576 bytes), + and aligned on 1 megabyte boundaries: + </para> +<programlisting> + <smbconfsection name="[hypothetical]"/> + <smbconfoption name="vfs objects">cacheprime</smbconfoption> + <smbconfoption name="cacheprime:rsize">1M</smbconfoption> +</programlisting> + +</refsect1> + +<refsect1> + <title>CAVEATS</title> + <para><command>cacheprime</command> is not a substitute for + a general-purpose readahead mechanism. It is intended for use + only in very specific environments where disk operations must + be aligned and sized to known values (as much as that is possible). + </para> +</refsect1> + +<refsect1> + <title>VERSION</title> + <para>This man page is part of version &doc.version; of the Samba suite. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_cap.8.xml b/docs-xml/manpages/vfs_cap.8.xml new file mode 100644 index 0000000..46dd900 --- /dev/null +++ b/docs-xml/manpages/vfs_cap.8.xml @@ -0,0 +1,78 @@ +<?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="vfs_cap.8"> + +<refmeta> + <refentrytitle>vfs_cap</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_cap</refname> + <refpurpose>CAP encode filenames</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = cap</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para>CAP (Columbia Appletalk Protocol) encoding is a + technique for representing non-ASCII filenames in ASCII. The + <command>vfs_cap</command> VFS module translates filenames to and + from CAP format, allowing users to name files in their native + encoding. </para> + + <para>CAP encoding is most commonly + used in Japanese language environments. </para> + + <para>This module is stackable.</para> + +</refsect1> + + +<refsect1> + <title>EXAMPLES</title> + + <para>On a system using GNU libiconv, use CAP encoding to support + users in the Shift_JIS locale:</para> + +<programlisting> + <smbconfsection name="[global]"/> + <smbconfoption name="dos charset">CP932</smbconfoption> + <smbconfoption name="dos charset">CP932</smbconfoption> + <smbconfoption name="vfs objects">cap</smbconfoption> +</programlisting> + +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of the Samba suite. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_catia.8.xml b/docs-xml/manpages/vfs_catia.8.xml new file mode 100644 index 0000000..15ec7d5 --- /dev/null +++ b/docs-xml/manpages/vfs_catia.8.xml @@ -0,0 +1,142 @@ +<?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="vfs_catia.8"> + +<refmeta> + <refentrytitle>vfs_catia</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_catia</refname> + <refpurpose>translate illegal characters in Catia filenames</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = catia</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para>The Catia CAD package commonly creates filenames that + use characters that are illegal in CIFS filenames. The + <command>vfs_catia</command> VFS module implements a character + mapping so that these files can be shared with CIFS clients. + </para> + + <para>This module is stackable.</para> + + <para>The parameter "catia:mappings" specifies the mapping on a + per-character basis, see below. + </para> +</refsect1> + + + +<refsect1> + <title>OPTIONS</title> + <variablelist> + <varlistentry> + <term>catia:mappings = SERVER_HEX_CHAR:CLIENT_HEX_CHAR + </term> + <listitem> + <para>SERVER_HEX_CHAR specifies a 0x prefixed hexedecimal + character code that, when included in a Samba server-side + filename, will be mapped to CLIENT_HEX_CHAR for the CIFS + client.</para> + <para>The same mapping occurs in the opposite direction. + Multiple character mappings are separated by a comma.</para> + </listitem> + </varlistentry> + </variablelist> +</refsect1> + + + +<refsect1> + <title>EXAMPLES</title> + + <para>Map server-side quotation-marks (") to client-side diaeresis + (¨) on filenames in the [CAD] share:</para> + +<programlisting> + <smbconfsection name="[CAD]"/> + <smbconfoption name="path">/data/cad</smbconfoption> + <smbconfoption name="vfs objects">catia</smbconfoption> + <smbconfoption name="catia:mappings">0x22:0xa8</smbconfoption> +</programlisting> + + <para>Perform comprehensive mapping of common Catia filename characters:</para> +<programlisting> + <smbconfsection name="[CAD]"/> + <smbconfoption name="path">/data/cad</smbconfoption> + <smbconfoption name="vfs objects">catia</smbconfoption> + <smbconfoption name="catia:mappings">0x22:0xa8,0x2a:0xa4,0x2f:0xf8,0x3a:0xf7,0x3c:0xab,0x3e:0xbb,0x3f:0xbf,0x5c:0xff,0x7c:0xa6</smbconfoption> +</programlisting> + + <para>Server-side filename to be translated (Note that the path delimiter "/" is not used here): + </para> + <para>a\a:a*a?a"a<a>a|a</para> + + <para>Resulting filename, as seen by the client:</para> + + <para>aÿa÷a¤a¿a¨a«a»a¦a + </para> +</refsect1> + +<refsect1> + <title>CAVEATS</title> + + <para>Character mapping must work in BOTH directions (server -> + client and client -> server) to get unique and existing file names! + </para> + + <para>A NOT working example:</para> + +<programlisting> + <smbconfsection name="[CAD]"/> + <smbconfoption name="path">/data/cad</smbconfoption> + <smbconfoption name="vfs objects">catia</smbconfoption> + <smbconfoption name="catia:mappings">0x3a:0x5f</smbconfoption> +</programlisting> + + <para>Here the colon ":" is mapped to the underscore "_".</para> + <para>Assuming a server-side filename "a:should_work", which is + translated to "a_should_work" for the client.</para> + <para>BUT the reverse mapping from client "a_should_work" to server + will result in "a:should:work" - something like "file not found" + will be returned. + </para> + +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of Samba versions from 3.5.0 to 4.0.6. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + <para>New version written by Guenter Kukkukk kukks@samba.org</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_ceph.8.xml b/docs-xml/manpages/vfs_ceph.8.xml new file mode 100644 index 0000000..5b32122 --- /dev/null +++ b/docs-xml/manpages/vfs_ceph.8.xml @@ -0,0 +1,152 @@ +<?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="vfs_ceph.8"> + +<refmeta> + <refentrytitle>vfs_ceph</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_ceph</refname> + <refpurpose> + Utilize features provided by CephFS + </refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = ceph</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> suite.</para> + + <para> + The <command>vfs_ceph</command> VFS module exposes + CephFS specific features for use by Samba. + </para> + + <para> + Ceph is a distributed network file system designed to provide + excellent performance, reliability, and scalability. This is a + shared library allowing applications to access a Ceph + distributed file system via a POSIX-like interface. + </para> + + <para> + This module can be combined with other modules, but it + should be the last module in the <command>vfs objects</command> + list. Modules added to this list to the right of the ceph + entry may not have any effect at all. + </para> + + <para> + <command>vfs_ceph</command> performs mapping between Windows and + POSIX Access Control Lists (ACLs). To ensure correct processing + and enforcement of POSIX ACLs, the following Ceph configuration + parameters are automatically applied: + </para> + <programlisting> + <command>client acl type = posix_acl</command> + <command>fuse default permissions = false</command> + </programlisting> +</refsect1> + +<refsect1> + <title>CONFIGURATION</title> + + <para> + <command>vfs_ceph</command> requires that the underlying share + path is a Ceph filesystem. + </para> + + <programlisting> + <smbconfsection name="[share]"/> + <smbconfoption name="vfs objects">ceph</smbconfoption> + <smbconfoption name="path">/non-mounted/cephfs/path</smbconfoption> + <smbconfoption name="kernel share modes">no</smbconfoption> + </programlisting> + + <para> + Since <command>vfs_ceph</command> does not require a filesystem + mount, the share <command>path</command> is treated differently: + it is interpreted as an absolute path within the Ceph filesystem + on the attached Ceph cluster. + In a ctdb cluster environment where ctdb manages Samba, + <command>CTDB_SAMBA_SKIP_SHARE_CHECK=yes</command> must be + configured to disable local share path checks, otherwise ctdb + will not reach a healthy state. + </para> + + <para> + Note that currently <command>kernel share modes</command> have + to be disabled in a share running with the CephFS vfs module for + file serving to work properly. + </para> +</refsect1> + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + + <varlistentry> + <term>ceph:config_file = path</term> + <listitem> + <para> + Allows one to define a ceph configfile to use. Empty by default. + </para> + <para> + Example: ceph:config_file = + /etc/ceph/ceph.conf + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>ceph:user_id = name</term> + <listitem> + <para> + Allows one to explicitly set the client ID used for the + CephFS mount handle. Empty by default (CephFS uses the + process id). + </para> + <para> + Example: ceph:user_id = samba + </para> + </listitem> + </varlistentry> + + </variablelist> + +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para> + This man page is part of version &doc.version; of the Samba suite. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_ceph_snapshots.8.xml b/docs-xml/manpages/vfs_ceph_snapshots.8.xml new file mode 100644 index 0000000..872b523 --- /dev/null +++ b/docs-xml/manpages/vfs_ceph_snapshots.8.xml @@ -0,0 +1,130 @@ +<?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="vfs_ceph_snapshots.8"> + +<refmeta> + <refentrytitle>vfs_ceph_snapshots</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_ceph_snapshots</refname> + <refpurpose> + Expose CephFS snapshots as shadow-copies + </refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = ceph_snapshots</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> suite.</para> + + <para> + The <command>vfs_ceph_snapshots</command> VFS module exposes + CephFS snapshots for use by Samba. When enabled, SMB clients + such as Windows Explorer's Previous Versions dialog, can + enumerate snapshots and access them via "timewarp" tokens. + </para> + + <para> + This module can be combined with <command>vfs_ceph</command>, + but <command>vfs_ceph_snapshots</command> must be listed first + in the <command>vfs objects</command> parameter list. + </para> + + <para> + CephFS support for ceph.snap.btime virtual extended attributes + is required for this module to work properly. This support was + added via https://tracker.ceph.com/issues/38838. + </para> +</refsect1> + +<refsect1> + <title>CONFIGURATION</title> + + <para> + When used atop <command>vfs_ceph</command>, + <command>path</command> refers to an absolute path within the + Ceph filesystem and should not be mounted locally: + </para> + + <programlisting> + <smbconfsection name="[share]"/> + <smbconfoption name="vfs objects">ceph_snapshots ceph</smbconfoption> + <smbconfoption name="path">/non-mounted/cephfs/path</smbconfoption> + <smbconfoption name="kernel share modes">no</smbconfoption> + </programlisting> + + <para> + <command>vfs_ceph_snapshots</command> can also be used atop a + kernel CephFS mounted share path, without + <command>vfs_ceph</command>. In this case Samba's default VFS + backend <command>vfs_default</command> is used: + </para> + + <programlisting> + <smbconfsection name="[share]"/> + <smbconfoption name="vfs objects">ceph_snapshots</smbconfoption> + <smbconfoption name="path">/mnt/cephfs/</smbconfoption> + </programlisting> +</refsect1> + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + <varlistentry> + <term>ceph:snapdir = subdirectory</term> + <listitem> + <para> + Allows for the configuration of the special CephFS + snapshot subdirectory name. This parameter should only + be changed from the ".snap" default if the ceph.conf + <command>client snapdir</command> or + <command>snapdirname</command> mount option settings + are changed from their matching ".snap" defaults. + </para> + <para> + Default: + <smbconfoption name="ceph:snapdir">.snap</smbconfoption> + </para> + <para> + Example: + <smbconfoption name="ceph:snapdir">.snapshots</smbconfoption> + </para> + </listitem> + </varlistentry> + </variablelist> +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para> + This man page is part of version &doc.version; of the Samba suite. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_commit.8.xml b/docs-xml/manpages/vfs_commit.8.xml new file mode 100644 index 0000000..36c4f8e --- /dev/null +++ b/docs-xml/manpages/vfs_commit.8.xml @@ -0,0 +1,110 @@ +<?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="vfs_commit.8"> + +<refmeta> + <refentrytitle>vfs_commit</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_commit</refname> + <refpurpose>flush dirty data at specified intervals</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = commit</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para>The <command>vfs_commit</command> VFS module keeps track of + the amount of data written to a file and synchronizes it to + disk when a specified amount accumulates. + </para> + + <para><command>vfs_commit</command> is useful in two + circumstances. First, if you have very precious data, the + impact of unexpected power loss can be minimized by a small + commit:dthresh value. Secondly, write performance can be + improved on some systems by flushing file data early and at + regular intervals.</para> + + <para>This module is stackable.</para> + +</refsect1> + + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + + <varlistentry> + <term>commit:dthresh = BYTES</term> + <listitem> + <para>Synchronize file data each time the specified + number of bytes has been written. + </para> + + <para>The following suffixes may be applied to BYTES:</para> + <itemizedlist> + <listitem><para><command>K</command> - BYTES is a number of kilobytes</para></listitem> + <listitem><para><command>M</command> - BYTES is a number of megabytes</para></listitem> + <listitem><para><command>G</command> - BYTES is a number of gigabytes</para></listitem> + </itemizedlist> + + </listitem> + </varlistentry> + + </variablelist> +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + + <para>Synchronize the file data on the [precious] share after + every 512 kilobytes (524288 bytes) of data is written:</para> +<programlisting> + <smbconfsection name="[precious]"/> + <smbconfoption name="path">/data/precious</smbconfoption> + <smbconfoption name="vfs objects">commit</smbconfoption> + <smbconfoption name="commit:dthresh">512K</smbconfoption> +</programlisting> +</refsect1> + +<refsect1> + <title>CAVEATS</title> + <para>On some systems, the data synchronization performed by + <command>commit</command> may reduce performance. + </para> +</refsect1> + +<refsect1> + <title>VERSION</title> + <para>This man page is part of version &doc.version; of the Samba suite. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_crossrename.8.xml b/docs-xml/manpages/vfs_crossrename.8.xml new file mode 100644 index 0000000..72d67d6 --- /dev/null +++ b/docs-xml/manpages/vfs_crossrename.8.xml @@ -0,0 +1,118 @@ +<?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="vfs_crossrename.8"> + +<refmeta> + <refentrytitle>vfs_crossrename</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_crossrename</refname> + <refpurpose>server side rename files across filesystem boundaries</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = crossrename</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para>The <command>vfs_crossrename</command> VFS module allows + server side rename operations even if source and target are on + different physical devices. A "move" in Explorer is usually a + rename operation if it is inside of a single share or device. + Usually such a rename operation returns + NT_STATUS_NOT_SAME_DEVICE and the client has to move the file by + manual copy and delete operations. If the rename by copy is done by the + server this can be much more efficient. vfs_crossrename tries to do + this server-side cross-device rename operation. + </para> + + <para>There are however limitations that this module currently does not + solve:</para> + + <variablelist> + <varlistentry> + <para>The ACLs of files are not preserved,</para> + </varlistentry> + <varlistentry> + <para>meta data in EAs are not preserved,</para> + </varlistentry> + <varlistentry> + <para>renames of whole subdirectories cannot be done recursively, + in that case we still return STATUS_NOT_SAME_DEVICE and + let the client decide what to do,</para> + </varlistentry> + <varlistentry> + <para>rename operations of huge files can cause hangs on the + client because clients expect a rename operation to + return fast.</para> + </varlistentry> + </variablelist> + + <para>This module is stackable.</para> + +</refsect1> + + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + + <varlistentry> + <term>crossrename:sizelimit = BYTES</term> + <listitem> + <para>server-side cross-device-renames are only done + for files if the filesize is not larger than the defined + size in MiB to prevent timeouts. The default sizelimit is + 20 (MiB) + </para> + </listitem> + </varlistentry> + </variablelist> +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + + <para>To add server-side cross-device renames inside of a share + for all files sized up to 50MB:</para> + +<programlisting> + <smbconfsection name="[testshare]"/> + <smbconfoption name="path">/data/mounts</smbconfoption> + <smbconfoption name="vfs objects">crossrename</smbconfoption> + <smbconfoption name="crossrename:sizelimit">50</smbconfoption> +</programlisting> +</refsect1> + +<refsect1> + <title>VERSION</title> + <para>This man page is part of version &doc.version; of the Samba suite. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_default_quota.8.xml b/docs-xml/manpages/vfs_default_quota.8.xml new file mode 100644 index 0000000..7008f4e --- /dev/null +++ b/docs-xml/manpages/vfs_default_quota.8.xml @@ -0,0 +1,136 @@ +<?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="vfs_default_quota.8"> + +<refmeta> + <refentrytitle>vfs_default_quota</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_default_quota</refname> + <refpurpose>store default quota records for Windows clients</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = default_quota</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> + suite.</para> + + <para>Many common quota implementations only store + quotas for users and groups, but do not store a default quota. The + <command>vfs_default_quota</command> module allows Samba to store + default quota values which can be examined using the Windows + Explorer interface. + </para> + + <para>By default, Samba returns NO_LIMIT the default quota and + refuses to update them. <command>vfs_default_quota</command> maps + the default quota to the quota record of a user. By default the + root user is taken because quota limits for root are typically + not enforced.</para> + + <para>This module is stackable.</para> + +</refsect1> + + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + + <varlistentry> + <term>default_quota:uid = UID</term> + <listitem> + <para>UID specifies the user ID of the quota record where the + default user quota values are stored. + </para> + + </listitem> + </varlistentry> + + <varlistentry> + <term>default_quota:gid = GID</term> + <listitem> + <para>GID specifies the group ID of the quota record where the + default group quota values are stored. + </para> + + </listitem> + </varlistentry> + + <varlistentry> + <term>default_quota:uid nolimit = BOOL</term> + <listitem> + <para>If this parameter is True, then the user whose + quota record is storing the default user quota will + be reported as having a quota of NO_LIMIT. Otherwise, + the stored values will be reported. + </para> + + </listitem> + </varlistentry> + + <varlistentry> + <term>default_quota:gid nolimit = BOOL</term> + <listitem> + <para>If this parameter is True, then the group whose + quota record is storing the default group quota will + be reported as having a quota of NO_LIMIT. Otherwise, + the stored values will be reported. + </para> + + </listitem> + </varlistentry> + + </variablelist> +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + + <para>Store the default quota record in the quota record for + the user with ID 65535 and report that user as having no quota + limits:</para> + +<programlisting> + <smbconfsection name="[global]"/> + <smbconfoption name="vfs objects">default_quota</smbconfoption> + <smbconfoption name="default_quota:uid">65535</smbconfoption> + <smbconfoption name="default_quota:uid nolimit">yes</smbconfoption> +</programlisting> + +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of the Samba suite. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_dirsort.8.xml b/docs-xml/manpages/vfs_dirsort.8.xml new file mode 100644 index 0000000..586e388 --- /dev/null +++ b/docs-xml/manpages/vfs_dirsort.8.xml @@ -0,0 +1,69 @@ +<?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="vfs_dirsort.8"> + +<refmeta> + <refentrytitle>vfs_dirsort</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_dirsort</refname> + <refpurpose>Sort directory contents</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = dirsort</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para>The <command>vfs_dirsort</command> module sorts directory + entries alphabetically before sending them to the client.</para> + + <para>Please be aware that adding this module might have negative + performance implications for large directories.</para> + +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + + <para>Sort directories for all shares:</para> + +<programlisting> + <smbconfsection name="[global]"/> + <smbconfoption name="vfs objects">dirsort</smbconfoption> +</programlisting> + +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of the Samba suite. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_expand_msdfs.8.xml b/docs-xml/manpages/vfs_expand_msdfs.8.xml new file mode 100644 index 0000000..34f92c6 --- /dev/null +++ b/docs-xml/manpages/vfs_expand_msdfs.8.xml @@ -0,0 +1,69 @@ +<?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="vfs_expand_msdfs.8"> + +<refmeta> + <refentrytitle>vfs_expand_msdfs</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_expand_msdfs</refname> + <refpurpose>Expand msdfs links depending on client IP</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = expand_msdfs</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para>With this module, the link target is not directly a + server and share, but this module expects the target to + reference a file, containing a table. The file is referenced + by means of the msdfs symlink target according to + msdfs:@table-filename@/share. The file table-filename is + supposed to contain a list of destinations that are looked at + from top to bottom:</para> + + <programlisting> +192.168.234 local.samba.org +192.168 remote.samba.org + default.samba.org + </programlisting> + + <para>With this, clients from network 192.168.234/24 are + redirected to host local.samba.org, clients from 192.168/16 + are redirected to remote.samba.org and all other clients go to + default.samba.org.</para> +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of the Samba suite. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_extd_audit.8.xml b/docs-xml/manpages/vfs_extd_audit.8.xml new file mode 100644 index 0000000..378fde0 --- /dev/null +++ b/docs-xml/manpages/vfs_extd_audit.8.xml @@ -0,0 +1,68 @@ +<?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="vfs_extd_audit.8"> + +<refmeta> + <refentrytitle>vfs_extd_audit</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_extd_audit</refname> + <refpurpose>record selected Samba VFS operations</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = extd_audit</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para>The <command>extd_audit</command> VFS module records selected + client operations to both the + <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> log and + system log (using + <citerefentry><refentrytitle>syslog</refentrytitle> + <manvolnum>3</manvolnum></citerefentry>).</para> + + <para>Other than logging to the + <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> log, + <command>vfs_extd_audit</command> is identical to + <citerefentry><refentrytitle>vfs_audit</refentrytitle> + <manvolnum>8</manvolnum></citerefentry>. + </para> + + <para>This module is stackable.</para> + +</refsect1> + +<refsect1> + <title>VERSION</title> + <para>This man page is part of version &doc.version; of the Samba suite. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_fake_perms.8.xml b/docs-xml/manpages/vfs_fake_perms.8.xml new file mode 100644 index 0000000..57d9a74 --- /dev/null +++ b/docs-xml/manpages/vfs_fake_perms.8.xml @@ -0,0 +1,73 @@ +<?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="vfs_fake_perms.8"> + +<refmeta> + <refentrytitle>vfs_fake_perms</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_fake_perms</refname> + <refpurpose>enable read only Roaming Profiles</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = fake_perms</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para>The <command>vfs_fake_perms</command> VFS module was created + to allow Roaming Profile files and directories to be set (on + the Samba server under UNIX) as read only. This module will, + if installed on the Profiles share, report to the client that + the Profile files and directories are writeable. This satisfies + the client even though the files will never be overwritten as + the client logs out or shuts down. + </para> + + <para>This module is stackable.</para> + +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + +<programlisting> + <smbconfsection name="[Profiles]"/> + <smbconfoption name="path">/profiles</smbconfoption> + <smbconfoption name="vfs objects">fake_perms</smbconfoption> +</programlisting> + +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of the Samba suite. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_fileid.8.xml b/docs-xml/manpages/vfs_fileid.8.xml new file mode 100644 index 0000000..8732f95 --- /dev/null +++ b/docs-xml/manpages/vfs_fileid.8.xml @@ -0,0 +1,282 @@ +<?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="vfs_fileid.8"> + +<refmeta> + <refentrytitle>vfs_fileid</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_fileid</refname> + <refpurpose>Generates file_id structs with unique device id values for + cluster setups. It also adds ways to deliberately break lock coherency for specific inodes</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = fileid</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> + suite.</para> + + <para>Samba uses file_id structs to uniquely identify files + for locking purpose. By default the file_id contains the device + and inode number returned by the <command>stat()</command> system call. + As the file_id is a unique identifier of a file, it must be the same + on all nodes in a cluster setup. This module overloads the + <command>SMB_VFS_FILE_ID_CREATE()</command> operation and + generates the device number based on the configured algorithm + (see the "fileid:algorithm" option). + </para> + + <para>When using the fsname or fsid algorithm a + <command>stat()</command> and <command>statfs()</command> call is + required for all mounted file systems to generate the file_id. If e.g. + an NFS file system is unresponsive such a call might block and the smbd + process will become unresponsive. Use the "fileid:fstype deny", + "fileid:fstype allow", "fileid:mntdir deny", or "fileid:mntdir allow" + options to ignore potentially unresponsive file systems. + </para> +</refsect1> + + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + + <varlistentry> + <term>fileid:algorithm = ALGORITHM</term> + <listitem> + <para>Available algorithms are <command>fsname</command>, + <command>fsid</command>, <command>next_module</command>. The default value is + <command>fsname</command>. As well as the following legacy + algorithms: <command>fsname_nodirs</command>, <command>fsname_norootdir</command>, + <command>fsname_norootdir_ext</command> and <command>hostname</command>. + </para> + + <para>The <command>fsname</command> algorithm generates + device id by hashing the kernel device name. + </para> + + <para>The <command>fsid</command> algorithm generates + the device id from the <command>f_fsid</command> returned + from the <command>statfs()</command> syscall. + </para> + + <para>The <command>next_module</command> algorithm lets the next vfs module + in the module chain generate the id. This is mainly used in combination + with the various 'nolock' features the fileid module provides. + </para> + + <para>The legacy <command>hostname</command> algorithm generates unique + devid by hashing the hostname and low level device id. + It also implies <command>fileid:nolock_all_inodes=yes</command>. + This can be used to deliberately break lock coherency in a cluster + and with <command>fileid:nolock_max_slots</command> also between local processes + within a node. NOTE: Do not use this without knowing what you are doing! + It breaks SMB semantics and it can lead to data corruption! + This implies <command>fileid:nolock_all_inodes=yes</command>. + </para> + + <para>The legacy <command>fsname_nodirs</command> algorithm is an alias + for using the <command>fsname</command> algorithm together with + <command>fileid:nolock_all_dirs=yes</command>. + NOTE: Do not use this without knowing what you are doing! + It breaks SMB semantics! + See <command>fileid:nolock_paths</command> for a more fine grained + approach. + </para> + + <para>The legacy <command>fsname_norootdir</command> algorithm is an alias + for using the <command>fsname</command> algorithm together with + <command>fileid:nolock_paths= <quote>.</quote> </command>. It means + this can be used to deliberately break lock coherency + in a cluster for the root directory of a share. + </para> + + <para>The legacy <command>fsname_norootdir_ext</command> algorithm is an alias + for using the <command>fsname</command> algorithm together with + <command>fileid:nolock_paths= <quote>.</quote></command> and + <command>fileid:nolock_max_slots = 18446744073709551615</command>. + It means this can be used to deliberately break lock coherency + completely for the root directory of a share. Even local processes + are no longer lock coherent. + </para> + + </listitem> + </varlistentry> + + <varlistentry> + <term>fileid:mapping = ALGORITHM</term> + <listitem> + <para>This option is the legacy version of the + <command>fileid:algorithm</command> option, which was used in earlier + versions of fileid mapping feature in custom Samba 3.0 versions. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>fileid:fstype deny = LIST</term> + <listitem> + <para>List of file system types to be ignored for file_id + generation. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>fileid:fstype allow = LIST</term> + <listitem> + <para>List of file system types to be allowed for file_id + generation. If this option is set, file system types not listed + here are ignored. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>fileid:mntdir deny = LIST</term> + <listitem> + <para>List of file system mount points to be ignored for + file_id generation. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>fileid:mntdir allow = LIST</term> + <listitem> + <para>List of file system mount points to be allowed for file_id + generation. If this option is set, file system mount points + not listed here are ignored. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>fileid:nolock_max_slots = NUMBER(1-18446744073709551615)</term> + <listitem> + <para>This option alters the behavior of the <command>nolock</command> algorithm + in a ways that it also breaks the lock coherency between individual processes + on the same host. The default is to have just 1 concurrent slot available per host. + By incressing the number of slots you can specify how many concurrent processes + can work on a given inode without contention, the number should typically be larger + than the a number of logical cpus, maybe 2 times of num_cpus. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>fileid:nolock_all_dirs = BOOL</term> + <listitem> + <para>This option triggers the use of the fileid nolock behavior + for all directory inodes, which can be used to deliberately break + the lock coherency for all directories. + NOTE: Do not use this without knowing what you are doing! + It breaks SMB semantics! + See <command>fileid:nolock_paths</command> for a more fine grained + approach. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>fileid:nolock_all_inodes = BOOL</term> + <listitem> + <para>This option triggers the use of the fileid nolock algorithm + for all directoriy inode, which can be used to deliberately break + the lock coherency for all directories. + NOTE: Do not use this without knowing what you are doing! + It breaks SMB semantics and it can lead to data corruption! + See <command>fileid:nolock_paths</command> for a more fine grained + approach. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>fileid:nolock_paths = LIST</term> + <listitem> + <para>This option specifies a path list referring to files and/or directories, + which should use fileid nolock algorithm in order to deliberately break + the lock coherency for them. The specified paths can be relative to + the share root directory or absolute. The names are case sensitive unix pathnames! + Note all paths are only evaluated at tree connect time, when the share is being connected, from there on + only the related device and inode numbers from the stat() syscall are compared. + Non existing paths will generate a log level 0 message. + NOTE: This option should be used with care as it breaks SMB semantics! + But it may help in situation where a specific (commonly read-only) inode is highly contended. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>fileid:nolockinode = NUMBER</term> + <listitem> + <para>This legacy option triggers use of the fileid nolock behavior + for the configured inode, while ignoring and device id. This can be used to deliberately break + lock coherency for the corresponding file or directory in a + cluster. Using the <command>fileid:nolock_paths</command> option is much more flexible and simpler to use. + </para> + </listitem> + </varlistentry> + </variablelist> +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + + <para>Usage of the <command>fileid</command> module with the + <command>fsid</command> algorithm:</para> + +<programlisting> + <smbconfsection name="[global]"/> + <smbconfoption name="vfs objects">fileid</smbconfoption> + <smbconfoption name="fileid:algorithm">fsid</smbconfoption> +</programlisting> + + <para>Usage of the <command>fileid</command> module in order + avoid load on heavily contended (most likely read-only) inodes.</para> + +<programlisting> + <smbconfsection name="[global]"/> + <smbconfoption name="vfs objects">fileid</smbconfoption> + <smbconfoption name="fileid:algorithm">next_module</smbconfoption> + <smbconfoption name="fileid:nolock_paths">. ContendedFolder1 /path/to/contended.exe</smbconfoption> + <smbconfoption name="fileid:nolock_max_slots">256</smbconfoption> +</programlisting> + +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of the Samba suite. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_fruit.8.xml b/docs-xml/manpages/vfs_fruit.8.xml new file mode 100644 index 0000000..b2ebfae --- /dev/null +++ b/docs-xml/manpages/vfs_fruit.8.xml @@ -0,0 +1,449 @@ +<?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="vfs_fruit.8"> + +<refmeta> + <refentrytitle>vfs_fruit</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_fruit</refname> + <refpurpose>Enhanced OS X and Netatalk interoperability</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = fruit</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para>The <command>vfs_fruit</command> module provides + enhanced compatibility with Apple SMB clients and + interoperability with a Netatalk 3 AFP fileserver.</para> + + <para>The module should be stacked with + <command>vfs_catia</command> if enabling character conversion and + must be stacked with <command>vfs_streams_xattr</command>, see the + example section for the correct config.</para> + + <para>The module enables alternate data streams (ADS) support + for a share, intercepts the OS X special streams "AFP_AfpInfo" + and "AFP_Resource" and handles them in a special way. All + other named streams are deferred to + <command>vfs_streams_xattr</command> which must be loaded + together with <command>vfs_fruit</command>.</para> + + <para>Be careful when mixing shares with and without + vfs_fruit. OS X clients negotiate SMB2 AAPL protocol + extensions on the first tcon, so mixing shares with and + without fruit will globally disable AAPL if the first tcon is + without fruit.</para> + + <para>Having shares with ADS support enabled for OS X client + is worthwhile because it resembles the behaviour of Apple's + own SMB server implementation and it avoids certain severe + performance degradations caused by Samba's case sensitivity + semantics.</para> + + <para>The OS X metadata and resource fork stream can be stored + in a way compatible with Netatalk 3 by setting + <command>fruit:resource = file</command> and + <command>fruit:metadata = netatalk</command>.</para> + + <para>OS X maps NTFS illegal characters to the Unicode private + range in SMB requests. By setting <command>fruit:encoding = + native</command>, all mapped characters are converted to + native ASCII characters.</para> + + <para>Finally, share access modes are optionally checked + against Netatalk AFP sharing modes by setting + <command>fruit:locking = netatalk</command>.</para> + + <para>This module is not stackable other than described in + this manpage.</para> + +</refsect1> + +<refsect1> + <title>GLOBAL OPTIONS</title> + + <para>The following options must be set in the global smb.conf section + and won't take effect when set per share.</para> + + <variablelist> + + <varlistentry> + <term>fruit:aapl = yes | no</term> + <listitem> + <para>A <emphasis>global</emphasis> option whether to enable Apple's SMB2+ + extension codenamed AAPL. Default + <emphasis>yes</emphasis>. This extension enhances + several deficiencies when connecting from Macs:</para> + + <itemizedlist> + <listitem><para>directory enumeration is enriched with + Mac relevant filesystem metadata (UNIX mode, + FinderInfo, resource fork size and effective + permission), as a result the Mac client doesn't need + to fetch this metadata individually per directory + entry resulting in an often tremendous performance + increase.</para></listitem> + + <listitem><para>The ability to query and modify the + UNIX mode of directory entries.</para></listitem> + </itemizedlist> + + <para>There's a set of per share options that come into play when + <emphasis>fruit:aapl</emphasis> is enabled. These options, listed + below, can be used to disable the computation of specific Mac + metadata in the directory enumeration context, all are enabled by + default:</para> + + <itemizedlist> + <listitem><para>readdir_attr:aapl_rsize = yes | no</para></listitem> + <listitem><para>readdir_attr:aapl_finder_info = yes | no</para></listitem> + <listitem><para>readdir_attr:aapl_max_access = yes | no</para></listitem> + </itemizedlist> + + <para>See below for a description of these options.</para> + + </listitem> + </varlistentry> + + <varlistentry> + <term>fruit:nfs_aces = yes | no</term> + <listitem> + <para>A <emphasis>global</emphasis> option whether support for + querying and modifying the UNIX mode of directory entries via NFS + ACEs is enabled, default <emphasis>yes</emphasis>.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>fruit:copyfile = yes | no</term> + <listitem> + <para>A <emphasis>global</emphasis> option whether to enable OS X + specific copychunk ioctl that requests a copy of a whole file + along with all attached metadata.</para> + <para>WARNING: the copyfile request is blocking the + client while the server does the copy.</para> + <para>The default is <emphasis>no</emphasis>.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>fruit:model = MacSamba</term> + <listitem> + <para>This option defines the model string inside the AAPL + extension and will determine the appearance of the icon representing the + Samba server in the Finder window.</para> + <para>The default is <emphasis>MacSamba</emphasis>.</para> + </listitem> + </varlistentry> + </variablelist> +</refsect1> + +<refsect1> + <title>OPTIONS</title> + + <para>The following options can be set either in the global smb.conf section + or per share.</para> + + <variablelist> + + <varlistentry> + <term>fruit:resource = [ file | xattr | stream ]</term> + <listitem> + <para>Controls where the OS X resource fork is stored.</para> + + <para>Due to a spelling bug in all Samba versions older then + 4.6.0, this option can also be given as + <emphasis>fruit:ressource</emphasis>, ie with two s.</para> + + <para>Settings:</para> + + <itemizedlist> + <listitem><para><command>file (default)</command> - use a ._ + AppleDouble file compatible with OS X and + Netatalk</para></listitem> + + <listitem><para><command>xattr</command> - use a + xattr, requires a filesystem with large xattr support + and a file IO API compatible with xattrs, this boils + down to Solaris and derived platforms and + ZFS</para></listitem> + + <listitem><para><command>stream (experimental)</command> - pass + the stream on to the next module in the VFS stack. + <emphasis>Warning: </emphasis> this option should not be used + with the <emphasis>streams_xattr</emphasis> module due to the + extended attributes size limitations of most + filesystems.</para></listitem> + </itemizedlist> + + </listitem> + </varlistentry> + + <varlistentry> + <term>fruit:time machine = [ yes | no ]</term> + <listitem> + <para>Controls if Time Machine support via the FULLSYNC volume + capability is advertised to clients.</para> + + <itemizedlist> + <listitem><para><command>yes</command> - Enables Time Machine + support for this share. Also registers the share with mDNS in + case Samba is built with mDNS support.</para></listitem> + + <listitem><para><command>no (default)</command> Disables + advertising Time Machine support.</para></listitem> + + </itemizedlist> + + <para>This option enforces the following settings per share (or + for all shares if enabled globally):</para> + <itemizedlist> + <listitem><para><command>durable handles = yes</command></para></listitem> + <listitem><para><command>kernel oplocks = no</command></para></listitem> + <listitem><para><command>kernel share modes = no</command></para></listitem> + <listitem><para><command>posix locking = no</command></para></listitem> + </itemizedlist> + + </listitem> + </varlistentry> + + <varlistentry> + <term>fruit:time machine max size = SIZE [K|M|G|T|P]</term> + <listitem> + <para>Useful for Time Machine: limits the reported disksize, thus + preventing Time Machine from using the whole real disk space for + backup. The option takes a number plus an optional unit.</para> + <para><emphasis>IMPORTANT</emphasis>: This is an approximated + calculation that only takes into account the contents of Time + Machine sparsebundle images. Therefore you <emphasis>MUST + NOT</emphasis> use this volume to store other content when using + this option, because it would NOT be accounted.</para> + <para>The calculation works by reading the band size from the + Info.plist XML file of the sparsebundle, reading the bands/ + directory counting the number of band files, and then multiplying + one with the other.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>fruit:metadata = [ stream | netatalk ]</term> + <listitem> + <para>Controls where the OS X metadata stream is stored:</para> + + <itemizedlist> + <listitem><para><command>netatalk (default)</command> - use + Netatalk compatible xattr</para></listitem> + + <listitem><para><command>stream</command> - pass the + stream on to the next module in the VFS + stack</para></listitem> + </itemizedlist> + + </listitem> + </varlistentry> + + <varlistentry> + <term>fruit:locking = [ netatalk | none ]</term> + <listitem> + <para></para> + <itemizedlist> + <listitem><para><command>none (default)</command> - no + cross protocol locking</para></listitem> + + <listitem><para><command>netatalk</command> - use + cross protocol locking with Netatalk</para></listitem> + + </itemizedlist> + </listitem> + </varlistentry> + + <varlistentry> + <term>fruit:encoding = [ native | private ]</term> + <listitem> + + <para>Controls how the set of illegal NTFS ASCII + character, commonly used by OS X clients, are stored in + the filesystem.</para> + + <para><emphasis>Important:</emphasis> this is known to not fully + work with <emphasis>fruit:metadata=stream</emphasis> or + <emphasis>fruit:resource=stream</emphasis>.</para> + + <itemizedlist> + + <listitem><para><command>private (default)</command> - + store characters as encoded by the OS X client: mapped + to the Unicode private range</para></listitem> + + <listitem><para><command>native</command> - store + characters with their native ASCII + value. <emphasis>Important</emphasis>: this option + requires the use of <emphasis>vfs_catia</emphasis> in + the VFS module stack as shown in the examples + section.</para></listitem> + + </itemizedlist> + </listitem> + </varlistentry> + + <varlistentry> + <term>fruit:veto_appledouble = yes | no</term> + <listitem> + <para><emphasis>Note:</emphasis> this option only applies when + <parameter>fruit:resource</parameter> is set to + <parameter>file</parameter> (the default).</para> + + <para>When <parameter>fruit:resource</parameter> is set to + <parameter>file</parameter>, vfs_fruit may create ._ AppleDouble + files. This options controls whether these ._ AppleDouble files + are vetoed which prevents the client from accessing them.</para> + <para>Vetoing ._ files may break some applications, e.g. + extracting Mac ZIP archives from Mac clients fails, + because they contain ._ files. <command>rsync</command> will + also be unable to sync files beginning with underscores, as + the temporary files it uses for these will start with ._ and + so cannot be created.</para> + <para>Setting this option to + false will fix this, but the abstraction leak of + exposing the internally created ._ files may have other + unknown side effects.</para> + <para>The default is <emphasis>yes</emphasis>.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>fruit:posix_rename = yes | no</term> + <listitem> + <para>Whether to enable POSIX directory rename behaviour + for OS X clients. Without this, directories can't be + renamed if any client has any file inside it + (recursive!) open.</para> + <para>The default is <emphasis>yes</emphasis>.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>readdir_attr:aapl_rsize = yes | no</term> + <listitem> + <para>Return resource fork size in SMB2 FIND responses.</para> + <para>The default is <emphasis>yes</emphasis>.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>readdir_attr:aapl_finder_info = yes | no</term> + <listitem> + <para>Return FinderInfo in SMB2 FIND responses.</para> + <para>The default is <emphasis>yes</emphasis>.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>readdir_attr:aapl_max_access = yes | no</term> + <listitem> + <para>Return the user's effective maximum permissions in SMB2 FIND + responses. This is an expensive computation, setting this to off + pretends the use has maximum effective permissions.</para> + <para>The default is <emphasis>yes</emphasis>.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>fruit:wipe_intentionally_left_blank_rfork = yes | no</term> + <listitem> + <para>Whether to wipe Resource Fork data that matches the special + 286 bytes sized placeholder blob that macOS client create on + occasion. The blob contains a string <quote>This resource fork + intentionally left blank</quote>, the remaining bytes being mostly + zero. There being no one use of this data, it is probably safe to + discard it. When this option is enabled, this module truncates the + Resource Fork stream to 0 bytes.</para> + <para>The default is <emphasis>no</emphasis>.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>fruit:delete_empty_adfiles = yes | no</term> + <listitem> + <para>Whether to delete empty AppleDouble files. Empty means that + the resource fork entry in the AppleDouble files is of size 0, or + the size is exactly 286 bytes and the content matches a special + boilerplate resource fork created my macOS.</para> + <para>The default is <emphasis>no</emphasis>.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>fruit:zero_file_id = yes | no</term> + <listitem> + <para>Whether to return zero to queries of on-disk file + identifier if the client has negotiated AAPL.</para> + <para>Mac applications and / or the Mac SMB client code expect the + on-disk file identifier to have the semantics of HFS+ Catalog Node + Identifier (CNID). Samba provides File-IDs based on a file's inode + number which gets recycled across file creation and deletion and + can therefor not be used for Mac client. Returning a file identifier of + zero causes the Mac client to stop using and trusting the file id + returned from the server.</para> + <para>The default is <emphasis>yes</emphasis>.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>fruit:convert_adouble = yes | no</term> + <listitem> + <para>Whether an attempt shall be made to convert ._ AppleDouble + sidecar files to native streams (xattrs when using + vfs_streams_xattr). The main use case for this conversion is + transparent migration from a server config without streams support + where the macOS client created those AppleDouble sidecar + files.</para> + <para>The default is <emphasis>yes</emphasis>.</para> + </listitem> + </varlistentry> + + </variablelist> +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + +<programlisting> + <smbconfsection name="[share]"/> + <smbconfoption name="vfs objects">catia fruit streams_xattr</smbconfoption> + <smbconfoption name="fruit:resource">file</smbconfoption> + <smbconfoption name="fruit:metadata">netatalk</smbconfoption> + <smbconfoption name="fruit:locking">netatalk</smbconfoption> + <smbconfoption name="fruit:encoding">native</smbconfoption> +</programlisting> + +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_full_audit.8.xml b/docs-xml/manpages/vfs_full_audit.8.xml new file mode 100644 index 0000000..dcd71fa --- /dev/null +++ b/docs-xml/manpages/vfs_full_audit.8.xml @@ -0,0 +1,308 @@ +<?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="vfs_full_audit.8"> + +<refmeta> + <refentrytitle>vfs_full_audit</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_full_audit</refname> + <refpurpose>record Samba VFS operations in the system log</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = full_audit</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para>The <command>vfs_full_audit</command> VFS module records selected + client operations to the system log using + <citerefentry><refentrytitle>syslog</refentrytitle> + <manvolnum>3</manvolnum></citerefentry>.</para> + + <para><command>vfs_full_audit</command> is able to record the + complete set of Samba VFS operations:</para> + + <simplelist> + <member>aio_force</member> + <member>audit_file</member> + <member>brl_lock_windows</member> + <member>brl_unlock_windows</member> + <member>chdir</member> + <member>chflags</member> + <member>chmod</member> + <member>close</member> + <member>closedir</member> + <member>connect</member> + <member>connectpath</member> + <member>create_dfs_pathat</member> + <member>create_file</member> + <member>disconnect</member> + <member>disk_free</member> + <member>durable_cookie</member> + <member>durable_disconnect</member> + <member>durable_reconnect</member> + <member>fallocate</member> + <member>fchmod</member> + <member>fchown</member> + <member>fdopendir</member> + <member>fget_compression</member> + <member>fget_dos_attributes</member> + <member>fget_nt_acl_at</member> + <member>fgetxattr</member> + <member>file_id_create</member> + <member>flistxattr</member> + <member>fremovexattr</member> + <member>fs_capabilities</member> + <member>fsctl</member> + <member>fset_dos_attributes</member> + <member>fset_nt_acl</member> + <member>fsetxattr</member> + <member>fs_file_id</member> + <member>fstat</member> + <member>fsync</member> + <member>fsync_recv</member> + <member>fsync_send</member> + <member>ftruncate</member> + <member>get_alloc_size</member> + <member>get_dfs_referrals</member> + <member>get_dos_attributes</member> + <member>get_dos_attributes_recv</member> + <member>get_dos_attributes_send</member> + <member>getlock</member> + <member>get_nt_acl</member> + <member>get_quota</member> + <member>get_real_filename</member> + <member>get_shadow_copy_data</member> + <member>getwd</member> + <member>getxattr</member> + <member>getxattrat_recv</member> + <member>getxattrat_send</member> + <member>is_offline</member> + <member>filesystem_sharemode</member> + <member>lchown</member> + <member>linkat</member> + <member>linux_setlease</member> + <member>listxattr</member> + <member>lock</member> + <member>lseek</member> + <member>lstat</member> + <member>mkdirat</member> + <member>mknodat</member> + <member>ntimes</member> + <member>offload_read_recv</member> + <member>offload_read_send</member> + <member>offload_write_recv</member> + <member>offload_write_send</member> + <member>open</member> + <member>pread</member> + <member>pread_recv</member> + <member>pread_send</member> + <member>pwrite</member> + <member>pwrite_recv</member> + <member>pwrite_send</member> + <member>read</member> + <member>readdir</member> + <member>readdir_attr</member> + <member>readlinkat</member> + <member>realpath</member> + <member>recvfile</member> + <member>removexattr</member> + <member>renameat</member> + <member>rewinddir</member> + <member>seekdir</member> + <member>sendfile</member> + <member>set_compression</member> + <member>set_dos_attributes</member> + <member>set_offline</member> + <member>set_quota</member> + <member>setxattr</member> + <member>snap_check_path</member> + <member>snap_create</member> + <member>snap_delete</member> + <member>stat</member> + <member>statvfs</member> + <member>streaminfo</member> + <member>strict_lock_check</member> + <member>symlinkat</member> + <member>sys_acl_blob_get_fd</member> + <member>sys_acl_blob_get_file</member> + <member>sys_acl_get_fd</member> + <member>sys_acl_get_file</member> + <member>sys_acl_set_fd</member> + <member>telldir</member> + <member>translate_name</member> + <member>unlinkat</member> + <member>write</member> + </simplelist> + + <para>In addition to these operations, + <command>vfs_full_audit</command> recognizes the special operation + names "all" and "none ", which refer to all + the VFS operations and none of the VFS operations respectively. + </para> + + <para>If an unknown operation name is used (for example an operation name + is miss-spelled), the module will fail to load and clients will + be refused connections to a share using this module. + </para> + + <para><command>vfs_full_audit</command> records operations in fixed + format consisting of fields separated by '|' characters. The + format is: </para> + <programlisting> + smbd_audit: PREFIX|OPERATION|RESULT|FILE + </programlisting> + + <para>The record fields are:</para> + + <itemizedlist> + <listitem><para><command>PREFIX</command> - the result of the full_audit:prefix string after variable substitutions</para></listitem> + <listitem><para><command>OPERATION</command> - the name of the VFS operation</para></listitem> + <listitem><para><command>RESULT</command> - whether the operation succeeded or failed</para></listitem> + <listitem><para><command>FILE</command> - the name of the file or directory the operation was performed on</para></listitem> + + </itemizedlist> + + <para>This module is stackable.</para> + +</refsect1> + + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + + <varlistentry> + <term>full_audit:prefix = STRING</term> + <listitem> + <para>Prepend audit messages with STRING. STRING is + processed for standard substitution variables listed in + <citerefentry><refentrytitle>smb.conf</refentrytitle> + <manvolnum>5</manvolnum></citerefentry>. The default + prefix is "%u|%I". </para> + + </listitem> + </varlistentry> + + <varlistentry> + <term>full_audit:success = LIST</term> + <listitem> + <para>LIST is a list of VFS operations that should be + recorded if they succeed. Operations are specified using + the names listed above. Operations can be unset by prefixing + the names with "!". The default is none operations. + </para> + + </listitem> + </varlistentry> + + <varlistentry> + <term>full_audit:failure = LIST</term> + <listitem> + <para>LIST is a list of VFS operations that should be + recorded if they failed. Operations are specified using + the names listed above. Operations can be unset by prefixing + the names with "!". The default is none operations. + </para> + + </listitem> + </varlistentry> + + <varlistentry> + <term>full_audit:facility = FACILITY</term> + <listitem> + <para>Log messages to the named + <citerefentry><refentrytitle>syslog</refentrytitle> + <manvolnum>3</manvolnum></citerefentry> facility. + + </para> + + </listitem> + </varlistentry> + + <varlistentry> + <term>full_audit:priority = PRIORITY</term> + <listitem> + <para>Log messages with the named + <citerefentry><refentrytitle>syslog</refentrytitle> + <manvolnum>3</manvolnum></citerefentry> priority. + </para> + + </listitem> + </varlistentry> + + <varlistentry> + <term>full_audit:syslog = true/false</term> + <listitem> + <para>Log messages to syslog (default) or as a debug level 1 + message. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>full_audit:log_secdesc = true/false</term> + <listitem> + <para>Log an sddl form of the security descriptor coming in + when a client sets an acl. Defaults to false. + </para> + </listitem> + </varlistentry> + + </variablelist> +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + + <para>Log file and directory open operations on the [records] + share using the LOCAL7 facility and ALERT priority, including + the username and IP address. Logging excludes the open VFS function + on failures:</para> + +<programlisting> + <smbconfsection name="[records]"/> + <smbconfoption name="path">/data/records</smbconfoption> + <smbconfoption name="vfs objects">full_audit</smbconfoption> + <smbconfoption name="full_audit:prefix">%u|%I</smbconfoption> + <smbconfoption name="full_audit:success">open opendir</smbconfoption> + <smbconfoption name="full_audit:failure">all !open</smbconfoption> + <smbconfoption name="full_audit:facility">LOCAL7</smbconfoption> + <smbconfoption name="full_audit:priority">ALERT</smbconfoption> +</programlisting> + +</refsect1> + +<refsect1> + <title>VERSION</title> + <para>This man page is part of version &doc.version; of the Samba suite. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_glusterfs.8.xml b/docs-xml/manpages/vfs_glusterfs.8.xml new file mode 100644 index 0000000..d25135e --- /dev/null +++ b/docs-xml/manpages/vfs_glusterfs.8.xml @@ -0,0 +1,213 @@ +<?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="vfs_glusterfs.8"> + +<refmeta> + <refentrytitle>vfs_glusterfs</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_glusterfs</refname> + <refpurpose> + Utilize features provided by GlusterFS + </refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = glusterfs</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> suite.</para> + + <para> + GlusterFS + (<ulink url="http://www.gluster.org/">http://www.gluster.org</ulink>) + is an Open Source clustered file system capable of scaling to + several peta-bytes. With its FUSE based native client, + GlusterFS is available as a POSIX compliant file system and can + hence be shared by Samba without additional steps. + </para> + + <para> + The <command>vfs_glusterfs</command> VFS module provides an + alternative, and superior way to access a Gluster filesystem + from Samba for sharing. It does not require a Gluster FUSE mount + but directly accesses the GlusterFS daemon through its library + <command>libgfapi</command>, thereby omitting the expensive + kernel-userspace context switches and taking advantage of some + of the more advanced features of GlusterFS. + </para> + + <para> + This module can be combined with other modules, but it + should be the last module in the <command>vfs objects</command> + list. Modules added to this list to the right of the glusterfs + entry may not have any effect at all. + </para> +</refsect1> + +<refsect1> + <title>CONFIGURATION</title> + + <para> + A basic configuration looks like this. + </para> + + <programlisting> + <smbconfsection name="[share]"/> + <smbconfoption name="vfs objects">glusterfs</smbconfoption> + <smbconfoption name="path">/relative/base/path</smbconfoption> + <smbconfoption name="glusterfs:volume">gv0</smbconfoption> + <smbconfoption name="kernel share modes">no</smbconfoption> + </programlisting> + + <para> + Note that since <command>vfs_glusterfs</command> does not + require a Gluster mount, the share <command>path</command> is + treated differently than for other shares: It is interpreted as + the base path of the share relative to the gluster volume used. + Because this is usually not at the same time a system path, in a + ctdb cluster setup where ctdb manages Samba, you need to set + <command>CTDB_SAMBA_SKIP_SHARE_CHECK=yes</command> in ctdb's + configuration file. Otherwise ctdb will not get healthy. + </para> + + <para> + Note that currently kernel share modes have to be disabled + in a share running with the glusterfs vfs module for file + serving to work properly. + </para> +</refsect1> + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + + <varlistentry> + <term>glusterfs:logfile = path</term> + <listitem> + <para> + Defines whether and where to store a vfs_glusterfs specific + logfile. Client variable substitution is supported (i.e. + %M, %m, %I), hence per client log file can be specified. + </para> + <para> + Example: glusterfs:logfile = + /var/log/samba/glusterfs-vol2.%M.log + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>glusterfs:loglevel = 0-9</term> + <listitem> + <para> + Defines the level of logging, with higher numbers corresponding to more verbosity. + 0 - No logs; 9 - Trace log level; 7 being the info log level is preferred. + </para> + <para> + If this option is not defined with an explicit loglevel, + the glusterfs default is used (currently loglevel 7). + </para> + </listitem> + </varlistentry> + + + <varlistentry> + <term>glusterfs:volfile_server = servername</term> + <listitem> + <para> + Defines which volfile server to use, defaults to + localhost. It could be list of white space + separated elements where each element could be + </para> + <para> + 1. unix+/path/to/socket/file + </para> + <para> + 2. [tcp+]IP|hostname|\[IPv6\][:port] + </para> + <para> + Note the restriction on naming a IPv6 host, it follows + the same restriction that is based on IPv6 naming in + URL as per RFC 2732. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>glusterfs:volume = volumename</term> + <listitem> + <para> + Defines the glusterfs volumename to use for this share. + </para> + </listitem> + + </varlistentry> + </variablelist> + +</refsect1> + +<refsect1> + <title>CAVEATS</title> + + <para> + The GlusterFS write-behind performance translator, when used + with Samba, could be a source of data corruption. The + translator, while processing a write call, immediately returns + success but continues writing the data to the server in the + background. This can cause data corruption when two clients + relying on Samba to provide data consistency are operating on + the same file. + </para> + <para> + The write-behind translator is enabled by default on GlusterFS. + The vfs_glusterfs plugin will check for the presence of the + translator and refuse to connect if detected. + Please disable the write-behind translator for the GlusterFS + volume to allow the plugin to connect to the volume. + The write-behind translator can easily be disabled via calling + <programlisting> + gluster volume set <volumename> performance.write-behind off + </programlisting> on the commandline. + </para> + <para> + With GlusterFS versions >= 9, we silently bypass write-behind + translator during initial connect and failure is avoided. + </para> + +</refsect1> + + +<refsect1> + <title>VERSION</title> + + <para> + This man page is part of version &doc.version; of the Samba suite. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_glusterfs_fuse.8.xml b/docs-xml/manpages/vfs_glusterfs_fuse.8.xml new file mode 100644 index 0000000..c136544 --- /dev/null +++ b/docs-xml/manpages/vfs_glusterfs_fuse.8.xml @@ -0,0 +1,111 @@ +<?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="vfs_glusterfs_fuse.8"> + +<refmeta> + <refentrytitle>vfs_glusterfs_fuse</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_glusterfs_fuse</refname> + <refpurpose> + Utilize features provided by GlusterFS + </refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = glusterfs_fuse</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> suite.</para> + + <para> + GlusterFS + (<ulink url="http://www.gluster.org/">http://www.gluster.org</ulink>) + is an Open Source clustered file system capable of scaling to + several peta-bytes. With its FUSE based native client, + GlusterFS is available as a POSIX compliant file system and can + hence be shared by Samba without additional steps. + </para> + + <para> + The <command>vfs_glusterfs_fuse</command> VFS module provides an enhanced way + to access a Gluster filesystem using a Gluster FUSE mount. It provides support + for the <command>get_real_filename</command> VFS call which enhances file access performance + by avoiding multiple expensive case folding lookup calls to detect the appropriate + case of an existing filename. + </para> + + <para> + Furthermore, this module implements a substitute file-id + mechanism. The default file-id mechanism is not working + correctly for gluster fuse mount re-exports, so in order to + avoid data loss, users exporting gluster fuse mounts with + Samba should enable this module. + </para> + + <para> + This module can be combined with other modules, but it + should be the last module in the <command>vfs objects</command> + list. Modules added to this list to the right of the glusterfs + entry may not have any effect at all. + </para> +</refsect1> + +<refsect1> + <title>CONFIGURATION</title> + + <para> + A basic configuration looks like this. + </para> + + <programlisting> + <smbconfsection name="[share]"/> + <smbconfoption name="vfs objects">glusterfs_fuse</smbconfoption> + <smbconfoption name="path">/absolute/path_of_fusemount</smbconfoption> + </programlisting> + + <para> + Note that <command>vfs_glusterfs_fuse</command> requires a Gluster mount. For accessing glusterfs directly + over the GFAPI library please use the <command>vfs_glusterfs</command> module. + </para> +</refsect1> + +<refsect1> + <title>OPTIONS</title> + <para> + This module does currently have no further options. + </para> +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para> + This man page is part of version &doc.version; of the Samba suite. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_gpfs.8.xml b/docs-xml/manpages/vfs_gpfs.8.xml new file mode 100644 index 0000000..a7168e4 --- /dev/null +++ b/docs-xml/manpages/vfs_gpfs.8.xml @@ -0,0 +1,429 @@ +<?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"> +<ns:Root xmlns:xi="http://www.w3.org/2003/XInclude" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:ns="urn:TestNamespace"> +<refentry id="vfs_gpfs.8"> + + +<refmeta> + <refentrytitle>vfs_gpfs</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_gpfs</refname> + <refpurpose>gpfs specific samba extensions like acls</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = gpfs</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para>The <command>gpfs</command> VFS module is the home + for all gpfs extensions that Samba requires for proper integration + with GPFS. It uses the GPL library interfaces provided by GPFS. + </para> + + <para>Currently the gpfs vfs module provides extensions in following areas : + <itemizedlist> + <listitem><para>NFSv4 ACL Interfaces with configurable options for GPFS</para></listitem> + <listitem><para>Kernel oplock support on GPFS</para></listitem> + <listitem><para>Lease support on GPFS</para></listitem> + </itemizedlist> + </para> + + <para><command>NOTE:</command> This module follows the posix-acl behaviour + and hence allows permission stealing via chown. Samba might allow at a later + point in time, to restrict the chown via this module as such restrictions + are the responsibility of the underlying filesystem than of Samba. + </para> + + <para>This module makes use of the smb.conf parameter + <smbconfoption name="acl map full control"></smbconfoption>. + When set to yes (the default), this parameter will add in the FILE_DELETE_CHILD + bit on a returned ACE entry for a file (not a directory) that already + contains all file permissions except for FILE_DELETE and FILE_DELETE_CHILD. + This can prevent Windows applications that request GENERIC_ALL access + from getting ACCESS_DENIED errors when running against a filesystem + with NFSv4 compatible ACLs. + </para> + + <para>This module is stackable.</para> + + <para>Since Samba 4.0 all options are per share options.</para> + +</refsect1> + + +<refsect1> + <title>OPTIONS</title> + + <xi:include href="nfs4.xml.include" xpointer="xpointer(*/*)" /> + + <variablelist> + + <varlistentry> + + <term>gpfs:sharemodes = [ yes | no ]</term> + <listitem> + <para> + Enable/Disable cross node sharemode handling for GPFS. + </para> + + <itemizedlist> + <listitem><para> + <command>yes(default)</command> - propagate sharemodes across all GPFS nodes. + </para></listitem> + <listitem><para> + <command>no</command> - do not propagate sharemodes across all GPFS nodes. + This should only be used if the GPFS file system is + exclusively exported by Samba. Access by local unix application or + NFS exports could lead to corrupted files. + </para></listitem> + </itemizedlist> + </listitem> + + </varlistentry> + <varlistentry> + + <term>gpfs:leases = [ yes | no ]</term> + <listitem> + <para> + Enable/Disable cross node leases (oplocks) for GPFS. + You should also set the <command>oplocks</command> and <command>kernel oplocks</command> + options to the same value. + </para> + + <itemizedlist> + <listitem><para> + <command>yes(default)</command> - propagate leases across all GPFS nodes. + </para></listitem> + <listitem><para> + <command>no</command> - do not propagate leases across all GPFS nodes. + This should only be used if the GPFS file system is + exclusively exported by Samba. Access by local unix application or + NFS exports could lead to corrupted files. + </para></listitem> + </itemizedlist> + </listitem> + + </varlistentry> + + <varlistentry> + + <term>gpfs:hsm = [ yes | no ]</term> + <listitem> + <para> + Enable/Disable announcing if this FS has HSM enabled. + </para> + + <itemizedlist> + <listitem><para> + <command>no(default)</command> - Do not announce HSM. + </para></listitem> + <listitem><para> + <command>yes</command> - Announce HSM. + </para></listitem> + </itemizedlist> + </listitem> + + </varlistentry> + + <varlistentry> + <term>gpfs:recalls = [ yes | no ]</term> + <listitem> + <para> When this option is set to no, an attempt to + open an offline file will be rejected with access + denied. This helps preventing recall storms triggered + by careless applications like Finder and + Explorer.</para> + + <itemizedlist> + <listitem><para><command>yes(default)</command> - Open + files that are offline. This will recall the files + from HSM.</para></listitem> + <listitem><para><command>no</command> - Reject access + to offline files with access denied. This will prevent + recalls of files from HSM. Using this setting also + requires gpfs:hsm to be set to yes.</para></listitem> + </itemizedlist> + + </listitem> + </varlistentry> + + <varlistentry> + + <term>gpfs:getrealfilename = [ yes | no ]</term> + <listitem> + <para> + Enable/Disable usage of the <command>gpfs_get_realfilename_path()</command> function. + This improves the casesensitive wildcard file name access. + </para> + + <itemizedlist> + <listitem><para> + <command>yes(default)</command> - use <command>gpfs_get_realfilename_path()</command>. + </para></listitem> + <listitem><para> + <command>no</command> - do not use <command>gpfs_get_realfilename_path()</command>. + It seems that <command>gpfs_get_realfilename_path()</command> doesn't work on AIX. + </para></listitem> + </itemizedlist> + </listitem> + + </varlistentry> + <varlistentry> + + <term>gpfs:winattr = [ yes | no ]</term> + <listitem> + <para> + Enable/Disable usage of the windows attributes in GPFS. + GPFS is able to store windows file attributes e.g. HIDDEN, + READONLY, SYSTEM and others natively. That means Samba doesn't + need to map them to permission bits or extended attributes. + </para> + + <itemizedlist> + <listitem><para> + <command>no(default)</command> - do not use GPFS windows attributes. + </para></listitem> + <listitem><para> + <command>yes</command> - use GPFS windows attributes. + </para></listitem> + </itemizedlist> + </listitem> + + </varlistentry> + <varlistentry> + + <term>gpfs:acl = [ yes | no ]</term> + <listitem> + <para> + This option lets Samba use or ignore GPFS ACLs. + </para> + + <itemizedlist> + <listitem><para> + <command>yes(default)</command> - use GPFS ACLs. + </para></listitem> + <listitem><para> + <command>no</command> - do not use GPFS ACLs and pass everything + to the next SMB_VFS module. + </para></listitem> + </itemizedlist> + </listitem> + + </varlistentry> + <varlistentry> + + <term>gpfs:check_fstype = [ yes | no ]</term> + <listitem> + <para> + Check for a mounted GPFS file system on access to a SMB share. + </para> + + <itemizedlist> + <listitem><para> + <command>yes(default)</command> - Check that the SMB share path + is on a GPFS file system. Share access will be denied when a + different file system is found. + </para></listitem> + <listitem><para> + <command>no</command> - skip check for GPFS file system on SMB + share path. + </para></listitem> + </itemizedlist> + </listitem> + + </varlistentry> + <varlistentry> + + <term>gpfs:refuse_dacl_protected = [ yes | no ]</term> + <listitem> + <para> + As GPFS does not support the ACE4_FLAG_NO_PROPAGATE NFSv4 flag (which would be + the mapping for the DESC_DACL_PROTECTED flag), the status of this flag is + currently silently ignored by Samba. That means that if you deselect the "Allow + inheritable permissions..." checkbox in Windows' ACL dialog and then apply the + ACL, the flag will be back immediately. + </para> + <para> + To make sure that automatic migration with e.g. robocopy does not lead to + ACLs silently (and unintentionally) changed, you can set + <command>gpfs:refuse_dacl_protected = yes</command> to enable an explicit + check for this flag and if set, it will return NT_STATUS_NOT_SUPPORTED so + errors are shown up on the Windows side and the Administrator is aware of + the ACLs not being settable like intended + </para> + + <itemizedlist> + <listitem><para> + <command>no(default)</command> - ignore the DESC_DACL_PROTECTED flags. + </para></listitem> + <listitem><para> + <command>yes</command> - reject ACLs with DESC_DACL_PROTECTED. + </para></listitem> + </itemizedlist> + </listitem> + + </varlistentry> + <varlistentry> + + <term>gpfs:dfreequota = [ yes | no ]</term> + <listitem> + <para> + Adjust reporting of the size and free space of a share + according to quotas. If this setting is "yes", a + request for size and free space will also evaluate the + user quota of the user requesting the data and the + group quota of the primary group of the user. Fileset + quotas are not queried, since GPFS already provides + the option --dfreequota to reflect the fileset quota + in the free space query. Please use that option to + include fileset quotas in the reported disk space. + </para> + + <para> + If any of the soft or hard quota limits has been + reached, the free space will be reported as 0. If a + quota is in place, but the limits have not been + reached, the free space will be reported according to + the space left in the quota. If more than one quota + applies the free space will be reported as the smallest + space left in those quotas. The size of the share + will be reported according to the quota usage. If more + than one quota applies, the smallest size will be + reported for the share size according to these quotas. + </para> + + <itemizedlist> + <listitem><para> + <command>yes</command> - include the quotas + when reporting the share size and free space + </para></listitem> + <listitem><para> + <command>no(default)</command> - do not include quotas, + simply report the size and free space of the file system + </para></listitem> + </itemizedlist> + </listitem> + + </varlistentry> + <varlistentry> + + <term>gpfs:settimes = [ yes | no ]</term> + <listitem> + <para> + Use the gpfs_set_times API when changing the + timestamps of a file or directory. If the GPFS API is + not available the old method of using utime and the + GPFS winattr call will be used instead. + </para> + + <itemizedlist> + <listitem><para> + <command>yes(default)</command> - Use gpfs_set_times. + Fall back to utime and winattr when it is not available. + </para></listitem> + <listitem><para> + <command>no</command> - Do not use gpfs_set_times. + </para></listitem> + </itemizedlist> + </listitem> + + </varlistentry> + + <varlistentry> + <term>gpfs:syncio = [yes|no]</term> + <listitem> + <para>This parameter makes Samba open all files with O_SYNC. + This triggers optimizations in GPFS for workloads that + heavily share files.</para> + + <para>Following is the behaviour of Samba for different + values: + </para> + <itemizedlist> + <listitem><para><command>yes</command> - Open files with O_SYNC + </para></listitem> + <listitem><para><command>no (default)</command> - Open files as + normal Samba would do + </para></listitem> + </itemizedlist> + </listitem> + </varlistentry> + + </variablelist> + +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + + <para>A GPFS mount can be exported via Samba as follows :</para> + +<programlisting> + <smbconfsection name="[samba_gpfs_share]"/> + <smbconfoption name="vfs objects">gpfs</smbconfoption> + <smbconfoption name="path">/test/gpfs_mount</smbconfoption> + <smbconfoption name="nfs4: mode">special</smbconfoption> + <smbconfoption name="nfs4: acedup">merge</smbconfoption> +</programlisting> +</refsect1> + +<refsect1> + <title>CAVEATS</title> + <para> + Depending on the version of gpfs, the <command>libgpfs_gpl</command> + library or the <command>libgpfs</command> library is needed at + runtime by the <command>gpfs</command> VFS module: + Starting with gpfs 3.2.1 PTF8, the complete <command>libgpfs</command> + is available as open source and <command>libgpfs_gpl</command> does no + longer exist. With earlier versions of gpfs, only the + <command>libgpfs_gpl</command> library was open source and could be + used at run time. + </para> + <para> + At build time, only the header file <command>gpfs_gpl.h</command> + is required, which is a symlink to <command>gpfs.h</command> in + gpfs versions newer than 3.2.1 PTF8. + </para> +</refsect1> + +<refsect1> + <title>VERSION</title> + <para>This man page is part of version &doc.version; of the Samba suite. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + + <para>The GPFS VFS module was created with contributions from + Volker Lendecke and the developers at IBM. + </para> + + <para> This manpage was created by the IBM FSCC team </para> +</refsect1> + +</refentry> +</ns:Root> diff --git a/docs-xml/manpages/vfs_io_uring.8.xml b/docs-xml/manpages/vfs_io_uring.8.xml new file mode 100644 index 0000000..f47a504 --- /dev/null +++ b/docs-xml/manpages/vfs_io_uring.8.xml @@ -0,0 +1,107 @@ +<?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="vfs_io_uring.8"> + +<refmeta> + <refentrytitle>vfs_io_uring</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + +<refnamediv> + <refname>vfs_io_uring</refname> + <refpurpose>Implement async io in Samba vfs using io_uring of Linux (>= 5.1).</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = io_uring</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para>The <command>io_uring</command> VFS module enables asynchronous + pread, pwrite and fsync using the io_uring infrastructure of Linux (>= 5.1). + This provides much less overhead compared to the usage of the pthreadpool for + async io.</para> + + <para>This module SHOULD be listed last in any module stack as + it requires real kernel file descriptors.</para> + +</refsect1> + + +<refsect1> + <title>EXAMPLES</title> + + <para>Straight forward use:</para> + +<programlisting> + <smbconfsection name="[cooldata]"/> + <smbconfoption name="path">/data/ice</smbconfoption> + <smbconfoption name="vfs objects">io_uring</smbconfoption> +</programlisting> + +</refsect1> + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + + <varlistentry> + <term>io_uring:num_entries = NUMBER_OF_QUEUE_ENTRIES</term> + <listitem> + <para>The number of entries in the submission queue. + The maximum allowed value depends on the kernel version + and the kernel will roundup the value to a power of 2. + </para> + <para>The default is '128'.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>io_uring:sqpoll = BOOL</term> + <listitem> + <para>Use the IORING_SETUP_SQPOLL feature. + </para> + <para>The default is 'no'.</para> + </listitem> + </varlistentry> + + </variablelist> +</refsect1> + +<refsect1> + <title>SEE ALSO</title> + <para> + <citerefentry><refentrytitle>io_uring_setup</refentrytitle><manvolnum>2</manvolnum></citerefentry>. + </para> +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of the Samba suite. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_linux_xfs_sgid.8.xml b/docs-xml/manpages/vfs_linux_xfs_sgid.8.xml new file mode 100644 index 0000000..7382033 --- /dev/null +++ b/docs-xml/manpages/vfs_linux_xfs_sgid.8.xml @@ -0,0 +1,77 @@ +<?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="vfs_linux_xfs_sgid.8"> + +<refmeta> + <refentrytitle>vfs_syncops</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_linux_xfs_sgid</refname> + <refpurpose>Workaround XFS sgid bit not inherited</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = linux_xfs_sgid</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para> + <command>vfs_linux_xfs_sgid</command> is a VFS module to work around an + old Linux XFS bug fixed in 3.11: the SGID bit is not inherited during mkdir + when a default ACL is set + (<ulink url="https://web.archive.org/web/20160320180937/http://oss.sgi.com/bugzilla/show_bug.cgi?id=280"> + https://web.archive.org/web/20160320180937/http://oss.sgi.com/bugzilla/show_bug.cgi?id=280 + </ulink> fixed by <ulink url="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=42c49d7f249c2487f36d3314753d5d8ebcee8249"> + https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=42c49d7f249c2487f36d3314753d5d8ebcee8249</ulink>). + The <command>vfs_linux_xfs_sgid</command> VFS module will work around this + bug by manually setting the SGID bit after a <command>mkdir</command> + if the parent directory had the SGID bit set. + </para> + + <para>This module is stackable.</para> + +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + + <para>Add syncops functionality for [share]:</para> +<programlisting> + <smbconfsection name="[share]"/> + <smbconfoption name="vfs objects">linux_xfs_sgid</smbconfoption> +</programlisting> + +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of the Samba suite. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_media_harmony.8.xml b/docs-xml/manpages/vfs_media_harmony.8.xml new file mode 100644 index 0000000..44476b5 --- /dev/null +++ b/docs-xml/manpages/vfs_media_harmony.8.xml @@ -0,0 +1,142 @@ +<?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="vfs_media_harmony.8"> + +<refmeta> + <refentrytitle>vfs_media_harmony</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_media_harmony</refname> + <refpurpose>Allow multiple Avid clients to share a network drive.</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = media_harmony</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para>The <command>vfs_media_harmony</command> VFS module allows + Avid editorial workstations to share a network drive. It does + this by:</para> + <orderedlist continuation="restarts" inheritnum="ignore" numeration="arabic"> + <listitem><para>Giving each client their own copy of the Avid + msmMMOB.mdb and msmFMID.pmr files and Creating directories.</para></listitem> + <listitem><para>Allowing each client to explicitly control the + write time the Avid application sees on Avid media directories.</para></listitem> + </orderedlist> + + <para>This module is stackable.</para> + +</refsect1> + +<refsect1> + <title>CONFIGURATION</title> + + <para><command>vfs_media_harmony</command> automatically redirects + requests from clients for Avid database files or an Avid Creating + directory to a client-specific version of the file. No + configuration beyond enabling the module is needed to get this + portion of its functionality working.</para> + + <para>If Mac and Windows Avid clients will be accessing the same + folder, they should be given separate share definitions, with + hidden Mac files vetoed on the Windows share. See EXAMPLES.</para> + + <para>To allow each client to control when the Avid application + refreshes their Avid databases, create files for each client + and each Avid media directory with the name + [avid_dir_name]_[client_ip_address]_[client_username]. + To trigger Avid database refreshes, update the write time on + those files. See EXAMPLES.</para> + + <para>It is also necessary for the <command>cache locked write times = no</command> + option to be set for clients to be able to control their Avid + media folder write times.</para> + +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + + <para>Enable media_harmony for Mac and Windows clients:</para> +<programlisting> + <smbconfsection name="[avid_mac]"/> + <smbconfoption name="path">/avid</smbconfoption> + <smbconfoption name="vfs objects">media_harmony</smbconfoption> + <smbconfoption name="cache locked write times">no</smbconfoption> + <smbconfsection name="[avid_win]"/> + <smbconfoption name="path">/avid</smbconfoption> + <smbconfoption name="vfs objects">media_harmony</smbconfoption> + <smbconfoption name="cache locked write times">no</smbconfoption> + <smbconfoption name="veto files">/.DS_Store/._@/.Trash@/.Spotlight@/.hidden/.hotfiles@/.vol/</smbconfoption> + <smbconfoption name="delete veto files">yes</smbconfoption> +</programlisting> + + <para>Create the files that will allow users david and susan + to control their own Avid database refreshes:</para> +<programlisting> + touch '/avid/OMFI MediaFiles_192.168.1.10_david' \ + '/avid/OMFI MediaFiles_192.168.1.11_susan' \ + '/avid/Avid MediaFiles/MXF/1_192.168.1.10_david' \ + '/avid/Avid MediaFiles/MXF/1_192.168.1.11_susan' +</programlisting> + <para>Trigger an Avid database refresh for user david:</para> +<programlisting> + touch '/avid/OMFI MediaFiles_192.168.1.10_david' \ + '/avid/Avid MediaFiles/MXF/1_192.168.1.10_david' +</programlisting> + + <para>If you have a large number of Avid media folders to manage, + you can give each editor a suitably modified version of + examples/scripts/vfs/media_harmony/trigger_avid_update.py to + create and update these files.</para> + +</refsect1> + +<refsect1> + <title>CAVEATS</title> + + <para><command>vfs_media_harmony</command> is designed to work with + Avid editing applications that look in the Avid MediaFiles or + OMFI MediaFiles directories for media. It is not designed to work + as expected in all circumstances for general use. For example: It + is possible to open a client-specific file such as + msmMMOB.mdb_192.168.1.10_userx even though it doesn't show up + in a directory listing.</para> + +</refsect1> + + + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of the Samba suite. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_nfs4acl_xattr.8.xml b/docs-xml/manpages/vfs_nfs4acl_xattr.8.xml new file mode 100644 index 0000000..d4ce40b --- /dev/null +++ b/docs-xml/manpages/vfs_nfs4acl_xattr.8.xml @@ -0,0 +1,172 @@ +<?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"> +<ns:Root xmlns:xi="http://www.w3.org/2003/XInclude" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:ns="urn:TestNamespace"> +<refentry id="vfs_nfs4acl_xattr.8"> + + <refmeta> + <refentrytitle>vfs_nfs4acl_xattr</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> + </refmeta> + + + <refnamediv> + <refname>vfs_nfs4acl_xattr</refname> + <refpurpose>Save NTFS-ACLs as NFS4 encoded blobs in extended + attributes</refpurpose> + </refnamediv> + + <refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = nfs4acl_xattr</command> + </cmdsynopsis> + </refsynopsisdiv> + + <refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para>The <command>vfs_acl_xattr</command> VFS module stores NTFS Access + Control Lists (ACLs) in Extended Attributes (EAs/xattrs). This enables the + full mapping of Windows ACLs on Samba servers. + </para> + + <para>This module is stackable.</para> + </refsect1> + + + <refsect1> + <title>OPTIONS</title> + + <xi:include href="nfs4.xml.include" xpointer="xpointer(*/*)" /> + + <variablelist> + + <varlistentry> + <term>nfs4acl_xattr:encoding = [nfs|ndr|xdr]</term> + <listitem> + <para>This parameter configures the marshaling format used in the ACL + blob and the default extended attribute name used to store the blob. + </para> + + <para>When set to <emphasis>nfs</emphasis> - fetch and store the NT + ACL in NFS 4.0 or 4.1 compatible XDR encoding. By default this uses + the extended attribute "system.nfs4_acl". This setting also + disables <emphasis>validate_mode</emphasis>.</para> + + <para>When set to <emphasis>ndr (default)</emphasis> - store the NT + ACL with POSIX draft NFSv4 compatible NDR encoding. By default this + uses the extended attribute "security.nfs4acl_ndr".</para> + + <para>When set to <emphasis>xdr</emphasis> - store the NT ACL in a + format similar to NFS 4.1 RFC 5661 in XDR encoding. The main + differences to RFC 5661 are the use of ids instead of strings as users + and group identifiers and an additional attribute per nfsace4. By + default this encoding stores the blob in the extended attribute + "security.nfs4acl_xdr".</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>nfs4acl_xattr:version = [40|41]</term> + <listitem> + <para>This parameter configures the NFS4 ACL level. Only + <emphasis>41</emphasis> fully supports mapping NT ACLs and should be + used. The default is <emphasis>41</emphasis>.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>nfs4acl_xattr:default acl style = [posix|windows|everyone]</term> + <listitem> + <para>This parameter determines the type of ACL that is synthesized in + case a file or directory lacks an ACL extended attribute.</para> + + <para>When set to <emphasis>posix</emphasis>, an ACL will be + synthesized based on the POSIX mode permissions for user, group and + others, with an additional ACE for <emphasis>NT + Authority\SYSTEM</emphasis> will full rights.</para> + + <para>When set to <emphasis>windows</emphasis>, an ACL is synthesized + the same way Windows does it, only including permissions for the owner + and <emphasis>NT Authority\SYSTEM</emphasis>.</para> + + <para>When set to <emphasis>everyone</emphasis>, an ACL is synthesized + giving full permissions to everyone (S-1-1-0).</para> + + <para>The default for this option is + <emphasis>everyone</emphasis>.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>nfs4acl_xattr:xattr_name = STRING</term> + <listitem> + <para>This parameter configures the extended attribute name used to + store the marshaled ACL.</para> + <para>The default depends on the setting for + <emphasis>nfs4acl_xattr:encoding</emphasis>.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>nfs4acl_xattr:nfs4_id_numeric = yes|no (default: no)</term> + <listitem> + <para>This parameter tells the module how the NFS4 server encodes user + and group identifiers on the network. With the default setting the + module expects identifiers encoded as per the NFS4 RFC as + user@domain.</para> + <para>When set to <emphasis>yes</emphasis>, the module expects the + identifiers as numeric string.</para> + <para>The default for this options<emphasis>no</emphasis>.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>nfs4acl_xattr:validate_mode = yes|no</term> + <listitem> + <para>This parameter configures whether the module enforces the POSIX + mode is set to 0777 for directories and 0666 for files. If this + constrained is not met, the xattr with the ACL blob is + discarded.</para> + <para>The default depends on the setting for + <emphasis>nfs4acl_xattr:encoding</emphasis>: when set to + <emphasis>nfs</emphasis> this setting is disabled by default, + otherwise it is enabled.</para> + </listitem> + </varlistentry> + + </variablelist> + </refsect1> + + <refsect1> + <title>EXAMPLES</title> + + <para>A directory can be exported via Samba using this module as + follows:</para> + + <programlisting> + <smbconfsection name="[samba_gpfs_share]"/> + <smbconfoption name="vfs objects">nfs4acl_xattr</smbconfoption> + <smbconfoption name="path">/foo/bar</smbconfoption> + </programlisting> + </refsect1> + + <refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + </refsect1> + +</refentry> +</ns:Root> diff --git a/docs-xml/manpages/vfs_offline.8.xml b/docs-xml/manpages/vfs_offline.8.xml new file mode 100644 index 0000000..e278f20 --- /dev/null +++ b/docs-xml/manpages/vfs_offline.8.xml @@ -0,0 +1,72 @@ +<?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="vfs_offline.8"> + +<refmeta> + <refentrytitle>vfs_offline</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_offline</refname> + <refpurpose>Mark all files as offline</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = offline</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para>The <command>vfs_offline</command> module marks all files + in the share as having the offline DOS attribute.</para> + + <para>Files with the offline DOS attribute are handled differently + by the Windows SMB client, as well as by Windows Explorer. In + particular, Windows Explorer does not read those files for the sole + purpose of drawing a thumbnail, as it normally does. This can + improve user experience with some remote file systems.</para> + +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + + <para>Mark all files in a share as offline:</para> + +<programlisting> + <smbconfsection name="[remote]"/> + <smbconfoption name="vfs objects">offline</smbconfoption> +</programlisting> + +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of the Samba suite. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_prealloc.8.xml b/docs-xml/manpages/vfs_prealloc.8.xml new file mode 100644 index 0000000..46f81b8 --- /dev/null +++ b/docs-xml/manpages/vfs_prealloc.8.xml @@ -0,0 +1,107 @@ +<?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="vfs_prealloc.8"> + +<refmeta> + <refentrytitle>vfs_prealloc</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_prealloc</refname> + <refpurpose>preallocate matching files to a predetermined size</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = prealloc</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para>The <command>vfs_prealloc</command> VFS module preallocates + files to a specified size each time a new file is created. This + is useful in environments where files are of a predetermined + size will be written to a disk subsystem where extending file + allocations is expensive. </para> + + <para>This module is stackable.</para> + +</refsect1> + + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + + <varlistentry> + <term>prealloc:EXT = BYTES</term> + <listitem> + <para>Preallocate all files with the extension EXT to + the size specified by BYTES. + </para> + + <para>The following suffixes may be applied to BYTES:</para> + <itemizedlist> + <listitem><para><command>K</command> - BYTES is a number of kilobytes</para></listitem> + <listitem><para><command>M</command> - BYTES is a number of megabytes</para></listitem> + <listitem><para><command>G</command> - BYTES is a number of gigabytes</para></listitem> + </itemizedlist> + + </listitem> + </varlistentry> + + </variablelist> +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + + <para>A process writes TIFF files to a Samba share, and the + is known these files will almost always be around 4 megabytes + (4194304 bytes): </para> + +<programlisting> + <smbconfsection name="[frames]"/> + <smbconfoption name="path">/data/frames</smbconfoption> + <smbconfoption name="vfs objects">prealloc</smbconfoption> + <smbconfoption name="prealloc:tiff">4M</smbconfoption> +</programlisting> +</refsect1> + +<refsect1> + <title>CAVEATS</title> + <para><command>vfs_prealloc</command> is not supported on all + platforms and filesystems. Currently only XFS filesystems on + Linux and IRIX are supported. + </para> +</refsect1> + +<refsect1> + <title>VERSION</title> + <para>This man page is part of version &doc.version; of the Samba suite. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_preopen.8.xml b/docs-xml/manpages/vfs_preopen.8.xml new file mode 100644 index 0000000..e826d72 --- /dev/null +++ b/docs-xml/manpages/vfs_preopen.8.xml @@ -0,0 +1,275 @@ +<?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="vfs_preopen.8"> + +<refmeta> + <refentrytitle>vfs_preopen</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + +<refnamediv> + <refname>vfs_preopen</refname> + <refpurpose>Hide read latencies for applications reading numbered files</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = preopen</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para>This module assists applications that want to read numbered + files in sequence with very strict latency requirements. One area + where this happens in video streaming applications that want to read + one file per frame.</para> + + <para>When you use this module, a number of helper processes is + started that speculatively open files and read a number of bytes to + prime the file system cache, so that later on when the real + application's request comes along, no disk access is necessary.</para> + + <para>This module is stackable.</para> + +</refsect1> + + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + + <varlistentry> + <term>preopen:posix-basic-regex = BOOL (default: no)</term> + <listitem> + <para> + <command>preopen:posix-basic-regex = yes</command> changes + the meaning of the <command>preopen:names</command> option. + Further details are described there. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>preopen:names = /pattern1/pattern2/</term> + <listitem> + <para> + preopen:names specifies the file name pattern(s) which should + trigger the preopen helpers to do their work. We assume that + the files are numbered incrementally. So if your file names + are numbered FRAME00000.frm FRAME00001.frm and so on you would + list them as <command>preopen:names=/FRAME*.frm/</command>. + The default algorithm uses the first (at least 3) digits it finds + in order to calculate the name of the next frames. + </para> + + <para><command>preopen:posix-basic-regex = yes</command> changes + the meaning of the <command>preopen:names</command> option. + It means 'POSIX Basic Regular Expression' strings are used + as patterns. The key is each pattern requires exactly one + 'subexpression' starting with '\(' and ending with '\)' in + order to specify the position of the digits representing + the incrementing frame numbers. Given a file names like + Movie7599Frame0v1234.txt, Movie7599Frame1v1234.txt, Movie7599Frame2v1234.txt + up to Movie7599Frame9v1234.txt you can use <command>preopen:names = /.*Frame\([0-9]\).*\.txt/</command> + in order to match just a single digits, this might not be a real world example, + but it shows the flexiblity that is possible here. + </para> + + </listitem> + </varlistentry> + + <varlistentry> + <term>preopen:num_bytes = BYTES</term> + <listitem> + <para> + Specifies the number of bytes the helpers should speculatively + read, defaults to 1. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>preopen:helpers = NUM-PROCS</term> + <listitem> + <para> + Number of forked helper processes, defaults to 1. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>preopen:queuelen = NUM-FILES</term> + <listitem> + <para> + Number of files that should be speculatively opened. Defaults + to the 10 subsequent files. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>preopen:nomatch_log_level = LOGLEVEL</term> + <listitem> + <para> + In order to debug or audit the usage of the preopen logic + you can use this option to specify at what log level details + about filenames not matching any pattern from '<command>preopen:names</command>' + are logged. + </para> + <para> + Defaults to the log level 5. + See also <citerefentry><refentrytitle>smb.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry> + in the '<smbconfoption name="log level"/>' section + for special handling of the 'preopen' debug class. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>preopen:match_log_level = LOGLEVEL</term> + <listitem> + <para> + In order to debug or audit the usage of the preopen logic + you can use this option to specify at what log level details + about filenames actually matching a pattern from '<command>preopen:names</command>' + are logged. + </para> + <para> + See also '<command>preopen:founddigits_log_level</command>' and '<command>preopen:push_log_level</command>'. + </para> + <para> + Defaults to the log level 5. + See also <citerefentry><refentrytitle>smb.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry> + in the '<smbconfoption name="log level"/>' section + for special handling of the 'preopen' debug class. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>preopen:nodigits_log_level = LOGLEVEL</term> + <listitem> + <para> + In order to debug or audit problems with the preopen configuration + you can use this option to specify at what log level details + about filenames actually matching a pattern from '<command>preopen:names</command>', + but at the same time don't contain the expected digits, are logged. + This is typically something the administrator wants to notice and + adjust the configuration in order to define more precisely where to + find the digits in the filename. + </para> + <para> + Defaults to the log level 1. + See also <citerefentry><refentrytitle>smb.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry> + in the '<smbconfoption name="log level"/>' section + for special handling of the 'preopen' debug class. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>preopen:founddigits_log_level = LOGLEVEL</term> + <listitem> + <para> + In order to debug or audit the usage of the preopen logic + you can use this option to specify at what log level details + about filenames actually matching a pattern from '<command>preopen:names</command>', + and at the same time having valid expected digits, are logged. This means enough information is available + in order to queue preopens. + </para> + <para> + Defaults to the log level 3. + See also <citerefentry><refentrytitle>smb.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry> + in the '<smbconfoption name="log level"/>' section + for special handling of the 'preopen' debug class. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>preopen:reset_log_level = LOGLEVEL</term> + <listitem> + <para> + If a matching filename belongs to a different pattern from '<command>preopen:names</command>', + a different parent directory or differs in a significant way from the last filename + that was found before, the module needs to reset it's internal queue state. + This means that no more preopens will be pushed to helper processes belonging to the + former queue state. In order to debug or audit such queue resets you can use this option to specify at what + log level details are logged. + </para> + <para> + Defaults to the log level 5. + See also <citerefentry><refentrytitle>smb.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry> + in the '<smbconfoption name="log level"/>' section + for special handling of the 'preopen' debug class. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>preopen:push_log_level = LOGLEVEL</term> + <listitem> + <para> + In order to debug or audit the usage of the preopen logic + you can use this option to specify at what log level details + about filenames actually pushed to preopen helper processes are logged. + This means they will actually be preopened soon. + </para> + <para> + Defaults to the log level 3. + See also <citerefentry><refentrytitle>smb.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry> + in the '<smbconfoption name="log level"/>' section + for special handling of the 'preopen' debug class. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>preopen:queue_log_level = LOGLEVEL</term> + <listitem> + <para> + In order to debug details about internal queue processing + you can use this option to specify at what log level the details are logged. + </para> + <para> + Defaults to the log level 10. + See also <citerefentry><refentrytitle>smb.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry> + in the '<smbconfoption name="log level"/>' section + for special handling of the 'preopen' debug class. + </para> + </listitem> + </varlistentry> + + </variablelist> +</refsect1> + +<refsect1> + <title>VERSION</title> + <para>This man page is part of version &doc.version; of the Samba suite. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + + <para>The PREOPEN VFS module was created with contributions from + Volker Lendecke and the developers at IBM. + </para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_readahead.8.xml b/docs-xml/manpages/vfs_readahead.8.xml new file mode 100644 index 0000000..602df59 --- /dev/null +++ b/docs-xml/manpages/vfs_readahead.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="vfs_readahead.8"> + +<refmeta> + <refentrytitle>vfs_readahead</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_readahead</refname> + <refpurpose>pre-load the kernel buffer cache</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = readahead</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para>This <command>vfs_readahead</command> VFS module detects + read requests at multiples of a given offset (hex 0x80000 by + default) and then tells the kernel via either the readahead + system call (on Linux) or the posix_fadvise system call to + pre-fetch this data into the buffer cache.</para> + + <para>This module is useful for Windows Vista clients reading + data using the Windows Explorer program, which asynchronously + does multiple file read requests at offset boundaries of 0x80000 + bytes.</para> + + <para>The offset multiple used is given by the readahead:offset + option, which defaults to 0x80000.</para> + + <para>The size of the disk read operations performed + by <command>vfs_readahead</command> is determined by the + readahead:length option. By default this is set to the + same value as the readahead:offset option and if not + set explicitly will use the current value of + readahead:offset.</para> + + <para>This module is stackable.</para> +</refsect1> + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + + <varlistentry> + <term>readahead:offset = BYTES</term> + <listitem> + <para>The offset multiple that causes readahead to be + requested of the kernel buffer cache.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>readahead:length = BYTES</term> + <listitem> + <para>The number of bytes requested to be + read into the kernel buffer cache on each + readahead call.</para> + </listitem> + </varlistentry> + + <para>The following suffixes may be applied to BYTES:</para> + <itemizedlist> + <listitem><para><command>K</command> - BYTES is a number of kilobytes</para></listitem> + <listitem><para><command>M</command> - BYTES is a number of megabytes</para></listitem> + <listitem><para><command>G</command> - BYTES is a number of gigabytes</para></listitem> + </itemizedlist> + + + </variablelist> +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + +<programlisting> + <smbconfsection name="[hypothetical]"/> + <smbconfoption name="vfs objects">readahead</smbconfoption> +</programlisting> + +</refsect1> + +<refsect1> + <title>VERSION</title> + <para>This man page is part of version &doc.version; of the Samba suite. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_readonly.8.xml b/docs-xml/manpages/vfs_readonly.8.xml new file mode 100644 index 0000000..3171923 --- /dev/null +++ b/docs-xml/manpages/vfs_readonly.8.xml @@ -0,0 +1,101 @@ +<?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="vfs_readonly.8"> + +<refmeta> + <refentrytitle>vfs_readonly</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_readonly</refname> + <refpurpose>make a Samba share read only for a specified time period</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = readonly</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para>The <command>vfs_readonly</command> VFS module marks a share + as read only for all clients connecting within the configured + time period. Clients connecting during this time will be denied + write access to all files in the share, irrespective of their + actual access privileges.</para> + + <para>This module is stackable.</para> + +</refsect1> + + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + + <varlistentry> + <term>readonly:period = BEGIN, END</term> + <listitem> + <para>Only mark the share as read only if the client + connection was made between the times marked by the + BEGIN and END date specifiers. + The syntax of these date specifiers is the + same as that accepted by the -d option of GNU + <citerefentry><refentrytitle>date</refentrytitle> + <manvolnum>1</manvolnum></citerefentry>. + </para> + + </listitem> + </varlistentry> + + </variablelist> +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + + <para>Mark all shares read only:</para> +<programlisting> + <smbconfsection name="[global]"/> + <smbconfoption name="vfs objects">readonly</smbconfoption> +</programlisting> + + <para>Mark the [backup] share as read only during business hours:</para> +<programlisting> + <smbconfsection name="[backup]"/> + <smbconfoption name="path">/readonly</smbconfoption> + <smbconfoption name="vfs objects">readonly</smbconfoption> + <smbconfoption name="readonly:period">readonly:period = "today 9:00","today 17:00"</smbconfoption> +</programlisting> +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of the Samba suite. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_recycle.8.xml b/docs-xml/manpages/vfs_recycle.8.xml new file mode 100644 index 0000000..4275c19 --- /dev/null +++ b/docs-xml/manpages/vfs_recycle.8.xml @@ -0,0 +1,220 @@ +<?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="vfs_recycle.8"> + +<refmeta> + <refentrytitle>vfs_recycle</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_recycle</refname> + <refpurpose>Samba VFS recycle bin</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = recycle</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para>The <command>vfs_recycle</command> intercepts file deletion + requests and moves the affected files to a temporary repository + rather than deleting them immediately. This gives the same effect + as the Recycle Bin on Windows computers. </para> + + <para>The Recycle Bin will not appear in Windows Explorer + views of the network file system (share) nor on any mapped + drive. Instead, a directory called .recycle will be automatically + created when the first file is deleted and recycle:repository is + not configured. If recycle:repository is configured, the name + of the created directory depends on recycle:repository. Users + can recover files from the recycle bin. If the recycle:keeptree + option has been specified, deleted files will be found in a path + identical with that from which the file was deleted. </para> + + + <para>This module is stackable.</para> + +</refsect1> + + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + + <varlistentry> + <term>recycle:repository = PATH</term> + <listitem> + <para>Path of the directory where deleted files should be moved. + </para> + <para>If this option is not set, the default path .recycle + is used. </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>recycle:directory_mode = MODE</term> + <listitem> + <para>Set MODE to the octal mode the recycle repository + should be created with. The recycle repository will be + created when first file is deleted. If recycle:subdir_mode + is not set, MODE also applies to subdirectories. + </para> + <para>If this option is not set, the default mode + 0700 is used. </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>recycle:subdir_mode = MODE</term> + <listitem> + <para>Set MODE to the octal mode with which + sub directories of the recycle repository should be created. + </para> + <para>If this option is not set, subdirectories + will be created with the mode from recycle:directory_mode. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>recycle:keeptree = BOOL</term> + <listitem> + <para>Specifies whether the directory structure should + be preserved or whether the files in a directory that is being + deleted should be kept separately in the repository. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>recycle:versions = BOOL</term> + <listitem> + <para>If this option is True, two files with the same + name that are deleted will both be kept in the repository. + Newer deleted versions of a file will be called + "Copy #x of filename". + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>recycle:touch = BOOL</term> + <listitem> + <para>Specifies whether a file's access date should be + updated when the file is moved to the repository. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>recycle:touch_mtime = BOOL</term> + <listitem> + <para>Specifies whether a file's last modified date should be + updated when the file is moved to the repository. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>recycle:minsize = BYTES</term> + <listitem> + <para>Files that are smaller than the number of bytes + specified by this parameter will not be put into the + repository. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>recycle:maxsize = BYTES</term> + <listitem> + <para>Files that are larger than the number of bytes + specified by this parameter will not be put into the + repository. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>recycle:exclude = LIST</term> + <listitem> + <para>List of files that should not be put into the + repository when deleted, but deleted in the normal way. + Wildcards such as * and ? are supported. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>recycle:exclude_dir = LIST</term> + <listitem> + <para>List of directories whose files should not be put + into the repository when deleted, but deleted in the + normal way. Wildcards such as * and ? are supported. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>recycle:noversions = LIST</term> + <listitem> + <para>Specifies a list of paths (wildcards such as * + and ? are supported) for which no versioning should + be used. Only useful when recycle:versions is enabled. + </para> + </listitem> + </varlistentry> + + </variablelist> +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + + <para>Move files "deleted" on <parameter>share</parameter> to + <parameter>/data/share/.recycle</parameter> instead of deleting them: + </para> + +<programlisting> + <smbconfsection name="[share]"/> + <smbconfoption name="path">/data/share</smbconfoption> + <smbconfoption name="vfs objects">recycle</smbconfoption> + <smbconfoption name="recycle:repository">.recycle</smbconfoption> + <smbconfoption name="recycle:keeptree">yes</smbconfoption> + <smbconfoption name="recycle:versions">yes</smbconfoption> +</programlisting> + +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of the Samba suite. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_shadow_copy.8.xml b/docs-xml/manpages/vfs_shadow_copy.8.xml new file mode 100644 index 0000000..4f8468d --- /dev/null +++ b/docs-xml/manpages/vfs_shadow_copy.8.xml @@ -0,0 +1,121 @@ +<?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="vfs_shadow_copy.8"> + +<refmeta> + <refentrytitle>vfs_shadow_copy</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_shadow_copy</refname> + <refpurpose>Expose snapshots to Windows clients as shadow copies.</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = shadow_copy</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para>The <command>vfs_shadow_copy</command> VFS module functionality + that is similar to Microsoft Shadow Copy services. When setup properly, + this module allows Microsoft Shadow Copy clients to browse + "shadow copies" on Samba shares. + </para> + + <para>This module is stackable.</para> + +</refsect1> + +<refsect1> + <title>CONFIGURATION</title> + + <para><command>vfs_shadow_copy</command> relies on a filesystem + snapshot implementation. Many common filesystems have native + support for this. + </para> + + <para>Filesystem snapshots must be mounted on + specially named directories in order to be recognized by + <command>vfs_shadow_copy</command>. The snapshot mount points must + be immediate children of a the directory being shared.</para> + + <para>The snapshot naming convention is @GMT-YYYY.MM.DD-hh.mm.ss, + where: + <itemizedlist> + <listitem><para><command>YYYY</command> is the 4 digit year</para></listitem> + <listitem><para><command>MM</command> is the 2 digit month</para></listitem> + <listitem><para><command>DD</command> is the 2 digit day</para></listitem> + <listitem><para><command>hh</command> is the 2 digit hour</para></listitem> + <listitem><para><command>mm</command> is the 2 digit minute</para></listitem> + <listitem><para><command>ss</command> is the 2 digit second.</para></listitem> + </itemizedlist> + </para> + + <para>The <command>vfs_shadow_copy</command> snapshot naming convention can be produced with the following + <citerefentry><refentrytitle>date</refentrytitle> + <manvolnum>1</manvolnum></citerefentry> command: + <programlisting> + TZ=GMT date +@GMT-%Y.%m.%d-%H.%M.%S + </programlisting></para> + +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + + <para>Add shadow copy support to user home directories:</para> +<programlisting> + <smbconfsection name="[homes]"/> + <smbconfoption name="vfs objects">shadow_copy</smbconfoption> +</programlisting> + +</refsect1> + +<refsect1> + <title>CAVEATS</title> + + <para>This is not a backup, archival, or version control solution. + </para> + + <para>With Samba or Windows servers, + <command>vfs_shadow_copy</command> is designed to be an end-user + tool only. It does not replace or enhance your backup and + archival solutions and should in no way be considered as + such. Additionally, if you need version control, implement a + version control system.</para> + +</refsect1> + + + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of the Samba suite. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_shadow_copy2.8.xml b/docs-xml/manpages/vfs_shadow_copy2.8.xml new file mode 100644 index 0000000..fe37145 --- /dev/null +++ b/docs-xml/manpages/vfs_shadow_copy2.8.xml @@ -0,0 +1,494 @@ +<?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="vfs_shadow_copy2.8"> + +<refmeta> + <refentrytitle>vfs_shadow_copy2</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_shadow_copy2</refname> + <refpurpose>Expose snapshots to Windows clients as shadow copies. + </refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = shadow_copy2</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para> + The <command>vfs_shadow_copy2</command> VFS module offers a + functionality similar to Microsoft Shadow Copy services. + When set up properly, + this module allows Microsoft Shadow Copy clients to browse + through file system snapshots as "shadow copies" on Samba shares. + </para> + + <para> + This is a second implementation of a shadow copy module + which has the following additional features (compared to the original + <citerefentry><refentrytitle>shadow_copy</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> module): + </para> + <orderedlist continuation="restarts" inheritnum="ignore" numeration="arabic"> + <listitem><para> + There is no need any more to populate your share's root directory + with symlinks to the snapshots if the file system stores the + snapshots elsewhere. + Instead, you can flexibly configure the module where to look for + the file system snapshots. + This can be very important when you have thousands of + shares, or use [homes]. + </para></listitem> + <listitem><para> + Snapshot directories need not be in one fixed central place but + can be located anywhere in the directory tree. This mode helps to + support file systems that offer snapshotting of particular + subtrees, for example the GPFS independent file sets. + </para></listitem> + <listitem><para> + Vanity naming for snapshots: snapshots can be named in any format + compatible with str[fp]time conversions. + </para></listitem> + <listitem><para> + Timestamps can be represented in localtime rather than UTC. + </para></listitem> + <listitem><para> + The inode number of the files can optionally be altered to be + different from the original. This fixes the 'restore' button + in the Windows GUI to work without a sharing violation when + serving from file systems, like GPFS, that return the same + device and inode number for the snapshot file and the original. + </para></listitem> + <listitem><para> + Shadow copy results are by default sorted before being sent to the + client. This is beneficial for filesystems that don't read + directories alphabetically (the default unix). Sort ordering can be + configured and sorting can be turned off completely if the file + system sorts its directory listing. + </para></listitem> + </orderedlist> + + <para>This module is stackable.</para> + +</refsect1> + +<refsect1> + <title>CONFIGURATION</title> + + <para><command>vfs_shadow_copy2</command> relies on a filesystem + snapshot implementation. Many common filesystems have native + support for this. + </para> + + <para>Filesystem snapshots must be available under + specially named directories in order to be recognized by + <command>vfs_shadow_copy2</command>. These snapshot directory + is typically a direct subdirectory of the share root's mountpoint + but there are other modes that can be configured with the + parameters described in detail below.</para> + + <para>The snapshot at a given point in time is expected in a + subdirectory of the snapshot directory where the snapshot's + directory is expected to be a formatted version of the + snapshot time. The default format which can be changed + with the <command>shadow:format</command> option + is @GMT-YYYY.MM.DD-hh.mm.ss, where: + <itemizedlist> + <listitem><para><command>YYYY</command> is the 4 digit year</para></listitem> + <listitem><para><command>MM</command> is the 2 digit month</para></listitem> + <listitem><para><command>DD</command> is the 2 digit day</para></listitem> + <listitem><para><command>hh</command> is the 2 digit hour</para></listitem> + <listitem><para><command>mm</command> is the 2 digit minute</para></listitem> + <listitem><para><command>ss</command> is the 2 digit second.</para></listitem> + </itemizedlist> + </para> + + <para>The <command>vfs_shadow_copy2</command> snapshot naming + convention can be produced with the following + <citerefentry><refentrytitle>date</refentrytitle> + <manvolnum>1</manvolnum></citerefentry> command: + <programlisting> + TZ=GMT date +@GMT-%Y.%m.%d-%H.%M.%S + </programlisting></para> + +</refsect1> + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + <varlistentry> + <term>shadow:mountpoint = MOUNTPOINT + </term> + <listitem> + <para> + With this parameter, one can specify the mount point + of the filesystem that contains the share path. + Usually this mount point is automatically detected. + But for some constellations, in particular tests, + it can be convenient to be able to specify it. + </para> + <para>Example: shadow:mountpoint = /path/to/filesystem</para> + <para>Default: shadow:mountpoint = NOT SPECIFIED</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>shadow:snapdir = SNAPDIR + </term> + <listitem> + <para> + Path to the directory where the file system of + the share keeps its snapshots. + If an absolute path is specified, it is used as-is. + If a relative path is specified, then it is taken + relative to the mount point of the filesystem of + the share root. (See <command>shadow:mountpoint</command>.) + </para> + <para> + Note that <command>shadow:snapdirseverywhere</command> + depends on this parameter and needs a relative path. + Setting an absolute path disables + <command>shadow:snapdirseverywhere</command>. + </para> + <para> + Note that the <command>shadow:crossmountpoints</command> + option also requires a relative snapdir. + Setting an absolute path disables + <command>shadow:crossmountpoints</command>. + </para> + <para>Example: shadow:snapdir = /some/absolute/path</para> + <para>Default: shadow:snapdir = .snapshots</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>shadow:basedir = BASEDIR + </term> + <listitem> + <para> + The basedir option allows one to specify a directory + between the share's mount point and the share root, + relative to which the file system's snapshots are taken. + </para> + <para> + For example, if + <itemizedlist> + <listitem><para> + <command>basedir = mountpoint/rel_basedir</command> + </para></listitem> + <listitem><para> + <command>share_root = basedir/rel_share_root</command> + </para></listitem> + <listitem><para> + <command>snapshot_path = mountpoint/snapdir</command> + </para> + <para> + or + <command>snapshot_path = snapdir</command> + if snapdir is absolute + </para></listitem> + </itemizedlist> + then the snapshot of a + <command>file = mountpoint/rel_basedir/rel_share_root/rel_file</command> + at a time TIME will be found under + <command>snapshot_path/FS_GMT_TOKEN(TIME)/rel_share_root/rel_file</command>, + where FS_GMT_TOKEN(TIME) is the timestamp string belonging + to TIME in the format required by the file system. + (See <command>shadow:format</command>.) + </para> + <para>The default for the basedir is the mount point + of the file system of the share root + (see <command>shadow:mountpoint</command>). + </para> + <para> + Note that the <command>shadow:snapdirseverywhere</command> + and <command>shadow:crossmountpoints</command> + options are incompatible with <command>shadow:basedir</command> + and disable the basedir setting. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>shadow:snapsharepath = SNAPSHAREPATH + </term> + <listitem> + <para> + With this parameter, one can specify the path of the share's + root directory in snapshots, relative to the snapshot's + root directory. It is an alternative method to + <command>shadow:basedir</command>, allowing greater control. + </para> + <para> + For example, if within each + snapshot the files of the share have a + <command>path/to/share/</command> prefix, then + <command>shadow:snapsharepath</command> can be + set to <command>path/to/share</command>. + </para> + <para> + With this parameter, it is no longer assumed that a + snapshot represents an image of the original file system or + a portion of it. For example, a system could perform + backups of only files contained in shares, and then + expose the backup files in a logical structure: + </para> + <itemizedlist> + <listitem><para>share1/</para></listitem> + <listitem><para>share2/</para></listitem> + <listitem><para>.../</para></listitem> + </itemizedlist> + <para> + Note that the <command>shadow:snapdirseverywhere</command> + and the <command>shadow:basedir</command> options + are incompatible with <command>shadow:snapsharepath</command> + and disable <command>shadow:snapsharepath</command> setting. + </para> + <para>Example: shadow:snapsharepath = path/to/share</para> + <para>Default: shadow:snapsharepath = NOT SPECIFIED</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>shadow:sort = asc/desc + </term> + <listitem> + <para>By default, this module sorts the shadow copy data + alphabetically before sending it to the client. + With this parameter, one can specify the sort order. + Possible known values are desc (descending, the default) + and asc (ascending). If the file system lists directories + alphabetically sorted, one can turn off sorting in this + module by specifying any other value. + </para> + <para>Example: shadow:sort = asc</para> + <para>Example: shadow:sort = none</para> + <para>Default: shadow:sort = desc</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>shadow:localtime = yes/no + </term> + <listitem> + <para>This is an optional parameter that indicates whether the + snapshot names are in UTC/GMT or in local time. If it is + disabled then UTC/GMT is expected. + </para> + <para>shadow:localtime = no</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>shadow:format = format specification for snapshot names + </term> + <listitem> + <para>This is an optional parameter that specifies the format + specification for the naming of snapshots in the file system. + The format must be compatible with the conversion + specifications recognized by str[fp]time. + </para> + <para>Default: shadow:format = "@GMT-%Y.%m.%d-%H.%M.%S"</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>shadow:sscanf = yes/no</term> + <listitem> + <para> + This parameter can be used to specify that the time in + format string is given as an unsigned long integer (%lu) + rather than a time strptime() can parse. + The result must be a unix time_t time. + </para> + <para>Default: shadow:sscanf = no</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>shadow:fixinodes = yes/no + </term> + <listitem> + <para>If you enable <command moreinfo="none">shadow:fixinodes + </command> then this module will modify the apparent inode + number of files in the snapshot directories using a hash of the + files path. This is needed for snapshot systems where the + snapshots have the same device:inode number as the original + files (such as happens with GPFS snapshots). If you don't set + this option then the 'restore' button in the shadow copy UI + will fail with a sharing violation. + </para> + <para>Default: shadow:fixinodes = no</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>shadow:snapdirseverywhere = yes/no + </term> + <listitem> + <para> + If you enable + <command moreinfo="none">shadow:snapdirseverywhere </command> + then this module will look + out for snapshot directories in the current working directory + and all parent directories, stopping at the mount point + by default. + But see <command>shadow:crossmountpoints</command> how to change + that behaviour. + </para> + <para> + An example where this is needed are independent filesets in + IBM's GPFS, but other filesystems might support snapshotting + only particular subtrees of the filesystem as well. + </para> + <para> + Note that <command>shadow:snapdirseverywhere</command> + depends on <command>shadow:snapdir</command> and needs it to be + a relative path. Setting an absolute snapdir path disables + <command>shadow:snapdirseverywhere</command>. + </para> + <para> + Note that this option is incompatible with the + <command>shadow:basedir</command> option and removes the + <command>shadow:basedir</command> setting by itself. + </para> + <para>Example: shadow:snapdirseverywhere = yes</para> + <para>Default: shadow:snapdirseverywhere = no</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>shadow:crossmountpoints = yes/no + </term> + <listitem> + <para> + This option is effective in the case of + <command>shadow:snapdirseverywhere = yes</command>. + Setting this option makes the module not stop at the + first mount point encountered when looking for snapdirs, + but lets it search potentially all through the path + instead. + </para> + <para> + An example where this is needed are independent filesets in + IBM's GPFS, but other filesystems might support snapshotting + only particular subtrees of the filesystem as well. + </para> + <para> + Note that <command>shadow:crossmountpoints</command> + depends on <command>shadow:snapdir</command> and needs it to be + a relative path. Setting an absolute snapdir path disables + <command>shadow:crossmountpoints</command>. + </para> + <para> + Note that this option is incompatible with the + <command>shadow:basedir</command> option and removes the + <command>shadow:basedir</command> setting by itself. + </para> + <para>Example: shadow:crossmountpoints = yes</para> + <para>Default: shadow:crossmountpoints = no</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>shadow:snapprefix + </term> + <listitem> + <para> + With growing number of snapshots file-systems need some mechanism + to differentiate one set of snapshots from other, e.g. monthly, weekly, + manual, special events, etc. Therefore these file-systems provide different + ways to tag snapshots, e.g. provide a configurable way to name snapshots, + which is not just based on time. With only <command>shadow:format</command> + it is very difficult to filter these snapshots. With this optional parameter, + one can specify a variable prefix component for names of the snapshot + directories in the file-system. If this parameter is set, together with the + <command>shadow:format</command> and <command>shadow:delimiter</command> + parameters it determines the possible names of snapshot + directories in the file-system. The option only supports Basic + Regular Expression (BRE). + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>shadow:delimiter + </term> + <listitem> + <para> + This optional parameter is used as a delimiter between + <command>shadow:snapprefix</command> and <command>shadow:format</command>. + This parameter is used only when <command>shadow:snapprefix</command> + is set. + </para> + <para>Default: shadow:delimiter = "_GMT"</para> + </listitem> + </varlistentry> + </variablelist> +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + + <para>Add shadow copy support to user home directories:</para> +<programlisting> + <smbconfsection name="[homes]"/> + <smbconfoption name="vfs objects">shadow_copy2</smbconfoption> + <smbconfoption name="shadow:snapdir">/data/snapshots</smbconfoption> + <smbconfoption name="shadow:basedir">/data/home</smbconfoption> + <smbconfoption name="shadow:sort">desc</smbconfoption> +</programlisting> + +</refsect1> + +<refsect1> + <title>CAVEATS</title> + + <para>This is not a backup, archival, or version control solution. + </para> + + <para>With Samba or Windows servers, + <command>vfs_shadow_copy2</command> is designed to be an end-user + tool only. It does not replace or enhance your backup and + archival solutions and should in no way be considered as + such. Additionally, if you need version control, implement a + version control system.</para> + +</refsect1> + + + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of the Samba suite. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_shell_snap.8.xml b/docs-xml/manpages/vfs_shell_snap.8.xml new file mode 100644 index 0000000..319d825 --- /dev/null +++ b/docs-xml/manpages/vfs_shell_snap.8.xml @@ -0,0 +1,154 @@ +<?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="vfs_shell_snap.8"> + +<refmeta> + <refentrytitle>vfs_shell_snap</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_shell_snap</refname> + <refpurpose> + Shell script callouts for snapshot creation and deletion + </refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = shell_snap</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> suite.</para> + + <para> + The <command>vfs_shell_snap</command> VFS provides shell-script + callouts for snapshot creation and deletion operations issued + by remote clients using the File Server Remote VSS Protocol + (FSRVP). + </para> + + <para> + The following shell callouts may be configured in smb.conf: + </para> + <para> + <smbconfoption name="shell_snap:check path command"></smbconfoption> + <itemizedlist> + <listitem><para> + Called when an FSRVP client wishes to check + whether a given share supports snapshot + create/delete requests. + </para></listitem> + <listitem><para> + The command is called with a single + <parameter>share_path</parameter> argument. + </para></listitem> + <listitem><para> + The command must return 0 if + <parameter>share_path</parameter> is capable of + being snapshotted. + </para></listitem> + </itemizedlist> + </para> + <para> + <smbconfoption name="shell_snap:create command"></smbconfoption> + <itemizedlist> + <listitem><para> + Called when an FSRVP client wishes to create + a snapshot. + </para></listitem> + <listitem><para> + The command is called with a single + <parameter>share_path</parameter> argument. + </para></listitem> + <listitem><para> + The command must return 0 status if the + snapshot was successfully taken. + </para></listitem> + <listitem><para> + The command must output the path of the newly + created snapshot to stdout. + </para></listitem> + </itemizedlist> + </para> + <para> + <smbconfoption name="shell_snap:delete command"></smbconfoption> + <itemizedlist> + <listitem><para> + Called when an FSRVP client wishes to delete + a snapshot. + </para></listitem> + <listitem><para> + The command is called with + <parameter>base_share_path</parameter> and + <parameter>snapshot_share_path</parameter> + arguments. + </para></listitem> + <listitem><para> + The command must return 0 status if the + snapshot was successfully removed. + </para></listitem> + </itemizedlist> + All commands are executed as the authenticated FSRVP client + user. + </para> + + <para> + This module is stackable. + </para> +</refsect1> + +<refsect1> + <title>CONFIGURATION</title> + + <programlisting> + <smbconfsection name="[share]"/> + <smbconfoption name="vfs objects">shell_snap</smbconfoption> + <smbconfoption name="shell_snap:check path command"> + snap_check_path.sh</smbconfoption> + <smbconfoption name="shell_snap:create command"> + snap_create.sh</smbconfoption> + <smbconfoption name="shell_snap:delete command"> + snap_delete.sh</smbconfoption> + </programlisting> + + <para> + Samba's FSRVP server must be configured in the [global] section: + </para> + + <programlisting> + <smbconfsection name="[global]"/> + <smbconfoption name="registry shares">yes</smbconfoption> + <smbconfoption name="include">registry</smbconfoption> + </programlisting> +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para> + This man page is part of version &doc.version; of the Samba suite. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_snapper.8.xml b/docs-xml/manpages/vfs_snapper.8.xml new file mode 100644 index 0000000..9663ece --- /dev/null +++ b/docs-xml/manpages/vfs_snapper.8.xml @@ -0,0 +1,123 @@ +<?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="vfs_snapper.8"> + +<refmeta> + <refentrytitle>vfs_snapper</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_snapper</refname> + <refpurpose> + Expose snapshots managed by snapper as shadow-copies + </refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = snapper</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> suite.</para> + + <para> + The <command>vfs_snapper</command> VFS module exposes snapshots + managed by snapper for use by Samba. This provides the ability + for remote SMB clients to access shadow-copies via Windows + Explorer using the "previous versions" dialog. + </para> + + <para> + Snapshots can also be created and remove remotely, using the + File Server Remote VSS Protocol (FSRVP). Snapshot creation and + deletion requests are forwarded to snapper via DBus. + </para> + + <para> + This module is stackable. + </para> +</refsect1> + +<refsect1> + <title>CONFIGURATION</title> + + <para> + The underlying share path must have a corresponding snapper + configuration file. The snapshot directory tree must allow + access for relevant users. + </para> + + <programlisting> + <smbconfsection name="[share]"/> + <smbconfoption name="vfs objects">snapper</smbconfoption> + </programlisting> + + <para> + For remote snapshot creation and deletion, Samba's FSRVP + server must be configured in the [global] section: + </para> + + <programlisting> + <smbconfsection name="[global]"/> + <smbconfoption name="registry shares">yes</smbconfoption> + <smbconfoption name="include">registry</smbconfoption> + </programlisting> +</refsect1> + +<refsect1> + <title>PERMISSIONS</title> + <para> + Snapper stores snapshots under a .snapshots subdirectory. This + directory must permit traversal for any users wishing to access + snapshots via the Windows Explorer previous versions dialog. + By default, traversal is forbidden for all non-root users. + Additionally, users must be granted permission to list snapshots + managed by snapper, via snapper's ALLOW_USERS or ALLOW_GROUPS + options. Snapper can grant these users and groups .snapshots + traversal access automatically via the SYNC_ACL option. + </para> + <para> + Remote snapshot creation and deletion is only permitted by Samba + for Active Directory administrators, backup operators, or users + explicitly granted SeBackupPrivilege. Snapper must also permit + creation and deletion for the appropriate user, via snapper's + ALLOW_USERS or ALLOW_GROUPS options. + </para> + <para> + The DiskShadow.exe FSRVP client initially authenticates as the + Active Directory computer account. This account must therefore + be granted the same permissions as the user account issuing the + snapshot creation and deletion requests. + </para> +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para> + This man page is part of version &doc.version; of the Samba suite. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_streams_depot.8.xml b/docs-xml/manpages/vfs_streams_depot.8.xml new file mode 100644 index 0000000..88a2766 --- /dev/null +++ b/docs-xml/manpages/vfs_streams_depot.8.xml @@ -0,0 +1,97 @@ +<?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="vfs_streams_depot.8"> + +<refmeta> + <refentrytitle>vfs_streams_depot</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_streams_depot</refname> + <refpurpose>EXPERIMENTAL module to store alternate data streams in a + central directory. + </refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = streams_depot</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This <emphasis>EXPERIMENTAL</emphasis> VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para>The <command>vfs_streams_depot</command> enables storing of NTFS + alternate data streams in the file system. As a normal posix file + system does not support the concept of multiple data streams per file, + the streams_depot module stores the data in files in a separate + directory.</para> + +</refsect1> + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + + <varlistentry> + <term>streams_depot:directory = PATH</term> + <listitem> + <para>Path of the directory where the alternate data streams + should be stored. Defaults to the sharepath/.streams.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>streams_depot:delete_lost = [ yes | no ]</term> + <listitem> + <para>In the case of an already existing data streams directory + for a newly created file the streams directory will be renamed + to "lost-%lu", random(). With this option lost stream directories + will be removed instead of renamed.</para> + <itemizedlist> + <listitem><para> + <command>no(default)</command> - rename lost streams to + "lost-%lu", random(). + </para></listitem> + <listitem><para> + <command>yes</command> - remove lost streams. + </para></listitem> + </itemizedlist> + </listitem> + </varlistentry> + + </variablelist> +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + +<programlisting> + <smbconfsection name="[share]"/> + <smbconfoption name="vfs objects">streams_depot</smbconfoption> +</programlisting> + +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_streams_xattr.8.xml b/docs-xml/manpages/vfs_streams_xattr.8.xml new file mode 100644 index 0000000..6645928 --- /dev/null +++ b/docs-xml/manpages/vfs_streams_xattr.8.xml @@ -0,0 +1,98 @@ +<?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="vfs_streams_xattr.8"> + +<refmeta> + <refentrytitle>vfs_streams_xattr</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_streams_xattr</refname> + <refpurpose>Store alternate data streams in posix xattrs</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = streams_xattr</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para>The <command>vfs_streams_xattr</command> enables storing of NTFS + alternate data streams in the file system. As a normal posix file + system does not support the concept of multiple data streams per file, + the streams_xattr module stores the data in posix extended attributes + (xattrs). The name of these attributes by default is + user.DosStream."ADS-NAME". The prefix "user.DosStream." can be changed + with the module option <command>streams_xattr:prefix</command>, but be + aware that this will also expose those ADS over the SMB extended + attributes interface.</para> + + <para>The file system that is shared with this module enabled must + support xattrs.</para> + + <para>Please note that most file systems have severe limitations on + the size of xattrs. So this module might work for applications like IE + that stores small zone information in streams but will fail for + applications that store serious amounts of data in ADSs.</para> +</refsect1> + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + + <varlistentry> + <term>streams_xattr:prefix = STRING</term> + <listitem> + <para>Name prefix used when storing an ADS in an xattr, defaults to + <command>user.DosStream.</command>. Changing this will also + expose ADS over the SMB extended attributes interface.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>streams_xattr:store_stream_type = [yes|no]</term> + <listitem> + <para>Whether the xattr names for Alternate Data Streams of type + "$DATA" are suffixed by the stream type string ":$DATA". + The default is <command>yes</command>.</para> + </listitem> + </varlistentry> + + </variablelist> + +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + +<programlisting> + <smbconfsection name="[share]"/> + <smbconfoption name="vfs objects">streams_xattr</smbconfoption> +</programlisting> + +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_syncops.8.xml b/docs-xml/manpages/vfs_syncops.8.xml new file mode 100644 index 0000000..a1ef629 --- /dev/null +++ b/docs-xml/manpages/vfs_syncops.8.xml @@ -0,0 +1,99 @@ +<?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="vfs_syncops.8"> + +<refmeta> + <refentrytitle>vfs_syncops</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_syncops</refname> + <refpurpose>Ensure meta data operations are performed synchronously.</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = syncops</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para> + Some filesystems (even some journaled filesystems) require that a + fsync() be performed on many meta data operations to ensure that the + operation is guaranteed to remain in the filesystem after a power + failure. This is particularly important for some cluster filesystems + which are participating in a node failover system with clustered + Samba. On those filesystems the <command>vfs_syncops</command> VFS module + provides a way to perform those operations safely. + </para> + + <para>This module is stackable.</para> + +</refsect1> + +<refsect1> + <title>CONFIGURATION</title> + + <para> + Most of the performance loss with the <command>vfs_syncops</command> + VFS module is in fsync on close(). You can disable that with + <command>syncops:onclose = no</command> that can be set either globally + or per share. + </para> + + <para> + On certain filesystems that only require the last data written to be + fsync()'ed, you can disable the metadata synchronization of this module with + <command>syncops:onmeta = no</command>. This option can be set either + globally or per share. + </para> + + <para> + The <command>vfs_syncops</command> VFS module can also be disabled + completely for a share with <command>syncops:disable = true</command>. + </para> +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + + <para>Add syncops functionality for [share]:</para> +<programlisting> + <smbconfsection name="[share]"/> + <smbconfoption name="path">/data/share</smbconfoption> + <smbconfoption name="vfs objects">syncops</smbconfoption> + <smbconfoption name="syncops:onclose">no</smbconfoption> +</programlisting> + +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of the Samba suite. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_time_audit.8.xml b/docs-xml/manpages/vfs_time_audit.8.xml new file mode 100644 index 0000000..a9fcbf9 --- /dev/null +++ b/docs-xml/manpages/vfs_time_audit.8.xml @@ -0,0 +1,101 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE refentry PUBLIC "-//Samba-Team//DTD DocBook V4.2-Based Variant V1.0//EN" "http://www.samba.org/samba/DTD/samba-doc"> +<refentry id="vfs_time_audit.8"> + +<refmeta> + <refentrytitle>vfs_time_audit</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_time_audit</refname> + <refpurpose>samba vfs module to log slow VFS operations</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = time_audit</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para>The <command>time_audit</command> VFS module logs system calls + that take longer than the number of milliseconds defined by the variable + <command>time_audit:timeout</command>. It will log the calls and + the time spent in it. + </para> + + <para>It's kind of comparable with <command>strace -T</command> and + is helpful to reveal performance problems with the underlying file + and storage subsystems.</para> + + <para>This module is stackable.</para> + +</refsect1> + + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + + <varlistentry> + + <term>time_audit:timeout = number of milliseconds</term> + <listitem> + <para>VFS calls that take longer than the defined number of milliseconds + that should be logged. The default is 10000 (10s). + </para> + </listitem> + + </varlistentry> + + + + </variablelist> +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + + <para>This would log VFS calls that take longer than 3 seconds:</para> + +<programlisting> + <smbconfsection name="[sample_share]"/> + <smbconfoption name="path">/test/sample_share</smbconfoption> + <smbconfoption name="vfs objects">time_audit</smbconfoption> + <smbconfoption name="time_audit:timeout">3000</smbconfoption> +</programlisting> +</refsect1> + + +<refsect1> + <title>VERSION</title> + <para>This man page is part of version &doc.version; of the Samba suite. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + + <para>The time_audit VFS module was created with contributions from + Abhidnya Chirmule. + </para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_tsmsm.8.xml b/docs-xml/manpages/vfs_tsmsm.8.xml new file mode 100644 index 0000000..d6f3da9 --- /dev/null +++ b/docs-xml/manpages/vfs_tsmsm.8.xml @@ -0,0 +1,135 @@ +<?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="vfs_tsmsm.8"> + +<refmeta> + <refentrytitle>vfs_tsmsm</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_tsmsm</refname> + <refpurpose>VFS module for handling offline files with Tivoli Storage Manager Space Management</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = tsmsm</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para>The <command>tsmsm</command> VFS module is an + extension for handling offline files with Tivoli + Storage Manager Space Management. + </para> + + <para> + It tries to avoid calling expensive DMAPI calls with some + heuristics based on the fact that number of blocks reported of a + file multiplied by 512 will be bigger than 'online ratio' of + actual size for online (non-migrated) files. + If heuristic check fails, the module calls DMAPI and asks for + a specific attribute which is present for offline (migrated) files. + If this attribute presents, the file is considered offline. + </para> + + <para>This module is not stackable.</para> + +</refsect1> + + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + + <varlistentry> + + <term>tsmsm:hsm script = [ path to hsm script ]</term> + <listitem> + <para> + hsm script should point to a shell script which + accepts two arguments: operation and filepath. + the tsmsm module only uses "offline" for operation + to set the file under filepath offline. + </para> + </listitem> + + </varlistentry> + <varlistentry> + + <term>tsmsm:online ratio = [ number ]</term> + <listitem> + <para> + Ratio to check reported size against actual file size. + The default value is 0.5. + </para> + </listitem> + + </varlistentry> + + <varlistentry> + + <term>tsmsm:dmapi attribute = [ attribute-name ]</term> + <listitem> + <para> + Name of a DMAPI attribute that is present when a file is offline. + The default is "IBMobj" (which is what GPFS uses). + </para> + </listitem> + + </varlistentry> + <varlistentry> + + <term>tsmsm:dmapi value = [ value for the DMAPI attribute ]</term> + <listitem> + <para> + Value that the DMAPI attribute should have for the file to + be considered offline. The default is empty (no value required). + </para> + </listitem> + + </varlistentry> + + </variablelist> +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + + <para>A GPFS mount with TSM support can be exported via Samba as follows:</para> + +<programlisting> + <smbconfsection name="[gpfs_tsm_share]"/> + <smbconfoption name="vfs objects">tsmsm gpfs</smbconfoption> + <smbconfoption name="path">/test/gpfs_mount</smbconfoption> +</programlisting> +</refsect1> + +<refsect1> + <title>VERSION</title> + <para>This man page is part of version &doc.version; of the Samba suite. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_unityed_media.8.xml b/docs-xml/manpages/vfs_unityed_media.8.xml new file mode 100644 index 0000000..99b5322 --- /dev/null +++ b/docs-xml/manpages/vfs_unityed_media.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="vfs_media_harmony.8"> + +<refmeta> + <refentrytitle>vfs_unityed_media</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_unityed_media</refname> + <refpurpose>Allow multiple Avid clients to share a network drive.</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = unityed_media</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para>Unityed Media is related with Media Harmony VFS, the + main difference between Unityed Media and Media Harmony is + that Unityed Media doesn't need manual refreshing of media + directories. Unityed Media handles your media files in a similar + way to the way Unity, ISIS, EditShare or another dedicated solution + does. Without client-side application and on hardware of your + choice.</para> + + <para>This module is stackable.</para> +</refsect1> + +<refsect1> + <title>CONFIGURATION</title> + + <para>If Mac and Windows Avid clients will be accessing the same + folder, they should be given separate share definitions, with + hidden Mac files vetoed on the Windows share. See EXAMPLES.</para> +</refsect1> + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + + <varlistentry> + <term>unityed_media:clientid = user | hostname | ip </term> + <listitem> + <para>Controls what client related identifier is + appended to user specific paths:</para> + + <itemizedlist> + <listitem><para><command>user (default)</command> - + use the username. </para></listitem> + + <listitem><para><command>hostname</command> - use the + hostname. Note this will not work with OS X clients as + these always send a generic string ("workstation") to + the server..</para></listitem> + + <listitem><para><command>ip</command> - use the + client's IP address. NOTE: this is untested and may + not work at all.</para></listitem> + </itemizedlist> + + </listitem> + </varlistentry> + </variablelist> +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + + <para>Enable unityed_media for Mac and Windows clients:</para> +<programlisting> + <smbconfsection name="[avid_mac]"/> + <smbconfoption name="path">/avid</smbconfoption> + <smbconfoption name="vfs objects">unityed_media</smbconfoption> + <smbconfsection name="[avid_win]"/> + <smbconfoption name="path">/avid</smbconfoption> + <smbconfoption name="vfs objects">unityed_media</smbconfoption> + <smbconfoption name="veto files">/.DS_Store/._@/.Trash@/.Spotlight@/.hidden/.hotfiles@/.vol/</smbconfoption> + <smbconfoption name="delete veto files">yes</smbconfoption> +</programlisting> + +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of the Samba suite. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_virusfilter.8.xml b/docs-xml/manpages/vfs_virusfilter.8.xml new file mode 100644 index 0000000..88f91d7 --- /dev/null +++ b/docs-xml/manpages/vfs_virusfilter.8.xml @@ -0,0 +1,381 @@ +<?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="vfs_virusfilter.8"> + +<refmeta> + <refentrytitle>vfs_virusfilter</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">4.8</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_virusfilter</refname> + <refpurpose>On access virus scanner</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = virusfilter</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This is a set of various Samba VFS modules to scan and filter + virus files on Samba file services with an anti-virus scanner.</para> + + <para>This module is stackable.</para> + +</refsect1> + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + + <varlistentry> + <term>virusfilter:scanner</term> + <listitem> + <para>The antivirus scan-engine.</para> + <itemizedlist> + <listitem><para><emphasis>sophos</emphasis>, the Sophos AV + scanner</para></listitem> + <listitem><para><emphasis>fsav</emphasis>, the F-Secure AV + scanner</para></listitem> + <listitem><para><emphasis>clamav</emphasis>, the ClamAV + scanner</para></listitem> + <listitem><para><emphasis>dummy</emphasis>, dummy scanner used in + tests. Checks against the <emphasis>infected files</emphasis> + parameter and flags any name that matches as infected. + </para></listitem> + </itemizedlist> + </listitem> + </varlistentry> + + <varlistentry> + <term>virusfilter:socket path = PATH</term> + <listitem> + <para>Path of local socket for the virus scanner. + </para> + <para>If this option is not set, the default path depends on the + configured AV scanning engine. + </para> + <para>For the <emphasis>sophos</emphasis>backend the default is + <emphasis>/var/run/savdi/sssp.sock</emphasis>.</para> + <para>For the <emphasis>fsav</emphasis> backend the default is + <emphasis>/tmp/.fsav-0</emphasis>.</para> + <para>For the <emphasis>clamav</emphasis> backend the default is + <emphasis>/var/run/clamav/clamd.ctl</emphasis>.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>virusfilter:connect timeout = 30000</term> + <listitem> + <para>Controls how long to wait on connecting to the virus + scanning process before timing out. Value is in milliseconds. + </para> + <para>If this option is not set, the default is 30000.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>virusfilter:io timeout = 60000</term> + <listitem> + <para>Controls how long to wait on communications with the virus + scanning process before timing out. Value is in milliseconds. + </para> + <para>If this option is not set, the default is 60000.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>virusfilter:scan on open = yes</term> + <listitem> + <para>This option controls whether files are scanned on open. + </para> + <para>If this option is not set, the default is yes.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>virusfilter:scan on close = no</term> + <listitem> + <para>This option controls whether files are scanned on close. + </para> + <para>If this option is not set, the default is no.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>virusfilter:max file size = 100000000</term> + <listitem> + <para>This is the largest sized file, in bytes, which will be scanned. + </para> + <para>If this option is not set, the default is 100MB.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>virusfilter:min file size = 10</term> + <listitem> + <para>This is the smallest sized file, in bytes, which will be scanned. + </para> + <para>If this option is not set, the default is 10.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>virusfilter:infected file action = nothing</term> + <listitem> + <para>What to do with an infected file. The options are + nothing, quarantine, rename, delete.</para> + <para>If this option is not set, the default is nothing.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>virusfilter:infected file errno on open = EACCES</term> + <listitem> + <para>What errno to return on open if the file is infected. + </para> + <para>If this option is not set, the default is EACCES.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>virusfilter:infected file errno on close = 0</term> + <listitem> + <para>What errno to return on close if the file is infected. + </para> + <para>If this option is not set, the default is 0.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>virusfilter:quarantine directory = PATH</term> + <listitem> + <para>Where to move infected files. This path must be an + absolute path.</para> + <para>If this option is not set, the default is ".quarantine" + relative to the share path. </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>virusfilter:quarantine prefix = virusfilter.</term> + <listitem> + <para>Prefix for quarantined files.</para> + <para>If this option is not set, the default is "virusfilter.".</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>virusfilter:quarantine suffix = .infected</term> + <listitem> + <para>Suffix for quarantined files. + This option is only used if keep name is true. Otherwise it is ignored.</para> + <para>If this option is not set, the default is ".infected".</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>virusfilter:rename prefix = virusfilter.</term> + <listitem> + <para>Prefix for infected files.</para> + <para>If this option is not set, the default is "virusfilter.".</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>virusfilter:rename suffix = .infected</term> + <listitem> + <para>Suffix for infected files.</para> + <para>If this option is not set, the default is ".infected".</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>virusfilter:quarantine keep tree = yes</term> + <listitem> + <para>If keep tree is set, the directory structure relative + to the share is maintained in the quarantine directory. + </para> + <para>If this option is not set, the default is yes.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>virusfilter:quarantine keep name = yes</term> + <listitem> + <para>Should the file name be left unmodified other than adding a suffix + and/or prefix and a random suffix name as defined in virusfilter:rename prefix + and virusfilter:rename suffix.</para> + <para>If this option is not set, the default is yes.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>virusfilter:infected file command = @SAMBA_DATADIR@/bin/virusfilter-notify --mail-to virusmaster@example.com --cc "%U@example.com" --from samba@example.com --subject-prefix "Samba: Infected File: "</term> + <listitem> + <para>External command to run on an infected file is found.</para> + <para>If this option is not set, the default is none.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>virusfilter:scan archive = true</term> + <listitem> + <para>This defines whether or not to scan archives.</para> + <para>Sophos and F-Secure support this and it defaults to false.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>virusfilter:max nested scan archive = 1</term> + <listitem> + <para>This defines the maximum depth to search nested archives.</para> + <para>The Sophos and F-Secure support this and it defaults to 1.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>virusfilter:scan mime = true</term> + <listitem> + <para>This defines whether or not to scan mime files.</para> + <para>Only the <emphasis>fsav</emphasis>scanner supports this + option and defaults to false.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>virusfilter:scan error command = @SAMBA_DATADIR@/bin/virusfilter-notify --mail-to virusmaster@example.com --from samba@example.com --subject-prefix "Samba: Scan Error: "</term> + <listitem> + <para>External command to run on scan error.</para> + <para>If this option is not set, the default is none.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>virusfilter:exclude files = empty</term> + <listitem> + <para>Files to exclude from scanning.</para> + <para>If this option is not set, the default is empty.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>virusfilter:infected files = empty</term> + <listitem> + <para>Files that virusfilter <emphasis>dummy</emphasis> flags as infected.</para> + <para>If this option is not set, the default is empty.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>virusfilter:block access on error = false</term> + <listitem> + <para>Controls whether or not access should be blocked on + a scanning error.</para> + <para>If this option is not set, the default is false.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>virusfilter:scan error errno on open = EACCES</term> + <listitem> + <para>What errno to return on open if there is an error in + scanning the file and block access on error is true. + </para> + <para>If this option is not set, the default is EACCES.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>virusfilter:scan error errno on close = 0</term> + <listitem> + <para>What errno to return on close if there is an error in + scanning the file and block access on error is true. + </para> + <para>If this option is not set, the default is 0.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>virusfilter:cache entry limit = 100</term> + <listitem> + <para>The maximum number of entries in the scanning results + cache. Due to how Samba's memcache works, this is approximate.</para> + <para>If this option is not set, the default is 100.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>virusfilter:cache time limit = 10</term> + <listitem> + <para>The maximum number of seconds that a scanning result + will stay in the results cache. -1 disables the limit. + 0 disables caching.</para> + <para>If this option is not set, the default is 10.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>virusfilter:quarantine directory mode = 0755</term> + <listitem> + <para>This is the octet mode for the quarantine directory and + its sub-directories as they are created.</para> + <para>If this option is not set, the default is 0755 or + S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | + S_IXOTH.</para> + <para>Permissions must be such that all users can read and + search. I.E. don't mess with this unless you really know what + you are doing.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>virusfilter:block suspected file = false</term> + <listitem> + <para>With this option on, suspected malware will be blocked as + well. Only the <emphasis>fsav</emphasis>scanner supports this + option.</para> + <para>If this option is not set, the default is false.</para> + </listitem> + </varlistentry> + + </variablelist> +</refsect1> + +<refsect1> + <title>NOTES</title> + + <para>This module can scan other than default streams, if the + alternative datastreams are each backed as separate files, such as with + the vfs module streams_depot.</para> + + <para>For proper operation the streams support module must be before + the virusfilter module in your vfs objects list (i.e. streams_depot + must be called before virusfilter module).</para> + + <para>This module is intended for security in depth by providing + virus scanning capability on the server. It is not intended to be used + in lieu of proper client based security. Other modules for security may + exist and may be desirable for security in depth on the server.</para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_widelinks.8.xml b/docs-xml/manpages/vfs_widelinks.8.xml new file mode 100644 index 0000000..3824650 --- /dev/null +++ b/docs-xml/manpages/vfs_widelinks.8.xml @@ -0,0 +1,90 @@ +<?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="vfs_widelinks.8"> + +<refmeta> + <refentrytitle>vfs_widelinks</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_widelinks</refname> + <refpurpose>make a Samba share ignore filesystem symbolic links inside a share</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = widelinks</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para>The <command>vfs_widelinks</command> VFS module + hides the existence of symbolic links in the filesystem + inside a share. It is used in Samba version 4.13 and above + to implement the <filename>smb.conf</filename>"wide links = yes" + functionality that used to be inside the core smbd code. + The module should not be loaded explicitly by smb.conf + as part of the "vfs objects =" parameter, but is loaded + implicitly when "wide links = yes" is enabled. This is + to prevent existing smb.conf files from having to be + modified to keep the existing insecure "wide links" + functionality on a share. + </para> + <para>Please note that "wide links = yes" functionality + is a deliberately insecure option, and should never be + used in Samba installations. On Linux, bind mounts can + be used instead to implement anything "wide links = yes" + can enable. This module has been created to provide + backwards compatibility with existing users of + "wide links = yes" installations, but this use cannot be + recommended and is not endorsed by the Samba developers. + </para> + <para>Note that this implicit loading may become explicit + in a later Samba release, and administrators wishing to + keep the insecure "wide links" functionality may have + to add this module into their "vfs objects =" module + list. The Samba project release notes and this manpage + will be updated to reflect this when this change is made. + </para> + + <para>This module is stackable.</para> + +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + + <para>No examples listed. This module is implicitly loaded + by smbd as needed. + </para> +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of the Samba suite. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_worm.8.xml b/docs-xml/manpages/vfs_worm.8.xml new file mode 100644 index 0000000..2d9cca5 --- /dev/null +++ b/docs-xml/manpages/vfs_worm.8.xml @@ -0,0 +1,93 @@ +<?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="vfs_worm.8"> + +<refmeta> + <refentrytitle>vfs_worm</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_worm</refname> + <refpurpose>disallows writes for older file</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = worm</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para>The <command>vfs_worm</command> module controls the writability + of files and folders depending on their change time and a + adjustable grace period.</para> + + <para>If the change time of a file or directory is older than + the specified grace period, the write access will be denied, + independent of further access controls (e.g. by the filesystem).</para> + + <para>In the case that the grace period is not exceed, the worm + module will not impact any access controls.</para> +</refsect1> + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + + <varlistentry> + <term>worm:grace_period = SECONDS</term> + <listitem> + <para>Period in seconds which defines the time how long the + write access should be handled by the normal access controls. + After this grace period the file or directory becomes read + only.</para> + </listitem> + </varlistentry> + + </variablelist> +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + + <para>Deny the write access to files and folders, which are older + than five minutes (300 seconds):</para> + +<programlisting> + <smbconfsection name="[wormshare]"/> + <smbconfoption name="vfs objects">worm</smbconfoption> + <smbconfoption name="worm:grace_period">300</smbconfoption> +</programlisting> + +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of the Samba suite. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_xattr_tdb.8.xml b/docs-xml/manpages/vfs_xattr_tdb.8.xml new file mode 100644 index 0000000..1238806 --- /dev/null +++ b/docs-xml/manpages/vfs_xattr_tdb.8.xml @@ -0,0 +1,69 @@ +<?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="vfs_xattr_tdb.8"> + +<refmeta> + <refentrytitle>vfs_xattr_tdb</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_xattr_tdb</refname> + <refpurpose>Save Extended Attributes (EAs) in a tdb file</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = xattr_tdb</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para>The <command>vfs_xattr_tdb</command> VFS module stores + Extended Attributes (EAs) in a tdb file. + This enables the usage of Extended Attributes on OS and + filesystems which do not support Extended Attributes + by themselves. + </para> + + <para>This module is stackable.</para> +</refsect1> + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + <varlistentry> + <term>xattr_tdb:file = PATH</term> + <listitem> + <para>Name of the tdb file the EAs are stored in. + If this option is not set, the default filename + <filename>xattr.tdb</filename> is used.</para> + </listitem> + </varlistentry> + </variablelist> + + +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/vfs_zfsacl.8.xml b/docs-xml/manpages/vfs_zfsacl.8.xml new file mode 100644 index 0000000..01e1513 --- /dev/null +++ b/docs-xml/manpages/vfs_zfsacl.8.xml @@ -0,0 +1,173 @@ +<?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"> +<ns:Root xmlns:xi="http://www.w3.org/2003/XInclude" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:ns="urn:TestNamespace"> +<refentry id="vfs_zfsacl.8"> + +<refmeta> + <refentrytitle>vfs_zfsacl</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfs_zfsacl</refname> + <refpurpose>ZFS ACL samba module</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfs objects = zfsacl</command> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This VFS module is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para>The <command>zfsacl</command> VFS module is the home + for all ACL extensions that Samba requires for proper integration + with ZFS. + </para> + + <para>Currently the zfsacl vfs module provides extensions in following areas : + <itemizedlist> + <listitem><para>NFSv4 ACL Interfaces with configurable options for ZFS</para></listitem> + </itemizedlist> + </para> + + <para><command>NOTE:</command>This module follows the posix-acl behaviour + and hence allows permission stealing via chown. Samba might allow at a later + point in time, to restrict the chown via this module as such restrictions + are the responsibility of the underlying filesystem than of Samba. + </para> + + <para>This module makes use of the smb.conf parameter + <smbconfoption name="acl map full control">acl map full control</smbconfoption> + When set to yes (the default), this parameter will add in the FILE_DELETE_CHILD + bit on a returned ACE entry for a file (not a directory) that already + contains all file permissions except for FILE_DELETE and FILE_DELETE_CHILD. + This can prevent Windows applications that request GENERIC_ALL access + from getting ACCESS_DENIED errors when running against a filesystem + with NFSv4 compatible ACLs. + </para> + + <para>ZFS has mutiple dataset configuration parameters that determine ACL behavior. + Although the nuances of these parameters are outside the scope of this manpage, the + "aclmode" and "aclinherit" are of particular importance for samba shares. + For datasets that are intended solely as Samba shares, "aclmode = restricted" + and "aclinherit = passthrough" provide inheritance behavior most consistent with NTFS ACLs. + A "restricted" aclmode prevents chmod() on files that have a non-trivial ACL (one that + cannot be expressed as a POSIX mode without loss of information). Consult the relevant ZFS + manpages for further information. + </para> + + <para>This module is stackable.</para> + + <para>Since Samba 4.0 all options are per share options.</para> + +</refsect1> + + +<refsect1> + <title>OPTIONS</title> + + <xi:include href="nfs4.xml.include" xpointer="xpointer(*/*)" /> + + <variablelist> + + <varlistentry> + <term>zfsacl:denymissingspecial = [yes|no]</term> + <listitem> + <para>Prevent users from setting an ACL that lacks NFSv4 special entries + (owner@, group@, everyone@). ZFS will automatically generate these these entries + when calculating the inherited ACL of new files if the ACL of the parent directory + lacks an inheriting special entry. This may result in user confusion and unexpected + change in permissions of files and directories as the inherited ACL is generated.</para> + <itemizedlist> + <listitem><para><command>yes</command></para></listitem> + <listitem><para><command>no (default)</command></para></listitem> + </itemizedlist> + </listitem> + </varlistentry> + + <varlistentry> + <term>zfsacl:block_special = [yes|no]</term> + <listitem> + <para>Prevent ZFS from automatically adding NFSv4 special + entries (owner@, group@, everyone@). ZFS will automatically + generate these these entries when calculating the inherited ACL + of new files if the ACL of the parent directory lacks an + inheriting special entry. This may result in user confusion and + unexpected change in permissions of files and directories as the + inherited ACL is generated. Blocking this behavior is achieved + by setting an inheriting everyone@ that grants no permissions + and not adding the entry to the file's Security + Descriptor</para> + <itemizedlist> + <listitem><para><command>yes (default)</command></para></listitem> + <listitem><para><command>no</command></para></listitem> + </itemizedlist> + </listitem> + </varlistentry> + + <varlistentry> + <term>zfsacl:map_dacl_protected = [yes|no]</term> + <listitem> + <para>If enabled and the ZFS ACL on the underlying filesystem does not contain + any inherited access control entires, then set the SEC_DESC_DACL_PROTECTED flag + on the Security Descriptor returned to SMB clients. + This ensures correct Windows client behavior when disabling inheritance on + directories.</para> + + <para>Following is the behaviour of Samba for different values : </para> + <itemizedlist> + <listitem><para><command>yes</command> - Enable mapping to + SEC_DESC_DACL_PROTECTED</para></listitem> + <listitem><para><command>no (default)</command></para></listitem> + </itemizedlist> + </listitem> + </varlistentry> + + + </variablelist> +</refsect1> + +<refsect1> + <title>EXAMPLES</title> + + <para>A ZFS mount can be exported via Samba as follows :</para> + +<programlisting> + <smbconfsection name="[samba_zfs_share]"/> + <smbconfoption name="vfs objects">zfsacl</smbconfoption> + <smbconfoption name="path">/test/zfs_mount</smbconfoption> + <smbconfoption name="nfs4: mode">simple</smbconfoption> + <smbconfoption name="nfs4: acedup">merge</smbconfoption> +</programlisting> +</refsect1> + +<refsect1> + <title>VERSION</title> + <para>This man page is part of version &doc.version; of the Samba suite. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> +</refsect1> + +</refentry> +</ns:Root> diff --git a/docs-xml/manpages/vfstest.1.xml b/docs-xml/manpages/vfstest.1.xml new file mode 100644 index 0000000..005eed2 --- /dev/null +++ b/docs-xml/manpages/vfstest.1.xml @@ -0,0 +1,168 @@ +<?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="vfstest.1"> + +<refmeta> + <refentrytitle>vfstest</refentrytitle> + <manvolnum>1</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">User Commands</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>vfstest</refname> + <refpurpose>tool for testing samba VFS modules </refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>vfstest</command> + <arg choice="opt">-?|--help</arg> + <arg choice="opt">--usage</arg> + <arg choice="opt">-f|--file=STRING</arg> + <arg choice="opt">-c|--command=STRING</arg> + <arg choice="opt">-m|--memreport=INT</arg> + <arg choice="opt">-d|--debuglevel=DEBUGLEVEL</arg> + <arg choice="opt">--debug-stdout</arg> + <arg choice="opt">--configfile=CONFIGFILE</arg> + <arg choice="opt">--option=name=value</arg> + <arg choice="opt">-l|--log-basename=LOGFILEBASE</arg> + <arg choice="opt">--leak-report</arg> + <arg choice="opt">--leak-report-full</arg> + <arg choice="opt">-V|--version</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><command>vfstest</command> is a small command line + utility that has the ability to test dso samba VFS modules. It gives the + user the ability to call the various VFS functions manually and + supports cascaded VFS modules. + </para> +</refsect1> + + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + + <varlistentry> + <term>-c|--command=command</term> + <listitem><para>Execute the specified (<constant>semicolon</constant>-separated) commands. + See below for the commands that are available. + </para> </listitem> + </varlistentry> + + &popt.autohelp; + &cmdline.common.samba.client; + </variablelist> +</refsect1> + + +<refsect1> + <title>COMMANDS</title> + + <para><emphasis>VFS COMMANDS</emphasis></para> + <itemizedlist> + <listitem><para><command>load <module.so></command> - Load specified VFS module </para></listitem> + + <listitem><para><command>populate <char> <size></command> - Populate a data buffer with the specified data + </para></listitem> + + <listitem><para><command>showdata [<offset> <len>]</command> - Show data currently in data buffer + </para></listitem> + + <listitem><para><command>connect</command> - VFS connect()</para></listitem> + <listitem><para><command>disconnect</command> - VFS disconnect()</para></listitem> + <listitem><para><command>disk_free</command> - VFS disk_free()</para></listitem> + <listitem><para><command>opendir</command> - VFS opendir()</para></listitem> + <listitem><para><command>readdir</command> - VFS readdir()</para></listitem> + <listitem><para><command>mkdir</command> - VFS mkdir()</para></listitem> + <listitem><para><command>rmdir</command> - VFS rmdir()</para></listitem> + <listitem><para><command>closedir</command> - VFS closedir()</para></listitem> + <listitem><para><command>open</command> - VFS open()</para></listitem> + <listitem><para><command>close</command> - VFS close()</para></listitem> + <listitem><para><command>read</command> - VFS read()</para></listitem> + <listitem><para><command>write</command> - VFS write()</para></listitem> + <listitem><para><command>lseek</command> - VFS lseek()</para></listitem> + <listitem><para><command>rename</command> - VFS rename()</para></listitem> + <listitem><para><command>fsync</command> - VFS fsync()</para></listitem> + <listitem><para><command>stat</command> - VFS stat()</para></listitem> + <listitem><para><command>fstat</command> - VFS fstat()</para></listitem> + <listitem><para><command>lstat</command> - VFS lstat()</para></listitem> + <listitem><para><command>unlink</command> - VFS unlink()</para></listitem> + <listitem><para><command>chmod</command> - VFS chmod()</para></listitem> + <listitem><para><command>fchmod</command> - VFS fchmod()</para></listitem> + <listitem><para><command>chown</command> - VFS chown()</para></listitem> + <listitem><para><command>fchown</command> - VFS fchown()</para></listitem> + <listitem><para><command>chdir</command> - VFS chdir()</para></listitem> + <listitem><para><command>getwd</command> - VFS getwd()</para></listitem> + <listitem><para><command>utime</command> - VFS utime()</para></listitem> + <listitem><para><command>ftruncate</command> - VFS ftruncate()</para></listitem> + <listitem><para><command>lock</command> - VFS lock()</para></listitem> + <listitem><para><command>symlink</command> - VFS symlink()</para></listitem> + <listitem><para><command>readlink</command> - VFS readlink()</para></listitem> + <listitem><para><command>link</command> - VFS link()</para></listitem> + <listitem><para><command>mknod</command> - VFS mknod()</para></listitem> + <listitem><para><command>realpath</command> - VFS realpath()</para></listitem> + + <listitem><para><command>getxattr</command> - VFS getxattr()</para></listitem> + <listitem><para><command>listxattr</command> - VFS listxattr()</para></listitem> + <listitem><para><command>setxattr</command> - VFS setxattr()</para></listitem> + <listitem><para><command>removexattr</command> - VFS removexattr()</para></listitem> + <listitem><para><command>fget_nt_acl</command> - VFS fget_nt_acl()</para></listitem> + <listitem><para><command>get_nt_acl</command> - VFS get_nt_acl()</para></listitem> + <listitem><para><command>fset_nt_acl</command> - VFS fset_nt_acl()</para></listitem> + <listitem><para><command>set_nt_acl</command> - VFS open() and fset_nt_acl()</para></listitem> + <listitem><para><command>sys_acl_get_file</command> - VFS sys_acl_get_file()</para></listitem> + <listitem><para><command>sys_acl_get_fd</command> - VFS sys_acl_get_fd()</para></listitem> + <listitem><para><command>sys_acl_blob_get_file</command> - VFS sys_acl_blob_get_file()</para></listitem> + <listitem><para><command>sys_acl_blob_get_fd</command> - VFS sys_acl_blob_get_fd()</para></listitem> + <listitem><para><command>sys_acl_delete_def_file</command> - VFS sys_acl_delete_def_file()</para></listitem> + <listitem><para><command>test_chain</command> - test chain code</para></listitem> + <listitem><para><command>translate_name</command> - VFS translate_name()</para></listitem> + + </itemizedlist> + + <para><emphasis>GENERAL COMMANDS</emphasis></para> + <itemizedlist> + <listitem><para><command>conf <smb.conf></command> - Load a different configuration file</para></listitem> + + <listitem><para><command>help [<command>]</command> - Get list of commands or info about specified command</para></listitem> + + <listitem><para><command>debuglevel <level></command> - Set debug level</para></listitem> + + <listitem><para><command>freemem</command> - Free memory currently in use</para></listitem> + + <listitem><para><command>exit</command> - Exit vfstest</para></listitem> + </itemizedlist> + +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of the Samba + suite.</para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + + <para>The vfstest man page was written by Jelmer Vernooij. Updated version by Guenter Kukkukk.</para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/wbinfo.1.xml b/docs-xml/manpages/wbinfo.1.xml new file mode 100644 index 0000000..ddd1e27 --- /dev/null +++ b/docs-xml/manpages/wbinfo.1.xml @@ -0,0 +1,633 @@ +<?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="wbinfo.1"> + +<refmeta> + <refentrytitle>wbinfo</refentrytitle> + <manvolnum>1</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">User Commands</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>wbinfo</refname> + <refpurpose>Query information from winbind daemon</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>wbinfo</command> + <arg choice="opt">-a user%password</arg> + <arg choice="opt">--all-domains</arg> + <arg choice="opt">--allocate-gid</arg> + <arg choice="opt">--allocate-uid</arg> + <arg choice="opt">-c</arg> + <arg choice="opt">--ccache-save</arg> + <arg choice="opt">--change-user-password</arg> + <arg choice="opt">-D domain</arg> + <arg choice="opt">--dc-info domain</arg> + <arg choice="opt">--domain domain</arg> + <arg choice="opt">--dsgetdcname domain</arg> + <arg choice="opt">-g</arg> + <arg choice="opt">--getdcname domain</arg> + <arg choice="opt">--get-auth-user</arg> + <arg choice="opt">-G gid</arg> + <arg choice="opt">--gid-info gid</arg> + <arg choice="opt">--group-info group</arg> + <arg choice="opt">--help|-?</arg> + <arg choice="opt">-i user</arg> + <arg choice="opt">-I ip</arg> + <arg choice="opt">-K user%password</arg> + <arg choice="opt">--krb5ccname cctype</arg> + <arg choice="opt">--lanman</arg> + <arg choice="opt">--logoff</arg> + <arg choice="opt">--logoff-uid uid</arg> + <arg choice="opt">--logoff-user username</arg> + <arg choice="opt">--lookup-sids</arg> + <arg choice="opt">-m</arg> + <arg choice="opt">-n name</arg> + <arg choice="opt">-N netbios-name</arg> + <arg choice="opt">--ntlmv1</arg> + <arg choice="opt">--ntlmv2</arg> + <arg choice="opt">--online-status</arg> + <arg choice="opt">--own-domain</arg> + <arg choice="opt">-p</arg> + <arg choice="opt">-P|--ping-dc</arg> + <arg choice="opt">--pam-logon user%password</arg> + <arg choice="opt">-r user</arg> + <arg choice="opt">-R|--lookup-rids</arg> + <arg choice="opt">--remove-gid-mapping gid,sid</arg> + <arg choice="opt">--remove-uid-mapping uid,sid</arg> + <arg choice="opt">-s sid</arg> + <arg choice="opt">--separator</arg> + <arg choice="opt">--sequence</arg> + <arg choice="opt">--set-auth-user user%password</arg> + <arg choice="opt">--set-gid-mapping gid,sid</arg> + <arg choice="opt">--set-uid-mapping uid,sid</arg> + <arg choice="opt">-S sid</arg> + <arg choice="opt">--sid-aliases sid</arg> + <arg choice="opt">--sid-to-fullname sid</arg> + <arg choice="opt">--sids-to-unix-ids sidlist</arg> + <arg choice="opt">-t</arg> + <arg choice="opt">-u</arg> + <arg choice="opt">--uid-info uid</arg> + <arg choice="opt">--usage</arg> + <arg choice="opt">--user-domgroups sid</arg> + <arg choice="opt">--user-sidinfo sid</arg> + <arg choice="opt">--user-sids sid</arg> + <arg choice="opt">-U uid</arg> + <arg choice="opt">-V</arg> + <arg choice="opt">--verbose</arg> + <arg choice="opt">-Y sid</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>The <command>wbinfo</command> program queries and returns information + created and used by the <citerefentry><refentrytitle>winbindd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> daemon. </para> + + <para>The <citerefentry><refentrytitle>winbindd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> daemon must be configured + and running for the <command>wbinfo</command> program to be able + to return information.</para> +</refsect1> + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + <varlistentry> + <term>-a|--authenticate <replaceable>username%password</replaceable></term> + <listitem><para>Attempt to authenticate a user via <citerefentry> + <refentrytitle>winbindd</refentrytitle><manvolnum>8</manvolnum></citerefentry>. + This checks both authentication methods and reports its results. + </para><note><para>Do not be tempted to use this + functionality for authentication in third-party + applications. Instead use <citerefentry><refentrytitle>ntlm_auth</refentrytitle> + <manvolnum>1</manvolnum></citerefentry>.</para></note></listitem> + </varlistentry> + + <varlistentry> + <term>--allocate-gid</term> + <listitem><para>Get a new GID out of idmap + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--allocate-uid</term> + <listitem><para>Get a new UID out of idmap + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--all-domains</term> + <listitem><para>List all domains (trusted and + own domain). + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-c|--change-secret</term> + <listitem><para>Change the trust account password. May be used + in conjunction with <option>domain</option> in order to change + interdomain trust account passwords. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--ccache-save <replaceable>username%password</replaceable></term> + <listitem><para>Store user and password for ccache. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--change-user-password <replaceable>username</replaceable></term> + <listitem><para>Change the password of a user. The old and new password will be prompted. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--dc-info <replaceable>domain</replaceable></term> + <listitem><para>Displays information about the current domain controller for a domain. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--domain <replaceable>name</replaceable></term> + <listitem><para>This parameter sets the domain on which any specified + operations will performed. If special domain name '.' is used to represent + the current domain to which <citerefentry><refentrytitle>winbindd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> belongs. A '*' as the domain name + means to enumerate over all domains (NOTE: This can take a long time and use + a lot of memory). + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-D|--domain-info <replaceable>domain</replaceable></term> + <listitem><para>Show most of the info we have about the + specified domain. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--dsgetdcname <replaceable>domain</replaceable></term> + <listitem><para>Find a DC for a domain. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--gid-info <replaceable>gid</replaceable></term> + <listitem><para>Get group info from gid. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--group-info <replaceable>group</replaceable></term> + <listitem><para>Get group info from group name. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-g|--domain-groups</term> + <listitem><para>This option will list all groups available + in the Windows NT domain for which the <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> daemon is operating in. Groups in all trusted domains + can be listed with the --domain='*' option. Note that this operation does not assign + group ids to any groups that have not already been + seen by <citerefentry><refentrytitle>winbindd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry>. </para></listitem> + </varlistentry> + + <varlistentry> + <term>--get-auth-user</term> + <listitem><para>Print username and password used by <citerefentry> + <refentrytitle>winbindd</refentrytitle><manvolnum>8</manvolnum></citerefentry> + during session setup to a domain controller. Username + and password can be set using <option>--set-auth-user</option>. + Only available for root.</para></listitem> + </varlistentry> + + <varlistentry> + <term>--getdcname <replaceable>domain</replaceable></term> + <listitem><para>Get the DC name for the specified domain. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-G|--gid-to-sid <replaceable>gid</replaceable></term> + <listitem><para>Try to convert a UNIX group id to a Windows + NT SID. If the gid specified does not refer to one within + the idmap gid range then the operation will fail. </para></listitem> + </varlistentry> + + <varlistentry> + <term>-?</term> + <listitem><para>Print brief help overview. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-i|--user-info <replaceable>user</replaceable></term> + <listitem><para>Get user info. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-I|--WINS-by-ip <replaceable>ip</replaceable></term> + <listitem><para>The <parameter>-I</parameter> option + queries <citerefentry><refentrytitle>winbindd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> to send a node status + request to get the NetBIOS name associated with the IP address + specified by the <parameter>ip</parameter> parameter. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-K|--krb5auth <replaceable>username%password</replaceable></term> + <listitem><para>Attempt to authenticate a user via Kerberos. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--krb5ccname <replaceable>KRB5CCNAME</replaceable></term> + <listitem><para>Allows one to request a specific kerberos credential + cache type used for authentication. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--lanman</term> + <listitem><para>Use lanman cryptography for user authentication. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--logoff</term> + <listitem><para>Logoff a user. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--logoff-uid <replaceable>UID</replaceable></term> + <listitem><para>Define user uid used during logoff request. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--logoff-user <replaceable>USERNAME</replaceable></term> + <listitem><para>Define username used during logoff request. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--lookup-sids <replaceable>SID1,SID2...</replaceable></term> + <listitem><para>Looks up SIDs. SIDs must be specified as ASCII strings in the traditional Microsoft + format. For example, S-1-5-21-1455342024-3071081365-2475485837-500. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-m|--trusted-domains</term> + <listitem><para>Produce a list of domains trusted by the + Windows NT server <citerefentry><refentrytitle>winbindd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> contacts + when resolving names. This list does not include the Windows + NT domain the server is a Primary Domain Controller for. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-n|--name-to-sid <replaceable>name</replaceable></term> + <listitem><para>The <parameter>-n</parameter> option + queries <citerefentry><refentrytitle>winbindd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> for the SID + associated with the name specified. Domain names can be specified + before the user name by using the winbind separator character. + For example CWDOM1/Administrator refers to the Administrator + user in the domain CWDOM1. If no domain is specified then the + domain used is the one specified in the <citerefentry><refentrytitle>smb.conf</refentrytitle> + <manvolnum>5</manvolnum></citerefentry> <parameter>workgroup + </parameter> parameter. </para></listitem> + </varlistentry> + + <varlistentry> + <term>-N|--WINS-by-name <replaceable>name</replaceable></term> + <listitem><para>The <parameter>-N</parameter> option + queries <citerefentry><refentrytitle>winbindd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> to query the WINS + server for the IP address associated with the NetBIOS name + specified by the <parameter>name</parameter> parameter. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--ntlmv1</term> + <listitem><para>Use NTLMv1 cryptography for user authentication. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--ntlmv2</term> + <listitem><para>Use NTLMv2 cryptography for user + authentication. NTLMv2 is the default method, this + option is only maintained for compatibility. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--online-status <replaceable>domain</replaceable></term> + <listitem><para>Display whether winbind currently maintains an + active connection or not. An optional domain + argument limits the output to the online status + of a given domain. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--own-domain</term> + <listitem><para>List own domain. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--pam-logon <replaceable>username%password</replaceable></term> + <listitem><para>Attempt to authenticate a user in the same way + pam_winbind would do. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-p|--ping</term> + <listitem><para>Check whether <citerefentry><refentrytitle>winbindd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> is still alive. + Prints out either 'succeeded' or 'failed'. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-P|--ping-dc</term> + <listitem><para>Issue a no-effect command to our DC. This + checks if our secure channel connection to our domain + controller is still alive. It has much less impact than + wbinfo -t. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-r|--user-groups <replaceable>username</replaceable></term> + <listitem> + <para> + Try to obtain the list of UNIX group ids to which the + user belongs. This only works for users defined on a + Domain Controller. + </para> + + <para>There are two scenaries:</para> + <orderedlist> + <listitem> + <para> + User authenticated: When the user has been + authenticated, the access token for the user is + cached. The correct group memberships are then + returned from the cached user token (which can + be outdated). + </para> + </listitem> + + <listitem> + <para> + User *NOT* authenticated: The information is + queries from the domain controller using the + machine account credentials which have limited + permissions. The result is normally incomplete + and can be also incorrect. + </para></listitem> + </orderedlist> + </listitem> + </varlistentry> + + <varlistentry> + <term>-R|--lookup-rids <replaceable>rid1, rid2, rid3...</replaceable></term> + <listitem><para>Converts RIDs to names. Uses a comma separated + list of rids. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--remove-gid-mapping <replaceable>GID,SID</replaceable></term> + <listitem><para>Removes an existing GID to SID mapping from the database. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--remove-uid-mapping <replaceable>UID,SID</replaceable></term> + <listitem><para>Removes an existing UID to SID mapping from the database. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-s|--sid-to-name <replaceable>sid</replaceable></term> + <listitem><para>Use <parameter>-s</parameter> to resolve + a SID to a name. This is the inverse of the <parameter>-n + </parameter> option above. SIDs must be specified as ASCII strings + in the traditional Microsoft format. For example, + S-1-5-21-1455342024-3071081365-2475485837-500. </para></listitem> + </varlistentry> + + <varlistentry> + <term>--separator</term> + <listitem><para>Get the active winbind separator. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--sequence</term> + <listitem><para>This command has been deprecated. Please use + the --online-status option instead. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--set-auth-user <replaceable>username%password</replaceable></term> + <listitem><para>Store username and password used by <citerefentry> + <refentrytitle>winbindd</refentrytitle><manvolnum>8</manvolnum> + </citerefentry> during session setup to a domain controller. This enables + winbindd to operate in a Windows 2000 domain with Restrict + Anonymous turned on (a.k.a. Permissions compatible with + Windows 2000 servers only). + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--set-gid-mapping <replaceable>GID,SID</replaceable></term> + <listitem><para>Create a GID to SID mapping in the database. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--set-uid-mapping <replaceable>UID,SID</replaceable></term> + <listitem><para>Create a UID to SID mapping in the database. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-S|--sid-to-uid <replaceable>sid</replaceable></term> + <listitem><para>Convert a SID to a UNIX user id. If the SID + does not correspond to a UNIX user mapped by <citerefentry> + <refentrytitle>winbindd</refentrytitle><manvolnum>8</manvolnum> + </citerefentry> then the operation will fail. </para></listitem> + </varlistentry> + + <varlistentry> + <term>--sid-aliases <replaceable>sid</replaceable></term> + <listitem><para>Get SID aliases for a given SID. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--sid-to-fullname <replaceable>sid</replaceable></term> + <listitem><para>Converts a SID to a full username + (DOMAIN\username). + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--sids-to-unix-ids <replaceable>sid1,sid2,sid3...</replaceable></term> + <listitem><para>Resolve SIDs to Unix IDs. + SIDs must be specified as ASCII strings + in the traditional Microsoft format. For example, + S-1-5-21-1455342024-3071081365-2475485837-500. </para></listitem> + </varlistentry> + + <varlistentry> + <term>-t|--check-secret</term> + <listitem><para>Verify that the workstation trust account + created when the Samba server is added to the Windows NT + domain is working. May be used in conjunction with + <option>domain</option> in order to verify interdomain + trust accounts.</para></listitem> + </varlistentry> + + <varlistentry> + <term>-u|--domain-users</term> + <listitem><para>This option will list all users available + in the Windows NT domain for which the <citerefentry><refentrytitle>winbindd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> daemon is operating in. Users in all trusted domains + can be listed with the --domain='*' option. Note that this operation does not assign + user ids to any users that have not already been seen by <citerefentry> + <refentrytitle>winbindd</refentrytitle><manvolnum>8</manvolnum></citerefentry> + .</para></listitem> + </varlistentry> + + <varlistentry> + <term>--uid-info <replaceable>uid</replaceable></term> + <listitem><para>Get user info for the user connected to + user id UID.</para></listitem> + </varlistentry> + + <varlistentry> + <term>--usage</term> + <listitem><para>Print brief help overview. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--user-domgroups <replaceable>sid</replaceable></term> + <listitem><para>Get user domain groups. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--user-sidinfo <replaceable>sid</replaceable></term> + <listitem><para>Get user info by sid. + </para></listitem> + </varlistentry> + + + <varlistentry> + <term>--user-sids <replaceable>sid</replaceable></term> + <listitem><para>Get user group SIDs for user. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-U|--uid-to-sid <replaceable>uid</replaceable></term> + <listitem><para>Try to convert a UNIX user id to a Windows NT + SID. If the uid specified does not refer to one within + the idmap range then the operation will fail. </para></listitem> + </varlistentry> + + <varlistentry> + <term>--verbose</term> + <listitem><para> + Print additional information about the query results. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-Y|--sid-to-gid <replaceable>sid</replaceable></term> + <listitem><para>Convert a SID to a UNIX group id. If the SID + does not correspond to a UNIX group mapped by <citerefentry> + <refentrytitle>winbindd</refentrytitle><manvolnum>8</manvolnum></citerefentry> then + the operation will fail. </para></listitem> + </varlistentry> + + &cmdline.version; + &popt.autohelp; + + </variablelist> +</refsect1> + + +<refsect1> + <title>EXIT STATUS</title> + + <para>The wbinfo program returns 0 if the operation + succeeded, or 1 if the operation failed. If the <citerefentry> + <refentrytitle>winbindd</refentrytitle><manvolnum>8</manvolnum> + </citerefentry> daemon is not working <command>wbinfo</command> will always return + failure. </para> +</refsect1> + + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of + the Samba suite.</para> +</refsect1> + +<refsect1> + <title>SEE ALSO</title> + <para><citerefentry><refentrytitle>winbindd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> and <citerefentry><refentrytitle>ntlm_auth</refentrytitle> + <manvolnum>1</manvolnum></citerefentry></para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + + <para><command>wbinfo</command> and <command>winbindd</command> + were written by Tim Potter.</para> + + <para>The conversion to DocBook for Samba 2.2 was done + by Gerald Carter. The conversion to DocBook XML 4.2 for Samba + 3.0 was done by Alexander Bokovoy.</para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/winbind_krb5_localauth.8.xml b/docs-xml/manpages/winbind_krb5_localauth.8.xml new file mode 100644 index 0000000..a382e71 --- /dev/null +++ b/docs-xml/manpages/winbind_krb5_localauth.8.xml @@ -0,0 +1,86 @@ +<?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="winbind_krb5_localauth.8"> + +<refmeta> + <refentrytitle>winbind_krb5_localauth</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">8</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>winbind_krb5_localauth</refname> + <refpurpose>A plugin for MIT Kerberos for mapping user accounts.</refpurpose> +</refnamediv> + + +<refsect1> + <title>DESCRIPTION</title> + + <para> + This plugin is part of the + <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite. + </para> + + <para> + <command>winbind_krb5_localauth</command> is a plugin that + permits the MIT Kerberos libraries that Kerberos principals can + be validated against local user accounts. + </para> +</refsect1> +<refsect1> + <title>PREREQUISITES</title> + <para> + MIT Kerberos (at least version 1.12) is required. + </para> + + <para> + The plugin queries the <citerefentry><refentrytitle>winbindd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> daemon which needs to be configured + and started separately. + </para> + + <para> + The following sections needs to be added to the + <filename>krb5.conf</filename> file. + + <programlisting> +[plugins] + localauth = { + module = winbind:/usr/lib64/samba/krb5/winbind_krb5_localauth.so + enable_only = winbind + } + </programlisting> + </para> +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para> + This man page is part of version &doc.version; of the Samba + suite. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para> + The original Samba software and related utilities were created + by Andrew Tridgell. Samba is now developed by the Samba Team as + an Open Source project similar to the way the Linux kernel is + developed. + </para> + + <para> + The winbind_krb5_localauth manpage was written by Andreas + Schneider. + </para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/winbind_krb5_locator.8.xml b/docs-xml/manpages/winbind_krb5_locator.8.xml new file mode 100644 index 0000000..0af0c2c --- /dev/null +++ b/docs-xml/manpages/winbind_krb5_locator.8.xml @@ -0,0 +1,95 @@ +<?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="winbind_krb5_locator.8"> + +<refmeta> + <refentrytitle>winbind_krb5_locator</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">8</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>winbind_krb5_locator</refname> + <refpurpose>A plugin for MIT and Heimdal Kerberos for detecting KDCs using Windows semantics.</refpurpose> +</refnamediv> + + +<refsect1> + <title>DESCRIPTION</title> + + <para> + This plugin is part of the <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite. + </para> + + <para> + <command>winbind_krb5_locator</command> is a plugin that permits MIT and + Heimdal Kerberos libraries to detect Kerberos Servers (for the KDC and + kpasswd service) using the same semantics that other tools of the Samba + suite use. This include site-aware DNS service record lookups and caching + of closest dc. + The plugin uses the public locator API provided by most modern Kerberos + implementations. + </para> +</refsect1> +<refsect1> + <title>PREREQUISITES</title> + <para> + MIT Kerberos (at least version 1.5) or Heimdal Kerberos (at least version + 1.0) is required. + </para> + + <para> + The plugin queries the <citerefentry><refentrytitle>winbindd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> daemon which needs to be configured + and started separately. + </para> + + <para> + The <command>winbind_krb5_locator.so</command> file needs to be manually + copied to the plugin directory of the system Kerberos library. + + For MIT Kerberos this is often: + <filename>/usr/lib/krb5/plugins/libkrb5/</filename>. + For Heimdal Kerberos this is often: + <filename>/usr/lib/plugin/krb5/</filename>. + + Please check your local Kerberos installation for the correct + paths. No modification in <filename>/etc/krb5.conf</filename> + is required to enable the use of this plugin. + </para> + <para> + After copying the locator plugin to the appropriate plugin + directory it should immediately be available for use. + Users should be able to kinit into their kerberized Windows + environment without any modification or servers + being put manually into <filename>/etc/krb5.conf</filename>. + </para> +</refsect1> + +<refsect1> + <title>VERSION</title> + + <para> + This man page is part of version &doc.version; of the Samba suite. + </para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para> + The original Samba software and related utilities were created by Andrew + Tridgell. Samba is now developed by the Samba Team as an Open Source + project similar to the way the Linux kernel is developed. + </para> + + <para> + The winbind_krb5_locator manpage was written by Guenther Deschner. + </para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/winbindd.8.xml b/docs-xml/manpages/winbindd.8.xml new file mode 100644 index 0000000..e60bd65 --- /dev/null +++ b/docs-xml/manpages/winbindd.8.xml @@ -0,0 +1,531 @@ +<?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="winbindd.8"> + +<refmeta> + <refentrytitle>winbindd</refentrytitle> + <manvolnum>8</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">System Administration tools</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>winbindd</refname> + <refpurpose>Name Service Switch daemon for resolving names + from NT servers</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>winbindd</command> + <arg choice="opt">-D|--daemon</arg> + <arg choice="opt">-i|--interactive</arg> + <arg choice="opt">-F|--foreground</arg> + <arg choice="opt">--no-process-group</arg> + <arg choice="opt">-n|--no-caching</arg> + <arg choice="opt">-d <debug level></arg> + <arg choice="opt">--debug-stdout</arg> + <arg choice="opt">--configfile=<configuration file></arg> + <arg choice="opt">--option=<name>=<value></arg> + <arg choice="opt">-l|--log-basename <log directory></arg> + <arg choice="opt">--leak-report</arg> + <arg choice="opt">--leak-report-full</arg> + <arg choice="opt">-V|--version</arg> + </cmdsynopsis> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>This program is part of the <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> suite.</para> + + <para><command>winbindd</command> is a daemon that provides + a number of services to the Name Service Switch capability found + in most modern C libraries, to arbitrary applications via PAM + and <command>ntlm_auth</command> and to Samba itself.</para> + + <para>Even if winbind is not used for nsswitch, it still provides a + service to <command>smbd</command>, <command>ntlm_auth</command> + and the <command>pam_winbind.so</command> PAM module, by managing connections to + domain controllers. In this configuration the + <smbconfoption name="idmap config * : range"/> + parameter is not required. (This is known as `netlogon proxy only mode'.)</para> + + <para> The Name Service Switch allows user + and system information to be obtained from different databases + services such as NIS or DNS. The exact behaviour can be configured + through the <filename>/etc/nsswitch.conf</filename> file. + Users and groups are allocated as they are resolved to a range + of user and group ids specified by the administrator of the + Samba system.</para> + + <para>The service provided by <command>winbindd</command> is called `winbind' and + can be used to resolve user and group information from a + Windows NT server. The service can also provide authentication + services via an associated PAM module. </para> + + <para> + The <filename>pam_winbind</filename> module supports the + <parameter>auth</parameter>, <parameter>account</parameter> + and <parameter>password</parameter> + module-types. It should be noted that the + <parameter>account</parameter> module simply performs a getpwnam() to verify that + the system can obtain a uid for the user, as the domain + controller has already performed access control. If the + <filename>libnss_winbind</filename> library has been correctly + installed, or an alternate source of names configured, this should always succeed. + </para> + + <para>The following nsswitch databases are implemented by + the winbindd service: </para> + + <variablelist> + <varlistentry> + <term>hosts</term> + <listitem><para>This feature is only available on IRIX. + User information traditionally stored in + the <filename>hosts(5)</filename> file and used by + <command>gethostbyname(3)</command> functions. Names are + resolved through the WINS server or by broadcast. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>passwd</term> + <listitem><para>User information traditionally stored in + the <filename>passwd(5)</filename> file and used by + <command>getpwent(3)</command> functions. </para></listitem> + </varlistentry> + + <varlistentry> + <term>group</term> + <listitem><para>Group information traditionally stored in + the <filename>group(5)</filename> file and used by + <command>getgrent(3)</command> functions. </para></listitem> + </varlistentry> + </variablelist> + + <para>For example, the following simple configuration in the + <filename>/etc/nsswitch.conf</filename> file can be used to initially + resolve user and group information from <filename>/etc/passwd + </filename> and <filename>/etc/group</filename> and then from the + Windows NT server. + </para> + +<programlisting> +passwd: files winbind +group: files winbind +## only available on IRIX: use winbind to resolve hosts: +# hosts: files dns winbind +## All other NSS enabled systems should use libnss_wins.so like this: +hosts: files dns wins + +</programlisting> + + <para>The following simple configuration in the + <filename>/etc/nsswitch.conf</filename> file can be used to initially + resolve hostnames from <filename>/etc/hosts</filename> and then from the + WINS server.</para> +<programlisting> +hosts: files wins +</programlisting> + +</refsect1> + + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + <varlistentry> + <term>-D|--daemon</term> + <listitem><para>If specified, this parameter causes + the server to operate as a daemon. That is, it detaches + itself and runs in the background on the appropriate port. + This switch is assumed if <command>winbindd</command> is + executed on the command line of a shell. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-i|--interactive</term> + <listitem><para>Tells <command>winbindd</command> to not + become a daemon and detach from the current terminal. This + option is used by developers when interactive debugging + of <command>winbindd</command> is required. + <command>winbindd</command> also logs to standard output, + as if the <command>-S</command> parameter had been given. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-F|--foreground</term> + <listitem><para>If specified, this parameter causes + the main <command>winbindd</command> process to not daemonize, + i.e. double-fork and disassociate with the terminal. + Child processes are still created as normal to service + each connection request, but the main process does not + exit. This operation mode is suitable for running + <command>winbindd</command> under process supervisors such + as <command>supervise</command> and <command>svscan</command> + from Daniel J. Bernstein's <command>daemontools</command> + package, or the AIX process monitor. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>--no-process-group</term> + <listitem><para>Do not create a new process group for winbindd. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>-n|--no-caching</term> + <listitem><para>Disable some caching. This means winbindd will + often have to wait for a response from the domain controller + before it can respond to a client and this thus makes things + slower. The results will however be more accurate, since + results from the cache might not be up-to-date. This + might also temporarily hang winbindd if the DC doesn't respond. + This does not disable the samlogon cache, which is required for + group membership tracking in trusted environments. + </para></listitem> + </varlistentry> + + &cmdline.common.debug.server; + &cmdline.common.config.server; + &cmdline.common.option; + + <varlistentry> + <term>-l|--log-basename=logdirectory</term> + <listitem> + <para> + Base directory name for log/debug files. The parent process + uses filename log.winbindd, the child process uses filename + log.wb-<name>. The log file is never removed by winbindd. + </para> + </listitem> + </varlistentry> + + &cmdline.common.samba.leakreport; + &cmdline.common.samba.leakreportfull; + &cmdline.version; + + &popt.autohelp; + + </variablelist> +</refsect1> + + +<refsect1> + <title>NAME AND ID RESOLUTION</title> + + <para>Users and groups on a Windows NT server are assigned + a security id (SID) which is globally unique when the + user or group is created. To convert the Windows NT user or group + into a unix user or group, a mapping between SIDs and unix user + and group ids is required. This is one of the jobs that <command> + winbindd</command> performs. </para> + + <para>As winbindd users and groups are resolved from a server, user + and group ids are allocated from a specified range. This + is done on a first come, first served basis, although all existing + users and groups will be mapped as soon as a client performs a user + or group enumeration command. The allocated unix ids are stored + in a database and will be remembered. </para> + + <para>WARNING: The SID to unix id database is the only location + where the user and group mappings are stored by winbindd. If this + store is deleted or corrupted, there is no way for winbindd to + determine which user and group ids correspond to Windows NT user + and group rids. </para> + +</refsect1> + + +<refsect1> + <title>CONFIGURATION</title> + + <para>Configuration of the <command>winbindd</command> daemon + is done through configuration parameters in the <citerefentry> + <refentrytitle>smb.conf</refentrytitle><manvolnum>5</manvolnum> + </citerefentry> file. All parameters should be specified in the + [global] section of smb.conf. </para> + + <itemizedlist> + <listitem><para> + <smbconfoption name="winbind separator"/></para></listitem> + <listitem><para> + <smbconfoption name="idmap config * : range"/></para></listitem> + <listitem><para> + <smbconfoption name="idmap config * : backend"/></para></listitem> + <listitem><para> + <smbconfoption name="winbind cache time"/></para></listitem> + <listitem><para> + <smbconfoption name="winbind enum users"/></para></listitem> + <listitem><para> + <smbconfoption name="winbind enum groups"/></para></listitem> + <listitem><para> + <smbconfoption name="template homedir"/></para></listitem> + <listitem><para> + <smbconfoption name="template shell"/></para></listitem> + <listitem><para> + <smbconfoption name="winbind use default domain"/></para></listitem> + <listitem><para> + <smbconfoption name="winbind: rpc only"/> + Setting this parameter forces winbindd to use RPC + instead of LDAP to retrieve information from Domain + Controllers. + </para></listitem> + </itemizedlist> +</refsect1> + + +<refsect1> + <title>EXAMPLE SETUP</title> + + <para> + To setup winbindd for user and group lookups plus + authentication from a domain controller use something like the + following setup. This was tested on an early Red Hat Linux box. + </para> + + <para>In <filename>/etc/nsswitch.conf</filename> put the + following: +<programlisting> +passwd: files winbind +group: files winbind +</programlisting> + </para> + + <para>In <filename>/etc/pam.d/*</filename> replace the <parameter> + auth</parameter> lines with something like this: +<programlisting> +auth required /lib/security/pam_securetty.so +auth required /lib/security/pam_nologin.so +auth sufficient /lib/security/pam_winbind.so +auth required /lib/security/pam_unix.so \ + use_first_pass shadow nullok +</programlisting> + </para> + + <note><para> + The PAM module pam_unix has recently replaced the module pam_pwdb. + Some Linux systems use the module pam_unix2 in place of pam_unix. + </para></note> + + <para>Note in particular the use of the <parameter>sufficient + </parameter> keyword and the <parameter>use_first_pass</parameter> keyword. </para> + + <para>Now replace the account lines with this: </para> + + <para><command>account required /lib/security/pam_winbind.so + </command></para> + + <para>The next step is to join the domain. To do that use the + <command>net</command> program like this: </para> + + <para><command>net join -S PDC -U Administrator</command></para> + + <para>The username after the <parameter>-U</parameter> can be any + Domain user that has administrator privileges on the machine. + Substitute the name or IP of your PDC for "PDC".</para> + + <para>Next copy <filename>libnss_winbind.so</filename> to + <filename>/lib</filename> and <filename>pam_winbind.so + </filename> to <filename>/lib/security</filename>. A symbolic link needs to be + made from <filename>/lib/libnss_winbind.so</filename> to + <filename>/lib/libnss_winbind.so.2</filename>. If you are using an + older version of glibc then the target of the link should be + <filename>/lib/libnss_winbind.so.1</filename>.</para> + + <para>Finally, setup a <citerefentry><refentrytitle>smb.conf</refentrytitle> + <manvolnum>5</manvolnum></citerefentry> containing directives like the + following: +<programlisting> +[global] + winbind separator = + + winbind cache time = 10 + template shell = /bin/bash + template homedir = /home/%D/%U + idmap config * : range = 10000-20000 + workgroup = DOMAIN + security = domain + password server = * +</programlisting></para> + + + <para>Now start winbindd and you should find that your user and + group database is expanded to include your NT users and groups, + and that you can login to your unix box as a domain user, using + the DOMAIN+user syntax for the username. You may wish to use the + commands <command>getent passwd</command> and <command>getent group + </command> to confirm the correct operation of winbindd.</para> +</refsect1> + + +<refsect1> + <title>NOTES</title> + + <para>The following notes are useful when configuring and + running <command>winbindd</command>: </para> + + <para>PAM is really easy to misconfigure. Make sure you know what + you are doing when modifying PAM configuration files. It is possible + to set up PAM such that you can no longer log into your system. </para> + + <para>If more than one UNIX machine is running <command>winbindd</command>, + then in general the user and groups ids allocated by winbindd will not + be the same. The user and group ids will only be valid for the local + machine, unless a shared <smbconfoption name="idmap config * : backend"/> is configured.</para> + + <para>If the Windows NT SID to UNIX user and group id mapping + file is damaged or destroyed then the mappings will be lost. </para> +</refsect1> + + +<refsect1> + <title>SIGNALS</title> + + <para>The following signals can be used to manipulate the + <command>winbindd</command> daemon. </para> + + <variablelist> + <varlistentry> + <term>SIGHUP</term> + <listitem><para>Reload the <citerefentry><refentrytitle>smb.conf</refentrytitle> + <manvolnum>5</manvolnum></citerefentry> file and + apply any parameter changes to the running + version of winbindd. This signal also clears any cached + user and group information. The list of other domains trusted + by winbindd is also reloaded. + </para> + <para>Instead of sending a SIGHUP signal, a request to reload configuration + file may be sent using <citerefentry><refentrytitle>smbcontrol</refentrytitle> + <manvolnum>1</manvolnum></citerefentry> program. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>SIGUSR2</term> + <listitem><para>The SIGUSR2 signal will cause <command> + winbindd</command> to write status information to the winbind + log file.</para> + + <para>Log files are stored in the filename specified by the + log file parameter.</para></listitem> + </varlistentry> + </variablelist> +</refsect1> + +<refsect1> + <title>FILES</title> + + <variablelist> + <varlistentry> + <term><filename>/etc/nsswitch.conf(5)</filename></term> + <listitem><para>Name service switch configuration file.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>&pathconfig.WINBINDD_SOCKET_DIR;/pipe</term> + <listitem><para>The UNIX pipe over which clients communicate with + the <command>winbindd</command> program. For security reasons, the + winbind client will only attempt to connect to the winbindd daemon + if both the <filename>&pathconfig.WINBINDD_SOCKET_DIR;</filename> directory + and <filename>&pathconfig.WINBINDD_SOCKET_DIR;/pipe</filename> file are owned by + root. </para> + + <para><smbconfoption name="winbindd socket directory"/> + overrides this default.</para> + + </listitem> + </varlistentry> + + <varlistentry> + <term>$STATEDIR/winbindd_privileged/pipe</term> + <listitem><para>The UNIX pipe over which 'privileged' clients + communicate with the <command>winbindd</command> program. For security + reasons, access to some winbindd functions - like those needed by + the <command>ntlm_auth</command> utility - is restricted. By default, + only users in the 'root' group will get this access, however the administrator + may change the group permissions on $STATEDIR/winbindd_privileged to allow + programs like 'squid' to use ntlm_auth. + Note that the winbind client will only attempt to connect to the winbindd daemon + if both the <filename>$STATEDIR/winbindd_privileged</filename> directory + and <filename>$STATEDIR/winbindd_privileged/pipe</filename> file are owned by + root. </para> + <para><smbconfoption name="state dir"/> controls what + $STATEDIR refers to.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>/lib/libnss_winbind.so.X</term> + <listitem><para>Implementation of name service switch library. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>$STATEDIR/winbindd_idmap.tdb</term> + <listitem><para>Storage for the Windows NT rid to UNIX user/group + id mapping. The directory is specified when Samba is initially + compiled using the + <parameter>--with-statedir</parameter> option or <smbconfoption name="state dir"/>. + The default directory in this installation is <filename>&pathconfig.STATEDIR; + </filename>. </para></listitem> + </varlistentry> + + <varlistentry> + <term>$LOCKDIR/winbindd_cache.tdb</term> + <listitem><para>Storage for cached user and group information. + </para></listitem> + </varlistentry> + </variablelist> +</refsect1> + + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of + the Samba suite.</para> +</refsect1> + +<refsect1> + <title>SEE ALSO</title> + + <para><filename>nsswitch.conf(5)</filename>, <citerefentry> + <refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry>, <citerefentry> + <refentrytitle>wbinfo</refentrytitle> + <manvolnum>1</manvolnum></citerefentry>, <citerefentry> + <refentrytitle>ntlm_auth</refentrytitle> + <manvolnum>8</manvolnum></citerefentry>, <citerefentry> + <refentrytitle>smb.conf</refentrytitle> + <manvolnum>5</manvolnum></citerefentry>, <citerefentry> + <refentrytitle>pam_winbind</refentrytitle> + <manvolnum>8</manvolnum></citerefentry></para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + + <para><command>wbinfo</command> and <command>winbindd</command> were + written by Tim Potter.</para> + + <para>The conversion to DocBook for Samba 2.2 was done + by Gerald Carter. The conversion to DocBook XML 4.2 for + Samba 3.0 was done by Alexander Bokovoy.</para> +</refsect1> + +</refentry> diff --git a/docs-xml/manpages/winexe.1.xml b/docs-xml/manpages/winexe.1.xml new file mode 100644 index 0000000..ddce91e --- /dev/null +++ b/docs-xml/manpages/winexe.1.xml @@ -0,0 +1,200 @@ +<?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="winexe.1"> + +<refmeta> + <refentrytitle>winexe</refentrytitle> + <manvolnum>1</manvolnum> + <refmiscinfo class="source">Samba</refmiscinfo> + <refmiscinfo class="manual">User Commands</refmiscinfo> + <refmiscinfo class="version">&doc.version;</refmiscinfo> +</refmeta> + + +<refnamediv> + <refname>winexe</refname> + <refpurpose>Winexe is a Remote Windows-command executor</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <cmdsynopsis> + <command>winexe</command> + <arg choice="opt">--uninstall</arg> + <arg choice="opt">--reinstall</arg> + <arg choice="opt">--runas [DOMAIN/]USERNAME[%PASSWORD]</arg> + <arg choice="opt">--runas-file FILE</arg> + <arg choice="opt">--interactive [0|1]</arg> + <arg choice="opt">--ostype [0|1]</arg> + <arg choice="opt">-d|--debuglevel=DEBUGLEVEL</arg> + <arg choice="opt">--debug-stdout</arg> + <arg choice="opt">--configfile=CONFIGFILE</arg> + <arg choice="opt">--option=name=value</arg> + <arg choice="opt">-l|--log-basename=LOGFILEBASE</arg> + <arg choice="opt">--leak-report</arg> + <arg choice="opt">--leak-report-full</arg> + <arg choice="opt">-R|--name-resolve=NAME-RESOLVE-ORDER</arg> + <arg choice="opt">-O|--socket-options=SOCKETOPTIONS</arg> + <arg choice="opt">-m|--max-protocol=MAXPROTOCOL</arg> + <arg choice="opt">-n|--netbiosname=NETBIOSNAME</arg> + <arg choice="opt">--netbios-scope=SCOPE</arg> + <arg choice="opt">-W|--workgroup=WORKGROUP</arg> + <arg choice="opt">--realm=REALM</arg> + <arg choice="opt">-U|--user=[DOMAIN/]USERNAME%[PASSWORD]</arg> + <arg choice="opt">-N|--no-pass</arg> + <arg choice="opt">--password=STRING</arg> + <arg choice="opt">--pw-nt-hash</arg> + <arg choice="opt">-A|--authentication-file=FILE</arg> + <arg choice="opt">-P|--machine-pass</arg> + <arg choice="opt">--simple-bind-dn=DN</arg> + <arg choice="opt">--use-kerberos=desired|required|off</arg> + <arg choice="opt">--use-krb5-ccache=CCACHE</arg> + <arg choice="opt">--use-winbind-ccache</arg> + <arg choice="opt">--client-protection=sign|encrypt|off</arg> + <arg choice="opt">-V|--version</arg> + <arg choice="opt">-?|--help</arg> + <arg choice="opt">--usage</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>The <command>winexe</command> allows remote command execution on native + Windows operating systems.</para> +</refsect1> + +<refsect1> + <title>OPTIONS</title> + + <variablelist> + <varlistentry> + <term>--uninstall</term> + <listitem> + <para> + Uninstall winexe service after remote execution. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>--reinstall</term> + <listitem> + <para> + Reinstall winexe service before remote execution. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>--runas <replaceable>[DOMAIN/]USERNAME[%PASSWORD]]</replaceable></term> + <listitem> + <para> + Run as the given user (BEWARE: this password is sent in cleartext over the network!) + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>--runas-file <replaceable>FILE</replaceable></term> + <listitem> + <para> + Run as user options defined in a file. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>--interactive <replaceable>[0|1]</replaceable></term> + <listitem> + <para> + Desktop interaction. + </para> + + <para>There are two options:</para> + <itemizedlist> + <listitem> + <para> + 0 - disallow + </para> + </listitem> + + <listitem> + <para> + 1 - allow. If allow, also use the --system switch (Windows requirement). Vista does not support this optoin. + </para> + </listitem> + </itemizedlist> + </listitem> + </varlistentry> + + <varlistentry> + <term>--ostype <replaceable>[0|1|2]</replaceable></term> + <listitem> + <para> + Determines which version (32-bit or 64-bit) of service will be installed. + </para> + + <para>There are three options:</para> + <itemizedlist> + <listitem> + <para> + 0 - 32-bit + </para> + </listitem> + + <listitem> + <para> + 1 - 64-bit + </para> + </listitem> + + <listitem> + <para> + 2 - winexe will decide + </para> + </listitem> + </itemizedlist> + </listitem> + </varlistentry> + + &cmdline.common.samba.client; + &cmdline.common.connection; + &cmdline.common.credentials; + &popt.autohelp; + </variablelist> +</refsect1> + + +<refsect1> + <title>EXIT STATUS</title> + + <para>The winexe program returns 0 if the operation + succeeded, or 1 if the operation failed. </para> +</refsect1> + + +<refsect1> + <title>VERSION</title> + + <para>This man page is part of version &doc.version; of + the Samba suite.</para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> + + <para>The <command>winexe</command> and it's native Windows counterpart were written by Andrzej Hajda. + The Samba client tool winexe was later rewritten by Volker Lendecke.</para> + + <para>This manpage was written by Guenther Deschner.</para> +</refsect1> + +</refentry> diff --git a/docs-xml/registry/FolderRedir.adm b/docs-xml/registry/FolderRedir.adm new file mode 100644 index 0000000..b87a994 --- /dev/null +++ b/docs-xml/registry/FolderRedir.adm @@ -0,0 +1,35 @@ +CLASS MACHINE
+
+CATEGORY !!Shell
+
+ CATEGORY !!CustomSharedAppFolders
+ KEYNAME "Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"
+
+ POLICY !!CustomFolders_SharedAppData
+ PART !!CustomFolders_SharedAppDataPath EDITTEXT REQUIRED EXPANDABLETEXT
+ DEFAULT !!CustomFolders_SharedAppDataDefault
+ VALUENAME "AppData"
+ END PART
+ END POLICY
+
+ POLICY !!CustomFolders_SharedMyDocs
+ PART !!CustomFolders_SharedMyDocsPath EDITTEXT REQUIRED EXPANDABLETEXT
+ DEFAULT !!CustomFolders_SharedMyDocsDefault
+ VALUENAME "Personal"
+ END PART
+ END POLICY
+
+ END CATEGORY
+
+END CATEGORY ; Shell
+
+
+[strings]
+Shell="Shared User Profile Folders"
+CustomSharedAppFolders="Custom Shared Folders"
+CustomFolders_SharedAppData="Custom Shared Application Folders"
+CustomFolders_SharedAppDataPath="Path to location of Shared Application Data"
+CustomFolders_SharedAppDataDefault="%USERPROFILE%\Local Settings\Application Data"
+CustomFolders_SharedMyDocs="Custom Shared Documentation Folder"
+CustomFolders_SharedMyDocsPath="Path to location of Shared My Documents"
+CustomFolders_SharedMyDocsDefault="%USERPROFILE%\MY Documents"
\ No newline at end of file diff --git a/docs-xml/registry/NT4-Locking.reg b/docs-xml/registry/NT4-Locking.reg new file mode 100644 index 0000000..6175fd5 --- /dev/null +++ b/docs-xml/registry/NT4-Locking.reg @@ -0,0 +1,24 @@ +REGEDIT4
+
+;Contributor: John H Terpstra <jht@samba.org>
+;Corrected: Stefan Kanthak <skanthak@nexgo.de>
+;Updated: Jun 25, 2001
+;
+;Subject: Registry Entries That Affect Locking and Caching
+
+[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters]
+"BufFilesDenyWrite"=dword:00000000
+"BufNamedPipes"=dword:00000000
+"UseOpportunisticLocking"=dword:00000000
+"DormantFileLimit"=dword:00000000
+
+[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters\Linkage]
+"UtilizeNtCaching"=dword:00000000
+
+[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Filesystem]
+"Win95TruncatedExtensions"=dword:00000000
+"NTFSDisable8dot3NameCreation"=dword:00000001
+
+[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanManServer\Parameters]
+"EnableOpLockForceClose"=dword:00000001
+"EnableOpLocks"=dword:00000000
diff --git a/docs-xml/registry/NT4_PlainPassword.reg b/docs-xml/registry/NT4_PlainPassword.reg new file mode 100644 index 0000000..b30db15 --- /dev/null +++ b/docs-xml/registry/NT4_PlainPassword.reg @@ -0,0 +1,11 @@ +REGEDIT4
+
+;Contributor: Tim Small (tim.small@virgin.net)
+;Updated: 20 August 1997
+;Status: Current
+;
+;Subject: Registry file to enable plain text passwords in NT4-SP3 and later
+
+[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Rdr\Parameters]
+"EnablePlainTextPassword"=dword:00000001
+
diff --git a/docs-xml/registry/Win-2Kx-XPP-DeleteCachedProfiles.reg b/docs-xml/registry/Win-2Kx-XPP-DeleteCachedProfiles.reg Binary files differnew file mode 100644 index 0000000..1867c06 --- /dev/null +++ b/docs-xml/registry/Win-2Kx-XPP-DeleteCachedProfiles.reg diff --git a/docs-xml/registry/Win-2Kx-XPP-ForceLocalProfile.reg b/docs-xml/registry/Win-2Kx-XPP-ForceLocalProfile.reg Binary files differnew file mode 100644 index 0000000..bc09627 --- /dev/null +++ b/docs-xml/registry/Win-2Kx-XPP-ForceLocalProfile.reg diff --git a/docs-xml/registry/Win-NT-DeleteRoamingProfile.reg b/docs-xml/registry/Win-NT-DeleteRoamingProfile.reg new file mode 100644 index 0000000..2620ad7 --- /dev/null +++ b/docs-xml/registry/Win-NT-DeleteRoamingProfile.reg @@ -0,0 +1,11 @@ +REGEDIT4
+
+;Contributor: John H Terpstra
+;Updated: December 17, 2002
+;Status: Current
+;
+;Subject: Registry file update to delete roaming profiles on logout
+
+[HKEY_LOCAL_MACHINE\SYSTEM\Software\Microsoft\Windows NT\CurrentVersion\winlogon]
+"DeleteRoamingCache"=dword:00000001
+
diff --git a/docs-xml/registry/Win2000_PlainPassword.reg b/docs-xml/registry/Win2000_PlainPassword.reg new file mode 100644 index 0000000..e0ae280 --- /dev/null +++ b/docs-xml/registry/Win2000_PlainPassword.reg @@ -0,0 +1,11 @@ +REGEDIT4
+
+;Contributor: Herb Lewis (herb@sgi.com)
+;Updated: 16 July 1999
+;Status: Current
+;
+;Subject: Registry file to enable plain text passwords in Windows 2000
+
+[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkStation\Parameters]
+"EnablePlainTextPassword"=dword:00000001
+
diff --git a/docs-xml/registry/Win7_Samba3DomainMember.reg b/docs-xml/registry/Win7_Samba3DomainMember.reg Binary files differnew file mode 100644 index 0000000..b5de9e2 --- /dev/null +++ b/docs-xml/registry/Win7_Samba3DomainMember.reg diff --git a/docs-xml/registry/Win95_PlainPassword.reg b/docs-xml/registry/Win95_PlainPassword.reg new file mode 100644 index 0000000..9dd3103 --- /dev/null +++ b/docs-xml/registry/Win95_PlainPassword.reg @@ -0,0 +1,4 @@ +REGEDIT4
+
+[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP]
+"EnablePlainTextPassword"=dword:00000001
diff --git a/docs-xml/registry/Win98_PlainPassword.reg b/docs-xml/registry/Win98_PlainPassword.reg new file mode 100644 index 0000000..9dd3103 --- /dev/null +++ b/docs-xml/registry/Win98_PlainPassword.reg @@ -0,0 +1,4 @@ +REGEDIT4
+
+[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP]
+"EnablePlainTextPassword"=dword:00000001
diff --git a/docs-xml/registry/Win9X-CacheHandling.reg b/docs-xml/registry/Win9X-CacheHandling.reg new file mode 100644 index 0000000..265e335 --- /dev/null +++ b/docs-xml/registry/Win9X-CacheHandling.reg @@ -0,0 +1,7 @@ +REGEDIT4
+
+; Contributor: John H Terpstra <jht@samba.org>
+; Date: Feb 15, 1999
+
+[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VREDIR]
+"DiscardCacheOnOpen"=string:00000001
diff --git a/docs-xml/registry/WinME_PlainPassword.reg b/docs-xml/registry/WinME_PlainPassword.reg new file mode 100644 index 0000000..9dd3103 --- /dev/null +++ b/docs-xml/registry/WinME_PlainPassword.reg @@ -0,0 +1,4 @@ +REGEDIT4
+
+[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP]
+"EnablePlainTextPassword"=dword:00000001
diff --git a/docs-xml/registry/WinXP_PlainPassword.reg b/docs-xml/registry/WinXP_PlainPassword.reg Binary files differnew file mode 100644 index 0000000..243f72c --- /dev/null +++ b/docs-xml/registry/WinXP_PlainPassword.reg diff --git a/docs-xml/registry/WindowsTerminalServer.reg b/docs-xml/registry/WindowsTerminalServer.reg new file mode 100644 index 0000000..73c3b17 --- /dev/null +++ b/docs-xml/registry/WindowsTerminalServer.reg @@ -0,0 +1,7 @@ +REGEDIT4
+
+;Subject: Registry file to force multiple NT terminal server users to have their own connections.
+
+[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Rdr\Parameters]
+"MultipleUsersOnConnection"=dword:00000000
+
diff --git a/docs-xml/scripts/indent-smb.conf.pl b/docs-xml/scripts/indent-smb.conf.pl new file mode 100755 index 0000000..c4c87a1 --- /dev/null +++ b/docs-xml/scripts/indent-smb.conf.pl @@ -0,0 +1,8 @@ +#!/usr/bin/perl + +while(<STDIN>) { + if(/^$/) { } + elsif(/^([ \t]*)#(.*)/) { print "#$2\n"; } + elsif(/^([ \t]*)(.*) = (.*)$/) { print "\t$2 = $3\n"; } + elsif(/^([ \t]*)\[(.*)\]([ \t]*)$/) { print "\n[$2]\n"; } +} diff --git a/docs-xml/smbdotconf/base/additionaldnshostnames.xml b/docs-xml/smbdotconf/base/additionaldnshostnames.xml new file mode 100644 index 0000000..ddc04ee --- /dev/null +++ b/docs-xml/smbdotconf/base/additionaldnshostnames.xml @@ -0,0 +1,11 @@ +<samba:parameter name="additional dns hostnames" + context="G" + type="cmdlist" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + <description> + <para> A list of additional DNS names by which this host can be identified + </para> +</description> +<value type="default"><comment>empty string (no additional dns names)</comment></value> +<value type="example"> host2.example.com host3.other.com </value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/base/bindinterfacesonly.xml b/docs-xml/smbdotconf/base/bindinterfacesonly.xml new file mode 100644 index 0000000..9a148f3 --- /dev/null +++ b/docs-xml/smbdotconf/base/bindinterfacesonly.xml @@ -0,0 +1,57 @@ +<samba:parameter name="bind interfaces only" + type="boolean" + context="G" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This global parameter allows the Samba admin + to limit what interfaces on a machine will serve SMB requests. It + affects file service <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> and name service <citerefentry><refentrytitle>nmbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> in a slightly different ways.</para> + + <para> + For name service it causes <command moreinfo="none">nmbd</command> to bind to ports 137 and 138 on the + interfaces listed in the <smbconfoption name="interfaces"/> parameter. <command moreinfo="none">nmbd</command> + also binds to the "all addresses" interface (0.0.0.0) on ports 137 and 138 for the purposes of + reading broadcast messages. If this option is not set then <command moreinfo="none">nmbd</command> will + service name requests on all of these sockets. If <smbconfoption name="bind interfaces only"/> is set then + <command moreinfo="none">nmbd</command> will check the source address of any packets coming in on the + broadcast sockets and discard any that don't match the broadcast addresses of the interfaces in the + <smbconfoption name="interfaces"/> parameter list. As unicast packets are received on the other sockets it + allows <command moreinfo="none">nmbd</command> to refuse to serve names to machines that send packets that + arrive through any interfaces not listed in the <smbconfoption name="interfaces"/> list. IP Source address + spoofing does defeat this simple check, however, so it must not be used seriously as a security feature for + <command moreinfo="none">nmbd</command>. + </para> + + <para> + For file service it causes <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> to bind only to the interface list given in the <smbconfoption + name="interfaces"/> parameter. This restricts the networks that <command moreinfo="none">smbd</command> will + serve, to packets coming in on those interfaces. Note that you should not use this parameter for machines that + are serving PPP or other intermittent or non-broadcast network interfaces as it will not cope with + non-permanent interfaces. + </para> + + <para> + If <smbconfoption name="bind interfaces only"/> is set and the network address + <emphasis>127.0.0.1</emphasis> is not added to the <smbconfoption name="interfaces"/> parameter list + <citerefentry><refentrytitle>smbpasswd</refentrytitle> <manvolnum>8</manvolnum></citerefentry> may not + work as expected due to the reasons covered below. + </para> + + <para> + To change a users SMB password, the <command moreinfo="none">smbpasswd</command> by default connects to the + <emphasis>localhost - 127.0.0.1</emphasis> address as an SMB client to issue the password change request. If + <smbconfoption name="bind interfaces only"/> is set then unless the network address + <emphasis>127.0.0.1</emphasis> is added to the <smbconfoption name="interfaces"/> parameter list then <command + moreinfo="none"> smbpasswd</command> will fail to connect in it's default mode. <command + moreinfo="none">smbpasswd</command> can be forced to use the primary IP interface of the local host by using + its <citerefentry><refentrytitle>smbpasswd</refentrytitle> <manvolnum>8</manvolnum></citerefentry> <parameter + moreinfo="none">-r <replaceable>remote machine</replaceable></parameter> parameter, with <replaceable>remote + machine</replaceable> set to the IP name of the primary interface of the local host. + </para> + +</description> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/base/comment.xml b/docs-xml/smbdotconf/base/comment.xml new file mode 100644 index 0000000..c5aba83 --- /dev/null +++ b/docs-xml/smbdotconf/base/comment.xml @@ -0,0 +1,18 @@ +<samba:parameter name="comment" + context="S" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This is a text field that is seen next to a share + when a client does a queries the server, either via the network + neighborhood or via <command moreinfo="none">net view</command> to list what shares + are available.</para> + + <para>If you want to set the string that is displayed next to the + machine name then see the <smbconfoption name="server string"/> parameter.</para> + +</description> +<value type="default"><comment>No comment</comment></value> +<value type="example">Fred's Files</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/base/configbackend.xml b/docs-xml/smbdotconf/base/configbackend.xml new file mode 100644 index 0000000..2237569 --- /dev/null +++ b/docs-xml/smbdotconf/base/configbackend.xml @@ -0,0 +1,26 @@ +<samba:parameter name="config backend" + context="G" + type="enum" + enumlist="enum_config_backend" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This controls the backend for storing the configuration. + Possible values are <emphasis>file</emphasis> (the default) + and <emphasis>registry</emphasis>. + When <smbconfoption name="config backend">registry</smbconfoption> + is encountered while loading <emphasis>smb.conf</emphasis>, + the configuration read so far is dropped and the global + options are read from registry instead. So this triggers a + registry only configuration. Share definitions are not read + immediately but instead <parameter>registry + shares</parameter> is set to <emphasis>yes</emphasis>. + </para> + <para> + Note: This option can not be set inside the registry + configuration itself. + </para> +</description> +<value type="default">file</value> +<value type="example">registry</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/base/doscharset.xml b/docs-xml/smbdotconf/base/doscharset.xml new file mode 100644 index 0000000..ebd7586 --- /dev/null +++ b/docs-xml/smbdotconf/base/doscharset.xml @@ -0,0 +1,17 @@ +<samba:parameter name="dos charset" + type="string" + context="G" + handler="handle_dos_charset" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>DOS SMB clients assume the server has + the same charset as they do. This option specifies which + charset Samba should talk to DOS clients. + </para> + + <para>The default depends on which charsets you have installed. + Samba tries to use charset 850 but falls back to ASCII in + case it is not available. Run <citerefentry><refentrytitle>testparm</refentrytitle> + <manvolnum>1</manvolnum></citerefentry> to check the default on your system.</para> +</description> +</samba:parameter> diff --git a/docs-xml/smbdotconf/base/enablecorefiles.xml b/docs-xml/smbdotconf/base/enablecorefiles.xml new file mode 100644 index 0000000..9aa057f --- /dev/null +++ b/docs-xml/smbdotconf/base/enablecorefiles.xml @@ -0,0 +1,15 @@ +<samba:parameter name="enable core files" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + +<description> + <para>This parameter specifies whether core dumps should be written + on internal exits. Normally set to <constant>yes</constant>. + You should never need to change this. + </para> +</description> + + <value type="default">yes</value> + <value type="example">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/base/interfaces.xml b/docs-xml/smbdotconf/base/interfaces.xml new file mode 100644 index 0000000..cbc2971 --- /dev/null +++ b/docs-xml/smbdotconf/base/interfaces.xml @@ -0,0 +1,87 @@ +<samba:parameter name="interfaces" + context="G" + type="cmdlist" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option allows you to override the default + network interfaces list that Samba will use for browsing, name + registration and other NetBIOS over TCP/IP (NBT) traffic. By default Samba will query + the kernel for the list of all active interfaces and use any + interfaces except 127.0.0.1 that are broadcast capable.</para> + + <para>The option takes a list of interface strings. Each string + can be in any of the following forms:</para> + + <itemizedlist> + <listitem><para>a network interface name (such as eth0). + This may include shell-like wildcards so eth* will match + any interface starting with the substring "eth"</para></listitem> + + <listitem><para>an IP address. In this case the netmask is + determined from the list of interfaces obtained from the + kernel</para></listitem> + + <listitem><para>an IP/mask pair. </para></listitem> + + <listitem><para>a broadcast/mask pair.</para></listitem> + </itemizedlist> + + <para>The "mask" parameters can either be a bit length (such + as 24 for a C class network) or a full netmask in dotted + decimal form.</para> + + <para>The "IP" parameters above can either be a full dotted + decimal IP address or a hostname which will be looked up via + the OS's normal hostname resolution mechanisms.</para> + + <para> + By default Samba enables all active interfaces that are broadcast capable + except the loopback adaptor (IP address 127.0.0.1). + </para> + + <para> + In order to support SMB3 multi-channel configurations, smbd understands + some extra parameters which can be appended after the actual interface with + this extended syntax (note that the quoting is important in order to handle the ; and , + characters): + </para> + + <para> + "interface[;key1=value1[,key2=value2[...]]]" + </para> + + <para> + Known keys are speed, capability, and if_index. Speed is specified in + bits per second. Known capabilities are RSS and RDMA. The + if_index should be used with care: the values must not coincide with + indexes used by the kernel. + Note that these options are mainly intended for testing and + development rather than for production use. At least on Linux systems, + these values should be auto-detected, but the settings can serve + as last a resort when autodetection is not working or is not available. + The specified values overwrite the auto-detected values. + </para> + + <para> + The first two example below configures three network interfaces corresponding + to the eth0 device and IP addresses 192.168.2.10 and 192.168.3.10. + The netmasks of the latter two interfaces would be set to 255.255.255.0. + </para> + + <para> + The other examples show how per interface extra parameters can be specified. + Notice the possible usage of "," and ";", which makes + the double quoting necessary. + </para> +</description> +<related>bind interfaces only</related> + +<value type="example">eth0 192.168.2.10/24 192.168.3.10/255.255.255.0</value> +<value type="example">eth0, 192.168.2.10/24; 192.168.3.10/255.255.255.0</value> +<value type="example">"eth0;if_index=65,speed=1000000000,capability=RSS"</value> +<value type="example">"lo;speed=1000000000" "eth0;capability=RSS"</value> +<value type="example">"lo;speed=1000000000" , "eth0;capability=RSS"</value> +<value type="example">"eth0;capability=RSS" , "rdma1;capability=RDMA" ; "rdma2;capability=RSS,capability=RDMA"</value> + +<value type="default"/> +</samba:parameter> diff --git a/docs-xml/smbdotconf/base/mdnsname.xml b/docs-xml/smbdotconf/base/mdnsname.xml new file mode 100644 index 0000000..fba90ff --- /dev/null +++ b/docs-xml/smbdotconf/base/mdnsname.xml @@ -0,0 +1,19 @@ +<samba:parameter name="mdns name" + type="enum" + context="G" + enumlist="enum_mdns_name_values" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + +<description> + <para>This parameter controls the name that multicast DNS + support advertises as its' hostname.</para> + + <para>The default is to use the NETBIOS name which is typically + the hostname in all capital letters. </para> + + <para>A setting of mdns will defer the hostname configuration + to the MDNS library that is used.</para> + +</description> +<value type="default">netbios</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/base/multicastdnsregister.xml b/docs-xml/smbdotconf/base/multicastdnsregister.xml new file mode 100644 index 0000000..2c330ab --- /dev/null +++ b/docs-xml/smbdotconf/base/multicastdnsregister.xml @@ -0,0 +1,14 @@ +<samba:parameter name="multicast dns register" + type="boolean" + context="G" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>If compiled with proper support for it, Samba will + announce itself with multicast DNS services like for example + provided by the Avahi daemon.</para> + + <para>This parameter allows disabling Samba to register + itself.</para> +</description> +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/base/netbiosaliases.xml b/docs-xml/smbdotconf/base/netbiosaliases.xml new file mode 100644 index 0000000..b9b66b1 --- /dev/null +++ b/docs-xml/smbdotconf/base/netbiosaliases.xml @@ -0,0 +1,16 @@ +<samba:parameter name="netbios aliases" + context="G" + type="cmdlist" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + <description> + <para>This is a list of NetBIOS names that nmbd will + advertise as additional names by which the Samba server is known. This allows one machine + to appear in browse lists under multiple names. If a machine is acting as a browse server + or logon server none of these names will be advertised as either browse server or logon + servers, only the primary name of the machine will be advertised with these capabilities. + </para> +</description> +<related>netbios name</related> +<value type="default"><comment>empty string (no additional names)</comment></value> +<value type="example">TEST TEST1 TEST2</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/base/netbiosname.xml b/docs-xml/smbdotconf/base/netbiosname.xml new file mode 100644 index 0000000..e9e0538 --- /dev/null +++ b/docs-xml/smbdotconf/base/netbiosname.xml @@ -0,0 +1,24 @@ +<samba:parameter name="netbios name" + context="G" + type="ustring" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This sets the NetBIOS name by which a Samba server is known. By default it is the same as the first component + of the host's DNS name. If a machine is a browse server or logon server this name (or the first component of + the hosts DNS name) will be the name that these services are advertised under. + </para> + + <para>Note that the maximum length for a NetBIOS name is 15 characters.</para> + + <para> + There is a bug in Samba that breaks operation of browsing and access to shares if the netbios name + is set to the literal name <literal>PIPE</literal>. To avoid this problem, do not name your Samba + server <literal>PIPE</literal>. + </para> +</description> + +<related>netbios aliases</related> +<value type="default"><comment>machine DNS name</comment></value> +<value type="example">MYNAME</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/base/netbiosscope.xml b/docs-xml/smbdotconf/base/netbiosscope.xml new file mode 100644 index 0000000..078697f --- /dev/null +++ b/docs-xml/smbdotconf/base/netbiosscope.xml @@ -0,0 +1,11 @@ +<samba:parameter name="netbios scope" + context="G" + type="ustring" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This sets the NetBIOS scope that Samba will + operate under. This should not be set unless every machine + on your LAN also sets this value.</para> +</description> +<value type="default"></value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/base/path.xml b/docs-xml/smbdotconf/base/path.xml new file mode 100644 index 0000000..669c20d --- /dev/null +++ b/docs-xml/smbdotconf/base/path.xml @@ -0,0 +1,32 @@ +<samba:parameter name="path" + context="S" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<synonym>directory</synonym> +<description> + <para>This parameter specifies a directory to which + the user of the service is to be given access. In the case of + printable services, this is where print data will spool prior to + being submitted to the host for printing.</para> + + <para>For a printable service offering guest access, the service + should be readonly and the path should be world-writeable and + have the sticky bit set. This is not mandatory of course, but + you probably won't get the results you expect if you do + otherwise.</para> + + <para>Any occurrences of <parameter moreinfo="none">%u</parameter> in the path + will be replaced with the UNIX username that the client is using + on this connection. Any occurrences of <parameter moreinfo="none">%m</parameter> + will be replaced by the NetBIOS name of the machine they are + connecting from. These replacements are very useful for setting + up pseudo home directories for users.</para> + +<para>Note that this path will be based on <smbconfoption name="root dir"/> + if one was specified.</para> + </description> + + <value type="default"></value> + <value type="example">/home/fred</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/base/preforkbackoffincrement.xml b/docs-xml/smbdotconf/base/preforkbackoffincrement.xml new file mode 100644 index 0000000..2cb1cc3 --- /dev/null +++ b/docs-xml/smbdotconf/base/preforkbackoffincrement.xml @@ -0,0 +1,25 @@ +<samba:parameter name="prefork backoff increment" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option specifies the number of seconds added to the delay + before a prefork master or worker process is restarted. The + restart is initially zero, the prefork backoff increment is + added to the delay on each restart up to the value specified by + "prefork maximum backoff". + </para> + + <para>Additionally the the backoff for an individual service by using + "prefork backoff increment: service name" + i.e. "prefork backoff increment:ldap = 2" to set the + backoff increment to 2.</para> + + <para>If the backoff increment is 2 and the maximum backoff is 5. + There will be a zero second delay for the first restart. A two + second delay for the second restart. A four second delay for the + third and any subsequent restarts</para> +</description> + +<value type="default">10</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/base/preforkchildren.xml b/docs-xml/smbdotconf/base/preforkchildren.xml new file mode 100644 index 0000000..1b9f8cf --- /dev/null +++ b/docs-xml/smbdotconf/base/preforkchildren.xml @@ -0,0 +1,26 @@ +<samba:parameter name="prefork children" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option controls the number of worker processes that are + started for each service when prefork process model is enabled + (see <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> -M) + The prefork children are only started for those services that + support prefork (currently ldap, kdc and netlogon). + For processes that don't support preforking all requests are + handled by a single process for that service. + </para> + + <para>This should be set to a small multiple of the number of CPU's + available on the server</para> + + <para>Additionally the number of prefork children can be specified for + an individual service by using "prefork children: service name" + i.e. "prefork children:ldap = 8" to set the number of ldap + worker processes.</para> +</description> + +<value type="default">4</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/base/preforkmaximumbackoff.xml b/docs-xml/smbdotconf/base/preforkmaximumbackoff.xml new file mode 100644 index 0000000..17e530d --- /dev/null +++ b/docs-xml/smbdotconf/base/preforkmaximumbackoff.xml @@ -0,0 +1,13 @@ +<samba:parameter name="prefork maximum backoff" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option controls the maximum delay before a failed pre-fork + process is restarted. + </para> + +</description> + +<value type="default">120</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/base/realm.xml b/docs-xml/smbdotconf/base/realm.xml new file mode 100644 index 0000000..dd39c1b --- /dev/null +++ b/docs-xml/smbdotconf/base/realm.xml @@ -0,0 +1,15 @@ +<samba:parameter name="realm" + context="G" + type="string" + handler="handle_realm" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option specifies the kerberos realm to use. The realm is + used as the ADS equivalent of the NT4 <command moreinfo="none">domain</command>. It + is usually set to the DNS name of the kerberos server. + </para> +</description> + +<value type="default"></value> +<value type="example">mysambabox.mycompany.com</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/base/serverservices.xml b/docs-xml/smbdotconf/base/serverservices.xml new file mode 100644 index 0000000..dba65e9 --- /dev/null +++ b/docs-xml/smbdotconf/base/serverservices.xml @@ -0,0 +1,17 @@ +<samba:parameter name="server services" + context="G" + type="list" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option contains the services that the Samba daemon will + run.</para> + + <para>An entry in the <filename>smb.conf</filename> file can either + override the previous value completely or entries can be removed from + or added to it by prefixing them with <constant>+</constant> or + <constant>-</constant>. </para> +</description> + +<value type="default">s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbindd, ntp_signd, kcc, dnsupdate, dns</value> +<value type="example">-s3fs, +smb</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/base/serverstring.xml b/docs-xml/smbdotconf/base/serverstring.xml new file mode 100644 index 0000000..4088295 --- /dev/null +++ b/docs-xml/smbdotconf/base/serverstring.xml @@ -0,0 +1,22 @@ +<samba:parameter name="server string" + context="G" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This controls what string will show up in the printer comment box in print + manager and next to the IPC connection in <command moreinfo="none">net view</command>. It + can be any string that you wish to show to your users.</para> + + <para>It also sets what will appear in browse lists next + to the machine name.</para> + + <para>A <parameter moreinfo="none">%v</parameter> will be replaced with the Samba + version number.</para> + + <para>A <parameter moreinfo="none">%h</parameter> will be replaced with the + hostname.</para> +</description> +<value type="default">Samba %v</value> +<value type="example">University of GNUs Samba Server</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/base/unixcharset.xml b/docs-xml/smbdotconf/base/unixcharset.xml new file mode 100644 index 0000000..23c4f1e --- /dev/null +++ b/docs-xml/smbdotconf/base/unixcharset.xml @@ -0,0 +1,19 @@ +<samba:parameter name="unix charset" + context="G" + type="string" + handler="handle_charset" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>Specifies the charset the unix machine + Samba runs on uses. Samba needs to know this in order to be able to + convert text to the charsets other SMB clients use. + </para> + + <para>This is also the charset Samba will use when specifying arguments + to scripts that it invokes. + </para> +</description> + +<value type="default">UTF-8</value> +<value type="example">ASCII</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/base/workgroup.xml b/docs-xml/smbdotconf/base/workgroup.xml new file mode 100644 index 0000000..1408147 --- /dev/null +++ b/docs-xml/smbdotconf/base/workgroup.xml @@ -0,0 +1,14 @@ +<samba:parameter name="workgroup" + context="G" + type="ustring" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This controls what workgroup your server will + appear to be in when queried by clients. Note that this parameter + also controls the Domain name used with + the <smbconfoption name="security">domain</smbconfoption> + setting.</para> +</description> +<value type="default">WORKGROUP</value> +<value type="example">MYGROUP</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/browse/administrative_share.xml b/docs-xml/smbdotconf/browse/administrative_share.xml new file mode 100644 index 0000000..95db5f1 --- /dev/null +++ b/docs-xml/smbdotconf/browse/administrative_share.xml @@ -0,0 +1,16 @@ +<samba:parameter name="administrative share" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>If this parameter is set to <constant>yes</constant> for + a share, then the share will be an administrative share. The Administrative + Shares are the default network shares created by all Windows NT-based + operating systems. These are shares like C$, D$ or ADMIN$. The type of these + shares is STYPE_DISKTREE_HIDDEN.</para> + + <para>See the section below on <smbconfoption name="security"/> for more + information about this option.</para> +</description> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/browse/browseable.xml b/docs-xml/smbdotconf/browse/browseable.xml new file mode 100644 index 0000000..64dfcf0 --- /dev/null +++ b/docs-xml/smbdotconf/browse/browseable.xml @@ -0,0 +1,12 @@ +<samba:parameter name="browseable" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<synonym>browsable</synonym> +<description> + <para>This controls whether this share is seen in + the list of available shares in a net view and in the browse list.</para> + +</description> +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/browse/browselist.xml b/docs-xml/smbdotconf/browse/browselist.xml new file mode 100644 index 0000000..f053e81 --- /dev/null +++ b/docs-xml/smbdotconf/browse/browselist.xml @@ -0,0 +1,14 @@ +<samba:parameter name="browse list" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This controls whether <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> will serve a browse list to + a client doing a <command moreinfo="none">NetServerEnum</command> call. Normally + set to <constant>yes</constant>. You should never need to change + this.</para> + +</description> +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/browse/domainmaster.xml b/docs-xml/smbdotconf/browse/domainmaster.xml new file mode 100644 index 0000000..8817f2b --- /dev/null +++ b/docs-xml/smbdotconf/browse/domainmaster.xml @@ -0,0 +1,43 @@ +<samba:parameter name="domain master" + type="enum" + enumlist="enum_bool_auto" + context="G" + function="_domain_master" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + Tell <citerefentry><refentrytitle>smbd</refentrytitle> <manvolnum>8</manvolnum></citerefentry> to enable + WAN-wide browse list collation. Setting this option causes <command moreinfo="none">nmbd</command> to claim a + special domain specific NetBIOS name that identifies it as a domain master browser for its given + <smbconfoption name="workgroup"/>. Local master browsers in the same <smbconfoption name="workgroup"/> on + broadcast-isolated subnets will give this <command moreinfo="none">nmbd</command> their local browse lists, + and then ask <citerefentry><refentrytitle>smbd</refentrytitle> <manvolnum>8</manvolnum></citerefentry> for a + complete copy of the browse list for the whole wide area network. Browser clients will then contact their + local master browser, and will receive the domain-wide browse list, instead of just the list for their + broadcast-isolated subnet. + </para> + + <para> + Note that Windows NT Primary Domain Controllers expect to be able to claim this <smbconfoption + name="workgroup"/> specific special NetBIOS name that identifies them as domain master browsers for that + <smbconfoption name="workgroup"/> by default (i.e. there is no way to prevent a Windows NT PDC from attempting + to do this). This means that if this parameter is set and <command moreinfo="none">nmbd</command> claims the + special name for a <smbconfoption name="workgroup"/> before a Windows NT PDC is able to do so then cross + subnet browsing will behave strangely and may fail. + </para> + + <para> + If <smbconfoption name="domain logons">yes</smbconfoption>, then the default behavior is to enable the + <smbconfoption name="domain master"/> parameter. If <smbconfoption name="domain logons"/> is not enabled (the + default setting), then neither will <smbconfoption name="domain master"/> be enabled by default. + </para> + + <para> + When <smbconfoption name="domain logons">Yes</smbconfoption> the default setting for this parameter is + Yes, with the result that Samba will be a PDC. If <smbconfoption name="domain master">No</smbconfoption>, + Samba will function as a BDC. In general, this parameter should be set to 'No' only on a BDC. + </para> + +</description> +<value type="default">auto</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/browse/enhancedbrowsing.xml b/docs-xml/smbdotconf/browse/enhancedbrowsing.xml new file mode 100644 index 0000000..7ad8930 --- /dev/null +++ b/docs-xml/smbdotconf/browse/enhancedbrowsing.xml @@ -0,0 +1,27 @@ +<samba:parameter name="enhanced browsing" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option enables a couple of enhancements to + cross-subnet browse propagation that have been added in Samba + but which are not standard in Microsoft implementations. + </para> + + <para>The first enhancement to browse propagation consists of a regular + wildcard query to a Samba WINS server for all Domain Master Browsers, + followed by a browse synchronization with each of the returned + DMBs. The second enhancement consists of a regular randomised browse + synchronization with all currently known DMBs.</para> + + <para>You may wish to disable this option if you have a problem with empty + workgroups not disappearing from browse lists. Due to the restrictions + of the browse protocols, these enhancements can cause a empty workgroup + to stay around forever which can be annoying.</para> + + <para>In general you should leave this option enabled as it makes + cross-subnet browse propagation much more reliable.</para> + +</description> +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/browse/lmannounce.xml b/docs-xml/smbdotconf/browse/lmannounce.xml new file mode 100644 index 0000000..1ec5052 --- /dev/null +++ b/docs-xml/smbdotconf/browse/lmannounce.xml @@ -0,0 +1,26 @@ +<samba:parameter name="lm announce" + context="G" + type="enum" + enumlist="enum_bool_auto" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter determines if <citerefentry><refentrytitle>nmbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> will produce Lanman announce + broadcasts that are needed by OS/2 clients in order for them to see + the Samba server in their browse list. This parameter can have three + values, <constant>yes</constant>, <constant>no</constant>, or + <constant>auto</constant>. The default is <constant>auto</constant>. + If set to <constant>no</constant> Samba will never produce these + broadcasts. If set to <constant>yes</constant> Samba will produce + Lanman announce broadcasts at a frequency set by the parameter + <smbconfoption name="lm interval"/>. If set to <constant>auto</constant> + Samba will not send Lanman announce broadcasts by default but will + listen for them. If it hears such a broadcast on the wire it will + then start sending them at a frequency set by the parameter + <smbconfoption name="lm interval"/>.</para> +</description> + +<related>lm interval</related> +<value type="default">auto</value> +<value type="example">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/browse/lminterval.xml b/docs-xml/smbdotconf/browse/lminterval.xml new file mode 100644 index 0000000..da33658 --- /dev/null +++ b/docs-xml/smbdotconf/browse/lminterval.xml @@ -0,0 +1,17 @@ +<samba:parameter name="lm interval" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>If Samba is set to produce Lanman announce + broadcasts needed by OS/2 clients (see the + <smbconfoption name="lm announce"/> parameter) then this + parameter defines the frequency in seconds with which they will be + made. If this is set to zero then no Lanman announcements will be + made despite the setting of the <smbconfoption name="lm announce"/> + parameter.</para> +</description> +<related>lm announce</related> +<value type="default">60</value> +<value type="example">120</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/browse/localmaster.xml b/docs-xml/smbdotconf/browse/localmaster.xml new file mode 100644 index 0000000..65a288d --- /dev/null +++ b/docs-xml/smbdotconf/browse/localmaster.xml @@ -0,0 +1,21 @@ +<samba:parameter name="local master" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option allows <citerefentry><refentrytitle>nmbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> to try and become a local master browser + on a subnet. If set to <constant>no</constant> then <command moreinfo="none"> + nmbd</command> will not attempt to become a local master browser + on a subnet and will also lose in all browsing elections. By + default this value is set to <constant>yes</constant>. Setting this value to + <constant>yes</constant> doesn't mean that Samba will <emphasis>become</emphasis> the + local master browser on a subnet, just that <command moreinfo="none">nmbd</command> + will <emphasis>participate</emphasis> in elections for local master browser.</para> + + <para>Setting this value to <constant>no</constant> will cause <command + moreinfo="none">nmbd</command> <emphasis>never</emphasis> to become a local +master browser.</para> +</description> +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/browse/oslevel.xml b/docs-xml/smbdotconf/browse/oslevel.xml new file mode 100644 index 0000000..43ba861 --- /dev/null +++ b/docs-xml/smbdotconf/browse/oslevel.xml @@ -0,0 +1,26 @@ +<samba:parameter name="os level" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This integer value controls what level Samba advertises itself as for browse elections. The value of this + parameter determines whether <citerefentry><refentrytitle>nmbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> has a chance of becoming a local master browser for the <smbconfoption + name="workgroup"/> in the local broadcast area. +</para> + + <para><emphasis> + Note:</emphasis> By default, Samba will win a local master browsing election over all Microsoft operating + systems except a Windows NT 4.0/2000 Domain Controller. This means that a misconfigured Samba host can + effectively isolate a subnet for browsing purposes. This parameter is largely auto-configured in the Samba-3 + release series and it is seldom necessary to manually override the default setting. Please refer to + the chapter on Network Browsing in the Samba-3 HOWTO document for further information regarding the use + of this parameter. + <emphasis>Note:</emphasis> The maximum value for this parameter is 255. If you use higher values, counting + will start at 0! + </para> +</description> +<value type="default">20</value> +<value type="example">65</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/browse/preferredmaster.xml b/docs-xml/smbdotconf/browse/preferredmaster.xml new file mode 100644 index 0000000..15ebd24 --- /dev/null +++ b/docs-xml/smbdotconf/browse/preferredmaster.xml @@ -0,0 +1,30 @@ +<samba:parameter name="preferred master" + context="G" + type="enum" + enumlist="enum_bool_auto" + function="_preferred_master" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<synonym>prefered master</synonym> + <description> + <para> + This boolean parameter controls if <citerefentry><refentrytitle>nmbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> is a preferred master browser for its workgroup. + </para> + + <para> + If this is set to <constant>yes</constant>, on startup, <command moreinfo="none">nmbd</command> will force + an election, and it will have a slight advantage in winning the election. It is recommended that this + parameter is used in conjunction with <smbconfoption name="domain master">yes</smbconfoption>, so that + <command moreinfo="none">nmbd</command> can guarantee becoming a domain master. + </para> + + <para> + Use this option with caution, because if there are several hosts (whether Samba servers, Windows 95 or NT) + that are preferred master browsers on the same subnet, they will each periodically and continuously attempt + to become the local master browser. This will result in unnecessary broadcast traffic and reduced browsing + capabilities. + </para> +</description> +<related>os level</related> +<value type="default">auto</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/domain/allowdnsupdates.xml b/docs-xml/smbdotconf/domain/allowdnsupdates.xml new file mode 100644 index 0000000..6c0a0d0 --- /dev/null +++ b/docs-xml/smbdotconf/domain/allowdnsupdates.xml @@ -0,0 +1,19 @@ +<samba:parameter name="allow dns updates" + context="G" + type="enum" + enumlist="enum_dns_update_settings" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option determines what kind of updates to the DNS are allowed. + </para> + + <para>DNS updates can either be disallowed completely by setting it to + <constant>disabled</constant>, enabled over secure connections only by + setting it to <constant>secure only</constant> or allowed in all cases + by setting it to <constant>nonsecure</constant>. + </para> +</description> + +<value type="default">secure only</value> +<value type="example">disabled</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/domain/dnsforwarder.xml b/docs-xml/smbdotconf/domain/dnsforwarder.xml new file mode 100644 index 0000000..cf8875e --- /dev/null +++ b/docs-xml/smbdotconf/domain/dnsforwarder.xml @@ -0,0 +1,21 @@ +<samba:parameter name="dns forwarder" + context="G" + type="cmdlist" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option specifies the list of DNS servers that DNS requests will be + forwarded to if they can not be handled by Samba itself. + </para> + + <para>The DNS forwarder is only used if the internal DNS server + in Samba is used. Port numbers can be appended by separating them from + the address by using a colon (':'). When specifying a port, IPv6 + addresses must be enclosed in square brackets ('[' and ']'). IPv6 + forwarder addresses with no port specified, don't need the square + brackets, and default to port 53. + </para> +</description> + +<value type="default"></value> +<value type="example">192.168.0.1 192.168.0.2 ::1 [2001:db8::1] [2001:db8:1:2::1]:54 </value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/domain/dnsupdatecommand.xml b/docs-xml/smbdotconf/domain/dnsupdatecommand.xml new file mode 100644 index 0000000..40cbc5b --- /dev/null +++ b/docs-xml/smbdotconf/domain/dnsupdatecommand.xml @@ -0,0 +1,14 @@ +<samba:parameter name="dns update command" + context="G" + type="cmdlist" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option sets the command that is called when there are + DNS updates. It should update the local machines DNS names using + TSIG-GSS. + </para> +</description> + +<value type="default">&pathconfig.SCRIPTSBINDIR;/samba_dnsupdate</value> +<value type="example">/usr/local/sbin/dnsupdate</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/domain/dnszonescavenging.xml b/docs-xml/smbdotconf/domain/dnszonescavenging.xml new file mode 100644 index 0000000..80ec144 --- /dev/null +++ b/docs-xml/smbdotconf/domain/dnszonescavenging.xml @@ -0,0 +1,23 @@ +<samba:parameter name="dns zone scavenging" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + When enabled (the default is disabled) unused dynamic dns records are + periodically removed. + </para> + <warning><para> + This option should not be enabled for installations created with + versions of samba before 4.9. Doing this will result in the loss of + static DNS entries. This is due to a bug in previous versions + of samba (BUG 12451) which marked dynamic DNS records as static and + static records as dynamic. + </para></warning> + <note><para> + If one record for a DNS name is static (non-aging) then no other record + for that DNS name will be scavenged. + </para></note> +</description> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/domain/dnszonetransferclientsallow.xml b/docs-xml/smbdotconf/domain/dnszonetransferclientsallow.xml new file mode 100644 index 0000000..cf01742 --- /dev/null +++ b/docs-xml/smbdotconf/domain/dnszonetransferclientsallow.xml @@ -0,0 +1,26 @@ +<samba:parameter name="dns zone transfer clients allow" + context="G" + type="cmdlist" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option specifies the list of IPs authorized to ask for dns zone + transfer from bind DLZ module. + </para> + + <para>The IP list is comma and space separated and specified in the same + syntax as used in <smbconfoption name="hosts allow"/>, specifically + including IP address, IP prefixes and IP address masks. + </para> + + <para>As this is a DNS server option, hostnames are naturally not permitted. + </para> + + <para>The default behaviour is to deny any request. + A request will be authorized only if the emitting client is identified + in this list, and not in <smbconfoption name="dns zone transfer clients deny"/> + </para> +</description> + +<value type="default"></value> +<value type="example">192.168.0.1</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/domain/dnszonetransferclientsdeny.xml b/docs-xml/smbdotconf/domain/dnszonetransferclientsdeny.xml new file mode 100644 index 0000000..8ff8531 --- /dev/null +++ b/docs-xml/smbdotconf/domain/dnszonetransferclientsdeny.xml @@ -0,0 +1,26 @@ +<samba:parameter name="dns zone transfer clients deny" + context="G" + type="cmdlist" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option specifies the list of IPs denied to ask for dns zone + transfer from bind DLZ module. + </para> + + <para>The IP list is comma and space separated and specified in the same + syntax as used in <smbconfoption name="hosts allow"/>, specifically + including IP address, IP prefixes and IP address masks. + </para> + + <para>As this is a DNS server option, hostnames are naturally not permitted. + </para> + + <para>If a client identified in this list sends a zone transfer request, it will always + be denied, even if they are in <smbconfoption name="dns zone transfer clients allow"/>. + This allows the definition of specific denied clients within an authorized subnet. + </para> +</description> + +<value type="default"></value> +<value type="example">192.168.0.1</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/domain/gpoupdatecommand.xml b/docs-xml/smbdotconf/domain/gpoupdatecommand.xml new file mode 100644 index 0000000..fd0e7bf --- /dev/null +++ b/docs-xml/smbdotconf/domain/gpoupdatecommand.xml @@ -0,0 +1,17 @@ +<samba:parameter name="gpo update command" + context="G" + type="list" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option sets the command that is called to apply GPO policies. + The samba-gpupdate script applies System Access and Kerberos Policies + to the KDC. System Access policies set minPwdAge, maxPwdAge, + minPwdLength, and pwdProperties in the samdb. Kerberos Policies set + kdc:service ticket lifetime, kdc:user ticket lifetime, and kdc:renewal + lifetime in smb.conf. + </para> +</description> + +<value type="default">&pathconfig.SCRIPTSBINDIR;/samba-gpupdate</value> +<value type="example">/usr/local/sbin/gpoupdate</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/domain/machinepasswordtimeout.xml b/docs-xml/smbdotconf/domain/machinepasswordtimeout.xml new file mode 100644 index 0000000..be4e0e9 --- /dev/null +++ b/docs-xml/smbdotconf/domain/machinepasswordtimeout.xml @@ -0,0 +1,25 @@ +<samba:parameter name="machine password timeout" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + <description> + + <para> + If a Samba server is a member of a Windows NT or Active Directory Domain (see the <smbconfoption + name="security">domain</smbconfoption> and + <smbconfoption name="security">ads</smbconfoption> parameters), + then periodically a running winbindd process will try and change + the MACHINE ACCOUNT PASSWORD stored in the TDB called <filename moreinfo="none">secrets.tdb + </filename>. This parameter specifies how often this password will be changed, in seconds. The default is one + week (expressed in seconds), the same as a Windows NT Domain member server. + </para> + + <para> + See also <citerefentry><refentrytitle>smbpasswd</refentrytitle> <manvolnum>8</manvolnum></citerefentry>, + and the <smbconfoption name="security">domain</smbconfoption> + and <smbconfoption name="security">ads</smbconfoption> parameters. + </para> + +</description> +<value type="default">604800</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/domain/nsupdatecommand.xml b/docs-xml/smbdotconf/domain/nsupdatecommand.xml new file mode 100644 index 0000000..8978ade --- /dev/null +++ b/docs-xml/smbdotconf/domain/nsupdatecommand.xml @@ -0,0 +1,12 @@ +<samba:parameter name="nsupdate command" + context="G" + type="cmdlist" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option sets the path to the <filename>nsupdate</filename> + command which is used for GSS-TSIG dynamic DNS updates. + </para> +</description> + +<value type="default">/usr/bin/nsupdate -g</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/domain/spnupdatecommand.xml b/docs-xml/smbdotconf/domain/spnupdatecommand.xml new file mode 100644 index 0000000..9dcce13 --- /dev/null +++ b/docs-xml/smbdotconf/domain/spnupdatecommand.xml @@ -0,0 +1,13 @@ +<samba:parameter name="spn update command" + context="G" + type="cmdlist" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option sets the command that for updating + servicePrincipalName names from <filename>spn_update_list</filename>. + </para> +</description> + +<value type="default">&pathconfig.SCRIPTSBINDIR;/samba_spnupdate</value> +<value type="example">/usr/local/sbin/spnupdate</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/filename/casesensitive.xml b/docs-xml/smbdotconf/filename/casesensitive.xml new file mode 100644 index 0000000..f0e53be --- /dev/null +++ b/docs-xml/smbdotconf/filename/casesensitive.xml @@ -0,0 +1,13 @@ +<samba:parameter name="case sensitive" + context="S" + type="enum" + enumlist="enum_bool_auto" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<synonym>casesignames</synonym> + +<description> + <para>See the discussion in the section <smbconfoption name="name mangling"/>.</para> +</description> + +<value type="default">auto</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/filename/defaultcase.xml b/docs-xml/smbdotconf/filename/defaultcase.xml new file mode 100644 index 0000000..988bad9 --- /dev/null +++ b/docs-xml/smbdotconf/filename/defaultcase.xml @@ -0,0 +1,11 @@ +<samba:parameter name="default case" + context="S" + type="enum" + enumlist="enum_case" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>See the section on <smbconfoption name="name mangling"/>. + Also note the <smbconfoption name="short preserve case"/> parameter.</para> +</description> +<value type="default">lower</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/filename/deletevetofiles.xml b/docs-xml/smbdotconf/filename/deletevetofiles.xml new file mode 100644 index 0000000..570d4ac --- /dev/null +++ b/docs-xml/smbdotconf/filename/deletevetofiles.xml @@ -0,0 +1,29 @@ +<samba:parameter name="delete veto files" + type="boolean" + context="S" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option is used when Samba is attempting to + delete a directory that contains one or more vetoed files + or directories or non-visible files or directories (such + as dangling symlinks that point nowhere). + (see the <smbconfoption name="veto files"/>, <smbconfoption name="hide special files"/>, + <smbconfoption name="hide unreadable"/>, <smbconfoption name="hide unwriteable files"/> + options). If this option is set to <constant>no</constant> (the default) then if a vetoed + directory contains any non-vetoed files or directories then the + directory delete will fail. This is usually what you want.</para> + + <para>If this option is set to <constant>yes</constant>, then Samba + will attempt to recursively delete any files and directories within + the vetoed directory. This can be useful for integration with file + serving systems such as NetAtalk which create meta-files within + directories you might normally veto DOS/Windows users from seeing + (e.g. <filename moreinfo="none">.AppleDouble</filename>)</para> + + <para>Setting <smbconfoption name="delete veto files">yes</smbconfoption> allows these + directories to be transparently deleted when the parent directory + is deleted (so long as the user has permissions to do so).</para> +</description> +<related>veto files</related> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/filename/hidedotfiles.xml b/docs-xml/smbdotconf/filename/hidedotfiles.xml new file mode 100644 index 0000000..54e0b0a --- /dev/null +++ b/docs-xml/smbdotconf/filename/hidedotfiles.xml @@ -0,0 +1,10 @@ +<samba:parameter name="hide dot files" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This is a boolean parameter that controls whether + files starting with a dot appear as hidden files.</para> +</description> +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/filename/hidefiles.xml b/docs-xml/smbdotconf/filename/hidefiles.xml new file mode 100644 index 0000000..d4e3da3 --- /dev/null +++ b/docs-xml/smbdotconf/filename/hidefiles.xml @@ -0,0 +1,47 @@ +<samba:parameter name="hide files" + type="string" + context="S" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This is a list of files or directories that are not + visible but are accessible. The DOS 'hidden' attribute is applied + to any files or directories that match.</para> + + <para>Each entry in the list must be separated by a '/', + which allows spaces to be included in the entry. '*' + and '?' can be used to specify multiple files or directories + as in DOS wildcards.</para> + + <para>Each entry must be a Unix path, not a DOS path and must + not include the Unix directory separator '/'.</para> + + <para>Note that the case sensitivity option is applicable + in hiding files.</para> + + <para>Setting this parameter will affect the performance of Samba, + as it will be forced to check all files and directories for a match + as they are scanned.</para> + + <para> + The example shown above is based on files that the Macintosh + SMB client (DAVE) available from <ulink url="http://www.thursby.com"> + Thursby</ulink> creates for internal use, and also still hides + all files beginning with a dot. + </para> + + <para> + An example of us of this parameter is: +<programlisting> +hide files = /.*/DesktopFolderDB/TrashFor%m/resource.frk/ +</programlisting> + </para> +</description> + +<related>hide dot files</related> +<related>veto files</related> +<related>case sensitive</related> + +<value type="default"><comment>no file are hidden</comment></value> + +</samba:parameter> diff --git a/docs-xml/smbdotconf/filename/hidenewfilestimeout.xml b/docs-xml/smbdotconf/filename/hidenewfilestimeout.xml new file mode 100644 index 0000000..ca93e72 --- /dev/null +++ b/docs-xml/smbdotconf/filename/hidenewfilestimeout.xml @@ -0,0 +1,15 @@ +<samba:parameter name="hide new files timeout" + context="S" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + <description> + <para>Setting this parameter to something but 0 hides files + that have been modified less than N seconds ago.</para> + <para>It can be used for ingest/process queue style workloads. A + processing application should only see files that are definitely + finished. As many applications do not have proper external workflow + control, this can be a way to make sure processing does not + interfere with file ingest.</para> +</description> +<value type="default">0</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/filename/hidespecialfiles.xml b/docs-xml/smbdotconf/filename/hidespecialfiles.xml new file mode 100644 index 0000000..904fd3a --- /dev/null +++ b/docs-xml/smbdotconf/filename/hidespecialfiles.xml @@ -0,0 +1,14 @@ +<samba:parameter name="hide special files" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + + <para> + This parameter prevents clients from seeing special files such as sockets, devices and + fifo's in directory listings. + </para> + +</description> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/filename/hideunreadable.xml b/docs-xml/smbdotconf/filename/hideunreadable.xml new file mode 100644 index 0000000..080118e --- /dev/null +++ b/docs-xml/smbdotconf/filename/hideunreadable.xml @@ -0,0 +1,13 @@ +<samba:parameter name="hide unreadable" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + <description> + <para>This parameter prevents clients from seeing the + existence of files that cannot be read. Defaults to off.</para> + <para>Please note that enabling this can slow down listing large + directories significantly. Samba has to evaluate the ACLs of all + directory members, which can be a lot of effort.</para> +</description> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/filename/hideunwriteablefiles.xml b/docs-xml/smbdotconf/filename/hideunwriteablefiles.xml new file mode 100644 index 0000000..58c872e --- /dev/null +++ b/docs-xml/smbdotconf/filename/hideunwriteablefiles.xml @@ -0,0 +1,15 @@ +<samba:parameter name="hide unwriteable files" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter prevents clients from seeing the existence of files that cannot be written to. + Defaults to off. Note that unwriteable directories are shown as usual. + </para> + <para>Please note that enabling this can slow down listing large + directories significantly. Samba has to evaluate the ACLs of all directory + members, which can be a lot of effort.</para> +</description> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/filename/manglednames.xml b/docs-xml/smbdotconf/filename/manglednames.xml new file mode 100644 index 0000000..aac0a6d --- /dev/null +++ b/docs-xml/smbdotconf/filename/manglednames.xml @@ -0,0 +1,77 @@ +<samba:parameter name="mangled names" + type="enum" + enumlist="enum_mangled_names" + context="S" + parm="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This controls whether non-DOS names under UNIX + should be mapped to DOS-compatible names ("mangled") and made visible, + or whether non-DOS names should simply be ignored.</para> + + <para>See the section on <smbconfoption name="name mangling"/> for + details on how to control the mangling process.</para> + + <para>Possible option settings are</para> + + <itemizedlist> + <listitem><para><emphasis>yes</emphasis> - + enables name mangling for all not DOS 8.3 conforming + names.</para></listitem> + + <listitem><para><emphasis>no</emphasis> - disables any + name mangling.</para></listitem> + + <listitem><para><emphasis>illegal (default)</emphasis> - does + mangling for names with illegal NTFS characters. This + is the most sensible setting for modern clients that + don't use the shortname anymore.</para></listitem> + </itemizedlist> + + <para>If mangling is used then the mangling method is as follows:</para> + + <itemizedlist> + <listitem> + <para>The first (up to) five alphanumeric characters + before the rightmost dot of the filename are preserved, forced + to upper case, and appear as the first (up to) five characters + of the mangled name.</para> + </listitem> + + <listitem> + <para>A tilde "~" is appended to the first part of the mangled + name, followed by a two-character unique sequence, based on the + original root name (i.e., the original filename minus its final + extension). The final extension is included in the hash calculation + only if it contains any upper case characters or is longer than three + characters.</para> + + <para>Note that the character to use may be specified using + the <smbconfoption name="mangling char"/> + option, if you don't like '~'.</para> + </listitem> + + <listitem> + <para>Files whose UNIX name begins with a dot will be + presented as DOS hidden files. The mangled name will be created as + for other filenames, but with the leading dot removed and "___" as + its extension regardless of actual original extension (that's three + underscores).</para> + </listitem> + </itemizedlist> + + <para>The two-digit hash value consists of upper case alphanumeric characters.</para> + + <para>This algorithm can cause name collisions only if files + in a directory share the same first five alphanumeric characters. + The probability of such a clash is 1/1300.</para> + + <para>The name mangling (if enabled) allows a file to be + copied between UNIX directories from Windows/DOS while retaining + the long UNIX filename. UNIX files can be renamed to a new extension + from Windows/DOS and will retain the same basename. Mangled names + do not change between sessions.</para> +</description> +<value type="default">illegal</value> +<value type="example">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/filename/mangleprefix.xml b/docs-xml/smbdotconf/filename/mangleprefix.xml new file mode 100644 index 0000000..8cb7dea --- /dev/null +++ b/docs-xml/smbdotconf/filename/mangleprefix.xml @@ -0,0 +1,18 @@ +<samba:parameter name="mangle prefix" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> controls the number of prefix + characters from the original name used when generating + the mangled names. A larger value will give a weaker + hash and therefore more name collisions. The minimum + value is 1 and the maximum value is 6.</para> + + <para> + mangle prefix is effective only when mangling method is hash2. + </para> +</description> +<value type="default">1</value> +<value type="example">4</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/filename/manglingchar.xml b/docs-xml/smbdotconf/filename/manglingchar.xml new file mode 100644 index 0000000..374d1ee --- /dev/null +++ b/docs-xml/smbdotconf/filename/manglingchar.xml @@ -0,0 +1,14 @@ +<samba:parameter name="mangling char" + context="S" + type="char" + parm="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + <description> + <para>This controls what character is used as + the <emphasis>magic</emphasis> character in <smbconfoption name="name mangling"/>. The + default is a '~' but this may interfere with some software. Use this option to set + it to whatever you prefer. This is effective only when mangling method is hash.</para> +</description> +<value type="default">~</value> +<value type="example">^</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/filename/manglingmethod.xml b/docs-xml/smbdotconf/filename/manglingmethod.xml new file mode 100644 index 0000000..559ed6c --- /dev/null +++ b/docs-xml/smbdotconf/filename/manglingmethod.xml @@ -0,0 +1,17 @@ +<samba:parameter name="mangling method" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> controls the algorithm used for the generating + the mangled names. Can take two different values, "hash" and + "hash2". "hash" is the algorithm that was + used in Samba for many years and was the default in Samba 2.2.x "hash2" is + now the default and is newer and considered a better algorithm (generates less collisions) in + the names. Many Win32 applications store the mangled names and so + changing to algorithms must not be done lightly as these applications + may break unless reinstalled.</para> +</description> +<value type="default">hash2</value> +<value type="example">hash</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/filename/maparchive.xml b/docs-xml/smbdotconf/filename/maparchive.xml new file mode 100644 index 0000000..44f49cd --- /dev/null +++ b/docs-xml/smbdotconf/filename/maparchive.xml @@ -0,0 +1,29 @@ +<samba:parameter name="map archive" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This controls whether the DOS archive attribute + should be mapped to the UNIX owner execute bit. The DOS archive bit + is set when a file has been modified since its last backup. One + motivation for this option is to keep Samba/your PC from making + any file it touches from becoming executable under UNIX. This can + be quite annoying for shared source code, documents, etc... + </para> + + <para> + Note that this parameter will be ignored if the <smbconfoption name="store dos attributes"/> + parameter is set, as the DOS archive attribute will then be stored inside a UNIX extended + attribute. + </para> + + <para> + Note that this requires the <smbconfoption name="create mask"/> parameter to be set such that owner + execute bit is not masked out (i.e. it must include 100). See the parameter + <smbconfoption name="create mask"/> for details. + </para> +</description> + +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/filename/maphidden.xml b/docs-xml/smbdotconf/filename/maphidden.xml new file mode 100644 index 0000000..3ad05a6 --- /dev/null +++ b/docs-xml/smbdotconf/filename/maphidden.xml @@ -0,0 +1,24 @@ +<samba:parameter name="map hidden" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This controls whether DOS style hidden files should be mapped to the UNIX world execute bit. + </para> + + <para> + Note that this parameter will be ignored if the <smbconfoption name="store dos attributes"/> + parameter is set, as the DOS hidden attribute will then be stored inside a UNIX extended + attribute. + </para> + + <para> + Note that this requires the <smbconfoption name="create mask"/> to be set such that the world execute + bit is not masked out (i.e. it must include 001). See the parameter <smbconfoption name="create mask"/> + for details. + </para> + +</description> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/filename/mapreadonly.xml b/docs-xml/smbdotconf/filename/mapreadonly.xml new file mode 100644 index 0000000..dae17c2 --- /dev/null +++ b/docs-xml/smbdotconf/filename/mapreadonly.xml @@ -0,0 +1,61 @@ +<samba:parameter name="map readonly" + context="S" + type="enum" + enumlist="enum_map_readonly" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This controls how the DOS read only attribute should be mapped from a UNIX filesystem. + </para> + + <para> + This parameter can take three different values, which tell <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> how to display the read only attribute on files, where either + <smbconfoption name="store dos attributes"/> is set to <constant>No</constant>, or no extended attribute is + present. If <smbconfoption name="store dos attributes"/> is set to <constant>yes</constant> then this + parameter is <emphasis>ignored</emphasis>. This is a new parameter introduced in Samba version 3.0.21. + </para> + + <para>The three settings are :</para> + + <itemizedlist> + <listitem><para> + <constant>Yes</constant> - The read only DOS attribute is mapped to the inverse of the user + or owner write bit in the unix permission mode set. If the owner write bit is not set, the + read only attribute is reported as being set on the file. + If the read only DOS attribute is set, Samba sets the owner, group and + others write bits to zero. Write bits set in an ACL are ignored by Samba. + If the read only DOS attribute is unset, Samba simply sets the write bit of the + owner to one. + </para></listitem> + + <listitem><para> + <constant>Permissions</constant> - The read only DOS attribute is mapped to the effective permissions of + the connecting user, as evaluated by <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> by reading the unix permissions and POSIX ACL (if present). + If the connecting user does not have permission to modify the file, the read only attribute + is reported as being set on the file. + </para></listitem> + + <listitem><para> + <constant>No</constant> - The read only DOS attribute is unaffected by permissions, and can only be set by + the <smbconfoption name="store dos attributes"/> method. This may be useful for exporting mounted CDs. + </para></listitem> + </itemizedlist> + + <para> + Note that this parameter will be ignored if the <smbconfoption name="store dos attributes"/> + parameter is set, as the DOS 'read-only' attribute will then be stored inside a UNIX extended + attribute. + </para> + + <para> + The default has changed to no in Samba release 4.9.0 and above to allow better Windows + fileserver compatibility in a default install. In addition the default setting of + <smbconfoption name="store dos attributes"/> has been changed to <constant>Yes</constant> + in Samba release 4.9.0 and above. + </para> + +</description> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/filename/mapsystem.xml b/docs-xml/smbdotconf/filename/mapsystem.xml new file mode 100644 index 0000000..53c11bd --- /dev/null +++ b/docs-xml/smbdotconf/filename/mapsystem.xml @@ -0,0 +1,23 @@ +<samba:parameter name="map system" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This controls whether DOS style system files should be mapped to the UNIX group execute bit. + </para> + + <para> + Note that this parameter will be ignored if the <smbconfoption name="store dos attributes"/> + parameter is set, as the DOS system attribute will then be stored inside a UNIX extended + attribute. + </para> + + <para> + Note that this requires the <smbconfoption name="create mask"/> to be set such that the group + execute bit is not masked out (i.e. it must include 010). See the parameter + <smbconfoption name="create mask"/> for details. + </para> +</description> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/filename/maxstatcachesize.xml b/docs-xml/smbdotconf/filename/maxstatcachesize.xml new file mode 100644 index 0000000..866d74d --- /dev/null +++ b/docs-xml/smbdotconf/filename/maxstatcachesize.xml @@ -0,0 +1,18 @@ +<samba:parameter name="max stat cache size" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter limits the size in memory of any + <parameter moreinfo="none">stat cache</parameter> being used + to speed up case insensitive name mappings. It represents + the number of kilobyte (1024) units the stat cache can use. + A value of zero, meaning unlimited, is not advisable due to + increased memory usage. You should not need to change this + parameter. + </para> +</description> +<related>stat cache</related> +<value type="default">512</value> +<value type="example">100</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/filename/preservecase.xml b/docs-xml/smbdotconf/filename/preservecase.xml new file mode 100644 index 0000000..a7eae26 --- /dev/null +++ b/docs-xml/smbdotconf/filename/preservecase.xml @@ -0,0 +1,17 @@ +<samba:parameter name="preserve case" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This controls if new filenames are created with the case that the client passes, or if + they are forced to be the <smbconfoption name="default case"/>. + </para> + + <para> + See the section on <link linkend="NAMEMANGLINGSECT">NAME MANGLING</link> for a fuller discussion. + </para> +</description> + +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/filename/shortpreservecase.xml b/docs-xml/smbdotconf/filename/shortpreservecase.xml new file mode 100644 index 0000000..ecb5652 --- /dev/null +++ b/docs-xml/smbdotconf/filename/shortpreservecase.xml @@ -0,0 +1,16 @@ +<samba:parameter name="short preserve case" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This boolean parameter controls if new files which conform to 8.3 syntax, that is all in upper case and of + suitable length, are created upper case, or if they are forced to be the <smbconfoption name="default case"/>. + This option can be use with <smbconfoption name="preserve case">yes</smbconfoption> to permit long filenames + to retain their case, while short names are lowered. + </para> + + <para>See the section on <link linkend="NAMEMANGLINGSECT">NAME MANGLING</link>.</para> +</description> +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/filename/statcache.xml b/docs-xml/smbdotconf/filename/statcache.xml new file mode 100644 index 0000000..2b19777 --- /dev/null +++ b/docs-xml/smbdotconf/filename/statcache.xml @@ -0,0 +1,12 @@ +<samba:parameter name="stat cache" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter determines if <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> will use a cache in order to + speed up case insensitive name mappings. You should never need + to change this parameter.</para> +</description> +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/filename/storedosattributes.xml b/docs-xml/smbdotconf/filename/storedosattributes.xml new file mode 100644 index 0000000..2cdaeef --- /dev/null +++ b/docs-xml/smbdotconf/filename/storedosattributes.xml @@ -0,0 +1,30 @@ +<samba:parameter name="store dos attributes" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + If this parameter is set Samba attempts to first read DOS attributes (SYSTEM, HIDDEN, ARCHIVE or + READ-ONLY) from a filesystem extended attribute, before mapping DOS attributes to UNIX permission bits (such + as occurs with <smbconfoption name="map hidden"/> and <smbconfoption name="map readonly"/>). When set, DOS + attributes will be stored onto an extended attribute in the UNIX filesystem, associated with the file or + directory. When this parameter is set it will override the parameters <smbconfoption name="map hidden"/>, + <smbconfoption name="map system"/>, <smbconfoption name="map archive"/> and <smbconfoption name="map + readonly"/> and they will behave as if they were set to off. This parameter writes the DOS attributes as a string into the extended + attribute named "user.DOSATTRIB". This extended attribute is explicitly hidden from smbd clients requesting an + EA list. On Linux the filesystem must have been mounted with the mount option user_xattr in order for + extended attributes to work, also extended attributes must be compiled into the Linux kernel. + + In Samba 3.5.0 and above the "user.DOSATTRIB" extended attribute has been extended to store + the create time for a file as well as the DOS attributes. This is done in a backwards compatible + way so files created by Samba 3.5.0 and above can still have the DOS attribute read from this + extended attribute by earlier versions of Samba, but they will not be able to read the create + time stored there. Storing the create time separately from the normal filesystem meta-data + allows Samba to faithfully reproduce NTFS semantics on top of a POSIX filesystem. + + The default has changed to yes in Samba release 4.9.0 and above to allow better Windows + fileserver compatibility in a default install. + </para> +</description> +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/filename/vetofiles.xml b/docs-xml/smbdotconf/filename/vetofiles.xml new file mode 100644 index 0000000..11bb51e --- /dev/null +++ b/docs-xml/smbdotconf/filename/vetofiles.xml @@ -0,0 +1,53 @@ +<samba:parameter name="veto files" + context="S" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + <description> + <para> + This is a list of files and directories that are neither visible nor accessible. Each entry in + the list must be separated by a '/', which allows spaces to be included in the entry. '*' and '?' + can be used to specify multiple files or directories as in DOS wildcards. + </para> + + <para> + Each entry must be a unix path, not a DOS path and must <emphasis>not</emphasis> include the + unix directory separator '/'. + </para> + + <para> + Note that the <smbconfoption name="case sensitive"/> option is applicable in vetoing files. + </para> + + <para> + One feature of the veto files parameter that it is important to be aware of is Samba's behaviour when + trying to delete a directory. If a directory that is to be deleted contains nothing but veto files this + deletion will <emphasis>fail</emphasis> unless you also set the <smbconfoption name="delete veto files"/> + parameter to <parameter moreinfo="none">yes</parameter>. + </para> + + <para> + Setting this parameter will affect the performance of Samba, as it will be forced to check all files + and directories for a match as they are scanned. + </para> + + <para> + Examples of use include: +<programlisting> +; Veto any files containing the word Security, +; any ending in .tmp, and any directory containing the +; word root. +veto files = /*Security*/*.tmp/*root*/ + +; Veto the Apple specific files that a NetAtalk server +; creates. +veto files = /.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/ +</programlisting> + </para> + +</description> +<related>hide files</related> +<related>case sensitive</related> + +<value type="default"><comment>No files or directories are vetoed</comment></value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/filename/vetooplockfiles.xml b/docs-xml/smbdotconf/filename/vetooplockfiles.xml new file mode 100644 index 0000000..8d6a922 --- /dev/null +++ b/docs-xml/smbdotconf/filename/vetooplockfiles.xml @@ -0,0 +1,33 @@ +<samba:parameter name="veto oplock files" + context="S" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + <description> + <para> + This parameter is only valid when the <smbconfoption name="oplocks"/> + parameter is turned on for a share. It allows the Samba administrator + to selectively turn off the granting of oplocks on selected files that + match a wildcarded list, similar to the wildcarded list used in the + <smbconfoption name="veto files"/> parameter. + </para> + + + <para> + You might want to do this on files that you know will be heavily contended + for by clients. A good example of this is in the NetBench SMB benchmark + program, which causes heavy client contention for files ending in + <filename moreinfo="none">.SEM</filename>. To cause Samba not to grant + oplocks on these files you would use the line (either in the [global] + section or in the section for the particular NetBench share. + </para> + + <para> + An example of use is: +<programlisting> +veto oplock files = /.*SEM/ +</programlisting> + </para> +</description> +<value type="default"><comment>No files are vetoed for oplock grants</comment></value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/generate-context.xsl b/docs-xml/smbdotconf/generate-context.xsl new file mode 100644 index 0000000..6204ddb --- /dev/null +++ b/docs-xml/smbdotconf/generate-context.xsl @@ -0,0 +1,49 @@ +<?xml version='1.0'?> +<!-- vim:set sts=2 shiftwidth=2 syntax=xml: --> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:exsl="http://exslt.org/common" + xmlns:samba="https://www.samba.org/common" + version="1.1" + extension-element-prefixes="exsl"> + +<xsl:output method="xml" omit-xml-declaration="yes"/> + +<xsl:param name="smb.context" select="'G'"/> + +<!-- This is needed to copy content unchanged --> +<xsl:template match="@*|node()"> + <xsl:copy> + <xsl:apply-templates select="@*|node()"/> + </xsl:copy> +</xsl:template> + +<xsl:template match="variablelist"> + <xsl:element name="itemizedlist"> + <xsl:apply-templates/> + </xsl:element> +</xsl:template> + +<xsl:template match="//samba:parameter"> + <xsl:variable name="name"><xsl:value-of select="translate(translate(string(@name),' ',''), + 'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/> + </xsl:variable> + + <xsl:if test="contains(@context,$smb.context) or $smb.context='ALL'"> + <xsl:element name="listitem"> + <xsl:element name="para"> + <xsl:element name="link"> + <xsl:attribute name="linkend"> + <xsl:value-of select="$name"/> + </xsl:attribute> + <xsl:element name="parameter"> + <xsl:attribute name="moreinfo"><xsl:text>none</xsl:text></xsl:attribute> + <xsl:value-of select="@name"/> + </xsl:element> + </xsl:element> + </xsl:element> + </xsl:element> + <xsl:text> </xsl:text> + </xsl:if> +</xsl:template> + +</xsl:stylesheet> diff --git a/docs-xml/smbdotconf/generate-file-list.sh b/docs-xml/smbdotconf/generate-file-list.sh new file mode 100755 index 0000000..dd981b3 --- /dev/null +++ b/docs-xml/smbdotconf/generate-file-list.sh @@ -0,0 +1,23 @@ +#!/bin/sh +# +set -e +echo "<!DOCTYPE section [" +$(dirname $0)/../generate-pathconf-entities.sh + +echo "]>" + +DIR=. +if [ "x$1" != "x" ]; then + DIR="$1" +fi + +OLD=$(pwd) +cd $DIR + +echo "<section>" +for I in $(find . -mindepth 2 -type f -name '*.xml' | sort -t/ -k3 | xargs); do + cat $I +done +echo "</section>" + +cd $OLD diff --git a/docs-xml/smbdotconf/ldap/clientldapsaslwrapping.xml b/docs-xml/smbdotconf/ldap/clientldapsaslwrapping.xml new file mode 100644 index 0000000..21bd209 --- /dev/null +++ b/docs-xml/smbdotconf/ldap/clientldapsaslwrapping.xml @@ -0,0 +1,41 @@ +<samba:parameter name="client ldap sasl wrapping" + context="G" + type="enum" + enumlist="enum_ldap_sasl_wrapping" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + The <smbconfoption name="client ldap sasl wrapping"/> defines whether + ldap traffic will be signed or signed and encrypted (sealed). + Possible values are <emphasis>plain</emphasis>, <emphasis>sign</emphasis> + and <emphasis>seal</emphasis>. + </para> + + <para> + The values <emphasis>sign</emphasis> and <emphasis>seal</emphasis> are + only available if Samba has been compiled against a modern + OpenLDAP version (2.3.x or higher). + </para> + + <para> + This option is needed firstly to secure the privacy of + administrative connections from <command>samba-tool</command>, + including in particular new or reset passwords for users. For + this reason the default is <emphasis>seal</emphasis>.</para> + + <para>Additionally, <command>winbindd</command> and the + <command>net</command> tool can use LDAP to communicate with + Domain Controllers, so this option also controls the level of + privacy for those connections. All supported AD DC versions + will enforce the usage of at least signed LDAP connections by + default, so a value of at least <emphasis>sign</emphasis> is + required in practice. + </para> + + <para> + The default value is <emphasis>seal</emphasis>. That implies synchronizing the time + with the KDC in the case of using <emphasis>Kerberos</emphasis>. + </para> +</description> +<value type="default">seal</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/ldap/ldapadmindn.xml b/docs-xml/smbdotconf/ldap/ldapadmindn.xml new file mode 100644 index 0000000..1f3d20f --- /dev/null +++ b/docs-xml/smbdotconf/ldap/ldapadmindn.xml @@ -0,0 +1,20 @@ +<samba:parameter name="ldap admin dn" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + + <para> + The <smbconfoption name="ldap admin dn"/> defines the Distinguished Name (DN) name used by Samba to contact + the ldap server when retrieving user account information. The <smbconfoption name="ldap admin dn"/> is used + in conjunction with the admin dn password stored in the <filename moreinfo="none">private/secrets.tdb</filename> + file. See the <citerefentry><refentrytitle>smbpasswd</refentrytitle> <manvolnum>8</manvolnum></citerefentry> + man page for more information on how to accomplish this. + </para> + + <para> + The <smbconfoption name="ldap admin dn"/> requires a fully specified DN. The <smbconfoption name="ldap + suffix"/> is not appended to the <smbconfoption name="ldap admin dn"/>. + </para> +</description> +</samba:parameter> diff --git a/docs-xml/smbdotconf/ldap/ldapconnectiontimeout.xml b/docs-xml/smbdotconf/ldap/ldapconnectiontimeout.xml new file mode 100644 index 0000000..b176897 --- /dev/null +++ b/docs-xml/smbdotconf/ldap/ldapconnectiontimeout.xml @@ -0,0 +1,21 @@ +<samba:parameter name="ldap connection timeout" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter tells the LDAP library calls which timeout in seconds + they should honor during initial connection establishments to LDAP servers. + It is very useful in failover scenarios in particular. If one or more LDAP + servers are not reachable at all, we do not have to wait until TCP + timeouts are over. This feature must be supported by your LDAP library. + </para> + + <para> + This parameter is different from <smbconfoption name="ldap timeout"/> + which affects operations on LDAP servers using an existing connection + and not establishing an initial connection. + </para> +</description> +<value type="default">2</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/ldap/ldapdeletedn.xml b/docs-xml/smbdotconf/ldap/ldapdeletedn.xml new file mode 100644 index 0000000..47ffad8 --- /dev/null +++ b/docs-xml/smbdotconf/ldap/ldapdeletedn.xml @@ -0,0 +1,13 @@ +<samba:parameter name="ldap delete dn" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> This parameter specifies whether a delete + operation in the ldapsam deletes the complete entry or only the attributes + specific to Samba. + </para> +</description> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/ldap/ldapderef.xml b/docs-xml/smbdotconf/ldap/ldapderef.xml new file mode 100644 index 0000000..920d1ae --- /dev/null +++ b/docs-xml/smbdotconf/ldap/ldapderef.xml @@ -0,0 +1,23 @@ +<samba:parameter name="ldap deref" + context="G" + type="enum" + enumlist="enum_ldap_deref" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + +<description> + + <para>This option controls whether Samba should tell the LDAP library + to use a certain alias dereferencing method. The default is + <emphasis>auto</emphasis>, which means that the default setting of the + ldap client library will be kept. Other possible values are + <emphasis>never</emphasis>, <emphasis>finding</emphasis>, + <emphasis>searching</emphasis> and <emphasis>always</emphasis>. Grab + your LDAP manual for more information. + </para> + +</description> + +<value type="default">auto</value> +<value type="example">searching</value> + +</samba:parameter> diff --git a/docs-xml/smbdotconf/ldap/ldapfollowreferral.xml b/docs-xml/smbdotconf/ldap/ldapfollowreferral.xml new file mode 100644 index 0000000..3130a7b --- /dev/null +++ b/docs-xml/smbdotconf/ldap/ldapfollowreferral.xml @@ -0,0 +1,23 @@ +<samba:parameter name="ldap follow referral" + context="G" + type="enum" + enumlist="enum_bool_auto" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + +<description> + + <para>This option controls whether to follow LDAP referrals or not when + searching for entries in the LDAP database. Possible values are + <emphasis>on</emphasis> to enable following referrals, + <emphasis>off</emphasis> to disable this, and + <emphasis>auto</emphasis>, to use the libldap default settings. + libldap's choice of following referrals or not is set in + /etc/openldap/ldap.conf with the REFERRALS parameter as documented in + ldap.conf(5).</para> + +</description> + +<value type="default">auto</value> +<value type="example">off</value> + +</samba:parameter> diff --git a/docs-xml/smbdotconf/ldap/ldapgroupsuffix.xml b/docs-xml/smbdotconf/ldap/ldapgroupsuffix.xml new file mode 100644 index 0000000..7de0fac --- /dev/null +++ b/docs-xml/smbdotconf/ldap/ldapgroupsuffix.xml @@ -0,0 +1,16 @@ +<samba:parameter name="ldap group suffix" + context="G" + type="string" + function="_ldap_group_suffix" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter specifies the suffix that is + used for groups when these are added to the LDAP directory. + If this parameter is unset, the value of <smbconfoption + name="ldap suffix"/> will be used instead. The suffix string is pre-pended to the + <smbconfoption name="ldap suffix"/> string so use a partial DN.</para> + +</description> +<value type="default"></value> +<value type="example">ou=Groups</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/ldap/ldapidmapsuffix.xml b/docs-xml/smbdotconf/ldap/ldapidmapsuffix.xml new file mode 100644 index 0000000..1fe7e8a --- /dev/null +++ b/docs-xml/smbdotconf/ldap/ldapidmapsuffix.xml @@ -0,0 +1,15 @@ +<samba:parameter name="ldap idmap suffix" + context="G" + type="string" + function="_ldap_idmap_suffix" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameters specifies the suffix that is used when storing idmap mappings. If this parameter + is unset, the value of <smbconfoption name="ldap suffix"/> will be used instead. The suffix + string is pre-pended to the <smbconfoption name="ldap suffix"/> string so use a partial DN. + </para> +</description> +<value type="default"></value> +<value type="example">ou=Idmap</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/ldap/ldapmachinesuffix.xml b/docs-xml/smbdotconf/ldap/ldapmachinesuffix.xml new file mode 100644 index 0000000..e82675b --- /dev/null +++ b/docs-xml/smbdotconf/ldap/ldapmachinesuffix.xml @@ -0,0 +1,17 @@ +<samba:parameter name="ldap machine suffix" + context="G" + type="string" + function="_ldap_machine_suffix" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + +<description> + <para> + It specifies where machines should be added to the ldap tree. If this parameter is unset, the value of + <smbconfoption name="ldap suffix"/> will be used instead. The suffix string is pre-pended to the + <smbconfoption name="ldap suffix"/> string so use a partial DN. + </para> +</description> + +<value type="default"/> +<value type="example">ou=Computers</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/ldap/ldapmaxanonrequest.xml b/docs-xml/smbdotconf/ldap/ldapmaxanonrequest.xml new file mode 100644 index 0000000..61bdcec --- /dev/null +++ b/docs-xml/smbdotconf/ldap/ldapmaxanonrequest.xml @@ -0,0 +1,18 @@ +<samba:parameter name="ldap max anonymous request size" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter specifies the maximum permitted size (in bytes) + for an LDAP request received on an anonymous connection. + </para> + + <para> + If the request size exceeds this limit the request will be + rejected. + </para> +</description> +<value type="default">256000</value> +<value type="example">500000</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/ldap/ldapmaxauthrequest.xml b/docs-xml/smbdotconf/ldap/ldapmaxauthrequest.xml new file mode 100644 index 0000000..c5934f7 --- /dev/null +++ b/docs-xml/smbdotconf/ldap/ldapmaxauthrequest.xml @@ -0,0 +1,18 @@ +<samba:parameter name="ldap max authenticated request size" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter specifies the maximum permitted size (in bytes) + for an LDAP request received on an authenticated connection. + </para> + + <para> + If the request size exceeds this limit the request will be + rejected. + </para> +</description> +<value type="default">16777216</value> +<value type="example">4194304</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/ldap/ldapmaxsearchrequest.xml b/docs-xml/smbdotconf/ldap/ldapmaxsearchrequest.xml new file mode 100644 index 0000000..ebeb081 --- /dev/null +++ b/docs-xml/smbdotconf/ldap/ldapmaxsearchrequest.xml @@ -0,0 +1,18 @@ +<samba:parameter name="ldap max search request size" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter specifies the maximum permitted size (in bytes) + for an LDAP search request. + </para> + + <para> + If the request size exceeds this limit the request will be + rejected. + </para> +</description> +<value type="default">256000</value> +<value type="example">4194304</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/ldap/ldappagesize.xml b/docs-xml/smbdotconf/ldap/ldappagesize.xml new file mode 100644 index 0000000..577ea2a --- /dev/null +++ b/docs-xml/smbdotconf/ldap/ldappagesize.xml @@ -0,0 +1,17 @@ +<samba:parameter name="ldap page size" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter specifies the number of entries per page. + </para> + + <para>If the LDAP server supports paged results, clients can + request subsets of search results (pages) instead of the entire list. + This parameter specifies the size of these pages. + </para> +</description> +<value type="default">1000</value> +<value type="example">512</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/ldap/ldappasswdsync.xml b/docs-xml/smbdotconf/ldap/ldappasswdsync.xml new file mode 100644 index 0000000..42bc916 --- /dev/null +++ b/docs-xml/smbdotconf/ldap/ldappasswdsync.xml @@ -0,0 +1,38 @@ +<samba:parameter name="ldap passwd sync" + context="G" + type="enum" + enumlist="enum_ldap_passwd_sync" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + +<synonym>ldap password sync</synonym> +<description> + <para> + This option is used to define whether or not Samba should sync the LDAP password with the NT + and LM hashes for normal accounts (NOT for workstation, server or domain trusts) on a password + change via SAMBA. + </para> + + <para> + The <smbconfoption name="ldap passwd sync"/> can be set to one of three values: + </para> + + <itemizedlist> + <listitem> + <para><parameter moreinfo="none">Yes</parameter> = Try + to update the LDAP, NT and LM passwords and update the pwdLastSet time.</para> + </listitem> + + <listitem> + <para><parameter moreinfo="none">No</parameter> = Update NT and + LM passwords and update the pwdLastSet time.</para> + </listitem> + + <listitem> + <para><parameter moreinfo="none">Only</parameter> = Only update + the LDAP password and let the LDAP server do the rest.</para> + </listitem> + </itemizedlist> +</description> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/ldap/ldapreplicationsleep.xml b/docs-xml/smbdotconf/ldap/ldapreplicationsleep.xml new file mode 100644 index 0000000..059c77e --- /dev/null +++ b/docs-xml/smbdotconf/ldap/ldapreplicationsleep.xml @@ -0,0 +1,24 @@ +<samba:parameter name="ldap replication sleep" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + When Samba is asked to write to a read-only LDAP replica, we are redirected to talk to the read-write master server. + This server then replicates our changes back to the 'local' server, however the replication might take some seconds, + especially over slow links. Certain client activities, particularly domain joins, can become confused by the 'success' + that does not immediately change the LDAP back-end's data. + </para> + + <para> + This option simply causes Samba to wait a short time, to allow the LDAP server to catch up. If you have a particularly + high-latency network, you may wish to time the LDAP replication with a network sniffer, and increase this value accordingly. + Be aware that no checking is performed that the data has actually replicated. + </para> + + <para> + The value is specified in milliseconds, the maximum value is 5000 (5 seconds). + </para> +</description> +<value type="default">1000</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/ldap/ldapsameditposix.xml b/docs-xml/smbdotconf/ldap/ldapsameditposix.xml new file mode 100644 index 0000000..e7f36e6 --- /dev/null +++ b/docs-xml/smbdotconf/ldap/ldapsameditposix.xml @@ -0,0 +1,91 @@ +<samba:parameter name="ldapsam:editposix" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + + <para> + Editposix is an option that leverages ldapsam:trusted to make it simpler to manage a domain controller + eliminating the need to set up custom scripts to add and manage the posix users and groups. This option + will instead directly manipulate the ldap tree to create, remove and modify user and group entries. + This option also requires a running winbindd as it is used to allocate new uids/gids on user/group + creation. The allocation range must be therefore configured. + </para> + + <para> + To use this option, a basic ldap tree must be provided and the ldap suffix parameters must be properly + configured. On virgin servers the default users and groups (Administrator, Guest, Domain Users, + Domain Admins, Domain Guests) can be precreated with the command <command moreinfo="none">net sam + provision</command>. To run this command the ldap server must be running, Winbindd must be running and + the smb.conf ldap options must be properly configured. + + The typical ldap setup used with the <smbconfoption name="ldapsam:trusted">yes</smbconfoption> option + is usually sufficient to use <smbconfoption name="ldapsam:editposix">yes</smbconfoption> as well. + </para> + + <para> + An example configuration can be the following: + + <programlisting> + encrypt passwords = true + passdb backend = ldapsam + + ldapsam:trusted=yes + ldapsam:editposix=yes + + ldap admin dn = cn=admin,dc=samba,dc=org + ldap delete dn = yes + ldap group suffix = ou=groups + ldap idmap suffix = ou=idmap + ldap machine suffix = ou=computers + ldap user suffix = ou=users + ldap suffix = dc=samba,dc=org + + idmap backend = ldap:"ldap://localhost" + + idmap uid = 5000-50000 + idmap gid = 5000-50000 + </programlisting> + + This configuration assumes a directory layout like described in the following ldif: + + <programlisting> + dn: dc=samba,dc=org + objectClass: top + objectClass: dcObject + objectClass: organization + o: samba.org + dc: samba + + dn: cn=admin,dc=samba,dc=org + objectClass: simpleSecurityObject + objectClass: organizationalRole + cn: admin + description: LDAP administrator + userPassword: secret + + dn: ou=users,dc=samba,dc=org + objectClass: top + objectClass: organizationalUnit + ou: users + + dn: ou=groups,dc=samba,dc=org + objectClass: top + objectClass: organizationalUnit + ou: groups + + dn: ou=idmap,dc=samba,dc=org + objectClass: top + objectClass: organizationalUnit + ou: idmap + + dn: ou=computers,dc=samba,dc=org + objectClass: top + objectClass: organizationalUnit + ou: computers + </programlisting> + </para> + +</description> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/ldap/ldapsamtrusted.xml b/docs-xml/smbdotconf/ldap/ldapsamtrusted.xml new file mode 100644 index 0000000..1d593e6 --- /dev/null +++ b/docs-xml/smbdotconf/ldap/ldapsamtrusted.xml @@ -0,0 +1,29 @@ +<samba:parameter name="ldapsam:trusted" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + + <para> + By default, Samba as a Domain Controller with an LDAP backend needs to use the Unix-style NSS subsystem to + access user and group information. Due to the way Unix stores user information in /etc/passwd and /etc/group + this inevitably leads to inefficiencies. One important question a user needs to know is the list of groups he + is member of. The plain UNIX model involves a complete enumeration of the file /etc/group and its NSS + counterparts in LDAP. UNIX has optimized functions to enumerate group membership. Sadly, other functions that + are used to deal with user and group attributes lack such optimization. + </para> + + <para> + To make Samba scale well in large environments, the <smbconfoption name="ldapsam:trusted">yes</smbconfoption> + option assumes that the complete user and group database that is relevant to Samba is stored in LDAP with the + standard posixAccount/posixGroup attributes. It further assumes that the Samba auxiliary object classes are + stored together with the POSIX data in the same LDAP object. If these assumptions are met, + <smbconfoption name="ldapsam:trusted">yes</smbconfoption> can be activated and Samba can bypass the + NSS system to query user group memberships. Optimized LDAP queries can greatly speed up domain logon and + administration tasks. Depending on the size of the LDAP database a factor of 100 or more for common queries + is easily achieved. + </para> + +</description> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/ldap/ldapserverrequirestrongauth.xml b/docs-xml/smbdotconf/ldap/ldapserverrequirestrongauth.xml new file mode 100644 index 0000000..02bdd81 --- /dev/null +++ b/docs-xml/smbdotconf/ldap/ldapserverrequirestrongauth.xml @@ -0,0 +1,26 @@ +<samba:parameter name="ldap server require strong auth" + context="G" + type="enum" + enumlist="enum_ldap_server_require_strong_auth_vals" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + The <smbconfoption name="ldap server require strong auth"/> defines whether + the ldap server requires ldap traffic to be signed or signed and encrypted (sealed). + Possible values are <emphasis>no</emphasis>, <emphasis>allow_sasl_over_tls</emphasis> + and <emphasis>yes</emphasis>. + </para> + + <para>A value of <emphasis>no</emphasis> allows simple and sasl binds over + all transports.</para> + + <para>A value of <emphasis>allow_sasl_over_tls</emphasis> allows simple and sasl binds + (without sign or seal) over TLS encrypted connections. Unencrypted connections only + allow sasl binds with sign or seal.</para> + + <para>A value of <emphasis>yes</emphasis> allows only simple binds + over TLS encrypted connections. Unencrypted connections only + allow sasl binds with sign or seal.</para> +</description> +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/ldap/ldapssl.xml b/docs-xml/smbdotconf/ldap/ldapssl.xml new file mode 100644 index 0000000..5fe67b1 --- /dev/null +++ b/docs-xml/smbdotconf/ldap/ldapssl.xml @@ -0,0 +1,42 @@ +<samba:parameter name="ldap ssl" + context="G" + type="enum" + enumlist="enum_ldap_ssl" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option is used to define whether or not Samba should + use SSL when connecting to the ldap server + This is <emphasis>NOT</emphasis> related to + Samba's previous SSL support which was enabled by specifying the + <command moreinfo="none">--with-ssl</command> option to the + <filename moreinfo="none">configure</filename> + script.</para> + + <para>LDAP connections should be secured where possible. This may be + done setting <emphasis>either</emphasis> this parameter to + <parameter moreinfo="none">start tls</parameter> + <emphasis>or</emphasis> by specifying <parameter moreinfo="none">ldaps://</parameter> in + the URL argument of <smbconfoption name="passdb backend"/>.</para> + + <para>The <smbconfoption name="ldap ssl"/> can be set to one of + two values:</para> + <itemizedlist> + <listitem> + <para><parameter moreinfo="none">Off</parameter> = Never + use SSL when querying the directory.</para> + </listitem> + + <listitem> + <para><parameter moreinfo="none">start tls</parameter> = Use + the LDAPv3 StartTLS extended operation (RFC2830) for + communicating with the directory server.</para> + </listitem> + </itemizedlist> + <para> + Please note that this parameter does only affect <emphasis>rpc</emphasis> + methods. + </para> + +</description> +<value type="default">start tls</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/ldap/ldapsuffix.xml b/docs-xml/smbdotconf/ldap/ldapsuffix.xml new file mode 100644 index 0000000..aeff0dd --- /dev/null +++ b/docs-xml/smbdotconf/ldap/ldapsuffix.xml @@ -0,0 +1,17 @@ +<samba:parameter name="ldap suffix" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>Specifies the base for all ldap suffixes and for storing the sambaDomain object.</para> + + <para> + The ldap suffix will be appended to the values specified for the <smbconfoption name="ldap user suffix"/>, + <smbconfoption name="ldap group suffix"/>, <smbconfoption name="ldap machine suffix"/>, and the + <smbconfoption name="ldap idmap suffix"/>. Each of these should be given only a DN relative to the + <smbconfoption name ="ldap suffix"/>. + </para> +</description> +<value type="default"></value> +<value type="example">dc=samba,dc=org</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/ldap/ldaptimeout.xml b/docs-xml/smbdotconf/ldap/ldaptimeout.xml new file mode 100644 index 0000000..f421eeb --- /dev/null +++ b/docs-xml/smbdotconf/ldap/ldaptimeout.xml @@ -0,0 +1,11 @@ +<samba:parameter name="ldap timeout" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter defines the number of seconds that Samba should use as timeout for LDAP operations. + </para> +</description> +<value type="default">15</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/ldap/ldapusersuffix.xml b/docs-xml/smbdotconf/ldap/ldapusersuffix.xml new file mode 100644 index 0000000..8e6b8a3 --- /dev/null +++ b/docs-xml/smbdotconf/ldap/ldapusersuffix.xml @@ -0,0 +1,16 @@ +<samba:parameter name="ldap user suffix" + context="G" + type="string" + function="_ldap_user_suffix" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter specifies where users are added to the tree. If this parameter is unset, + the value of <smbconfoption name="ldap suffix"/> will be used instead. The suffix + string is pre-pended to the <smbconfoption name="ldap suffix"/> string so use a partial DN. + </para> + +</description> +<value type="default"/> +<value type="example">ou=people</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/locking/blockinglocks.xml b/docs-xml/smbdotconf/locking/blockinglocks.xml new file mode 100644 index 0000000..3c13995 --- /dev/null +++ b/docs-xml/smbdotconf/locking/blockinglocks.xml @@ -0,0 +1,25 @@ +<samba:parameter name="blocking locks" + context="S" + type="boolean" + deprecated="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter controls the behavior + of <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> when given a request by a client + to obtain a byte range lock on a region of an open file, and the + request has a time limit associated with it.</para> + + <para>If this parameter is set and the lock range requested + cannot be immediately satisfied, samba will internally + queue the lock request, and periodically attempt to obtain + the lock until the timeout period expires.</para> + + <para>If this parameter is set to <constant>no</constant>, then + samba will behave as previous versions of Samba would and + will fail the lock request immediately if the lock range + cannot be obtained.</para> + +</description> +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/locking/cscpolicy.xml b/docs-xml/smbdotconf/locking/cscpolicy.xml new file mode 100644 index 0000000..511639e --- /dev/null +++ b/docs-xml/smbdotconf/locking/cscpolicy.xml @@ -0,0 +1,23 @@ +<samba:parameter name="csc policy" + context="S" + type="enum" + enumlist="enum_csc_policy" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This stands for <emphasis>client-side caching policy</emphasis>, and specifies how clients capable of offline + caching will cache the files in the share. The valid values are: manual, documents, programs, disable. + </para> + + <para> + These values correspond to those used on Windows servers. + </para> + + <para> + For example, shares containing roaming profiles can have offline caching disabled using + <smbconfoption name="csc policy">disable</smbconfoption>. + </para> +</description> +<value type="default">manual</value> +<value type="example">programs</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/locking/fakeoplocks.xml b/docs-xml/smbdotconf/locking/fakeoplocks.xml new file mode 100644 index 0000000..c5622ae --- /dev/null +++ b/docs-xml/smbdotconf/locking/fakeoplocks.xml @@ -0,0 +1,30 @@ +<samba:parameter name="fake oplocks" + type="boolean" + context="S" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>Oplocks are the way that SMB clients get permission + from a server to locally cache file operations. If a server grants + an oplock (opportunistic lock) then the client is free to assume + that it is the only one accessing the file and it will aggressively + cache file data. With some oplock types the client may even cache + file open/close operations. This can give enormous performance benefits. + </para> + + <para>When you set <command moreinfo="none">fake oplocks = yes</command>, <citerefentry> + <refentrytitle>smbd</refentrytitle><manvolnum>8</manvolnum></citerefentry> will + always grant oplock requests no matter how many clients are using the file.</para> + + <para>It is generally much better to use the real <smbconfoption name="oplocks"/> support rather + than this parameter.</para> + + <para>If you enable this option on all read-only shares or + shares that you know will only be accessed from one client at a + time such as physically read-only media like CDROMs, you will see + a big performance improvement on many operations. If you enable + this option on shares where multiple clients may be accessing the + files read-write at the same time you can get data corruption. Use + this option carefully!</para> +</description> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/locking/force_process_locks.xml b/docs-xml/smbdotconf/locking/force_process_locks.xml new file mode 100644 index 0000000..f701c0a --- /dev/null +++ b/docs-xml/smbdotconf/locking/force_process_locks.xml @@ -0,0 +1,19 @@ +<samba:parameter name="smbd force process locks" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This boolean option tells <command moreinfo="none">smbd</command> whether + to forcefully disable the use of Open File Description locks on Linux. + </para> + <para> + This option should not be changed from the default unless you know what + you're doing. + </para> + +</description> + +<related>locking</related> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/locking/kerneloplocks.xml b/docs-xml/smbdotconf/locking/kerneloplocks.xml new file mode 100644 index 0000000..ff237ec --- /dev/null +++ b/docs-xml/smbdotconf/locking/kerneloplocks.xml @@ -0,0 +1,29 @@ +<samba:parameter name="kernel oplocks" + type="boolean" + context="S" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>For UNIXes that support kernel based <smbconfoption name="oplocks"/> + (currently only Linux), this parameter allows the use of them to be + turned on or off. However, this disables Level II oplocks for clients as + the Linux kernel does not support them properly.</para> + + <para>Kernel oplocks support allows Samba <parameter moreinfo="none">oplocks + </parameter> to be broken whenever a local UNIX process or NFS operation + accesses a file that <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> has oplocked. This allows complete + data consistency between SMB/CIFS, NFS and local file access (and is + a <emphasis>very</emphasis> cool feature :-).</para> + <para>If you do not need this interaction, you should disable the + parameter on Linux to get Level II oplocks and the associated + performance benefit.</para> + + <para>This parameter defaults to <constant>no</constant> and is translated + to a no-op on systems that do not have the necessary kernel support.</para> +</description> + +<related>oplocks</related> +<related>level2 oplocks</related> +<related>smb2 leases</related> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/locking/kernelsharemodes.xml b/docs-xml/smbdotconf/locking/kernelsharemodes.xml new file mode 100644 index 0000000..d06f792 --- /dev/null +++ b/docs-xml/smbdotconf/locking/kernelsharemodes.xml @@ -0,0 +1,32 @@ +<samba:parameter name="kernel share modes" + type="boolean" + context="S" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter controls whether SMB share modes are + translated into file system specific sharemode calls. + </para> + + <para> + Kernel share modes provide a minimal level of interoperability + with local UNIX processes and NFS operations by preventing + access corresponding to the SMB share modes. This requires + a file system specific VFS module with proper support. + </para> + + <para> + Note that in order to use SMB2 durable file handles on a share, + you have to turn kernel share modes off. + </para> + + <para> + This parameter defaults to <constant>no</constant>. Setting + it to <constant>yes</constant> requires a file system module + that supports file system sharemodes, otherwise attempts to + access files will fail with a sharing violation. + </para> +</description> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/locking/level2oplocks.xml b/docs-xml/smbdotconf/locking/level2oplocks.xml new file mode 100644 index 0000000..f411449 --- /dev/null +++ b/docs-xml/smbdotconf/locking/level2oplocks.xml @@ -0,0 +1,40 @@ +<samba:parameter name="level2 oplocks" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter controls whether Samba supports + level2 (read-only) oplocks on a share.</para> + + <para>Level2, or read-only oplocks allow Windows NT clients + that have an oplock on a file to downgrade from a read-write oplock + to a read-only oplock once a second client opens the file (instead + of releasing all oplocks on a second open, as in traditional, + exclusive oplocks). This allows all openers of the file that + support level2 oplocks to cache the file for read-ahead only (ie. + they may not cache writes or lock requests) and increases performance + for many accesses of files that are not commonly written (such as + application .EXE files).</para> + + <para>Once one of the clients which have a read-only oplock + writes to the file all clients are notified (no reply is needed + or waited for) and told to break their oplocks to "none" and + delete any read-ahead caches.</para> + + <para>It is recommended that this parameter be turned on to + speed access to shared executables.</para> + + <para>For more discussions on level2 oplocks see the CIFS spec.</para> + + <para> + Currently, if <smbconfoption name="kernel oplocks"/> are supported then + level2 oplocks are not granted (even if this parameter is set to + <constant>yes</constant>). Note also, the <smbconfoption name="oplocks"/> + parameter must be set to <constant>yes</constant> on this share in order for + this parameter to have any effect.</para> +</description> + +<related>oplocks</related> +<related>kernel oplocks</related> +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/locking/locking.xml b/docs-xml/smbdotconf/locking/locking.xml new file mode 100644 index 0000000..15bc98d --- /dev/null +++ b/docs-xml/smbdotconf/locking/locking.xml @@ -0,0 +1,29 @@ +<samba:parameter name="locking" + type="boolean" + context="S" + parm="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This controls whether or not locking will be + performed by the server in response to lock requests from the + client.</para> + + <para>If <command moreinfo="none">locking = no</command>, all lock and unlock + requests will appear to succeed and all lock queries will report + that the file in question is available for locking.</para> + + <para>If <command moreinfo="none">locking = yes</command>, real locking will be performed + by the server.</para> + + <para>This option <emphasis>may</emphasis> be useful for read-only + filesystems which <emphasis>may</emphasis> not need locking (such as + CDROM drives), although setting this parameter of <constant>no</constant> + is not really recommended even in this case.</para> + + <para>Be careful about disabling locking either globally or in a + specific service, as lack of locking may result in data corruption. + You should never need to set this parameter.</para> +</description> + +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/locking/lockspintime.xml b/docs-xml/smbdotconf/locking/lockspintime.xml new file mode 100644 index 0000000..689d7dd --- /dev/null +++ b/docs-xml/smbdotconf/locking/lockspintime.xml @@ -0,0 +1,15 @@ +<samba:parameter name="lock spin time" + type="integer" + context="G" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>The time in milliseconds that smbd should + keep waiting to see if a failed lock request can + be granted. This parameter has changed in default + value from Samba 3.0.23 from 10 to 200. The associated + <smbconfoption name="lock spin count"/> parameter is + no longer used in Samba 3.0.24. You should not need + to change the value of this parameter.</para> +</description> +<value type="default">200</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/locking/oplockbreakwaittime.xml b/docs-xml/smbdotconf/locking/oplockbreakwaittime.xml new file mode 100644 index 0000000..f07b6c9 --- /dev/null +++ b/docs-xml/smbdotconf/locking/oplockbreakwaittime.xml @@ -0,0 +1,18 @@ +<samba:parameter name="oplock break wait time" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + <description> + <para> + This is a tuning parameter added due to bugs in both Windows 9x and WinNT. If Samba responds to a client too + quickly when that client issues an SMB that can cause an oplock break request, then the network client can + fail and not respond to the break request. This tuning parameter (which is set in milliseconds) is the amount + of time Samba will wait before sending an oplock break request to such (broken) clients. + </para> + + <warning><para> + DO NOT CHANGE THIS PARAMETER UNLESS YOU HAVE READ AND UNDERSTOOD THE SAMBA OPLOCK CODE. + </para></warning> +</description> +<value type="default">0</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/locking/oplocks.xml b/docs-xml/smbdotconf/locking/oplocks.xml new file mode 100644 index 0000000..1d72649 --- /dev/null +++ b/docs-xml/smbdotconf/locking/oplocks.xml @@ -0,0 +1,30 @@ +<samba:parameter name="oplocks" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This boolean option tells <command moreinfo="none">smbd</command> whether to + issue oplocks (opportunistic locks) to file open requests on this + share. The oplock code can dramatically (approx. 30% or more) improve + the speed of access to files on Samba servers. It allows the clients + to aggressively cache files locally and you may want to disable this + option for unreliable network environments (it is turned on by + default in Windows NT Servers). + </para> + + <para> + Oplocks may be selectively turned off on certain files with a share. See + the <smbconfoption name="veto oplock files"/> parameter. On some systems + oplocks are recognized by the underlying operating system. This + allows data synchronization between all access to oplocked files, + whether it be via Samba or NFS or a local UNIX process. See the + <smbconfoption name="kernel oplocks"/> parameter for details. + </para> +</description> + +<related>kernel oplocks</related> +<related>level2 oplocks</related> +<related>smb2 leases</related> +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/locking/posixlocking.xml b/docs-xml/smbdotconf/locking/posixlocking.xml new file mode 100644 index 0000000..f38b2bd --- /dev/null +++ b/docs-xml/smbdotconf/locking/posixlocking.xml @@ -0,0 +1,17 @@ +<samba:parameter name="posix locking" + type="boolean" + context="S" + parm="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + The <citerefentry><refentrytitle>smbd</refentrytitle> <manvolnum>8</manvolnum></citerefentry> + daemon maintains an database of file locks obtained by SMB clients. The default behavior is + to map this internal database to POSIX locks. This means that file locks obtained by SMB clients are + consistent with those seen by POSIX compliant applications accessing the files via a non-SMB + method (e.g. NFS or local file access). It is very unlikely that you need to set this parameter + to "no", unless you are sharing from an NFS mount, which is not a good idea in the first place. + </para> +</description> +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/locking/smb2leases.xml b/docs-xml/smbdotconf/locking/smb2leases.xml new file mode 100644 index 0000000..6587300 --- /dev/null +++ b/docs-xml/smbdotconf/locking/smb2leases.xml @@ -0,0 +1,27 @@ +<samba:parameter name="smb2 leases" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This boolean option tells <command moreinfo="none">smbd</command> whether to + globally negotiate SMB2 leases on file open requests. Leasing is an SMB2-only + feature which allows clients to aggressively cache files locally above and + beyond the caching allowed by SMB1 oplocks. + </para> + + <para> + This is only available with <smbconfoption name="oplocks">yes</smbconfoption> + and <smbconfoption name="kernel oplocks">no</smbconfoption>. + </para> + + <para>Note that the write cache won't be used for file handles with a smb2 write lease.</para> + +</description> + +<related>oplocks</related> +<related>kernel oplocks</related> +<related>level2 oplocks</related> +<related>write cache size</related> +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/locking/strictlocking.xml b/docs-xml/smbdotconf/locking/strictlocking.xml new file mode 100644 index 0000000..89a1bf7 --- /dev/null +++ b/docs-xml/smbdotconf/locking/strictlocking.xml @@ -0,0 +1,31 @@ +<samba:parameter name="strict locking" + context="S" + type="enum" + enumlist="enum_bool_auto" + parm="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This is an enumerated type that controls the handling of file locking in the server. When this is set to <constant>yes</constant>, + the server will check every read and write access for file locks, and deny access if locks exist. This can be slow on + some systems. + </para> + + <para> + When strict locking is set to Auto (the default), the server performs file lock checks only on non-oplocked files. + As most Windows redirectors perform file locking checks locally on oplocked files this is a good trade off for + improved performance. + </para> + + <para> + When strict locking is disabled, the server performs file lock checks only when the client explicitly asks for them. + </para> + + <para> + Well-behaved clients always ask for lock checks when it is important. So in the vast majority of cases, + <command moreinfo="none">strict locking = Auto</command> or + <command moreinfo="none">strict locking = no</command> is acceptable. + </para> +</description> +<value type="default">Auto</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/logging/debugclass.xml b/docs-xml/smbdotconf/logging/debugclass.xml new file mode 100644 index 0000000..eee3cc5 --- /dev/null +++ b/docs-xml/smbdotconf/logging/debugclass.xml @@ -0,0 +1,17 @@ +<samba:parameter name="debug class" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + With this boolean parameter enabled, the debug class (DBGC_CLASS) + will be displayed in the debug header. + </para> + <para> + For more information about currently available debug classes, see + section about <smbconfoption name="log level"/>. + </para> + +</description> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/logging/debughirestimestamp.xml b/docs-xml/smbdotconf/logging/debughirestimestamp.xml new file mode 100644 index 0000000..79d928a --- /dev/null +++ b/docs-xml/smbdotconf/logging/debughirestimestamp.xml @@ -0,0 +1,18 @@ +<samba:parameter name="debug hires timestamp" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + Sometimes the timestamps in the log messages are needed with a resolution of higher that seconds, this + boolean parameter adds microsecond resolution to the timestamp message header when turned on. + </para> + + <para> + Note that the parameter <smbconfoption name="debug timestamp"/> or + <smbconfoption name="debug syslog format"/> must be on for this to have an effect. + </para> + +</description> +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/logging/debugpid.xml b/docs-xml/smbdotconf/logging/debugpid.xml new file mode 100644 index 0000000..8e6436c --- /dev/null +++ b/docs-xml/smbdotconf/logging/debugpid.xml @@ -0,0 +1,18 @@ +<samba:parameter name="debug pid" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + When using only one log file for more then one forked <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry>-process there may be hard to follow which process outputs which + message. This boolean parameter is adds the process-id to the timestamp message headers in the + logfile when turned on. + </para> + + <para> + Note that the parameter <smbconfoption name="debug timestamp"/> must be on for this to have an effect. + </para> +</description> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/logging/debugprefixtimestamp.xml b/docs-xml/smbdotconf/logging/debugprefixtimestamp.xml new file mode 100644 index 0000000..0a004d4 --- /dev/null +++ b/docs-xml/smbdotconf/logging/debugprefixtimestamp.xml @@ -0,0 +1,18 @@ +<samba:parameter name="debug prefix timestamp" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + With this option enabled, the timestamp message header is prefixed to the debug message without the + filename and function information that is included with the <smbconfoption name="debug timestamp"/> + parameter. This gives timestamps to the messages without adding an additional line. + </para> + + <para> + Note that this parameter overrides the <smbconfoption name="debug timestamp"/> parameter. + </para> + +</description> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/logging/debugsyslogformat.xml b/docs-xml/smbdotconf/logging/debugsyslogformat.xml new file mode 100644 index 0000000..f943f3a --- /dev/null +++ b/docs-xml/smbdotconf/logging/debugsyslogformat.xml @@ -0,0 +1,21 @@ +<samba:parameter name="debug syslog format" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + With this option enabled, debug messages are printed in a + single-line format like that traditionally produced by syslog. + The timestamp consists of an abbreviated month, space-padded date, + and time including seconds. This is followed by the hostname and + the program name, with the process-ID in square brackets. + </para> + + <para> + If <smbconfoption name="debug hires timestamp"/> is also enabled + then an RFC5424 timestamp is used instead. + </para> + +</description> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/logging/debugtraceid.xml b/docs-xml/smbdotconf/logging/debugtraceid.xml new file mode 100644 index 0000000..61a451d --- /dev/null +++ b/docs-xml/smbdotconf/logging/debugtraceid.xml @@ -0,0 +1,13 @@ +<samba:parameter name="winbind debug traceid" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + With this boolean parameter enabled, the per request unique traceid + will be displayed in the debug header for winbind processes. + </para> + +</description> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/logging/debuguid.xml b/docs-xml/smbdotconf/logging/debuguid.xml new file mode 100644 index 0000000..1dd1dbf --- /dev/null +++ b/docs-xml/smbdotconf/logging/debuguid.xml @@ -0,0 +1,16 @@ +<samba:parameter name="debug uid" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + Samba is sometimes run as root and sometime run as the connected user, this boolean parameter inserts the + current euid, egid, uid and gid to the timestamp message headers in the log file if turned on. + </para> + + <para> + Note that the parameter <smbconfoption name="debug timestamp"/> must be on for this to have an effect. + </para> +</description> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/logging/ldapdebuglevel.xml b/docs-xml/smbdotconf/logging/ldapdebuglevel.xml new file mode 100644 index 0000000..2092b7d --- /dev/null +++ b/docs-xml/smbdotconf/logging/ldapdebuglevel.xml @@ -0,0 +1,28 @@ +<samba:parameter name="ldap debug level" + type="integer" + context="G" + handler="handle_ldap_debug_level" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter controls the debug level of the LDAP library + calls. In the case of OpenLDAP, it is the same + bit-field as understood by the server and documented in the + <citerefentry> + <refentrytitle>slapd.conf</refentrytitle> + <manvolnum>5</manvolnum> + </citerefentry> + manpage. + A typical useful value will be + <emphasis>1</emphasis> for tracing function calls. + </para> + <para> + The debug output from the LDAP libraries appears with the + prefix [LDAP] in Samba's logging output. + The level at which LDAP logging is printed is controlled by the + parameter <parameter>ldap debug threshold</parameter>. + </para> +</description> +<value type="default">0</value> +<value type="example">1</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/logging/ldapdebugthreshold.xml b/docs-xml/smbdotconf/logging/ldapdebugthreshold.xml new file mode 100644 index 0000000..2783ac9 --- /dev/null +++ b/docs-xml/smbdotconf/logging/ldapdebugthreshold.xml @@ -0,0 +1,15 @@ +<samba:parameter name="ldap debug threshold" + type="integer" + context="G" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter controls the Samba debug level at which + the ldap library debug output is + printed in the Samba logs. See the description of + <parameter>ldap debug level</parameter> for details. + </para> +</description> +<value type="default">10</value> +<value type="example">5</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/logging/logfile.xml b/docs-xml/smbdotconf/logging/logfile.xml new file mode 100644 index 0000000..07762ee --- /dev/null +++ b/docs-xml/smbdotconf/logging/logfile.xml @@ -0,0 +1,18 @@ +<samba:parameter name="log file" + context="G" + type="string" + function="logfile" + handler="handle_logfile" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This option allows you to override the name of the Samba log file (also known as the debug file). + </para> + + <para> + This option takes the standard substitutions, allowing you to have separate log files for each user or machine. + </para> +</description> +<value type="example">/usr/local/samba/var/log.%m</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/logging/logging.xml b/docs-xml/smbdotconf/logging/logging.xml new file mode 100644 index 0000000..0ab2c1f --- /dev/null +++ b/docs-xml/smbdotconf/logging/logging.xml @@ -0,0 +1,45 @@ +<samba:parameter name="logging" + type="string" + context="G" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + + <para>This parameter configures logging backends. Multiple + backends can be specified at the same time, with different log + levels for each backend. The parameter is a list of backends, + where each backend is specified as backend[:option][@loglevel].</para> + + <para>The 'option' parameter can be used to pass backend-specific + options.</para> + + <para>The log level for a backend is optional, if it is not set for + a backend, all messages are sent to this backend. The parameter + <smbconfoption name="log level"/> determines overall log levels, + while the log levels specified here define what is sent to the + individual backends.</para> + + <para>When <smbconfoption name="logging"/> is set, it overrides the + <smbconfoption name="syslog"/> and <smbconfoption name="syslog + only"/> parameters.</para> + + <para>Some backends are only available when Samba has been compiled + with the additional libraries. The overall list of logging backends:</para> + + <itemizedlist> + <listitem><para><parameter moreinfo="none">syslog</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">file</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">systemd</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">lttng</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">gpfs</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">ringbuf</parameter></para></listitem> + </itemizedlist> + + <para>The <parameter moreinfo="none">ringbuf</parameter> backend supports an + optional size argument to change the buffer size used, the default is 1 MB: + <parameter moreinfo="none">ringbuf:size=NBYTES</parameter></para> + +</description> +<value type="default"></value> +<value type="example">syslog@1 file</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/logging/loglevel.xml b/docs-xml/smbdotconf/logging/loglevel.xml new file mode 100644 index 0000000..434c5d0 --- /dev/null +++ b/docs-xml/smbdotconf/logging/loglevel.xml @@ -0,0 +1,171 @@ +<samba:parameter name="log level" + type="string" + context="G" + handler="handle_debug_list" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<synonym>debuglevel</synonym> +<description> + <para> + The value of the parameter (a string) allows the debug level (logging level) to be specified in the + <filename moreinfo="none">smb.conf</filename> file. + </para> + + <para>This parameter has been extended since the 2.2.x + series, now it allows one to specify the debug level for multiple + debug classes and distinct logfiles for debug classes. This is to give + greater flexibility in the configuration of the system. The following + debug classes are currently implemented: + </para> + + <itemizedlist> + <listitem><para><parameter moreinfo="none">all</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">tdb</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">printdrivers</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">lanman</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">smb</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">rpc_parse</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">rpc_srv</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">rpc_cli</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">passdb</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">sam</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">auth</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">winbind</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">vfs</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">idmap</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">quota</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">acls</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">locking</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">msdfs</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">dmapi</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">registry</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">scavenger</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">dns</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">ldb</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">tevent</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">auth_audit</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">auth_json_audit</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">kerberos</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">drs_repl</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">smb2</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">smb2_credits</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">dsdb_audit</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">dsdb_json_audit</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">dsdb_password_audit</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">dsdb_password_json_audit</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">dsdb_transaction_audit</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">dsdb_transaction_json_audit</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">dsdb_group_audit</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">dsdb_group_json_audit</parameter></para></listitem> + </itemizedlist> + + <para>Various modules register dynamic debug classes at first usage:</para> + <itemizedlist> + <listitem><para><parameter moreinfo="none">catia</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">dfs_samba4</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">extd_audit</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">fileid</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">fruit</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">full_audit</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">media_harmony</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">preopen</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">recycle</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">shadow_copy</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">shadow_copy</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">unityed_media</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">virusfilter</parameter></para></listitem> + </itemizedlist> + + <para>To configure the logging for specific classes to go into a different + file then <smbconfoption name="log file"/>, you can append + <emphasis>@PATH</emphasis> to the class, eg <parameter>log level = 1 + full_audit:1@/var/log/audit.log</parameter>.</para> + + <para>Authentication and authorization audit information is logged + under the <parameter>auth_audit</parameter>, and if Samba was not compiled with + --without-json, a JSON representation is logged under + <parameter>auth_json_audit</parameter>.</para> + + <para>Support is comprehensive for all authentication and authorisation + of user accounts in the Samba Active Directory Domain Controller, + as well as the implicit authentication in password changes. In + the file server, NTLM authentication, SMB and RPC authorization is + covered.</para> + + <para>Log levels for <parameter>auth_audit</parameter> and + <parameter>auth_audit_json</parameter> are:</para> + <itemizedlist> + <listitem><para>2: Authentication Failure</para></listitem> + <listitem><para>3: Authentication Success</para></listitem> + <listitem><para>4: Authorization Success</para></listitem> + <listitem><para>5: Anonymous Authentication and Authorization Success</para></listitem> + </itemizedlist> + + <para>Changes to the AD DC <command moreinfo="none">sam.ldb</command> + database are logged under the <parameter>dsdb_audit</parameter> + and a JSON representation is logged under + <parameter>dsdb_json_audit</parameter>.</para> + + <para>Group membership changes to the AD DC <command + moreinfo="none">sam.ldb</command> database are logged under the + <parameter>dsdb_group_audit</parameter> and a JSON representation + is logged under + <parameter>dsdb_group_json_audit</parameter>.</para> + + <para>Log levels for <parameter>dsdb_audit</parameter>, + <parameter>dsdb_json_audit</parameter>, + <parameter>dsdb_group_audit</parameter>, + <parameter>dsdb_group_json_audit</parameter> and + <parameter>dsdb_json_audit</parameter> are:</para> + <itemizedlist> + <listitem><para>5: Database modifications</para></listitem> + <listitem><para>5: Replicated updates from another DC</para></listitem> + </itemizedlist> + + <para>Password changes and Password resets in the AD DC are logged + under <parameter>dsdb_password_audit</parameter> and a JSON + representation is logged under the + <parameter>dsdb_password_json_audit</parameter>. Password changes + will also appears as authentication events via + <parameter>auth_audit</parameter> and + <parameter>auth_audit_json</parameter>.</para> + + <para>Log levels for <parameter>dsdb_password_audit</parameter> and + <parameter>dsdb_password_json_audit</parameter> are:</para> + <itemizedlist> + <listitem><para>5: Successful password changes and resets</para></listitem> + </itemizedlist> + + <para>Transaction rollbacks and prepare commit failures are logged under + the <parameter>dsdb_transaction_audit</parameter> and a JSON representation is logged under the + <parameter>dsdb_transaction_json_audit</parameter>. </para> + + <para>Log levels for <parameter>dsdb_transaction_audit</parameter> and + <parameter>dsdb_transaction_json</parameter> are:</para> + + <itemizedlist> + <listitem><para>5: Transaction failure (rollback)</para></listitem> + <listitem><para>10: Transaction success (commit)</para></listitem> + </itemizedlist> + + <para>Transaction roll-backs are possible in Samba, and whilst + they rarely reflect anything more than the failure of an + individual operation (say due to the add of a conflicting record), + they are possible. Audit logs are already generated and sent to + the system logs before the transaction is complete. Logging the + transaction details allows the identification of password and + <command moreinfo="none">sam.ldb</command> operations that have + been rolled back, and so have not actually persisted.</para> + + <warning><para> Changes to <command + moreinfo="none">sam.ldb</command> made locally by the <command + moreinfo="none">root</command> user with direct access to the + database are not logged to the system logs, but to the + administrator's own console. While less than ideal, any user able + to make such modifications could disable the audit logging in any + case. </para></warning> +</description> +<value type="default">0</value> +<value type="example">3 passdb:5 auth:10 winbind:2</value> +<value type="example">1 full_audit:1@/var/log/audit.log winbind:2</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/logging/maxlogsize.xml b/docs-xml/smbdotconf/logging/maxlogsize.xml new file mode 100644 index 0000000..8a1979d --- /dev/null +++ b/docs-xml/smbdotconf/logging/maxlogsize.xml @@ -0,0 +1,17 @@ +<samba:parameter name="max log size" + type="bytes" + context="G" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This option (an integer in kilobytes) specifies the max size the log file should grow to. + Samba periodically checks the size and if it is exceeded it will rename the file, adding + a <filename moreinfo="none">.old</filename> extension. + </para> + + <para>A size of 0 means no limit. + </para> +</description> +<value type="default">5000</value> +<value type="example">1000</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/logging/syslog.xml b/docs-xml/smbdotconf/logging/syslog.xml new file mode 100644 index 0000000..78e694e --- /dev/null +++ b/docs-xml/smbdotconf/logging/syslog.xml @@ -0,0 +1,25 @@ +<samba:parameter name="syslog" + context="G" + type="integer" + deprecated="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter maps how Samba debug messages are logged onto the system syslog logging levels. + Samba debug level zero maps onto syslog <constant>LOG_ERR</constant>, debug level one maps onto + <constant>LOG_WARNING</constant>, debug level two maps onto <constant>LOG_NOTICE</constant>, + debug level three maps onto LOG_INFO. All higher levels are mapped to <constant>LOG_DEBUG</constant>. + </para> + + <para> + This parameter sets the threshold for sending messages to syslog. Only messages with debug + level less than this value will be sent to syslog. There still will be some + logging to log.[sn]mbd even if <emphasis>syslog only</emphasis> is enabled. + </para> + + <para>The <smbconfoption name="logging"/> parameter should be used + instead. When <smbconfoption name="logging"/> is set, it + overrides the <smbconfoption name="syslog"/> parameter.</para> +</description> +<value type="default">1</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/logging/syslogonly.xml b/docs-xml/smbdotconf/logging/syslogonly.xml new file mode 100644 index 0000000..b9aea2d --- /dev/null +++ b/docs-xml/smbdotconf/logging/syslogonly.xml @@ -0,0 +1,19 @@ +<samba:parameter name="syslog only" + context="G" + type="boolean" + deprecated="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + If this parameter is set then Samba debug messages are logged into the system + syslog only, and not to the debug log files. There still will be some + logging to log.[sn]mbd even if <emphasis>syslog only</emphasis> is enabled. + </para> + + + <para>The <smbconfoption name="logging"/> parameter should be used + instead. When <smbconfoption name="logging"/> is set, it + overrides the <smbconfoption name="syslog only"/> parameter.</para> +</description> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/logging/timestamplogs.xml b/docs-xml/smbdotconf/logging/timestamplogs.xml new file mode 100644 index 0000000..28003c3 --- /dev/null +++ b/docs-xml/smbdotconf/logging/timestamplogs.xml @@ -0,0 +1,14 @@ +<samba:parameter name="timestamp logs" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<synonym>debug timestamp</synonym> +<description> + <para> + Samba debug log messages are timestamped by default. If you are running at a high + <smbconfoption name="debug level"/> these timestamps can be distracting. This + boolean parameter allows timestamping to be turned off. + </para> +</description> +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/logon/abortshutdownscript.xml b/docs-xml/smbdotconf/logon/abortshutdownscript.xml new file mode 100644 index 0000000..7ce0f1f --- /dev/null +++ b/docs-xml/smbdotconf/logon/abortshutdownscript.xml @@ -0,0 +1,16 @@ +<samba:parameter name="abort shutdown script" + context="G" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This a full path name to a script called by <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> that + should stop a shutdown procedure issued by the <smbconfoption name="shutdown script"/>.</para> + + <para>If the connected user possesses the <constant>SeRemoteShutdownPrivilege</constant>, + right, this command will be run as root.</para> +</description> +<value type="default">""</value> +<value type="example">/sbin/shutdown -c</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/logon/addgroupscript.xml b/docs-xml/smbdotconf/logon/addgroupscript.xml new file mode 100644 index 0000000..3b347d0 --- /dev/null +++ b/docs-xml/smbdotconf/logon/addgroupscript.xml @@ -0,0 +1,19 @@ +<samba:parameter name="add group script" + context="G" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This is the full pathname to a script that will be run <emphasis>AS ROOT</emphasis> by <citerefentry> + <refentrytitle>smbd</refentrytitle><manvolnum>8</manvolnum></citerefentry> when a new group is requested. It + will expand any <parameter moreinfo="none">%g</parameter> to the group name passed. This script is only useful + for installations using the Windows NT domain administration tools. The script is free to create a group with + an arbitrary name to circumvent unix group name restrictions. In that case the script must print the numeric + gid of the created group on stdout. + </para> +</description> + +<value type="default"/> +<value type="example">/usr/sbin/groupadd %g</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/logon/addmachinescript.xml b/docs-xml/smbdotconf/logon/addmachinescript.xml new file mode 100644 index 0000000..db1f5bc --- /dev/null +++ b/docs-xml/smbdotconf/logon/addmachinescript.xml @@ -0,0 +1,21 @@ +<samba:parameter name="add machine script" + context="G" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This is the full pathname to a script that will be run by + <citerefentry><refentrytitle>smbd</refentrytitle> <manvolnum>8</manvolnum></citerefentry> when a machine is + added to Samba's domain and a Unix account matching the machine's name appended with a "$" does not + already exist. + </para> + <para>This option is very similar to the <smbconfoption + name="add user script"/>, and likewise uses the %u + substitution for the account name. Do not use the %m + substitution. </para> +</description> + +<value type="default"/> +<value type="example">/usr/sbin/adduser -n -g machines -c Machine -d /var/lib/nobody -s /bin/false %u</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/logon/adduserscript.xml b/docs-xml/smbdotconf/logon/adduserscript.xml new file mode 100644 index 0000000..4be1146 --- /dev/null +++ b/docs-xml/smbdotconf/logon/adduserscript.xml @@ -0,0 +1,47 @@ +<samba:parameter name="add user script" + context="G" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This is the full pathname to a script that will be run <emphasis>AS ROOT</emphasis> by + <citerefentry><refentrytitle>smbd</refentrytitle> <manvolnum>8</manvolnum></citerefentry> + under special circumstances described below. + </para> + + <para> + Normally, a Samba server requires that UNIX users are created for all users accessing + files on this server. For sites that use Windows NT account databases as their primary + user database creating these users and keeping the user list in sync with the Windows + NT PDC is an onerous task. This option allows smbd to create the required UNIX users + <emphasis>ON DEMAND</emphasis> when a user accesses the Samba server. + </para> + + <para> + When the Windows user attempts to access the Samba server, at login (session setup in + the SMB protocol) time, <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> contacts the <smbconfoption name="password server"/> + and attempts to authenticate the given user with the given password. If the authentication + succeeds then <command moreinfo="none">smbd</command> attempts to find a UNIX user in the UNIX + password database to map the Windows user into. If this lookup fails, and + <smbconfoption name="add user script"/> is set then <command moreinfo="none">smbd</command> will + call the specified script <emphasis>AS ROOT</emphasis>, expanding any + <parameter moreinfo="none">%u</parameter> argument to be the user name to create. + </para> + + <para> + If this script successfully creates the user then <command moreinfo="none">smbd</command> will + continue on as though the UNIX user already existed. In this way, UNIX users are dynamically created to + match existing Windows NT accounts. + </para> + + <para> + See also <smbconfoption name="security"/>, <smbconfoption name="password server"/>, + <smbconfoption name="delete user script"/>. + </para> +</description> + +<value type="default"/> +<value type="example">/usr/local/samba/bin/add_user %u</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/logon/addusertogroupscript.xml b/docs-xml/smbdotconf/logon/addusertogroupscript.xml new file mode 100644 index 0000000..f6e9cc2 --- /dev/null +++ b/docs-xml/smbdotconf/logon/addusertogroupscript.xml @@ -0,0 +1,22 @@ +<samba:parameter name="add user to group script" + context="G" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + Full path to the script that will be called when a user is added to a group using the Windows NT domain administration + tools. It will be run by <citerefentry><refentrytitle>smbd</refentrytitle> <manvolnum>8</manvolnum></citerefentry> + <emphasis>AS ROOT</emphasis>. Any <parameter moreinfo="none">%g</parameter> will be replaced with the group name and + any <parameter moreinfo="none">%u</parameter> will be replaced with the user name. + </para> + + <para> + Note that the <command>adduser</command> command used in the example below does + not support the used syntax on all systems. + </para> + +</description> +<value type="default"></value> +<value type="example">/usr/sbin/adduser %u %g</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/logon/allownt4crypto.xml b/docs-xml/smbdotconf/logon/allownt4crypto.xml new file mode 100644 index 0000000..ee63e6c --- /dev/null +++ b/docs-xml/smbdotconf/logon/allownt4crypto.xml @@ -0,0 +1,106 @@ +<samba:parameter name="allow nt4 crypto" + context="G" + type="boolean" + deprecated="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This option is deprecated and will be removed in future, + as it is a security problem if not set to "no" (which will be + the hardcoded behavior in future). + </para> + + <para>This option controls whether the netlogon server (currently + only in 'active directory domain controller' mode), will + reject clients which do not support NETLOGON_NEG_STRONG_KEYS + nor NETLOGON_NEG_SUPPORTS_AES.</para> + + <para>This option was added with Samba 4.2.0. It may lock out clients + which worked fine with Samba versions up to 4.1.x. as the effective default + was "yes" there, while it is "no" now.</para> + + <para>If you have clients without RequireStrongKey = 1 in the registry, + you may need to set "allow nt4 crypto = yes", until you have fixed all clients. + </para> + + <para>"allow nt4 crypto = yes" allows weak crypto to be negotiated, maybe via downgrade attacks.</para> + + <para><emphasis>Avoid using this option!</emphasis> Use explicit '<smbconfoption name="allow nt4 crypto:COMPUTERACCOUNT">yes</smbconfoption>' instead! + Which is available with the patches for + <ulink url="https://www.samba.org/samba/security/CVE-2022-38023.html">CVE-2022-38023</ulink> + see <ulink url="https://bugzilla.samba.org/show_bug.cgi?id=15240">https://bugzilla.samba.org/show_bug.cgi?id=15240</ulink></para> + + <para> + Samba will log an error in the log files at log level 0 + if legacy a client is rejected or allowed without an explicit, + '<smbconfoption name="allow nt4 crypto:COMPUTERACCOUNT">yes</smbconfoption>' option + for the client. The message will indicate + the explicit '<smbconfoption name="allow nt4 crypto:COMPUTERACCOUNT">yes</smbconfoption>' + line to be added, if the legacy client software requires it. (The log level can be adjusted with + '<smbconfoption name="CVE_2022_38023:error_debug_level">1</smbconfoption>' + in order to complain only at a higher log level). + </para> + + <para>This allows admins to use "yes" only for a short grace period, + in order to collect the explicit + '<smbconfoption name="allow nt4 crypto:COMPUTERACCOUNT">yes</smbconfoption>' options.</para> + + <para>This option is over-ridden by the effective value of 'yes' from + the '<smbconfoption name="server reject md5 schannel:COMPUTERACCOUNT"/>' + and/or '<smbconfoption name="reject md5 clients"/>' options.</para> +</description> + +<value type="default">no</value> +</samba:parameter> + +<samba:parameter name="allow nt4 crypto:COMPUTERACCOUNT" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + + <para>If you still have legacy domain members which required 'allow nt4 crypto = yes', + it is possible to specify an explicit exception per computer account + by using 'allow nt4 crypto:COMPUTERACCOUNT = yes' as option. + Note that COMPUTERACCOUNT has to be the sAMAccountName value of + the computer account (including the trailing '$' sign). + </para> + + <para> + Samba will log a complaint in the log files at log level 0 + about the security problem if the option is set to "yes", + but the related computer does not require it. + (The log level can be adjusted with + '<smbconfoption name="CVE_2022_38023:warn_about_unused_debug_level">1</smbconfoption>' + in order to complain only at a higher log level). + </para> + + <para> + Samba will log a warning in the log files at log level 5, + if a setting is still needed for the specified computer account. + </para> + + <para> + See <ulink url="https://www.samba.org/samba/security/CVE-2022-38023.html">CVE-2022-38023</ulink>, + <ulink url="https://bugzilla.samba.org/show_bug.cgi?id=15240">https://bugzilla.samba.org/show_bug.cgi?id=15240</ulink>. + </para> + + <para>This option overrides the <smbconfoption name="allow nt4 crypto"/> option.</para> + + <para>This option is over-ridden by the effective value of 'yes' from + the '<smbconfoption name="server reject md5 schannel:COMPUTERACCOUNT"/>' + and/or '<smbconfoption name="reject md5 clients"/>' options.</para> + <para>Which means '<smbconfoption name="allow nt4 crypto:COMPUTERACCOUNT">yes</smbconfoption>' + is only useful in combination with '<smbconfoption name="server reject md5 schannel:COMPUTERACCOUNT">no</smbconfoption>'</para> + + <programlisting> + allow nt4 crypto:LEGACYCOMPUTER1$ = yes + server reject md5 schannel:LEGACYCOMPUTER1$ = no + allow nt4 crypto:NASBOX$ = yes + server reject md5 schannel:NASBOX$ = no + allow nt4 crypto:LEGACYCOMPUTER2$ = yes + server reject md5 schannel:LEGACYCOMPUTER2$ = no + </programlisting> +</description> + +</samba:parameter> diff --git a/docs-xml/smbdotconf/logon/autheventnotification.xml b/docs-xml/smbdotconf/logon/autheventnotification.xml new file mode 100644 index 0000000..87ccf02 --- /dev/null +++ b/docs-xml/smbdotconf/logon/autheventnotification.xml @@ -0,0 +1,29 @@ +<samba:parameter name="auth event notification" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>When enabled, this option causes Samba (acting as an + Active Directory Domain Controller) to stream authentication + events across the internal message bus. Scripts built using + Samba's python bindings can listen to these events by + registering as the service + <filename moreinfo="none">auth_event</filename>.</para> + + <para>This is <emphasis>not</emphasis> needed for the audit + logging described in <smbconfoption name="log level"/>.</para> + + <para>Instead, this should instead be considered a developer + option (it assists in the Samba testsuite) rather than a + facility for external auditing, as message delivery is not + guaranteed (a feature that the testsuite works around).</para> + + <para>The authentication events are also logged via the normal + logging methods when the <smbconfoption name="log level"/> is + set appropriately, say to + <command moreinfo="none">auth_json_audit:3</command>.</para> + +</description> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/logon/deletegroupscript.xml b/docs-xml/smbdotconf/logon/deletegroupscript.xml new file mode 100644 index 0000000..be8bb0d --- /dev/null +++ b/docs-xml/smbdotconf/logon/deletegroupscript.xml @@ -0,0 +1,15 @@ +<samba:parameter name="delete group script" + context="G" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This is the full pathname to a script that will + be run <emphasis>AS ROOT</emphasis> by <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> when a group is requested to be deleted. + It will expand any <parameter moreinfo="none">%g</parameter> to the group name passed. + This script is only useful for installations using the Windows NT domain administration tools. + </para> +</description> +<value type="default"></value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/logon/deleteuserfromgroupscript.xml b/docs-xml/smbdotconf/logon/deleteuserfromgroupscript.xml new file mode 100644 index 0000000..1654a09 --- /dev/null +++ b/docs-xml/smbdotconf/logon/deleteuserfromgroupscript.xml @@ -0,0 +1,17 @@ +<samba:parameter name="delete user from group script" + context="G" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>Full path to the script that will be called when + a user is removed from a group using the Windows NT domain administration + tools. It will be run by <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> <emphasis>AS ROOT</emphasis>. + Any <parameter moreinfo="none">%g</parameter> will be replaced with the group name and + any <parameter moreinfo="none">%u</parameter> will be replaced with the user name. +</para> +</description> +<value type="default"/> +<value type="example">/usr/sbin/deluser %u %g</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/logon/deleteuserscript.xml b/docs-xml/smbdotconf/logon/deleteuserscript.xml new file mode 100644 index 0000000..22897cb --- /dev/null +++ b/docs-xml/smbdotconf/logon/deleteuserscript.xml @@ -0,0 +1,22 @@ +<samba:parameter name="delete user script" + type="string" + context="G" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This is the full pathname to a script that will + be run by <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> when managing users + with remote RPC (NT) tools. + </para> + + <para>This script is called when a remote client removes a user + from the server, normally using 'User Manager for Domains' or + <command moreinfo="none">rpcclient</command>.</para> + + <para>This script should delete the given UNIX username.</para> +</description> + +<value type="default"></value> +<value type="example">/usr/local/samba/bin/del_user %u</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/logon/domainlogons.xml b/docs-xml/smbdotconf/logon/domainlogons.xml new file mode 100644 index 0000000..7f84975 --- /dev/null +++ b/docs-xml/smbdotconf/logon/domainlogons.xml @@ -0,0 +1,25 @@ +<samba:parameter name="domain logons" + context="G" + type="boolean" + function="_domain_logons" + deprecated="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter has been deprecated since Samba 4.13 and + support for NT4-style domain logons(as distinct from the Samba + AD DC) will be removed in a future Samba release.</para> + <para>That is, in the future, the current default of + <command>domain logons = no</command> + will be the enforced behaviour.</para> + <para> + If set to <constant>yes</constant>, the Samba server will + provide the netlogon service for Windows 9X network logons for the + <smbconfoption name="workgroup"/> it is in. + This will also cause the Samba server to act as a domain + controller for NT4 style domain services. For more details on + setting up this feature see the Domain Control chapter of the + Samba HOWTO Collection. + </para> +</description> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/logon/enableprivileges.xml b/docs-xml/smbdotconf/logon/enableprivileges.xml new file mode 100644 index 0000000..9e28457 --- /dev/null +++ b/docs-xml/smbdotconf/logon/enableprivileges.xml @@ -0,0 +1,26 @@ +<samba:parameter name="enable privileges" + context="G" + type="boolean" + deprecated="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This deprecated parameter controls whether or not smbd will honor privileges assigned to specific SIDs via either + <command>net rpc rights</command> or one of the Windows user and group manager tools. This parameter is + enabled by default. It can be disabled to prevent members of the Domain Admins group from being able to + assign privileges to users or groups which can then result in certain smbd operations running as root that + would normally run under the context of the connected user. + </para> + + <para> + An example of how privileges can be used is to assign the right to join clients to a Samba controlled + domain without providing root access to the server via smbd. + </para> + + <para> + Please read the extended description provided in the Samba HOWTO documentation. + </para> + +</description> +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/logon/initlogondelay.xml b/docs-xml/smbdotconf/logon/initlogondelay.xml new file mode 100644 index 0000000..0cdbcd0 --- /dev/null +++ b/docs-xml/smbdotconf/logon/initlogondelay.xml @@ -0,0 +1,14 @@ +<samba:parameter name="init logon delay" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter specifies a delay in milliseconds for the hosts configured + for delayed initial samlogon with + <smbconfoption name="init logon delayed hosts"/>. + </para> +</description> + +<value type="default">100</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/logon/initlogondelayedhosts.xml b/docs-xml/smbdotconf/logon/initlogondelayedhosts.xml new file mode 100644 index 0000000..83d1ebd --- /dev/null +++ b/docs-xml/smbdotconf/logon/initlogondelayedhosts.xml @@ -0,0 +1,20 @@ +<samba:parameter name="init logon delayed hosts" + context="G" + type="cmdlist" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter takes a list of host names, addresses or networks for + which the initial samlogon reply should be delayed (so other DCs get + preferred by XP workstations if there are any). + </para> + + <para> + The length of the delay can be specified with the + <smbconfoption name="init logon delay"/> parameter. + </para> +</description> + +<value type="default"></value> +<value type="example">150.203.5. myhost.mynet.de</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/logon/logondrive.xml b/docs-xml/smbdotconf/logon/logondrive.xml new file mode 100644 index 0000000..9767693 --- /dev/null +++ b/docs-xml/smbdotconf/logon/logondrive.xml @@ -0,0 +1,18 @@ +<samba:parameter name="logon drive" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter specifies the local path to which the home directory will be + connected (see <smbconfoption name="logon home"/>) and is only used by NT + Workstations. + </para> + + <para> + Note that this option is only useful if Samba is set up as a logon server. + </para> +</description> +<value type="default"></value> +<value type="example">h:</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/logon/logonhome.xml b/docs-xml/smbdotconf/logon/logonhome.xml new file mode 100644 index 0000000..cb5f5d5 --- /dev/null +++ b/docs-xml/smbdotconf/logon/logonhome.xml @@ -0,0 +1,56 @@ +<samba:parameter name="logon home" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter specifies the home directory location when a Win95/98 or NT Workstation logs into a Samba PDC. + It allows you to do + </para> + + <para> + <prompt moreinfo="none">C:\></prompt><userinput moreinfo="none">NET USE H: /HOME</userinput> + </para> + + <para> + from a command prompt, for example. + </para> + + <para> + This option takes the standard substitutions, allowing you to have separate logon scripts for each user or machine. + </para> + + <para> + This parameter can be used with Win9X workstations to ensure that roaming profiles are stored in a + subdirectory of the user's home directory. This is done in the following way: + </para> + + <para> + <command moreinfo="none">logon home = \\%N\%U\profile</command> + </para> + + <para> + This tells Samba to return the above string, with substitutions made when a client requests the info, generally + in a NetUserGetInfo request. Win9X clients truncate the info to \\server\share when a user does + <command moreinfo="none">net use /home</command> but use the whole string when dealing with profiles. + </para> + + <para> + Note that in prior versions of Samba, the <smbconfoption name="logon path"/> was returned rather than + <parameter moreinfo="none">logon home</parameter>. This broke <command moreinfo="none">net use /home</command> + but allowed profiles outside the home directory. The current implementation is correct, and can be used for + profiles if you use the above trick. + </para> + + <para> + Disable this feature by setting <smbconfoption name="logon home">""</smbconfoption> - using the empty string. + </para> + + <para> + This option is only useful if Samba is set up as a logon server. + </para> +</description> + +<value type="default">\\%N\%U</value> +<value type="example">\\remote_smb_server\%U</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/logon/logonpath.xml b/docs-xml/smbdotconf/logon/logonpath.xml new file mode 100644 index 0000000..440ebc4 --- /dev/null +++ b/docs-xml/smbdotconf/logon/logonpath.xml @@ -0,0 +1,69 @@ +<samba:parameter name="logon path" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter specifies the directory where roaming profiles (Desktop, NTuser.dat, etc) are + stored. Contrary to previous versions of these manual pages, it has nothing to do with Win 9X roaming + profiles. To find out how to handle roaming profiles for Win 9X system, see the + <smbconfoption name="logon home"/> parameter. + </para> + + <para> + This option takes the standard substitutions, allowing you to have separate logon scripts for each user or + machine. It also specifies the directory from which the "Application Data", <filename + moreinfo="none">desktop</filename>, <filename moreinfo="none">start menu</filename>, <filename + moreinfo="none">network neighborhood</filename>, <filename moreinfo="none">programs</filename> and other + folders, and their contents, are loaded and displayed on your Windows NT client. + </para> + + <para> + The share and the path must be readable by the user for the preferences and directories to be loaded onto the + Windows NT client. The share must be writeable when the user logs in for the first time, in order that the + Windows NT client can create the NTuser.dat and other directories. + Thereafter, the directories and any of the contents can, if required, be made read-only. It is not advisable + that the NTuser.dat file be made read-only - rename it to NTuser.man to achieve the desired effect (a + <emphasis>MAN</emphasis>datory profile). + </para> + + <para> + Windows clients can sometimes maintain a connection to the [homes] share, even though there is no user logged + in. Therefore, it is vital that the logon path does not include a reference to the homes share (i.e. setting + this parameter to \\%N\homes\profile_path will cause problems). + </para> + + <para> + This option takes the standard substitutions, allowing you to have separate logon scripts for each user or machine. + </para> + + <warning><para> + Do not quote the value. Setting this as <quote>\\%N\profile\%U</quote> + will break profile handling. Where the tdbsam or ldapsam passdb backend + is used, at the time the user account is created the value configured + for this parameter is written to the passdb backend and that value will + over-ride the parameter value present in the smb.conf file. Any error + present in the passdb backend account record must be editted using the + appropriate tool (pdbedit on the command-line, or any other locally + provided system tool). + </para></warning> + + <para>Note that this option is only useful if Samba is set up as a domain controller.</para> + + <para> + Disable the use of roaming profiles by setting the value of this parameter to the empty string. For + example, <smbconfoption name="logon path">""</smbconfoption>. Take note that even if the default setting + in the smb.conf file is the empty string, any value specified in the user account settings in the passdb + backend will over-ride the effect of setting this parameter to null. Disabling of all roaming profile use + requires that the user account settings must also be blank. + </para> + + <para> + An example of use is: +<programlisting> +logon path = \\PROFILESERVER\PROFILE\%U +</programlisting> + </para> +</description> +<value type="default">\\%N\%U\profile</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/logon/logonscript.xml b/docs-xml/smbdotconf/logon/logonscript.xml new file mode 100644 index 0000000..cf02466 --- /dev/null +++ b/docs-xml/smbdotconf/logon/logonscript.xml @@ -0,0 +1,54 @@ +<samba:parameter name="logon script" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter specifies the batch file (<filename>.bat</filename>) or NT command file + (<filename>.cmd</filename>) to be downloaded and run on a machine when a user successfully logs in. The file + must contain the DOS style CR/LF line endings. Using a DOS-style editor to create the file is recommended. + </para> + + <para> + The script must be a relative path to the <smbconfsection name="[netlogon]"/> service. If the [netlogon] + service specifies a <smbconfoption name="path"/> of <filename + moreinfo="none">/usr/local/samba/netlogon</filename>, and <smbconfoption name="logon + script">STARTUP.BAT</smbconfoption>, then the file that will be downloaded is: +<programlisting> + /usr/local/samba/netlogon/STARTUP.BAT +</programlisting> + </para> + + <para> + The contents of the batch file are entirely your choice. A suggested command would be to add <command + moreinfo="none">NET TIME \\SERVER /SET /YES</command>, to force every machine to synchronize clocks with the + same time server. Another use would be to add <command moreinfo="none">NET USE U: \\SERVER\UTILS</command> + for commonly used utilities, or +<programlisting> +<userinput>NET USE Q: \\SERVER\ISO9001_QA</userinput> +</programlisting> + for example. + </para> + + <para> + Note that it is particularly important not to allow write access to the [netlogon] share, or to grant users + write permission on the batch files in a secure environment, as this would allow the batch files to be + arbitrarily modified and security to be breached. + </para> + + <para> + This option takes the standard substitutions, allowing you to have separate logon scripts for each user or + machine. + </para> + + <para> + This option is only useful if Samba is set up as a logon server in a classic domain controller role. + If Samba is set up as an Active Directory domain controller, LDAP attribute <filename moreinfo="none">scriptPath</filename> + is used instead. For configurations where <smbconfoption name="passdb backend">ldapsam</smbconfoption> is in use, + this option only defines a default value in case LDAP attribute <filename moreinfo="none">sambaLogonScript</filename> + is missing. + </para> +</description> +<value type="default"></value> +<value type="example">scripts\%U.bat</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/logon/rejectmd5clients.xml b/docs-xml/smbdotconf/logon/rejectmd5clients.xml new file mode 100644 index 0000000..fe7701d --- /dev/null +++ b/docs-xml/smbdotconf/logon/rejectmd5clients.xml @@ -0,0 +1,110 @@ +<samba:parameter name="reject md5 clients" + context="G" + type="boolean" + deprecated="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This option is deprecated and will be removed in a future release, + as it is a security problem if not set to "yes" (which will be + the hardcoded behavior in the future). + </para> + + <para>This option controls whether the netlogon server (currently + only in 'active directory domain controller' mode), will + reject clients which does not support NETLOGON_NEG_SUPPORTS_AES.</para> + + <para>Support for NETLOGON_NEG_SUPPORTS_AES was added in Windows + starting with Server 2008R2 and Windows 7, it's available in Samba + starting with 4.0, however third party domain members like NetApp ONTAP + still uses RC4 (HMAC-MD5), see + <ulink url="https://www.samba.org/samba/security/CVE-2022-38023.html">https://www.samba.org/samba/security/CVE-2022-38023.html</ulink> + for more details. + </para> + + <para>The default changed from 'no' to 'yes', with the patches for + <ulink url="https://www.samba.org/samba/security/CVE-2022-38023.html">CVE-2022-38023</ulink> + see <ulink url="https://bugzilla.samba.org/show_bug.cgi?id=15240">https://bugzilla.samba.org/show_bug.cgi?id=15240</ulink>. + </para> + + <para><emphasis>Avoid using this option!</emphasis> Use an explicit per machine account + '<smbconfoption name="server reject md5 schannel:COMPUTERACCOUNT"/>' instead! + Which is available with the patches for + <ulink url="https://www.samba.org/samba/security/CVE-2022-38023.html">CVE-2022-38023</ulink> + see <ulink url="https://bugzilla.samba.org/show_bug.cgi?id=15240">https://bugzilla.samba.org/show_bug.cgi?id=15240</ulink>. + </para> + + <para> + Samba will log an error in the log files at log level 0 + if legacy a client is rejected or allowed without an explicit, + '<smbconfoption name="server reject md5 schannel:COMPUTERACCOUNT">no</smbconfoption>' option + for the client. The message will indicate + the explicit '<smbconfoption name="server reject md5 schannel:COMPUTERACCOUNT">no</smbconfoption>' + line to be added, if the legacy client software requires it. (The log level can be adjusted with + '<smbconfoption name="CVE_2022_38023:error_debug_level">1</smbconfoption>' + in order to complain only at a higher log level). + </para> + + <para>This allows admins to use "no" only for a short grace period, + in order to collect the explicit + '<smbconfoption name="server reject md5 schannel:COMPUTERACCOUNT">no</smbconfoption>' options.</para> + + <para>When set to 'yes' this option overrides the + '<smbconfoption name="allow nt4 crypto:COMPUTERACCOUNT"/>' and + '<smbconfoption name="allow nt4 crypto"/>' options and implies + '<smbconfoption name="allow nt4 crypto:COMPUTERACCOUNT">no</smbconfoption>'. + </para> +</description> + +<value type="default">yes</value> +</samba:parameter> + +<samba:parameter name="server reject md5 schannel:COMPUTERACCOUNT" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + + <para>If you still have legacy domain members or trusted domains, + which required "reject md5 clients = no" before, + it is possible to specify an explicit exception per computer account + by setting 'server reject md5 schannel:COMPUTERACCOUNT = no'. + Note that COMPUTERACCOUNT has to be the sAMAccountName value of + the computer account (including the trailing '$' sign). + </para> + + <para> + Samba will log a complaint in the log files at log level 0 + about the security problem if the option is set to "no", + but the related computer does not require it. + (The log level can be adjusted with + '<smbconfoption name="CVE_2022_38023:warn_about_unused_debug_level">1</smbconfoption>' + in order to complain only at a higher log level). + </para> + + <para> + Samba will log a warning in the log files at log level 5 + if a setting is still needed for the specified computer account. + </para> + + <para> + See <ulink url="https://www.samba.org/samba/security/CVE-2022-38023.html">CVE-2022-38023</ulink>, + <ulink url="https://bugzilla.samba.org/show_bug.cgi?id=15240">https://bugzilla.samba.org/show_bug.cgi?id=15240</ulink>. + </para> + + <para>This option overrides the <smbconfoption name="reject md5 clients"/> option.</para> + + <para>When set to 'yes' this option overrides the + '<smbconfoption name="allow nt4 crypto:COMPUTERACCOUNT"/>' and + '<smbconfoption name="allow nt4 crypto"/>' options and implies + '<smbconfoption name="allow nt4 crypto:COMPUTERACCOUNT">no</smbconfoption>'. + </para> + + <programlisting> + server reject md5 schannel:LEGACYCOMPUTER1$ = no + server reject md5 schannel:NASBOX$ = no + server reject md5 schannel:LEGACYCOMPUTER2$ = no + </programlisting> +</description> + +</samba:parameter> diff --git a/docs-xml/smbdotconf/logon/setprimarygroupscript.xml b/docs-xml/smbdotconf/logon/setprimarygroupscript.xml new file mode 100644 index 0000000..8d1ae36 --- /dev/null +++ b/docs-xml/smbdotconf/logon/setprimarygroupscript.xml @@ -0,0 +1,20 @@ +<samba:parameter name="set primary group script" + context="G" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + + <para>Thanks to the Posix subsystem in NT a Windows User has a + primary group in addition to the auxiliary groups. This script + sets the primary group in the unix user database when an + administrator sets the primary group from the windows user + manager or when fetching a SAM with <command>net rpc + vampire</command>. <parameter>%u</parameter> will be replaced + with the user whose primary group is to be set. + <parameter>%g</parameter> will be replaced with the group to + set.</para> +</description> +<value type="default"></value> +<value type="example">/usr/sbin/usermod -g '%g' '%u'</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/logon/shutdownscript.xml b/docs-xml/smbdotconf/logon/shutdownscript.xml new file mode 100644 index 0000000..ea5b65f --- /dev/null +++ b/docs-xml/smbdotconf/logon/shutdownscript.xml @@ -0,0 +1,61 @@ +<samba:parameter name="shutdown script" + context="G" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This a full path name to a script called by + <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> that should + start a shutdown procedure.</para> + + <para>If the connected user possesses the <constant>SeRemoteShutdownPrivilege</constant>, + right, this command will be run as root.</para> + + <para>The %z %t %r %f variables are expanded as follows:</para> + + <itemizedlist> + <listitem> + <para><parameter moreinfo="none">%z</parameter> will be substituted with the + shutdown message sent to the server.</para> + </listitem> + + <listitem> + <para><parameter moreinfo="none">%t</parameter> will be substituted with the + number of seconds to wait before effectively starting the + shutdown procedure.</para> + </listitem> + + <listitem> + <para><parameter moreinfo="none">%r</parameter> will be substituted with the + switch <emphasis>-r</emphasis>. It means reboot after shutdown + for NT.</para> + </listitem> + + <listitem> + <para><parameter moreinfo="none">%f</parameter> will be substituted with the + switch <emphasis>-f</emphasis>. It means force the shutdown + even if applications do not respond for NT.</para> + </listitem> + </itemizedlist> + + <para>Shutdown script example: +<programlisting format="linespecific"> +#!/bin/bash + +time=$2 +let time="${time} / 60" +let time="${time} + 1" + +/sbin/shutdown $3 $4 +$time $1 & + +</programlisting> + Shutdown does not return so we need to launch it in background. + </para> + +</description> +<related>abort shutdown script</related> +<value type="default"></value> +<value type="example">/usr/local/samba/sbin/shutdown %m %t %r %f</value> + +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/addsharecommand.xml b/docs-xml/smbdotconf/misc/addsharecommand.xml new file mode 100644 index 0000000..484b591 --- /dev/null +++ b/docs-xml/smbdotconf/misc/addsharecommand.xml @@ -0,0 +1,72 @@ +<samba:parameter name="add share command" + context="G" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + Samba 2.2.0 introduced the ability to dynamically add and delete shares via the Windows NT 4.0 Server + Manager. The <parameter moreinfo="none">add share command</parameter> is used to define an external program + or script which will add a new service definition to + <filename moreinfo="none">smb.conf</filename>. + </para> + + <para> + In order to successfully execute the + <parameter moreinfo="none">add share command</parameter>, + <command moreinfo="none">smbd</command> requires that the administrator + connects using a root account (i.e. uid == 0) or has the + <literal>SeDiskOperatorPrivilege</literal>. + Scripts defined in the <parameter moreinfo="none">add share command</parameter> + parameter are executed as root. + </para> + + <para> + When executed, <command moreinfo="none">smbd</command> will automatically invoke the + <parameter moreinfo="none">add share command</parameter> with five parameters. + </para> + + <itemizedlist> + <listitem> + <para><parameter moreinfo="none">configFile</parameter> - the location of the global <filename + moreinfo="none">smb.conf</filename> file. + </para> + </listitem> + + <listitem> + <para><parameter moreinfo="none">shareName</parameter> - the name of the new share. + </para> + </listitem> + + <listitem> + <para><parameter moreinfo="none">pathName</parameter> - path to an **existing** + directory on disk. + </para> + </listitem> + + <listitem> + <para><parameter moreinfo="none">comment</parameter> - comment string to associate with the new + share. + </para> + </listitem> + + <listitem> + <para><parameter moreinfo="none">max + connections</parameter> + Number of maximum simultaneous connections to this + share. + </para> + </listitem> + </itemizedlist> + + <para> + This parameter is only used to add file shares. To add printer shares, see the <smbconfoption + name="addprinter command"/>. + </para> +</description> + +<related>change share command</related> +<related>delete share command</related> +<value type="default"></value> +<value type="example">/usr/local/bin/addshare</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/afsshare.xml b/docs-xml/smbdotconf/misc/afsshare.xml new file mode 100644 index 0000000..fe97b58 --- /dev/null +++ b/docs-xml/smbdotconf/misc/afsshare.xml @@ -0,0 +1,15 @@ +<samba:parameter name="afs share" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter controls whether special AFS features are enabled + for this share. If enabled, it assumes that the directory exported via + the <parameter>path</parameter> parameter is a local AFS import. The + special AFS features include the attempt to hand-craft an AFS token + if you enabled --with-fake-kaserver in configure. + </para> +</description> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/afstokenlifetime.xml b/docs-xml/smbdotconf/misc/afstokenlifetime.xml new file mode 100644 index 0000000..9d6e13a --- /dev/null +++ b/docs-xml/smbdotconf/misc/afstokenlifetime.xml @@ -0,0 +1,14 @@ +<samba:parameter name="afs token lifetime" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter controls the lifetime of tokens that the AFS + fake-kaserver claims. In reality these never expire but this lifetime + controls when the afs client will forget the token. </para> + + <para>Set this parameter to 0 to get <constant>NEVERDATE</constant>.</para> +</description> + +<value type="default">604800</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/afsusernamemap.xml b/docs-xml/smbdotconf/misc/afsusernamemap.xml new file mode 100644 index 0000000..f3f7390 --- /dev/null +++ b/docs-xml/smbdotconf/misc/afsusernamemap.xml @@ -0,0 +1,19 @@ +<samba:parameter name="afs username map" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + <description> + <para>If you are using the fake kaserver AFS feature, you might + want to hand-craft the usernames you are creating tokens for. + For example this is necessary if you have users from several domain + in your AFS Protection Database. One possible scheme to code users + as DOMAIN+User as it is done by winbind with the + as a separator. + </para> + + <para>The mapped user name must contain the cell name to log into, + so without setting this parameter there will be no token.</para> +</description> + +<value type="default"/> +<value type="example">%u@afs.samba.org</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/allowinsecurewidelinks.xml b/docs-xml/smbdotconf/misc/allowinsecurewidelinks.xml new file mode 100644 index 0000000..29c25fc --- /dev/null +++ b/docs-xml/smbdotconf/misc/allowinsecurewidelinks.xml @@ -0,0 +1,37 @@ +<samba:parameter name="allow insecure wide links" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + In normal operation the option <smbconfoption name="wide links"/> + which allows the server to follow symlinks outside of a share path + is automatically disabled when <smbconfoption name="unix extensions"/> + are enabled on a Samba server. This is done for security purposes + to prevent UNIX clients creating symlinks to areas of the server + file system that the administrator does not wish to export. + </para> + <para> + Setting <smbconfoption name="allow insecure wide links"/> to + true disables the link between these two parameters, removing + this protection and allowing a site to configure + the server to follow symlinks (by setting <smbconfoption name="wide links"/> + to "true") even when <smbconfoption name="unix extensions"/> + is turned on. + </para> + <para> + It is not recommended to enable this option unless you + fully understand the implications of allowing the server to + follow symbolic links created by UNIX clients. For most + normal Samba configurations this would be considered a security + hole and setting this parameter is not recommended. + </para> + <para> + This option was added at the request of sites who had + deliberately set Samba up in this way and needed to continue + supporting this functionality without having to patch the + Samba code. + </para> +</description> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/allowunsafeclusterupgrade.xml b/docs-xml/smbdotconf/misc/allowunsafeclusterupgrade.xml new file mode 100644 index 0000000..02398ff --- /dev/null +++ b/docs-xml/smbdotconf/misc/allowunsafeclusterupgrade.xml @@ -0,0 +1,16 @@ +<samba:parameter name="allow unsafe cluster upgrade" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>If set to no (the default), smbd checks at startup if + other smbd versions are running in the cluster and refuses to + start if so. This is done to protect data corruption in + internal data structures due to incompatible Samba versions + running concurrently in the same cluster. Setting this + parameter to <value type="example">yes</value> disables this + safety check. + </para> +</description> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/asyncsmbechohandler.xml b/docs-xml/smbdotconf/misc/asyncsmbechohandler.xml new file mode 100644 index 0000000..26a4346 --- /dev/null +++ b/docs-xml/smbdotconf/misc/asyncsmbechohandler.xml @@ -0,0 +1,15 @@ +<samba:parameter name="async smb echo handler" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter specifies whether Samba should fork the + async smb echo handler. It can be beneficial if your file + system can block syscalls for a very long time. In some + circumstances, it prolongs the timeout that Windows uses to + determine whether a connection is dead. This parameter is only for + SMB1. For SMB2 and above TCP keepalives can be used instead. + </para> +</description> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/auto_services.xml b/docs-xml/smbdotconf/misc/auto_services.xml new file mode 100644 index 0000000..d843d88 --- /dev/null +++ b/docs-xml/smbdotconf/misc/auto_services.xml @@ -0,0 +1,22 @@ +<samba:parameter name="auto services" + context="G" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<synonym>preload</synonym> +<description> + <para>This is a list of services that you want to be + automatically added to the browse lists. This is most useful + for homes and printers services that would otherwise not be + visible.</para> + + <para> + Note that if you just want all printers in your + printcap file loaded then the <smbconfoption name="load printers"/> + option is easier. + </para> +</description> + +<value type="default"></value> +<value type="example">fred lp colorlp</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/available.xml b/docs-xml/smbdotconf/misc/available.xml new file mode 100644 index 0000000..6e3b70c --- /dev/null +++ b/docs-xml/smbdotconf/misc/available.xml @@ -0,0 +1,14 @@ +<samba:parameter name="available" + context="S" + type="boolean" + generated_function="0" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter lets you "turn off" a service. If + <parameter moreinfo="none">available = no</parameter>, then <emphasis>ALL</emphasis> + attempts to connect to the service will fail. Such failures are + logged.</para> + +</description> +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/cachedirectory.xml b/docs-xml/smbdotconf/misc/cachedirectory.xml new file mode 100644 index 0000000..480f31b --- /dev/null +++ b/docs-xml/smbdotconf/misc/cachedirectory.xml @@ -0,0 +1,24 @@ +<samba:parameter name="cache directory" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>Usually, most of the TDB files are stored in the <parameter + moreinfo="none">lock directory</parameter>. Since Samba 3.4.0, it is + possible to differentiate between TDB files with persistent data and + TDB files with non-persistent data using the + <parameter moreinfo="none">state directory</parameter> and the + <parameter moreinfo="none">cache directory</parameter> options. + </para> + + <para>This option specifies the directory for storing TDB + files containing non-persistent data that will be kept across + service restarts. The directory should be placed on persistent + storage, but the data can be safely deleted by an + administrator. + </para> +</description> + +<value type="default">&pathconfig.CACHEDIR;</value> +<value type="example">/var/run/samba/locks/cache</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/changenotify.xml b/docs-xml/smbdotconf/misc/changenotify.xml new file mode 100644 index 0000000..9ded7ec --- /dev/null +++ b/docs-xml/smbdotconf/misc/changenotify.xml @@ -0,0 +1,13 @@ +<samba:parameter name="change notify" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter specifies whether Samba should reply + to a client's file change notify requests. + </para> + + <para>You should never need to change this parameter</para> +</description> +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/changesharecommand.xml b/docs-xml/smbdotconf/misc/changesharecommand.xml new file mode 100644 index 0000000..4cc7451 --- /dev/null +++ b/docs-xml/smbdotconf/misc/changesharecommand.xml @@ -0,0 +1,80 @@ +<samba:parameter name="change share command" + context="G" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + Samba 2.2.0 introduced the ability to dynamically add and delete shares via the Windows NT 4.0 Server +Manager. The <parameter moreinfo="none">change share command</parameter> is used to define an external +program or script which will modify an existing service definition in <filename +moreinfo="none">smb.conf</filename>. + </para> + + <para> + In order to successfully execute the + <parameter moreinfo="none">change share command</parameter>, + <command moreinfo="none">smbd</command> requires that the administrator + connects using a root account (i.e. uid == 0) or has the + <literal>SeDiskOperatorPrivilege</literal>. + Scripts defined in the <parameter moreinfo="none">change share command</parameter> + parameter are executed as root. + </para> + + <para> + When executed, <command moreinfo="none">smbd</command> will automatically invoke the + <parameter moreinfo="none">change share command</parameter> with six parameters. + </para> + + <itemizedlist> + <listitem> + <para><parameter moreinfo="none">configFile</parameter> - the location + of the global <filename moreinfo="none">smb.conf</filename> file. + </para> + </listitem> + + <listitem> + <para><parameter moreinfo="none">shareName</parameter> - the name of the new + share. + </para> + </listitem> + + <listitem> + <para><parameter moreinfo="none">pathName</parameter> - path to an **existing** + directory on disk. + </para> + </listitem> + + <listitem> + <para><parameter moreinfo="none">comment</parameter> - comment string to associate + with the new share. + </para> + </listitem> + + <listitem> + <para><parameter moreinfo="none">max + connections</parameter> + Number of maximum simultaneous connections to this + share. + </para> + </listitem> + + <listitem> + <para><parameter moreinfo="none">CSC policy</parameter> - client side caching + policy in string form. Valid values are: manual, documents, programs, disable. + </para> + </listitem> + </itemizedlist> + + <para> + This parameter is only used to modify existing file share definitions. + To modify printer shares, use the "Printers..." folder as seen + when browsing the Samba host. + </para> +</description> + +<related>add share command</related> +<related>delete share command</related> +<value type="default"></value> +<value type="example">/usr/local/bin/changeshare</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/clusteraddresses.xml b/docs-xml/smbdotconf/misc/clusteraddresses.xml new file mode 100644 index 0000000..66878cd --- /dev/null +++ b/docs-xml/smbdotconf/misc/clusteraddresses.xml @@ -0,0 +1,16 @@ +<samba:parameter name="cluster addresses" + context="G" + type="cmdlist" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>With this parameter you can add additional addresses that + nmbd will register with a WINS server. Similarly, these + addresses will be registered by default when + <emphasis>net ads dns register</emphasis> is called with + <smbconfoption name="clustering">yes</smbconfoption> + configured.</para> +</description> + +<value type="default"></value> +<value type="example">10.0.0.1 10.0.0.2 10.0.0.3</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/clustering.xml b/docs-xml/smbdotconf/misc/clustering.xml new file mode 100644 index 0000000..cf426ec --- /dev/null +++ b/docs-xml/smbdotconf/misc/clustering.xml @@ -0,0 +1,16 @@ +<samba:parameter name="clustering" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter specifies whether Samba should contact + ctdb for accessing its tdb files and use ctdb as a backend + for its messaging backend. + </para> + + <para>Set this parameter to <value type="example">yes</value> only if + you have a cluster setup with ctdb running. + </para> +</description> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/configfile.xml b/docs-xml/smbdotconf/misc/configfile.xml new file mode 100644 index 0000000..3b67fb0 --- /dev/null +++ b/docs-xml/smbdotconf/misc/configfile.xml @@ -0,0 +1,25 @@ +<samba:parameter name="config file" + context="G" + type="string" + function="next_configfile" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This allows you to override the config file + to use, instead of the default (usually <filename moreinfo="none">smb.conf</filename>). + There is a chicken and egg problem here as this option is set + in the config file!</para> + + <para>For this reason, if the name of the config file has changed + when the parameters are loaded then it will reload them from + the new config file.</para> + + <para>This option takes the usual substitutions, which can + be very useful.</para> + + <para>If the config file doesn't exist then it won't be loaded + (allowing you to special case the config files of just a few + clients).</para> +</description> +<value type="example">/usr/local/samba/lib/smb.conf.%m</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/copy.xml b/docs-xml/smbdotconf/misc/copy.xml new file mode 100644 index 0000000..53e899e --- /dev/null +++ b/docs-xml/smbdotconf/misc/copy.xml @@ -0,0 +1,21 @@ +<samba:parameter name="copy" + type="string" + context="S" + generated_function="0" + handler="handle_copy" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter allows you to "clone" service + entries. The specified service is simply duplicated under the + current service's name. Any parameters specified in the current + section will override those in the section being copied.</para> + + <para>This feature lets you set up a 'template' service and + create similar services easily. Note that the service being + copied must occur earlier in the configuration file than the + service doing the copying.</para> +</description> + +<value type="default"></value> +<value type="example">otherservice</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/ctdbdsocket.xml b/docs-xml/smbdotconf/misc/ctdbdsocket.xml new file mode 100644 index 0000000..2bc118b --- /dev/null +++ b/docs-xml/smbdotconf/misc/ctdbdsocket.xml @@ -0,0 +1,15 @@ +<samba:parameter name="ctdbd socket" + context="G" + type="string" + function="_ctdbd_socket" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>If you set <value type="example">clustering=yes</value>, + you need to tell Samba where ctdbd listens on its unix domain + socket. The default path as of ctdb 1.0 is /tmp/ctdb.socket which + you have to explicitly set for Samba in smb.conf. + </para> +</description> +<value type="default"></value> +<value type="example">/tmp/ctdb.socket</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/ctdblocktimewarnthreshold.xml b/docs-xml/smbdotconf/misc/ctdblocktimewarnthreshold.xml new file mode 100644 index 0000000..f9da01f --- /dev/null +++ b/docs-xml/smbdotconf/misc/ctdblocktimewarnthreshold.xml @@ -0,0 +1,27 @@ +<samba:parameter name="ctdb locktime warn threshold" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + + <para> + In a cluster environment using Samba and ctdb it is critical + that locks on central ctdb-hosted databases like locking.tdb + are not held for long. With the current Samba architecture + it happens that Samba takes a lock and while holding that + lock makes file system calls into the shared cluster file + system. This option makes Samba warn if it detects that it + has held locks for the specified number of milliseconds. If + this happens, <emphasis>smbd</emphasis> will emit a debug level 0 + message into its logs and potentially into syslog. The most likely + reason for such a log message is that an operation of the cluster + file system Samba exports is taking longer than expected. + The messages are meant as a debugging aid for potential + cluster problems. + </para> + + <para>The default value of 0 disables this logging.</para> + +</description> +<value type="default">0</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/ctdbtimeout.xml b/docs-xml/smbdotconf/misc/ctdbtimeout.xml new file mode 100644 index 0000000..b02b2c8 --- /dev/null +++ b/docs-xml/smbdotconf/misc/ctdbtimeout.xml @@ -0,0 +1,36 @@ +<samba:parameter name="ctdb timeout" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter specifies a timeout in milliseconds for the + connection between Samba and ctdb. It is only valid if you + have compiled Samba with clustering and if you have + set <parameter>clustering=yes</parameter>. + </para> + <para>When something in the cluster blocks, it can happen that + we wait indefinitely long for ctdb, just adding to the + blocking condition. In a well-running cluster this should + never happen, but there are too many components in a cluster + that might have hickups. Choosing the right balance for this + value is very tricky, because on a busy cluster long service + times to transfer something across the cluster might be + valid. Setting it too short will degrade the service your + cluster presents, setting it too long might make the cluster + itself not recover from something severely broken for too + long. + </para> + <para> + Be aware that if you set this parameter, this needs to be in + the file smb.conf, it is not really helpful to put this into + a registry configuration (typical on a cluster), because to + access the registry contact to ctdb is required. + </para> + <para>Setting <parameter>ctdb timeout</parameter> to n makes + any process waiting longer than n milliseconds for a reply by the + cluster panic. Setting it to 0 (the default) makes Samba + block forever, which is the highly recommended default. + </para> +</description> +<value type="default">0</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/defaultservice.xml b/docs-xml/smbdotconf/misc/defaultservice.xml new file mode 100644 index 0000000..2da968b --- /dev/null +++ b/docs-xml/smbdotconf/misc/defaultservice.xml @@ -0,0 +1,31 @@ +<samba:parameter name="default service" + context="G" + type="string" + function="defaultservice" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<synonym>default</synonym> +<description> + <para>This parameter specifies the name of a service + which will be connected to if the service actually requested cannot + be found. Note that the square brackets are <emphasis>NOT</emphasis> + given in the parameter value (see example below).</para> + + <para>There is no default value for this parameter. If this + parameter is not given, attempting to connect to a nonexistent + service results in an error.</para> + + <para> + Typically the default service would be a <smbconfoption name="guest ok"/>, <smbconfoption + name="read-only"/> service.</para> <para>Also note that the apparent service name will be changed to equal + that of the requested service, this is very useful as it allows you to use macros like <parameter + moreinfo="none">%S</parameter> to make a wildcard service. + </para> + + <para>Note also that any "_" characters in the name of the service + used in the default service will get mapped to a "/". This allows for + interesting things.</para> +</description> +<value type="default"></value> +<value type="example">pub</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/deletereadonly.xml b/docs-xml/smbdotconf/misc/deletereadonly.xml new file mode 100644 index 0000000..84390ed --- /dev/null +++ b/docs-xml/smbdotconf/misc/deletereadonly.xml @@ -0,0 +1,14 @@ +<samba:parameter name="delete readonly" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter allows readonly files to be deleted. + This is not normal DOS semantics, but is allowed by UNIX.</para> + + <para>This option may be useful for running applications such + as rcs, where UNIX file ownership prevents changing file + permissions, and DOS semantics prevent deletion of a read only file.</para> +</description> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/deletesharecommand.xml b/docs-xml/smbdotconf/misc/deletesharecommand.xml new file mode 100644 index 0000000..f569cd2 --- /dev/null +++ b/docs-xml/smbdotconf/misc/deletesharecommand.xml @@ -0,0 +1,52 @@ +<samba:parameter name="delete share command" + context="G" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + Samba 2.2.0 introduced the ability to dynamically add and delete shares via the Windows NT 4.0 Server + Manager. The <parameter moreinfo="none">delete share command</parameter> is used to define an external + program or script which will remove an existing service definition from + <filename moreinfo="none">smb.conf</filename>. + </para> + + <para>In order to successfully execute the + <parameter moreinfo="none">delete share command</parameter>, + <command moreinfo="none">smbd</command> requires that the administrator + connects using a root account (i.e. uid == 0) or has the + <literal>SeDiskOperatorPrivilege</literal>. + Scripts defined in the <parameter moreinfo="none">delete share command</parameter> + parameter are executed as root. + </para> + + <para> + When executed, <command moreinfo="none">smbd</command> will automatically invoke the + <parameter moreinfo="none">delete share command</parameter> with two parameters. + </para> + + <itemizedlist> + <listitem> + <para><parameter moreinfo="none">configFile</parameter> - the location + of the global <filename moreinfo="none">smb.conf</filename> file. + </para> + </listitem> + + <listitem> + <para><parameter moreinfo="none">shareName</parameter> - the name of + the existing service. + </para> + </listitem> + </itemizedlist> + + <para> + This parameter is only used to remove file shares. To delete printer shares, + see the <smbconfoption name="deleteprinter command"/>. + </para> +</description> + +<related>add share command</related> +<related>change share command</related> +<value type="default"></value> +<value type="example">/usr/local/bin/delshare</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/dfreecachetime.xml b/docs-xml/smbdotconf/misc/dfreecachetime.xml new file mode 100644 index 0000000..9679763 --- /dev/null +++ b/docs-xml/smbdotconf/misc/dfreecachetime.xml @@ -0,0 +1,26 @@ +<samba:parameter name="dfree cache time" + context="S" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + + <para> + The <parameter moreinfo="none">dfree cache time</parameter> should only be used on systems where a problem + occurs with the internal disk space calculations. This has been known to happen with Ultrix, but may occur + with other operating systems. The symptom that was seen was an error of "Abort Retry Ignore" at the + end of each directory listing. + </para> + + <para> + This is a new parameter introduced in Samba version 3.0.21. It specifies in seconds the time that smbd will + cache the output of a disk free query. If set to zero (the default) no caching is done. This allows a heavily + loaded server to prevent rapid spawning of <smbconfoption name="dfree command"/> scripts increasing the load. + </para> + + <para> + By default this parameter is zero, meaning no caching will be done. + </para> + +</description> +<value type="example">60</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/dfreecommand.xml b/docs-xml/smbdotconf/misc/dfreecommand.xml new file mode 100644 index 0000000..b12ee0f --- /dev/null +++ b/docs-xml/smbdotconf/misc/dfreecommand.xml @@ -0,0 +1,62 @@ +<samba:parameter name="dfree command" + context="S" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + + <para> + The <parameter moreinfo="none">dfree command</parameter> setting should only be used on systems where a + problem occurs with the internal disk space calculations. This has been known to happen with Ultrix, but may + occur with other operating systems. The symptom that was seen was an error of "Abort Retry Ignore" + at the end of each directory listing. + </para> + + <para> + This setting allows the replacement of the internal routines to calculate the total disk space and amount + available with an external routine. The example below gives a possible script that might fulfill this + function. + </para> + + <para> + In Samba version 3.0.21 this parameter has been changed to be a per-share parameter, and in addition the + parameter <smbconfoption name="dfree cache time"/> was added to allow the output of this script to be cached + for systems under heavy load. + </para> + + <para> + The external program will be passed a single parameter indicating a directory in the filesystem being queried. + This will typically consist of the string <filename moreinfo="none">./</filename>. The script should return + two integers in ASCII. The first should be the total disk space in blocks, and the second should be the number + of available blocks. An optional third return value can give the block size in bytes. The default blocksize is + 1024 bytes. + </para> + + <para> + Note: Your script should <emphasis>NOT</emphasis> be setuid or setgid and should be owned by (and writeable + only by) root! + </para> + + <para> + Where the script dfree (which must be made executable) could be: +<programlisting format="linespecific"> +#!/bin/sh +df "$1" | tail -1 | awk '{print $(NF-4),$(NF-2)}' +</programlisting> + or perhaps (on Sys V based systems): +<programlisting format="linespecific"> +#!/bin/sh +/usr/bin/df -k "$1" | tail -1 | awk '{print $3" "$5}' +</programlisting> + Note that you may have to replace the command names with full path names on some systems. + Also note the arguments passed into the script should be quoted inside the script in case they + contain special characters such as spaces or newlines. + </para> + + <para> + By default internal routines for determining the disk capacity and remaining space will be used. + </para> + +</description> +<value type="example">/usr/local/samba/bin/dfree</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/directorynamecachesize.xml b/docs-xml/smbdotconf/misc/directorynamecachesize.xml new file mode 100644 index 0000000..22999a6 --- /dev/null +++ b/docs-xml/smbdotconf/misc/directorynamecachesize.xml @@ -0,0 +1,14 @@ +<samba:parameter name="directory name cache size" + context="S" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter specifies the size of the directory name cache for SMB1 + connections. It is not used for SMB2. It will be needed to turn this off + for *BSD systems. + </para> + +</description> +<value type="default">100</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/dmapisupport.xml b/docs-xml/smbdotconf/misc/dmapisupport.xml new file mode 100644 index 0000000..de284ee --- /dev/null +++ b/docs-xml/smbdotconf/misc/dmapisupport.xml @@ -0,0 +1,28 @@ +<samba:parameter name="dmapi support" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter specifies whether Samba should use DMAPI to + determine whether a file is offline or not. This would typically + be used in conjunction with a hierarchical storage system that + automatically migrates files to tape. + </para> + + <para>Note that Samba infers the status of a file by examining the + events that a DMAPI application has registered interest in. This + heuristic is satisfactory for a number of hierarchical storage + systems, but there may be system for which it will fail. In this + case, Samba may erroneously report files to be offline. + </para> + + <para>This parameter is only available if a supported DMAPI + implementation was found at compilation time. It will only be used + if DMAPI is found to enabled on the system at run time. + </para> + + <para> + </para> +</description> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/dontdescend.xml b/docs-xml/smbdotconf/misc/dontdescend.xml new file mode 100644 index 0000000..ca9c75f --- /dev/null +++ b/docs-xml/smbdotconf/misc/dontdescend.xml @@ -0,0 +1,21 @@ +<samba:parameter name="dont descend" + context="S" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>There are certain directories on some systems + (e.g., the <filename moreinfo="none">/proc</filename> tree under Linux) that are either not + of interest to clients or are infinitely deep (recursive). This + parameter allows you to specify a comma-delimited list of directories + that the server should always show as empty.</para> + + <para>Note that Samba can be very fussy about the exact format + of the "dont descend" entries. For example you may need <filename moreinfo="none"> + ./proc</filename> instead of just <filename moreinfo="none">/proc</filename>. + Experimentation is the best policy :-) </para> +</description> + +<value type="default"></value> +<value type="example">/proc,/dev</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/dosfilemode.xml b/docs-xml/smbdotconf/misc/dosfilemode.xml new file mode 100644 index 0000000..353f4bb --- /dev/null +++ b/docs-xml/smbdotconf/misc/dosfilemode.xml @@ -0,0 +1,24 @@ +<samba:parameter name="dos filemode" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> The default behavior in Samba is to provide + UNIX-like behavior where only the owner of a file/directory is + able to change the permissions on it. However, this behavior + is often confusing to DOS/Windows users. Enabling this parameter + allows a user who has write access to the file (by whatever + means, including an ACL permission) to modify the permissions + (including ACL) on it. Note that a user belonging to the group + owning the file will not be allowed to change permissions if + the group is only granted read access. Ownership of the + file/directory may also be changed. + + Note that using the VFS modules acl_xattr or acl_tdb which store native + Windows as meta-data will automatically turn this option on for any + share for which they are loaded, as they require this option to emulate + Windows ACLs correctly. + </para> +</description> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/dosfiletimeresolution.xml b/docs-xml/smbdotconf/misc/dosfiletimeresolution.xml new file mode 100644 index 0000000..ccdfa6d --- /dev/null +++ b/docs-xml/smbdotconf/misc/dosfiletimeresolution.xml @@ -0,0 +1,25 @@ +<samba:parameter name="dos filetime resolution" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>Under the DOS and Windows FAT filesystem, the finest + granularity on time resolution is two seconds. Setting this parameter + for a share causes Samba to round the reported time down to the + nearest two second boundary when a query call that requires one second + resolution is made to <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry>.</para> + + <para>This option is mainly used as a compatibility option for Visual + C++ when used against Samba shares. If oplocks are enabled on a + share, Visual C++ uses two different time reading calls to check if a + file has changed since it was last read. One of these calls uses a + one-second granularity, the other uses a two second granularity. As + the two second call rounds any odd second down, then if the file has a + timestamp of an odd number of seconds then the two timestamps will not + match and Visual C++ will keep reporting the file has changed. Setting + this option causes the two timestamps to match, and Visual C++ is + happy.</para> +</description> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/dosfiletimes.xml b/docs-xml/smbdotconf/misc/dosfiletimes.xml new file mode 100644 index 0000000..17fadd2 --- /dev/null +++ b/docs-xml/smbdotconf/misc/dosfiletimes.xml @@ -0,0 +1,20 @@ +<samba:parameter name="dos filetimes" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>Under DOS and Windows, if a user can write to a + file they can change the timestamp on it. Under POSIX semantics, + only the owner of the file or root may change the timestamp. By + default, Samba emulates the DOS semantics and allows one to change the + timestamp on a file if the user <command moreinfo="none">smbd</command> is acting + on behalf has write permissions. + Due to changes in Microsoft Office 2000 and beyond, + the default for this parameter has been changed from "no" to "yes" in Samba 3.0.14 + and above. Microsoft Excel will display dialog box warnings about the file being + changed by another user if this parameter is not set to "yes" and files are being + shared between users. + </para> +</description> +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/dsdbeventnotification.xml b/docs-xml/smbdotconf/misc/dsdbeventnotification.xml new file mode 100644 index 0000000..279ac3d --- /dev/null +++ b/docs-xml/smbdotconf/misc/dsdbeventnotification.xml @@ -0,0 +1,29 @@ +<samba:parameter name="dsdb event notification" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>When enabled, this option causes Samba (acting as an + Active Directory Domain Controller) to stream Samba database + events across the internal message bus. Scripts built using + Samba's python bindings can listen to these events by + registering as the service + <filename moreinfo="none">dsdb_event</filename>.</para> + + <para>This is <emphasis>not</emphasis> needed for the audit + logging described in <smbconfoption name="log level"/>.</para> + + <para>Instead, this should instead be considered a developer + option (it assists in the Samba testsuite) rather than a + facility for external auditing, as message delivery is not + guaranteed (a feature that the testsuite works around).</para> + + <para>The Samba database events are also logged via the normal + logging methods when the <smbconfoption name="log level"/> is + set appropriately, say to + <command moreinfo="none">dsdb_json_audit:5</command>.</para> + +</description> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/dsdbgroupchangenotification.xml b/docs-xml/smbdotconf/misc/dsdbgroupchangenotification.xml new file mode 100644 index 0000000..3972e72 --- /dev/null +++ b/docs-xml/smbdotconf/misc/dsdbgroupchangenotification.xml @@ -0,0 +1,29 @@ +<samba:parameter name="dsdb group change notification" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>When enabled, this option causes Samba (acting as an + Active Directory Domain Controller) to stream group membership change + events across the internal message bus. Scripts built using + Samba's python bindings can listen to these events by + registering as the service + <filename moreinfo="none">dsdb_group_event</filename>.</para> + + <para>This is <emphasis>not</emphasis> needed for the audit + logging described in <smbconfoption name="log level"/>.</para> + + <para>Instead, this should instead be considered a developer + option (it assists in the Samba testsuite) rather than a + facility for external auditing, as message delivery is not + guaranteed (a feature that the testsuite works around).</para> + + <para>The Samba database events are also logged via the normal + logging methods when the <smbconfoption name="log level"/> is + set appropriately, say to + <command moreinfo="none">dsdb_group_json_audit:5</command>.</para> + +</description> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/dsdbpasswordeventnotification.xml b/docs-xml/smbdotconf/misc/dsdbpasswordeventnotification.xml new file mode 100644 index 0000000..cd2cc98 --- /dev/null +++ b/docs-xml/smbdotconf/misc/dsdbpasswordeventnotification.xml @@ -0,0 +1,29 @@ +<samba:parameter name="dsdb password event notification" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>When enabled, this option causes Samba (acting as an + Active Directory Domain Controller) to stream password change + and reset events across the internal message bus. + Scripts built using Samba's python bindings can listen to these + events by registering as the service + <filename moreinfo="none">password_event</filename>.</para> + + <para>This is <emphasis>not</emphasis> needed for the audit + logging described in <smbconfoption name="log level"/>.</para> + + <para>Instead, this should instead be considered a developer + option (it assists in the Samba testsuite) rather than a + facility for external auditing, as message delivery is not + guaranteed (a feature that the testsuite works around).</para> + + <para>The Samba database events are also logged via the normal + logging methods when the <smbconfoption name="log level"/> is + set appropriately, say to + <command moreinfo="none">dsdb_password_json_audit:5</command>.</para> + +</description> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/elasticsearchaddress.xml b/docs-xml/smbdotconf/misc/elasticsearchaddress.xml new file mode 100644 index 0000000..6112546 --- /dev/null +++ b/docs-xml/smbdotconf/misc/elasticsearchaddress.xml @@ -0,0 +1,14 @@ +<samba:parameter name="elasticsearch:address" + context="S" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + <description> + <para> + Specifies the name of the Elasticsearch server to use for Spotlight + queries when using the Elasticsearch backend. + </para> + </description> + + <value type="default">localhost</value> + <value type="example">needle.haystack.samba.org</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/elasticsearchignoreunknownattribute.xml b/docs-xml/smbdotconf/misc/elasticsearchignoreunknownattribute.xml new file mode 100644 index 0000000..86368d3 --- /dev/null +++ b/docs-xml/smbdotconf/misc/elasticsearchignoreunknownattribute.xml @@ -0,0 +1,19 @@ +<samba:parameter name="elasticsearch:ignore unknown attribute" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + <description> + <para> + Ignore unknown Spotlight attributes in search queries. An example query + using the unsupported attribute + <literal>"kMDItemTopic"</literal> would be + <literal>kMDItemTopic=="hotstuff"</literal>. By + default any query using such a type would completely fail. By enabling + this option, if the type match is a subexpression of a larger expression, + then this subexpression is just ignored. + </para> + </description> + + <value type="default">no</value> + <value type="example">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/elasticsearchignoreunknowntype.xml b/docs-xml/smbdotconf/misc/elasticsearchignoreunknowntype.xml new file mode 100644 index 0000000..ca1f873 --- /dev/null +++ b/docs-xml/smbdotconf/misc/elasticsearchignoreunknowntype.xml @@ -0,0 +1,19 @@ +<samba:parameter name="elasticsearch:ignore unknown type" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + <description> + <para> + Ignore unknown Spotlight types in search queries. An example query using + the unsupported type <literal>"public.calendar-event"</literal> + would be + <literal>kMDItemContentType=="public.calendar-event"</literal>. By + default any query using such a type would completely fail. By enabling + this option, if the type match is a subexpression of a larger expression, + then this subexpression is just ignored. + </para> + </description> + + <value type="default">no</value> + <value type="example">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/elasticsearchindex.xml b/docs-xml/smbdotconf/misc/elasticsearchindex.xml new file mode 100644 index 0000000..7f394b2 --- /dev/null +++ b/docs-xml/smbdotconf/misc/elasticsearchindex.xml @@ -0,0 +1,16 @@ +<samba:parameter name="elasticsearch:index" + context="S" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + <description> + <para> + Specifies the name of the Elasticsearch index to use for Spotlight queries + when using the Elasticsearch backend. The default value of "_all" is a + special Elasticsearch value that performs the search operation on all + indices. + </para> + </description> + + <value type="default">_all</value> + <value type="example">spotlight</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/elasticsearchmappings.xml b/docs-xml/smbdotconf/misc/elasticsearchmappings.xml new file mode 100644 index 0000000..d2502a6 --- /dev/null +++ b/docs-xml/smbdotconf/misc/elasticsearchmappings.xml @@ -0,0 +1,14 @@ +<samba:parameter name="elasticsearch:mappings" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + <description> + <para> + Path to a file specifying metadata attribute mappings in JSON format. Use + by the Elasticsearch backend of the Spotlight RPC service. + </para> + </description> + + <value type="default">&pathconfig.SAMBA_DATADIR;/elasticsearch_mappings.json</value> + <value type="example">/usr/share/foo/mymappings.json</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/elasticsearchmaxresults.xml b/docs-xml/smbdotconf/misc/elasticsearchmaxresults.xml new file mode 100644 index 0000000..1086b89 --- /dev/null +++ b/docs-xml/smbdotconf/misc/elasticsearchmaxresults.xml @@ -0,0 +1,15 @@ +<samba:parameter name="elasticsearch:max results" + context="S" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + <description> + <para> + Path to a file specifying metadata attribute mappings in JSON format. Used + by the Elasticsearch backend of the Spotlight RPC service. A value of 0 + means no limit. + </para> + </description> + + <value type="default">100</value> + <value type="example">10</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/elasticsearchport.xml b/docs-xml/smbdotconf/misc/elasticsearchport.xml new file mode 100644 index 0000000..ea87daa --- /dev/null +++ b/docs-xml/smbdotconf/misc/elasticsearchport.xml @@ -0,0 +1,14 @@ +<samba:parameter name="elasticsearch:port" + context="S" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + <description> + <para> + Specifies the TCP port of the Elasticsearch server to use for Spotlight + queries when using the Elasticsearch backend. + </para> + </description> + + <value type="default">9200</value> + <value type="example">9201</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/elasticsearchusetls.xml b/docs-xml/smbdotconf/misc/elasticsearchusetls.xml new file mode 100644 index 0000000..e1aa8a3 --- /dev/null +++ b/docs-xml/smbdotconf/misc/elasticsearchusetls.xml @@ -0,0 +1,14 @@ +<samba:parameter name="elasticsearch:use tls" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + <description> + <para> + Specifies whether to use HTTPS when talking to the Elasticsearch server + used for Spotlight queries when using the Elasticsearch backend. + </para> + </description> + + <value type="default">no</value> + <value type="example">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/fakedirectorycreatetimes.xml b/docs-xml/smbdotconf/misc/fakedirectorycreatetimes.xml new file mode 100644 index 0000000..49f54a9 --- /dev/null +++ b/docs-xml/smbdotconf/misc/fakedirectorycreatetimes.xml @@ -0,0 +1,34 @@ +<samba:parameter name="fake directory create times" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>NTFS and Windows VFAT file systems keep a create + time for all files and directories. This is not the same as the + ctime - status change time - that Unix keeps, so Samba by default + reports the earliest of the various times Unix does keep. Setting + this parameter for a share causes Samba to always report midnight + 1-1-1980 as the create time for directories.</para> + + <para>This option is mainly used as a compatibility option for + Visual C++ when used against Samba shares. Visual C++ generated + makefiles have the object directory as a dependency for each object + file, and a make rule to create the directory. Also, when NMAKE + compares timestamps it uses the creation time when examining a + directory. Thus the object directory will be created if it does not + exist, but once it does exist it will always have an earlier + timestamp than the object files it contains.</para> + + <para>However, Unix time semantics mean that the create time + reported by Samba will be updated whenever a file is created + or deleted in the directory. NMAKE finds all object files in + the object directory. The timestamp of the last one built is then + compared to the timestamp of the object directory. If the + directory's timestamp if newer, then all object files + will be rebuilt. Enabling this option + ensures directories always predate their contents and an NMAKE build + will proceed as expected.</para> +</description> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/followsymlinks.xml b/docs-xml/smbdotconf/misc/followsymlinks.xml new file mode 100644 index 0000000..deca634 --- /dev/null +++ b/docs-xml/smbdotconf/misc/followsymlinks.xml @@ -0,0 +1,20 @@ +<samba:parameter name="follow symlinks" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter allows the Samba administrator to stop <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> from following symbolic links in a particular share. Setting this + parameter to <constant>no</constant> prevents any file or directory that is a symbolic link from being + followed (the user will get an error). This option is very useful to stop users from adding a symbolic + link to <filename moreinfo="none">/etc/passwd</filename> in their home directory for instance. However + it will slow filename lookups down slightly. + </para> + + <para> + This option is enabled (i.e. <command moreinfo="none">smbd</command> will follow symbolic links) by default. + </para> +</description> +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/fssprunestale.xml b/docs-xml/smbdotconf/misc/fssprunestale.xml new file mode 100644 index 0000000..722cff5 --- /dev/null +++ b/docs-xml/smbdotconf/misc/fssprunestale.xml @@ -0,0 +1,15 @@ +<samba:parameter name="fss: prune stale" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + When enabled, Samba's File Server Remote VSS Protocol (FSRVP) server + checks all FSRVP initiated snapshots on startup, and removes any + corresponding state (including share definitions) for nonexistent + snapshot paths. + </para> +</description> +<value type="default">no</value> +<value type="example">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/fsssequencetimeout.xml b/docs-xml/smbdotconf/misc/fsssequencetimeout.xml new file mode 100644 index 0000000..12f1854 --- /dev/null +++ b/docs-xml/smbdotconf/misc/fsssequencetimeout.xml @@ -0,0 +1,15 @@ +<samba:parameter name="fss: sequence timeout" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + The File Server Remote VSS Protocol (FSRVP) server includes a message + sequence timer to ensure cleanup on unexpected client disconnect. This + parameter overrides the default timeout between FSRVP operations. + FSRVP timeouts can be completely disabled via a value of 0. + </para> +</description> +<value type="default">180 or 1800, depending on operation</value> +<value type="example">0</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/fstype.xml b/docs-xml/smbdotconf/misc/fstype.xml new file mode 100644 index 0000000..437bd5c --- /dev/null +++ b/docs-xml/smbdotconf/misc/fstype.xml @@ -0,0 +1,16 @@ +<samba:parameter name="fstype" + context="S" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter allows the administrator to configure the string that specifies the type of filesystem a share + is using that is reported by <citerefentry><refentrytitle>smbd</refentrytitle> <manvolnum>8</manvolnum></citerefentry> + when a client queries the filesystem type for a share. The default type is <constant>NTFS</constant> for compatibility + with Windows NT but this can be changed to other strings such as <constant>Samba</constant> or <constant>FAT</constant> + if required. + </para> +</description> +<value type="default">NTFS</value> +<value type="example">Samba</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/honorchangenotifyprivilege.xml b/docs-xml/smbdotconf/misc/honorchangenotifyprivilege.xml new file mode 100644 index 0000000..a9c880c --- /dev/null +++ b/docs-xml/smbdotconf/misc/honorchangenotifyprivilege.xml @@ -0,0 +1,20 @@ +<samba:parameter name="honor change notify privilege" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This option can be used to make use of the change notify privilege. + By default notify results are not checked against the file system + permissions. + </para> + <para> + If "honor change notify privilege" is enabled, a user will only + receive notify results, if he has change notify privilege or + sufficient file system permissions. If a user has the change notify + privilege, he will receive all requested notify results, even if the + user does not have the permissions on the file system. + </para> +</description> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/include.xml b/docs-xml/smbdotconf/misc/include.xml new file mode 100644 index 0000000..cbda1ed --- /dev/null +++ b/docs-xml/smbdotconf/misc/include.xml @@ -0,0 +1,31 @@ +<samba:parameter name="include" + context="S" + type="string" + generated_function="0" + handler="handle_include" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This allows you to include one config file inside another. The file is included literally, as though typed + in place. + </para> + + <para> + It takes the standard substitutions, except <parameter moreinfo="none">%u</parameter>, + <parameter moreinfo="none">%P</parameter> and <parameter moreinfo="none">%S</parameter>. + </para> + + <para> + The parameter <parameter>include = registry</parameter> has + a special meaning: It does <emphasis>not</emphasis> include + a file named <emphasis>registry</emphasis> from the current working + directory, but instead reads the global configuration options + from the registry. See the section on registry-based + configuration for details. Note that this option + automatically activates registry shares. + </para> +</description> + +<value type="default"></value> +<value type="example">/usr/local/samba/lib/admin_smb.conf</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/kernelchangenotify.xml b/docs-xml/smbdotconf/misc/kernelchangenotify.xml new file mode 100644 index 0000000..d5551a9 --- /dev/null +++ b/docs-xml/smbdotconf/misc/kernelchangenotify.xml @@ -0,0 +1,16 @@ +<samba:parameter name="kernel change notify" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter specifies whether Samba should ask the + kernel for change notifications in directories so that + SMB clients can refresh whenever the data on the server changes. + </para> + + <para>This parameter is only used when your kernel supports + change notification to user programs using the inotify interface. + </para> +</description> +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/lockdirectory.xml b/docs-xml/smbdotconf/misc/lockdirectory.xml new file mode 100644 index 0000000..cf0ea2b --- /dev/null +++ b/docs-xml/smbdotconf/misc/lockdirectory.xml @@ -0,0 +1,24 @@ +<samba:parameter name="lock directory" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<synonym>lock dir</synonym> +<description> + <para>This option specifies the directory where lock + files will be placed. The lock files are used to implement the + <smbconfoption name="max connections"/> option. + </para> + + <para> + Note: This option can not be set inside registry + configurations. + </para> + <para>The files placed in this directory are not required + across service restarts and can be safely placed on volatile + storage (e.g. tmpfs in Linux)</para> + +</description> + +<value type="default">&pathconfig.LOCKDIR;</value> +<value type="example">/var/run/samba/locks</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/logwriteablefilesonexit.xml b/docs-xml/smbdotconf/misc/logwriteablefilesonexit.xml new file mode 100644 index 0000000..d95471a --- /dev/null +++ b/docs-xml/smbdotconf/misc/logwriteablefilesonexit.xml @@ -0,0 +1,22 @@ +<samba:parameter name="log writeable files on exit" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + When the network connection between a CIFS client and Samba + dies, Samba has no option but to simply shut down the server + side of the network connection. If this happens, there is a + risk of data corruption because the Windows client did not + complete all write operations that the Windows application + requested. Setting this option to "yes" makes smbd log with + a level 0 message a list of all files that have been opened + for writing when the network connection died. Those are the + files that are potentially corrupted. It is meant as an aid + for the administrator to give him a list of files to do + consistency checks on. + </para> +</description> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/magicoutput.xml b/docs-xml/smbdotconf/misc/magicoutput.xml new file mode 100644 index 0000000..17b3c67 --- /dev/null +++ b/docs-xml/smbdotconf/misc/magicoutput.xml @@ -0,0 +1,19 @@ +<samba:parameter name="magic output" + context="S" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter specifies the name of a file which will contain output created by a magic script (see the + <smbconfoption name="magic script"/> parameter below). + </para> + + <warning><para>If two clients use the same <parameter moreinfo="none">magic script + </parameter> in the same directory the output file content is undefined. + </para></warning> +</description> + +<value type="default"><comment><magic script name>.out</comment></value> +<value type="example">myfile.txt</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/magicscript.xml b/docs-xml/smbdotconf/misc/magicscript.xml new file mode 100644 index 0000000..614f5ae --- /dev/null +++ b/docs-xml/smbdotconf/misc/magicscript.xml @@ -0,0 +1,31 @@ +<samba:parameter name="magic script" + context="S" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter specifies the name of a file which, + if opened, will be executed by the server when the file is closed. + This allows a UNIX script to be sent to the Samba host and + executed on behalf of the connected user.</para> + + <para>Scripts executed in this way will be deleted upon + completion assuming that the user has the appropriate level + of privilege and the file permissions allow the deletion.</para> + + <para>If the script generates output, output will be sent to + the file specified by the <smbconfoption name="magic output"/> + parameter (see above).</para> + + <para>Note that some shells are unable to interpret scripts + containing CR/LF instead of CR as + the end-of-line marker. Magic scripts must be executable + <emphasis>as is</emphasis> on the host, which for some hosts and + some shells will require filtering at the DOS end.</para> + + <para>Magic scripts are <emphasis>EXPERIMENTAL</emphasis> and + should <emphasis>NOT</emphasis> be relied upon.</para> +</description> +<value type="default"></value> +<value type="example">user.csh</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/messagecommand.xml b/docs-xml/smbdotconf/misc/messagecommand.xml new file mode 100644 index 0000000..ba39b9f --- /dev/null +++ b/docs-xml/smbdotconf/misc/messagecommand.xml @@ -0,0 +1,79 @@ +<samba:parameter name="message command" + context="G" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This specifies what command to run when the + server receives a WinPopup style message.</para> + + <para>This would normally be a command that would + deliver the message somehow. How this is to be done is + up to your imagination.</para> + + <para>An example is: +<programlisting> +<command moreinfo="none">message command = csh -c 'xedit %s;rm %s' &</command> +</programlisting> + </para> + + <para>This delivers the message using <command moreinfo="none">xedit</command>, then + removes it afterwards. <emphasis>NOTE THAT IT IS VERY IMPORTANT + THAT THIS COMMAND RETURN IMMEDIATELY</emphasis>. That's why I + have the '&' on the end. If it doesn't return immediately then + your PCs may freeze when sending messages (they should recover + after 30 seconds, hopefully).</para> + + <para>All messages are delivered as the global guest user. + The command takes the standard substitutions, although <parameter moreinfo="none"> + %u</parameter> won't work (<parameter moreinfo="none">%U</parameter> may be better + in this case).</para> + + <para>Apart from the standard substitutions, some additional + ones apply. In particular:</para> + + <itemizedlist> + <listitem> + <para><parameter moreinfo="none">%s</parameter> = the filename containing + the message.</para> + </listitem> + + <listitem> + <para><parameter moreinfo="none">%t</parameter> = the destination that + the message was sent to (probably the server name).</para> + </listitem> + + <listitem> + <para><parameter moreinfo="none">%f</parameter> = who the message + is from.</para> + </listitem> + </itemizedlist> + + <para>You could make this command send mail, or whatever else + takes your fancy. Please let us know of any really interesting + ideas you have.</para> + + <para> + Here's a way of sending the messages as mail to root: +<programlisting> +<command moreinfo="none">message command = /bin/mail -s 'message from %f on %m' root < %s; rm %s</command> +</programlisting> + </para> + + <para>If you don't have a message command then the message + won't be delivered and Samba will tell the sender there was + an error. Unfortunately WfWg totally ignores the error code + and carries on regardless, saying that the message was delivered. + </para> + + <para> + If you want to silently delete it then try: +<programlisting> +<command moreinfo="none">message command = rm %s</command> +</programlisting> + </para> + +</description> +<value type="default"></value> +<value type="example">csh -c 'xedit %s; rm %s' &</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/nbtclientsocketaddress.xml b/docs-xml/smbdotconf/misc/nbtclientsocketaddress.xml new file mode 100644 index 0000000..12815dc --- /dev/null +++ b/docs-xml/smbdotconf/misc/nbtclientsocketaddress.xml @@ -0,0 +1,20 @@ +<samba:parameter name="nbt client socket address" + context="G" + type="string" + deprecated="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<synonym>socket address</synonym> +<description> + <para>This option allows you to control what address Samba + will send NBT client packets from, and process replies using, + including in nmbd. </para> + <para>Setting this option should never be necessary on usual Samba + servers running only one nmbd.</para> + + <para>By default Samba will send UDP packets from the OS default address for the destination, and accept replies on 0.0.0.0.</para> + <para>This parameter is deprecated. See <smbconfoption name="bind interfaces only">Yes</smbconfoption> and <smbconfoption name="interfaces"></smbconfoption> for the previous behaviour of controlling the normal listening sockets.</para> +</description> + +<value type="default">0.0.0.0</value> +<value type="example">192.168.2.20</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/ncalrpcdir.xml b/docs-xml/smbdotconf/misc/ncalrpcdir.xml new file mode 100644 index 0000000..4bbd222 --- /dev/null +++ b/docs-xml/smbdotconf/misc/ncalrpcdir.xml @@ -0,0 +1,12 @@ +<samba:parameter name="ncalrpc dir" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This directory will hold a series of named pipes to allow RPC over inter-process communication.</para> + <para>This will allow Samba and other unix processes to interact over DCE/RPC without using TCP/IP. Additionally a sub-directory 'np' has restricted permissions, and allows a trusted communication channel between Samba processes</para> +</description> + +<value type="default">&pathconfig.NCALRPCDIR;</value> +<value type="example">/var/run/samba/ncalrpc</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/nmbdbindexplicitbroadcast.xml b/docs-xml/smbdotconf/misc/nmbdbindexplicitbroadcast.xml new file mode 100644 index 0000000..fd72f06 --- /dev/null +++ b/docs-xml/smbdotconf/misc/nmbdbindexplicitbroadcast.xml @@ -0,0 +1,16 @@ +<samba:parameter name="nmbd bind explicit broadcast" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This option causes <citerefentry><refentrytitle>nmbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> to explicitly bind to the + broadcast address of the local subnets. This is needed to make nmbd + work correctly in combination with the <smbconfoption name="socket address"/> option. + You should not need to unset this option. + </para> +</description> + +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/panicaction.xml b/docs-xml/smbdotconf/misc/panicaction.xml new file mode 100644 index 0000000..01a97c3 --- /dev/null +++ b/docs-xml/smbdotconf/misc/panicaction.xml @@ -0,0 +1,17 @@ +<samba:parameter name="panic action" + context="G" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This is a Samba developer option that allows a + system command to be called when either <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> or <citerefentry><refentrytitle>nmbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> crashes. This is usually used to + draw attention to the fact that a problem occurred. + </para> +</description> + +<value type="default"></value> +<value type="example">/bin/sleep 90000</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/perfcountmodule.xml b/docs-xml/smbdotconf/misc/perfcountmodule.xml new file mode 100644 index 0000000..e25105f --- /dev/null +++ b/docs-xml/smbdotconf/misc/perfcountmodule.xml @@ -0,0 +1,13 @@ +<samba:parameter name="perfcount module" + context="G" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter specifies the perfcount backend to be used when monitoring SMB + operations. Only one perfcount module may be used, and it must implement all of the + apis contained in the smb_perfcount_handler structure defined in smb.h. + </para> +</description> + +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/piddirectory.xml b/docs-xml/smbdotconf/misc/piddirectory.xml new file mode 100644 index 0000000..d006372 --- /dev/null +++ b/docs-xml/smbdotconf/misc/piddirectory.xml @@ -0,0 +1,13 @@ +<samba:parameter name="pid directory" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This option specifies the directory where pid files will be placed. + </para> +</description> + +<value type="default">&pathconfig.PIDDIR;</value> +<value type="example">/var/run/</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/postexec.xml b/docs-xml/smbdotconf/misc/postexec.xml new file mode 100644 index 0000000..ca15221 --- /dev/null +++ b/docs-xml/smbdotconf/misc/postexec.xml @@ -0,0 +1,21 @@ +<samba:parameter name="postexec" + context="S" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option specifies a command to be run + whenever the service is disconnected. It takes the usual + substitutions. The command may be run as the root on some + systems.</para> + + <para>An interesting example may be to unmount server + resources:</para> + +<para><command moreinfo="none">postexec = /etc/umount /cdrom</command></para> +</description> +<related>preexec</related> + +<value type="default"></value> +<value type="example">echo \"%u disconnected from %S from %m (%I)\" >> /tmp/log</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/preexec.xml b/docs-xml/smbdotconf/misc/preexec.xml new file mode 100644 index 0000000..7faf89a --- /dev/null +++ b/docs-xml/smbdotconf/misc/preexec.xml @@ -0,0 +1,29 @@ +<samba:parameter name="preexec" + context="S" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<synonym>exec</synonym> +<description> + <para>This option specifies a command to be run whenever + the service is connected to. It takes the usual substitutions.</para> + + <para>An interesting example is to send the users a welcome + message every time they log in. Maybe a message of the day? Here + is an example:</para> + + <para> + <command moreinfo="none">preexec = csh -c 'echo \"Welcome to %S!\" | + /usr/local/samba/bin/smbclient -M %m -I %I' & </command> + </para> + + <para>Of course, this could get annoying after a while :-)</para> + + <para> + See also <smbconfoption name="preexec close"/> and <smbconfoption name="postexec"/>. + </para> +</description> + +<value type="default"></value> +<value type="example">echo \"%u connected to %S from %m (%I)\" >> /tmp/log</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/preexecclose.xml b/docs-xml/smbdotconf/misc/preexecclose.xml new file mode 100644 index 0000000..3d184e1 --- /dev/null +++ b/docs-xml/smbdotconf/misc/preexecclose.xml @@ -0,0 +1,13 @@ +<samba:parameter name="preexec close" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This boolean option controls whether a non-zero return code from <smbconfoption name="preexec"/> + should close the service being connected to. + </para> +</description> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/registryshares.xml b/docs-xml/smbdotconf/misc/registryshares.xml new file mode 100644 index 0000000..0bdb1f6 --- /dev/null +++ b/docs-xml/smbdotconf/misc/registryshares.xml @@ -0,0 +1,23 @@ +<samba:parameter name="registry shares" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This turns on or off support for share definitions read from + registry. Shares defined in <emphasis>smb.conf</emphasis> take + precedence over shares with the same name defined in + registry. See the section on registry-based configuration + for details. + </para> + + <para> + Note that this parameter defaults to <emphasis>no</emphasis>, + but it is set to <emphasis>yes</emphasis> when + <parameter>config backend</parameter> is set + to <emphasis>registry</emphasis>. + </para> +</description> +<value type="default">no</value> +<value type="example">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/remoteannounce.xml b/docs-xml/smbdotconf/misc/remoteannounce.xml new file mode 100644 index 0000000..0436898 --- /dev/null +++ b/docs-xml/smbdotconf/misc/remoteannounce.xml @@ -0,0 +1,42 @@ +<samba:parameter name="remote announce" + context="G" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This option allows you to setup <citerefentry><refentrytitle>nmbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> to periodically announce itself + to arbitrary IP addresses with an arbitrary workgroup name. + </para> + + <para> + This is useful if you want your Samba server to appear in a remote workgroup for + which the normal browse propagation rules don't work. The remote workgroup can be + anywhere that you can send IP packets to. + </para> + + <para> + For example: +<programlisting> +<command moreinfo="none">remote announce = 192.168.2.255/SERVERS 192.168.4.255/STAFF</command> +</programlisting> + the above line would cause <command moreinfo="none">nmbd</command> to announce itself + to the two given IP addresses using the given workgroup names. If you leave out the + workgroup name, then the one given in the <smbconfoption name="workgroup"/> parameter + is used instead. + </para> + + <para> + The IP addresses you choose would normally be the broadcast addresses of the remote + networks, but can also be the IP addresses of known browse masters if your network + config is that stable. + </para> + + <para> + See the chapter on Network Browsing in the Samba-HOWTO book. + </para> +</description> + +<value type="default"></value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/remotebrowsesync.xml b/docs-xml/smbdotconf/misc/remotebrowsesync.xml new file mode 100644 index 0000000..c0b106e --- /dev/null +++ b/docs-xml/smbdotconf/misc/remotebrowsesync.xml @@ -0,0 +1,50 @@ +<samba:parameter name="remote browse sync" + context="G" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This option allows you to setup <citerefentry><refentrytitle>nmbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> to periodically request + synchronization of browse lists with the master browser of a Samba + server that is on a remote segment. This option will allow you to + gain browse lists for multiple workgroups across routed networks. This + is done in a manner that does not work with any non-Samba servers. + </para> + + <para> + This is useful if you want your Samba server and all local + clients to appear in a remote workgroup for which the normal browse + propagation rules don't work. The remote workgroup can be anywhere + that you can send IP packets to. + </para> + + <para> + For example: +<programlisting> +<parameter>remote browse sync = 192.168.2.255 192.168.4.255</parameter> +</programlisting> + the above line would cause <command>nmbd</command> to request the master browser on the + specified subnets or addresses to synchronize their browse lists with + the local server. + </para> + + <para> + The IP addresses you choose would normally be the broadcast + addresses of the remote networks, but can also be the IP addresses + of known browse masters if your network config is that stable. If + a machine IP address is given Samba makes NO attempt to validate + that the remote machine is available, is listening, nor that it + is in fact the browse master on its segment. + </para> + + <para> + The <smbconfoption name="remote browse sync"/> may be used on networks + where there is no WINS server, and may be used on disjoint networks where + each network has its own WINS server. + </para> +</description> + +<value type="default"></value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/resetonzerovc.xml b/docs-xml/smbdotconf/misc/resetonzerovc.xml new file mode 100644 index 0000000..a991733 --- /dev/null +++ b/docs-xml/smbdotconf/misc/resetonzerovc.xml @@ -0,0 +1,28 @@ +<samba:parameter name="reset on zero vc" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This boolean option controls whether an incoming SMB1 session setup + should kill other connections coming from the same IP. This matches + the default Windows 2003 behaviour. + + Setting this parameter to yes becomes necessary when you have a flaky + network and windows decides to reconnect while the old connection + still has files with share modes open. These files become inaccessible + over the new connection. + + The client sends a zero VC on the new connection, and Windows 2003 + kills all other connections coming from the same IP. This way the + locked files are accessible again. + + Please be aware that enabling this option will kill + connections behind a masquerading router, and will not trigger + for clients that only use SMB2 or SMB3. + + </para> +</description> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/rootpostexec.xml b/docs-xml/smbdotconf/misc/rootpostexec.xml new file mode 100644 index 0000000..4e74fc8 --- /dev/null +++ b/docs-xml/smbdotconf/misc/rootpostexec.xml @@ -0,0 +1,16 @@ +<samba:parameter name="root postexec" + context="S" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This is the same as the <parameter moreinfo="none">postexec</parameter> + parameter except that the command is run as root. This is useful for + unmounting filesystems (such as CDROMs) after a connection is closed. + </para> +</description> + +<related>postexec</related> +<value type="default"></value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/rootpreexec.xml b/docs-xml/smbdotconf/misc/rootpreexec.xml new file mode 100644 index 0000000..32c4ef7 --- /dev/null +++ b/docs-xml/smbdotconf/misc/rootpreexec.xml @@ -0,0 +1,18 @@ +<samba:parameter name="root preexec" + context="S" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This is the same as the <parameter moreinfo="none">preexec</parameter> + parameter except that the command is run as root. This is useful for + mounting filesystems (such as CDROMs) when a connection is opened. + </para> +</description> + +<related>preexec</related> +<related>preexec close</related> + +<value type="default"></value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/rootpreexecclose.xml b/docs-xml/smbdotconf/misc/rootpreexecclose.xml new file mode 100644 index 0000000..35fd883 --- /dev/null +++ b/docs-xml/smbdotconf/misc/rootpreexecclose.xml @@ -0,0 +1,14 @@ +<samba:parameter name="root preexec close" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This is the same as the <parameter moreinfo="none">preexec close + </parameter> parameter except that the command is run as root.</para> +</description> + +<related>preexec</related> +<related>preexec close</related> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/smbdasyncdosmode.xml b/docs-xml/smbdotconf/misc/smbdasyncdosmode.xml new file mode 100644 index 0000000..03d902c --- /dev/null +++ b/docs-xml/smbdotconf/misc/smbdasyncdosmode.xml @@ -0,0 +1,13 @@ +<samba:parameter name="smbd async dosmode" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter control whether the fileserver will use sync or async + methods for fetching the DOS attributes when doing a directory listing. By default sync methods will be + used. + </para> +</description> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/smbdgetinfoasksharemode.xml b/docs-xml/smbdotconf/misc/smbdgetinfoasksharemode.xml new file mode 100644 index 0000000..1bef948 --- /dev/null +++ b/docs-xml/smbdotconf/misc/smbdgetinfoasksharemode.xml @@ -0,0 +1,14 @@ +<samba:parameter name="smbd getinfo ask sharemode" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter allows disabling fetching file write time from the open + file handle database locking.tdb when a client requests file or + directory metadata. It's a performance optimisation at the expense of + protocol correctness. + </para> +</description> +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/smbdmaxasyncdosmode.xml b/docs-xml/smbdotconf/misc/smbdmaxasyncdosmode.xml new file mode 100644 index 0000000..b375298 --- /dev/null +++ b/docs-xml/smbdotconf/misc/smbdmaxasyncdosmode.xml @@ -0,0 +1,12 @@ +<samba:parameter name="smbd max async dosmode" + context="S" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter controls how many async operations to fetch the DOS + attributes the fileserver will queue when doing directory listings. + </para> +</description> +<value type="default">aio max threads * 2</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/smbdmaxxattrsize.xml b/docs-xml/smbdotconf/misc/smbdmaxxattrsize.xml new file mode 100644 index 0000000..3ae91a3 --- /dev/null +++ b/docs-xml/smbdotconf/misc/smbdmaxxattrsize.xml @@ -0,0 +1,28 @@ +<samba:parameter name="smbd max xattr size" + context="S" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter controls the maximum size of extended attributes + that may be written to the server as EAs or as alternate data + streams if vfs_streams_xattr is enabled. The maximum size of + extended attributes depends on the Samba server's operating system + and the underlying filesystem. The Linux VFS currently sets an + upper boundary of 64 KiB per extended attribute. FreeBSD does not + set a practical upper limit, but since pread() and pwrite() are not + possible via the extattr on FreeBSD, it is not recommended to + increase this value above a few MiB. + + If a client attempts to write an overly-large alternate datastream, + the Samba server will return STATUS_FILESYSTEM_LIMITATION. + If this error is encountered, users may try increasing the maximum + size supported for xattr writes. If this is not possible, and + writes are from a MacOS client and to an AFP_Resource extended + attribute, the user may enable the vfs_fruit module and configure + to allow stream writes for AFP_Resource to an alternative storage + location. See vfs_fruit documentation for further details. + </para> +</description> +<value type="default">65536</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/smbdprofilinglevel.xml b/docs-xml/smbdotconf/misc/smbdprofilinglevel.xml new file mode 100644 index 0000000..54dccf0 --- /dev/null +++ b/docs-xml/smbdotconf/misc/smbdprofilinglevel.xml @@ -0,0 +1,17 @@ +<samba:parameter name="smbd profiling level" + context="G" + type="enum" + enumlist="enum_smbd_profiling_level" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter allows the administrator to enable profiling support. + </para> + <para> + Possible values are <constant>off</constant>, + <constant>count</constant> and <constant>on</constant>. + </para> +</description> +<value type="default">off</value> +<value type="example">on</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/smbdsearchasksharemode.xml b/docs-xml/smbdotconf/misc/smbdsearchasksharemode.xml new file mode 100644 index 0000000..de78818 --- /dev/null +++ b/docs-xml/smbdotconf/misc/smbdsearchasksharemode.xml @@ -0,0 +1,13 @@ +<samba:parameter name="smbd search ask sharemode" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter allows disabling fetching file write time from the open + file handle database locking.tdb. It's a performance optimisation at + the expense of protocol correctness. + </para> +</description> +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/spotlight.xml b/docs-xml/smbdotconf/misc/spotlight.xml new file mode 100644 index 0000000..04631d3 --- /dev/null +++ b/docs-xml/smbdotconf/misc/spotlight.xml @@ -0,0 +1,31 @@ +<samba:parameter name="spotlight" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter controls whether Samba allows Spotlight + queries on a share. For controlling indexing of filesystems + you also have to use Tracker's own configuration system. + </para> + + <para> + Spotlight has several prerequisites: + </para> + + <itemizedlist> + <listitem><para> + Samba must be configured and built with Spotlight support. + </para></listitem> + + <listitem><para> Tracker integration must be setup and the + share must be indexed by Tracker.</para></listitem> + </itemizedlist> + + <para>For a detailed set of instructions please see <ulink + url="https://wiki.samba.org/index.php/Spotlight">https://wiki.samba.org/index.php/Spotlight</ulink>. + </para> + +</description> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/spotlight_backend.xml b/docs-xml/smbdotconf/misc/spotlight_backend.xml new file mode 100644 index 0000000..0643fc1 --- /dev/null +++ b/docs-xml/smbdotconf/misc/spotlight_backend.xml @@ -0,0 +1,30 @@ +<samba:parameter name="spotlight backend" + context="S" + type="enum" + enumlist="enum_spotlight_backend" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + Spotlight search backend. Available backends: + + <itemizedlist> + <listitem><para><constant>noindex</constant> - + a backend that returns no results. + </para></listitem> + + </itemizedlist> + + <itemizedlist> + <listitem><para><constant>tracker</constant> - + Gnome Tracker. + </para></listitem> + + <listitem><para><constant>elasticsearch</constant> - + a backend that uses JSON and REST over HTTP(s) to query an + Elasticsearch server. + </para></listitem> + </itemizedlist> + </para> +</description> +<value type="default">noindex</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/statedirectory.xml b/docs-xml/smbdotconf/misc/statedirectory.xml new file mode 100644 index 0000000..12481fc --- /dev/null +++ b/docs-xml/smbdotconf/misc/statedirectory.xml @@ -0,0 +1,21 @@ +<samba:parameter name="state directory" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>Usually, most of the TDB files are stored in the + <parameter moreinfo="none">lock directory</parameter>. Since + Samba 3.4.0, it is possible to differentiate between TDB files + with persistent data and TDB files with non-persistent data using + the <parameter moreinfo="none">state directory</parameter> and the + <parameter moreinfo="none">cache directory</parameter> options. + </para> + + <para> This option specifies the directory where TDB files containing + important persistent data will be stored. + </para> +</description> + +<value type="default">&pathconfig.STATEDIR;</value> +<value type="example">/var/run/samba/locks/state</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/usershareallowguests.xml b/docs-xml/smbdotconf/misc/usershareallowguests.xml new file mode 100644 index 0000000..be210bf --- /dev/null +++ b/docs-xml/smbdotconf/misc/usershareallowguests.xml @@ -0,0 +1,15 @@ +<samba:parameter name="usershare allow guests" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter controls whether user defined shares are allowed + to be accessed by non-authenticated users or not. It is the equivalent + of allowing people who can create a share the option of setting + <parameter moreinfo="none">guest ok = yes</parameter> in a share + definition. Due to its security sensitive nature, the default + is set to off.</para> + +</description> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/usersharemaxshares.xml b/docs-xml/smbdotconf/misc/usersharemaxshares.xml new file mode 100644 index 0000000..0d69bb8 --- /dev/null +++ b/docs-xml/smbdotconf/misc/usersharemaxshares.xml @@ -0,0 +1,13 @@ +<samba:parameter name="usershare max shares" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter specifies the number of user defined shares + that are allowed to be created by users belonging to the group owning the + usershare directory. If set to zero (the default) user defined shares are ignored. + </para> + +</description> +<value type="default">0</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/usershareowneronly.xml b/docs-xml/smbdotconf/misc/usershareowneronly.xml new file mode 100644 index 0000000..5b33492 --- /dev/null +++ b/docs-xml/smbdotconf/misc/usershareowneronly.xml @@ -0,0 +1,18 @@ +<samba:parameter name="usershare owner only" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter controls whether the pathname exported by + a user defined shares must be owned by the user creating the + user defined share or not. If set to True (the default) then + smbd checks that the directory path being shared is owned by + the user who owns the usershare file defining this share and + refuses to create the share if not. If set to False then no + such check is performed and any directory path may be exported + regardless of who owns it. + </para> + +</description> +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/usersharepath.xml b/docs-xml/smbdotconf/misc/usersharepath.xml new file mode 100644 index 0000000..99fea94 --- /dev/null +++ b/docs-xml/smbdotconf/misc/usersharepath.xml @@ -0,0 +1,32 @@ +<samba:parameter name="usershare path" + context="G" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter specifies the absolute path of the directory on the + filesystem used to store the user defined share definition files. + This directory must be owned by root, and have no access for + other, and be writable only by the group owner. In addition the + "sticky" bit must also be set, restricting rename and delete to + owners of a file (in the same way the /tmp directory is usually configured). + Members of the group owner of this directory are the users allowed to create + usershares. + </para> + <para> + For example, a valid usershare directory might be /usr/local/samba/lib/usershares, + set up as follows. + </para> + <para> + <programlisting> + ls -ld /usr/local/samba/lib/usershares/ + drwxrwx--T 2 root power_users 4096 2006-05-05 12:27 /usr/local/samba/lib/usershares/ + </programlisting> + </para> + <para> + In this case, only members of the group "power_users" can create user defined shares. + </para> + +</description> +<value type="default">&pathconfig.STATEDIR;/usershares</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/usershareprefixallowlist.xml b/docs-xml/smbdotconf/misc/usershareprefixallowlist.xml new file mode 100644 index 0000000..4c236fe --- /dev/null +++ b/docs-xml/smbdotconf/misc/usershareprefixallowlist.xml @@ -0,0 +1,23 @@ +<samba:parameter name="usershare prefix allow list" + context="G" + type="cmdlist" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter specifies a list of absolute pathnames + the root of which are allowed to be exported by user defined share definitions. + If the pathname to be exported doesn't start with one of the strings in this + list, the user defined share will not be allowed. This allows the Samba + administrator to restrict the directories on the system that can be + exported by user defined shares. + </para> + <para> + If there is a "usershare prefix deny list" and also a + "usershare prefix allow list" the deny list is processed + first, followed by the allow list, thus leading to the most + restrictive interpretation. + </para> + +</description> +<value type="default"></value> +<value type="example">/home /data /space</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/usershareprefixdenylist.xml b/docs-xml/smbdotconf/misc/usershareprefixdenylist.xml new file mode 100644 index 0000000..c0e18a7 --- /dev/null +++ b/docs-xml/smbdotconf/misc/usershareprefixdenylist.xml @@ -0,0 +1,24 @@ +<samba:parameter name="usershare prefix deny list" + context="G" + type="cmdlist" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter specifies a list of absolute pathnames + the root of which are NOT allowed to be exported by user defined share definitions. + If the pathname exported starts with one of the strings in this + list the user defined share will not be allowed. Any pathname not + starting with one of these strings will be allowed to be exported + as a usershare. This allows the Samba administrator to restrict the + directories on the system that can be exported by user defined shares. + </para> + <para> + If there is a "usershare prefix deny list" and also a + "usershare prefix allow list" the deny list is processed + first, followed by the allow list, thus leading to the most + restrictive interpretation. + </para> + +</description> +<value type="default"></value> +<value type="example">/etc /dev /private</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/usersharetemplateshare.xml b/docs-xml/smbdotconf/misc/usersharetemplateshare.xml new file mode 100644 index 0000000..3a74dcb --- /dev/null +++ b/docs-xml/smbdotconf/misc/usersharetemplateshare.xml @@ -0,0 +1,23 @@ +<samba:parameter name="usershare template share" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>User defined shares only have limited possible parameters + such as path, guest ok, etc. This parameter allows usershares to + "cloned" from an existing share. If "usershare template share" + is set to the name of an existing share, then all usershares + created have their defaults set from the parameters set on this + share. + </para> + <para> + The target share may be set to be invalid for real file + sharing by setting the parameter "-valid = False" on the template + share definition. This causes it not to be seen as a real exported + share but to be able to be used as a template for usershares. + </para> + +</description> +<value type="default"></value> +<value type="example">template_share</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/utmp.xml b/docs-xml/smbdotconf/misc/utmp.xml new file mode 100644 index 0000000..6382d46 --- /dev/null +++ b/docs-xml/smbdotconf/misc/utmp.xml @@ -0,0 +1,24 @@ +<samba:parameter name="utmp" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This boolean parameter is only available if Samba has been configured and compiled + with the option <command moreinfo="none">--with-utmp</command>. If set to + <constant>yes</constant> then Samba will attempt to add utmp or utmpx records + (depending on the UNIX system) whenever a connection is made to a Samba server. + Sites may use this to record the user connecting to a Samba share. + </para> + + <para> + Due to the requirements of the utmp record, we are required to create a unique + identifier for the incoming user. Enabling this option creates an n^2 algorithm + to find this number. This may impede performance on large installations. + </para> +</description> + +<related>utmp directory</related> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/utmpdirectory.xml b/docs-xml/smbdotconf/misc/utmpdirectory.xml new file mode 100644 index 0000000..96b45db --- /dev/null +++ b/docs-xml/smbdotconf/misc/utmpdirectory.xml @@ -0,0 +1,20 @@ +<samba:parameter name="utmp directory" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter is only available if Samba has + been configured and compiled with the option <command moreinfo="none"> + --with-utmp</command>. It specifies a directory pathname that is + used to store the utmp or utmpx files (depending on the UNIX system) that + record user connections to a Samba server. By default this is + not set, meaning the system will use whatever utmp file the + native system is set to use (usually + <filename moreinfo="none">/var/run/utmp</filename> on Linux).</para> +</description> + +<related>utmp</related> + +<value type="default"><comment>Determined automatically</comment></value> +<value type="example">/var/run/utmp</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/valid.xml b/docs-xml/smbdotconf/misc/valid.xml new file mode 100644 index 0000000..8d86f9c --- /dev/null +++ b/docs-xml/smbdotconf/misc/valid.xml @@ -0,0 +1,20 @@ +<samba:parameter name="-valid" + context="S" + type="boolean" + generated_function="0" + function="valid" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> This parameter indicates whether a share is + valid and thus can be used. When this parameter is set to false, + the share will be in no way visible nor accessible. + </para> + + <para> + This option should not be + used by regular users but might be of help to developers. + Samba uses this option internally to mark shares as deleted. + </para> +</description> +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/volume.xml b/docs-xml/smbdotconf/misc/volume.xml new file mode 100644 index 0000000..4f1be6a --- /dev/null +++ b/docs-xml/smbdotconf/misc/volume.xml @@ -0,0 +1,13 @@ +<samba:parameter name="volume" + context="S" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This allows you to override the volume label + returned for a share. Useful for CDROMs with installation programs + that insist on a particular volume label.</para> +</description> + +<value type="default"><comment>the name of the share</comment></value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/volumeserialnumber.xml b/docs-xml/smbdotconf/misc/volumeserialnumber.xml new file mode 100644 index 0000000..41cf2c2 --- /dev/null +++ b/docs-xml/smbdotconf/misc/volumeserialnumber.xml @@ -0,0 +1,14 @@ +<samba:parameter name="volume serial number" + context="S" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This allows to override the volume serial number + (a 32bit value) reported for a share.</para> + <para>The special value <emphasis>-1</emphasis> (default) stands for + a unique number that is calculated for each share.</para> +</description> + +<value type="default">-1</value> +<value type="example">0xabcdefgh</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/widelinks.xml b/docs-xml/smbdotconf/misc/widelinks.xml new file mode 100644 index 0000000..09f8aa5 --- /dev/null +++ b/docs-xml/smbdotconf/misc/widelinks.xml @@ -0,0 +1,27 @@ +<samba:parameter name="wide links" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter controls whether or not links + in the UNIX file system may be followed by the server. Links + that point to areas within the directory tree exported by the + server are always allowed; this parameter controls access only + to areas that are outside the directory tree being exported.</para> + + <para>Note: Turning this parameter on when UNIX extensions are enabled + will allow UNIX clients to create symbolic links on the share that + can point to files or directories outside restricted path exported + by the share definition. This can cause access to areas outside of + the share. Due to this problem, this parameter will be automatically + disabled (with a message in the log file) if the + <smbconfoption name="unix extensions"/> option is on. + </para> + <para> + See the parameter <smbconfoption name="allow insecure wide links"/> + if you wish to change this coupling between the two parameters. + </para> +</description> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/misc/wtmpdirectory.xml b/docs-xml/smbdotconf/misc/wtmpdirectory.xml new file mode 100644 index 0000000..f1b5359 --- /dev/null +++ b/docs-xml/smbdotconf/misc/wtmpdirectory.xml @@ -0,0 +1,22 @@ +<samba:parameter name="wtmp directory" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter is only available if Samba has been configured and compiled with the option <command moreinfo="none"> + --with-utmp</command>. It specifies a directory pathname that is used to store the wtmp or wtmpx files (depending on + the UNIX system) that record user connections to a Samba server. The difference with the utmp directory is the fact + that user info is kept after a user has logged out. + </para> + + <para> + By default this is not set, meaning the system will use whatever utmp file the native system is set to use (usually + <filename moreinfo="none">/var/run/wtmp</filename> on Linux). + </para> +</description> + +<related>utmp</related> +<value type="default"/> +<value type="example">/var/log/wtmp</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/printing/addportcommand.xml b/docs-xml/smbdotconf/printing/addportcommand.xml new file mode 100644 index 0000000..c25794b --- /dev/null +++ b/docs-xml/smbdotconf/printing/addportcommand.xml @@ -0,0 +1,26 @@ +<samba:parameter name="addport command" + context="G" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>Samba 3.0.23 introduced support for adding printer ports + remotely using the Windows "Add Standard TCP/IP Port Wizard". + This option defines an external program to be executed when + smbd receives a request to add a new Port to the system. + The script is passed two parameters:</para> + + <itemizedlist> + <listitem><para><parameter moreinfo="none">port name</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">device URI</parameter></para></listitem> + </itemizedlist> + + <para>The deviceURI is in the format of socket://<hostname>[:<portnumber>] + or lpd://<hostname>/<queuename>.</para> +</description> + +<related>enum ports command</related> + +<value type="default"></value> +<value type="example">/etc/samba/scripts/addport.sh</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/printing/addprintercommand.xml b/docs-xml/smbdotconf/printing/addprintercommand.xml new file mode 100644 index 0000000..954b437 --- /dev/null +++ b/docs-xml/smbdotconf/printing/addprintercommand.xml @@ -0,0 +1,64 @@ +<samba:parameter name="addprinter command" + context="G" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>With the introduction of MS-RPC based printing + support for Windows NT/2000 clients in Samba 2.2, The MS Add + Printer Wizard (APW) icon is now also available in the + "Printers..." folder displayed a share listing. The APW + allows for printers to be add remotely to a Samba or Windows + NT/2000 print server.</para> + + <para>For a Samba host this means that the printer must be + physically added to the underlying printing system. + The <parameter moreinfo="none">addprinter command</parameter> + defines a script to be run which + will perform the necessary operations for adding the printer + to the print system and to add the appropriate service definition + to the <filename moreinfo="none">smb.conf</filename> file in order that it can be + shared by <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry>.</para> + + <para>The <parameter moreinfo="none">addprinter command</parameter> is + automatically invoked with the following parameter (in + order):</para> + + <itemizedlist> + <listitem><para><parameter moreinfo="none">printer name</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">share name</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">port name</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">driver name</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">location</parameter></para></listitem> + <listitem><para><parameter moreinfo="none">Windows 9x driver location</parameter></para></listitem> + </itemizedlist> + + <para>All parameters are filled in from the PRINTER_INFO_2 structure sent + by the Windows NT/2000 client with one exception. The "Windows 9x + driver location" parameter is included for backwards compatibility + only. The remaining fields in the structure are generated from answers + to the APW questions.</para> + + <para>Once the <parameter moreinfo="none">addprinter command</parameter> has + been executed, <command moreinfo="none">smbd</command> will reparse the <filename moreinfo="none"> + smb.conf</filename> to determine if the share defined by the APW + exists. If the sharename is still invalid, then <command moreinfo="none">smbd + </command> will return an ACCESS_DENIED error to the client.</para> + + <para> + The <parameter moreinfo="none">addprinter command</parameter> program + can output a single line of text, + which Samba will set as the port the new printer is connected to. + If this line isn't output, Samba won't reload its printer shares. + </para> + +</description> + +<related>deleteprinter command</related> +<related>printing</related> +<related>show add printer wizard</related> + +<value type="default"></value> +<value type="example">/usr/bin/addprinter</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/printing/cupsconnectiontimeout.xml b/docs-xml/smbdotconf/printing/cupsconnectiontimeout.xml new file mode 100644 index 0000000..bcb6985 --- /dev/null +++ b/docs-xml/smbdotconf/printing/cupsconnectiontimeout.xml @@ -0,0 +1,19 @@ +<samba:parameter name="cups connection timeout" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter is only applicable if <smbconfoption name="printing"/> is set to <constant>cups</constant>. + </para> + + <para> + If set, this option specifies the number of seconds that smbd will wait + whilst trying to contact to the CUPS server. The connection will fail + if it takes longer than this number of seconds. + </para> +</description> + +<value type="default">30</value> +<value type="example">60</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/printing/cupsencrypt.xml b/docs-xml/smbdotconf/printing/cupsencrypt.xml new file mode 100644 index 0000000..8094abe --- /dev/null +++ b/docs-xml/smbdotconf/printing/cupsencrypt.xml @@ -0,0 +1,25 @@ +<samba:parameter name="cups encrypt" + context="G" + type="enum" + enumlist="enum_bool_auto" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter is only applicable if <smbconfoption name="printing"/> + is set to <constant>cups</constant> and if you use CUPS newer than + 1.0.x.It is used to define whether or not Samba should use encryption + when talking to the CUPS server. Possible values are + <emphasis>auto</emphasis>, <emphasis>yes</emphasis> and + <emphasis>no</emphasis> + </para> + + <para> + When set to auto we will try to do a TLS handshake on each CUPS + connection setup. If that fails, we will fall back to unencrypted + operation. + </para> + +</description> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/printing/cupsoptions.xml b/docs-xml/smbdotconf/printing/cupsoptions.xml new file mode 100644 index 0000000..833ba30 --- /dev/null +++ b/docs-xml/smbdotconf/printing/cupsoptions.xml @@ -0,0 +1,35 @@ +<samba:parameter name="cups options" + context="S" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter is only applicable if <smbconfoption name="printing"/> is + set to <constant>cups</constant>. Its value is a free form string of options + passed directly to the cups library. + </para> + + <para> + You can pass any generic print option known to CUPS (as listed + in the CUPS "Software Users' Manual"). You can also pass any printer + specific option (as listed in "lpoptions -d printername -l") + valid for the target queue. + Multiple parameters should be space-delimited name/value pairs according to + the PAPI text option ABNF specification. Collection values + ("name={a=... b=... c=...}") are stored with the curley brackets intact. + </para> + + <para> + You should set this parameter to <constant>raw</constant> if your CUPS server + <filename>error_log</filename> file contains messages such as + "Unsupported format 'application/octet-stream'" when printing from a Windows client + through Samba. It is no longer necessary to enable + system wide raw printing in <filename>/etc/cups/mime.{convs,types}</filename>. + </para> + +</description> + +<value type="default">""</value> +<value type="example">"raw media=a4"</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/printing/cupsserver.xml b/docs-xml/smbdotconf/printing/cupsserver.xml new file mode 100644 index 0000000..c18c115 --- /dev/null +++ b/docs-xml/smbdotconf/printing/cupsserver.xml @@ -0,0 +1,26 @@ +<samba:parameter name="cups server" + context="G" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter is only applicable if <smbconfoption name="printing"/> is set to <constant>cups</constant>. + </para> + + <para> + If set, this option overrides the ServerName option in the CUPS <filename>client.conf</filename>. This is + necessary if you have virtual samba servers that connect to different CUPS daemons. + </para> + + <para>Optionally, a port can be specified by separating the server name + and port number with a colon. If no port was specified, + the default port for IPP (631) will be used. + </para> + +</description> + +<value type="default">""</value> +<value type="example">mycupsserver</value> +<value type="example">mycupsserver:1631</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/printing/defaultdevmode.xml b/docs-xml/smbdotconf/printing/defaultdevmode.xml new file mode 100644 index 0000000..f86de9b --- /dev/null +++ b/docs-xml/smbdotconf/printing/defaultdevmode.xml @@ -0,0 +1,37 @@ +<samba:parameter name="default devmode" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter is only applicable to <smbconfoption name="printable"/> services. + When smbd is serving Printer Drivers to Windows NT/2k/XP clients, each printer on the Samba + server has a Device Mode which defines things such as paper size and + orientation and duplex settings. The device mode can only correctly be + generated by the printer driver itself (which can only be executed on a + Win32 platform). Because smbd is unable to execute the driver code + to generate the device mode, the default behavior is to set this field + to NULL. + </para> + + <para>Most problems with serving printer drivers to Windows NT/2k/XP clients + can be traced to a problem with the generated device mode. Certain drivers + will do things such as crashing the client's Explorer.exe with a NULL devmode. + However, other printer drivers can cause the client's spooler service + (spoolsv.exe) to die if the devmode was not created by the driver itself + (i.e. smbd generates a default devmode). + </para> + + <para>This parameter should be used with care and tested with the printer + driver in question. It is better to leave the device mode to NULL + and let the Windows client set the correct values. Because drivers do not + do this all the time, setting <command moreinfo="none">default devmode = yes</command> + will instruct smbd to generate a default one. + </para> + + <para>For more information on Windows NT/2k printing and Device Modes, + see the <ulink url="http://msdn.microsoft.com/">MSDN documentation</ulink>. +</para> +</description> + +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/printing/deleteprintercommand.xml b/docs-xml/smbdotconf/printing/deleteprintercommand.xml new file mode 100644 index 0000000..6d70ddc --- /dev/null +++ b/docs-xml/smbdotconf/printing/deleteprintercommand.xml @@ -0,0 +1,36 @@ +<samba:parameter name="deleteprinter command" + context="G" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>With the introduction of MS-RPC based printer + support for Windows NT/2000 clients in Samba 2.2, it is now + possible to delete a printer at run time by issuing the + DeletePrinter() RPC call.</para> + + <para>For a Samba host this means that the printer must be + physically deleted from the underlying printing system. The + <smbconfoption name="deleteprinter command"/> defines a script to be run which + will perform the necessary operations for removing the printer + from the print system and from <filename moreinfo="none">smb.conf</filename>. + </para> + + <para>The <smbconfoption name="deleteprinter command"/> is + automatically called with only one parameter: <smbconfoption name="printer name"/>. + </para> + + <para>Once the <smbconfoption name="deleteprinter command"/> has + been executed, <command moreinfo="none">smbd</command> will reparse the <filename moreinfo="none"> + smb.conf</filename> to check that the associated printer no longer exists. + If the sharename is still valid, then <command moreinfo="none">smbd + </command> will return an ACCESS_DENIED error to the client.</para> +</description> + +<related>addprinter command</related> +<related>printing</related> +<related>show add printer wizard</related> + +<value type="default"></value> +<value type="example">/usr/bin/removeprinter</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/printing/disablespoolss.xml b/docs-xml/smbdotconf/printing/disablespoolss.xml new file mode 100644 index 0000000..4710002 --- /dev/null +++ b/docs-xml/smbdotconf/printing/disablespoolss.xml @@ -0,0 +1,23 @@ +<samba:parameter name="disable spoolss" + context="G" + type="boolean" + function="_disable_spoolss" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>Enabling this parameter will disable Samba's support + for the SPOOLSS set of MS-RPC's and will yield identical behavior + as Samba 2.0.x. Windows NT/2000 clients will downgrade to using + Lanman style printing commands. Windows 9x/ME will be unaffected by + the parameter. However, this will also disable the ability to upload + printer drivers to a Samba server via the Windows NT Add Printer + Wizard or by using the NT printer properties dialog window. It will + also disable the capability of Windows NT/2000 clients to download + print drivers from the Samba host upon demand. + <emphasis>Be very careful about enabling this parameter.</emphasis> +</para> +</description> + +<related>use client driver</related> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/printing/enablespoolss.xml b/docs-xml/smbdotconf/printing/enablespoolss.xml new file mode 100644 index 0000000..68e09bf --- /dev/null +++ b/docs-xml/smbdotconf/printing/enablespoolss.xml @@ -0,0 +1,12 @@ +<samba:parameter name="enable spoolss" + context="G" + type="boolean-rev" + function="_disable_spoolss" + synonym="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>Inverted synonym for <smbconfoption name="disable spoolss"/>.</para> +</description> + +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/printing/enumportscommand.xml b/docs-xml/smbdotconf/printing/enumportscommand.xml new file mode 100644 index 0000000..1258042 --- /dev/null +++ b/docs-xml/smbdotconf/printing/enumportscommand.xml @@ -0,0 +1,25 @@ +<samba:parameter name="enumports command" + context="G" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>The concept of a "port" is fairly foreign + to UNIX hosts. Under Windows NT/2000 print servers, a port + is associated with a port monitor and generally takes the form of + a local port (i.e. LPT1:, COM1:, FILE:) or a remote port + (i.e. LPD Port Monitor, etc...). By default, Samba has only one + port defined--<constant>"Samba Printer Port"</constant>. Under + Windows NT/2000, all printers must have a valid port name. + If you wish to have a list of ports displayed (<command moreinfo="none">smbd + </command> does not use a port name for anything) other than + the default <constant>"Samba Printer Port"</constant>, you + can define <parameter moreinfo="none">enumports command</parameter> to point to + a program which should generate a list of ports, one per line, + to standard output. This listing will then be used in response + to the level 1 and 2 EnumPorts() RPC.</para> +</description> + +<value type="default"></value> +<value type="example">/usr/bin/listports</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/printing/forceprintername.xml b/docs-xml/smbdotconf/printing/forceprintername.xml new file mode 100644 index 0000000..607d176 --- /dev/null +++ b/docs-xml/smbdotconf/printing/forceprintername.xml @@ -0,0 +1,38 @@ +<samba:parameter name="force printername" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>When printing from Windows NT (or later), + each printer in <filename>smb.conf</filename> has two + associated names which can be used by the client. The first + is the sharename (or shortname) defined in smb.conf. This + is the only printername available for use by Windows 9x clients. + The second name associated with a printer can be seen when + browsing to the "Printers" (or "Printers and Faxes") folder + on the Samba server. This is referred to simply as the printername + (not to be confused with the <parameter>printer name</parameter> option). + </para> + + <para>When assigning a new driver to a printer on a remote + Windows compatible print server such as Samba, the Windows client + will rename the printer to match the driver name just uploaded. + This can result in confusion for users when multiple + printers are bound to the same driver. To prevent Samba from + allowing the printer's printername to differ from the sharename + defined in smb.conf, set <parameter>force printername = yes</parameter>. + </para> + + <para>Be aware that enabling this parameter may affect migrating + printers from a Windows server to Samba since Windows has no way to + force the sharename and printername to match.</para> + + <para>It is recommended that this parameter's value not be changed + once the printer is in use by clients as this could cause a user + not be able to delete printer connections from their local Printers + folder.</para> + +</description> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/printing/iprintserver.xml b/docs-xml/smbdotconf/printing/iprintserver.xml new file mode 100644 index 0000000..16e3623 --- /dev/null +++ b/docs-xml/smbdotconf/printing/iprintserver.xml @@ -0,0 +1,19 @@ +<samba:parameter name="iprint server" + context="G" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter is only applicable if <smbconfoption name="printing"/> is set to <constant>iprint</constant>. + </para> + + <para> + If set, this option overrides the ServerName option in the CUPS <filename>client.conf</filename>. This is + necessary if you have virtual samba servers that connect to different CUPS daemons. + </para> +</description> + +<value type="default">""</value> +<value type="example">MYCUPSSERVER</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/printing/loadprinters.xml b/docs-xml/smbdotconf/printing/loadprinters.xml new file mode 100644 index 0000000..83e0f4c --- /dev/null +++ b/docs-xml/smbdotconf/printing/loadprinters.xml @@ -0,0 +1,13 @@ +<samba:parameter name="load printers" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>A boolean variable that controls whether all + printers in the printcap will be loaded for browsing by default. + See the <smbconfoption name="printers"/> section for + more details.</para> +</description> + +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/printing/lppausecommand.xml b/docs-xml/smbdotconf/printing/lppausecommand.xml new file mode 100644 index 0000000..3aa134c --- /dev/null +++ b/docs-xml/smbdotconf/printing/lppausecommand.xml @@ -0,0 +1,41 @@ +<samba:parameter name="lppause command" + context="S" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter specifies the command to be + executed on the server host in order to stop printing or spooling + a specific print job.</para> + + <para>This command should be a program or script which takes + a printer name and job number to pause the print job. One way + of implementing this is by using job priorities, where jobs + having a too low priority won't be sent to the printer.</para> + + <para>If a <parameter moreinfo="none">%p</parameter> is given then the printer name + is put in its place. A <parameter moreinfo="none">%j</parameter> is replaced with + the job number (an integer). On HPUX (see <parameter moreinfo="none">printing=hpux + </parameter>), if the <parameter moreinfo="none">-p%p</parameter> option is added + to the lpq command, the job will show up with the correct status, i.e. + if the job priority is lower than the set fence priority it will + have the PAUSED status, whereas if the priority is equal or higher it + will have the SPOOLED or PRINTING status.</para> + + <para>Note that it is good practice to include the absolute path + in the lppause command as the PATH may not be available to the server.</para> + + <para>Currently no default value is given to + this string, unless the value of the <smbconfoption name="printing"/> + parameter is <constant>SYSV</constant>, in which case the default is : + <command moreinfo="none">lp -i %p-%j -H hold</command> or if the value of the + <parameter moreinfo="none">printing</parameter> parameter is + <constant>SOFTQ</constant>, then the default is: + <command moreinfo="none">qstat -s -j%j -h</command>. </para> + +</description> + +<related>printing</related> + +<value type="default"><comment>determined by printing parameter</comment></value> +<value type="example">/usr/bin/lpalt %p-%j -p0</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/printing/lpqcachetime.xml b/docs-xml/smbdotconf/printing/lpqcachetime.xml new file mode 100644 index 0000000..0b3670a --- /dev/null +++ b/docs-xml/smbdotconf/printing/lpqcachetime.xml @@ -0,0 +1,28 @@ +<samba:parameter name="lpq cache time" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This controls how long lpq info will be cached + for to prevent the <command moreinfo="none">lpq</command> command being called too + often. A separate cache is kept for each variation of the <command moreinfo="none"> + lpq</command> command used by the system, so if you use different + <command moreinfo="none">lpq</command> commands for different users then they won't + share cache information.</para> + + <para>The cache files are stored in <filename moreinfo="none">/tmp/lpq.xxxx</filename> + where xxxx is a hash of the <command moreinfo="none">lpq</command> command in use.</para> + + <para>The default is 30 seconds, meaning that the cached results + of a previous identical <command moreinfo="none">lpq</command> command will be used + if the cached data is less than 30 seconds old. A large value may + be advisable if your <command moreinfo="none">lpq</command> command is very slow.</para> + +<para>A value of 0 will disable caching completely.</para> +</description> + +<related>printing</related> + +<value type="default">30</value> +<value type="example">10</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/printing/lpqcommand.xml b/docs-xml/smbdotconf/printing/lpqcommand.xml new file mode 100644 index 0000000..f3c17f2 --- /dev/null +++ b/docs-xml/smbdotconf/printing/lpqcommand.xml @@ -0,0 +1,41 @@ +<samba:parameter name="lpq command" + context="S" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + <description> + <para>This parameter specifies the command to be + executed on the server host in order to obtain <command moreinfo="none">lpq + </command>-style printer status information.</para> + + <para>This command should be a program or script which + takes a printer name as its only parameter and outputs printer + status information.</para> + + <para>Currently nine styles of printer status information + are supported; BSD, AIX, LPRNG, PLP, SYSV, HPUX, QNX, CUPS, and SOFTQ. + This covers most UNIX systems. You control which type is expected + using the <parameter moreinfo="none">printing =</parameter> option.</para> + + <para>Some clients (notably Windows for Workgroups) may not + correctly send the connection number for the printer they are + requesting status information about. To get around this, the + server reports on the first printer service connected to by the + client. This only happens if the connection number sent is invalid.</para> + + <para>If a <parameter moreinfo="none">%p</parameter> is given then the printer name + is put in its place. Otherwise it is placed at the end of the + command.</para> + + <para>Note that it is good practice to include the absolute path + in the <parameter moreinfo="none">lpq command</parameter> as the <envar>$PATH + </envar> may not be available to the server. When compiled with + the CUPS libraries, no <parameter moreinfo="none">lpq command</parameter> is + needed because smbd will make a library call to obtain the + print queue listing.</para> +</description> + +<related>printing</related> + +<value type="example">/usr/bin/lpq -P%p</value> +<value type="default"><comment>determined by printing parameter</comment></value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/printing/lpresumecommand.xml b/docs-xml/smbdotconf/printing/lpresumecommand.xml new file mode 100644 index 0000000..153ba76 --- /dev/null +++ b/docs-xml/smbdotconf/printing/lpresumecommand.xml @@ -0,0 +1,38 @@ +<samba:parameter name="lpresume command" + context="S" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter specifies the command to be + executed on the server host in order to restart or continue + printing or spooling a specific print job.</para> + + <para>This command should be a program or script which takes + a printer name and job number to resume the print job. See + also the <smbconfoption name="lppause command"/> parameter.</para> + + <para>If a <parameter moreinfo="none">%p</parameter> is given then the printer name + is put in its place. A <parameter moreinfo="none">%j</parameter> is replaced with + the job number (an integer).</para> + + <para>Note that it is good practice to include the absolute path + in the <parameter moreinfo="none">lpresume command</parameter> as the PATH may not + be available to the server.</para> + + <para>See also the <smbconfoption name="printing"/> parameter.</para> + + <para>Default: Currently no default value is given + to this string, unless the value of the <parameter moreinfo="none">printing</parameter> + parameter is <constant>SYSV</constant>, in which case the default is:</para> + + <para><command moreinfo="none">lp -i %p-%j -H resume</command></para> + + <para>or if the value of the <parameter moreinfo="none">printing</parameter> parameter + is <constant>SOFTQ</constant>, then the default is:</para> + + <para><command moreinfo="none">qstat -s -j%j -r</command></para> +</description> + +<value type="default"><comment>determined by printing parameter</comment></value> +<value type="example">/usr/bin/lpalt %p-%j -p2</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/printing/lprmcommand.xml b/docs-xml/smbdotconf/printing/lprmcommand.xml new file mode 100644 index 0000000..4b7f3dd --- /dev/null +++ b/docs-xml/smbdotconf/printing/lprmcommand.xml @@ -0,0 +1,35 @@ +<samba:parameter name="lprm command" + context="S" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter specifies the command to be + executed on the server host in order to delete a print job.</para> + + <para>This command should be a program or script which takes + a printer name and job number, and deletes the print job.</para> + + <para>If a <parameter moreinfo="none">%p</parameter> is given then the printer name + is put in its place. A <parameter moreinfo="none">%j</parameter> is replaced with + the job number (an integer).</para> + + <para>Note that it is good practice to include the absolute + path in the <parameter moreinfo="none">lprm command</parameter> as the PATH may not be + available to the server.</para> + + <para> + Examples of use are: +<programlisting> +lprm command = /usr/bin/lprm -P%p %j + +or + +lprm command = /usr/bin/cancel %p-%j +</programlisting> + </para> + +</description> +<related>printing</related> + +<value type="default"><comment>determined by printing parameter</comment></value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/printing/maxprintjobs.xml b/docs-xml/smbdotconf/printing/maxprintjobs.xml new file mode 100644 index 0000000..f37ff0a --- /dev/null +++ b/docs-xml/smbdotconf/printing/maxprintjobs.xml @@ -0,0 +1,15 @@ +<samba:parameter name="max print jobs" + context="S" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter limits the maximum number of + jobs allowable in a Samba printer queue at any given moment. + If this number is exceeded, <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> will remote "Out of Space" to the client. + </para> +</description> + +<value type="default">1000</value> +<value type="example">5000</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/printing/maxreportedprintjobs.xml b/docs-xml/smbdotconf/printing/maxreportedprintjobs.xml new file mode 100644 index 0000000..5cfd21f --- /dev/null +++ b/docs-xml/smbdotconf/printing/maxreportedprintjobs.xml @@ -0,0 +1,18 @@ +<samba:parameter name="max reported print jobs" + context="S" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter limits the maximum number of jobs displayed in a port monitor for + Samba printer queue at any given moment. If this number is exceeded, the excess + jobs will not be shown. A value of zero means there is no limit on the number of + print jobs reported. + </para> +</description> + +<related>max print jobs</related> + +<value type="default">0</value> +<value type="example">1000</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/printing/os2drivermap.xml b/docs-xml/smbdotconf/printing/os2drivermap.xml new file mode 100644 index 0000000..c845f33 --- /dev/null +++ b/docs-xml/smbdotconf/printing/os2drivermap.xml @@ -0,0 +1,24 @@ +<samba:parameter name="os2 driver map" + context="G" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>The parameter is used to define the absolute + path to a file containing a mapping of Windows NT printer driver + names to OS/2 printer driver names. The format is:</para> + + <para><nt driver name> = <os2 driver name>.<device name></para> + + <para>For example, a valid entry using the HP LaserJet 5 + printer driver would appear as <command moreinfo="none">HP LaserJet 5L = LASERJET.HP + LaserJet 5L</command>.</para> + + <para> + The need for the file is due to the printer driver namespace problem described in + the chapter on Classical Printing in the Samba3-HOWTO book. For more + details on OS/2 clients, please refer to chapter on other clients in the Samba3-HOWTO book. + </para> +</description> +<value type="default"/> +</samba:parameter> diff --git a/docs-xml/smbdotconf/printing/printable.xml b/docs-xml/smbdotconf/printing/printable.xml new file mode 100644 index 0000000..870d888 --- /dev/null +++ b/docs-xml/smbdotconf/printing/printable.xml @@ -0,0 +1,17 @@ +<samba:parameter name="printable" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<synonym>print ok</synonym> +<description> + <para>If this parameter is <constant>yes</constant>, then + clients may open, write to and submit spool files on the directory + specified for the service. </para> + + <para>Note that a printable service will ALWAYS allow writing + to the service path (user privileges permitting) via the spooling + of print data. The <smbconfoption name="read only"/> parameter controls only non-printing access to + the resource.</para> +</description> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/printing/printcapcachetime.xml b/docs-xml/smbdotconf/printing/printcapcachetime.xml new file mode 100644 index 0000000..d5a4c80 --- /dev/null +++ b/docs-xml/smbdotconf/printing/printcapcachetime.xml @@ -0,0 +1,18 @@ +<samba:parameter name="printcap cache time" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option specifies the number of seconds before the printing + subsystem is again asked for the known printers. + </para> + + <para>Setting this parameter to 0 disables any rescanning for new + or removed printers after the initial startup. + </para> +</description> + + +<value type="default">750</value> +<value type="example">600</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/printing/printcapname.xml b/docs-xml/smbdotconf/printing/printcapname.xml new file mode 100644 index 0000000..3a65d23 --- /dev/null +++ b/docs-xml/smbdotconf/printing/printcapname.xml @@ -0,0 +1,54 @@ +<samba:parameter name="printcap name" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<synonym>printcap</synonym> +<description> + <para> + This parameter may be used to override the compiled-in default printcap name used by the server (usually + <filename moreinfo="none"> /etc/printcap</filename>). See the discussion of the <link + linkend="PRINTERSSECT">[printers]</link> section above for reasons why you might want to do this. + </para> + + <para> + To use the CUPS printing interface set <command moreinfo="none">printcap name = cups </command>. This should + be supplemented by an additional setting <smbconfoption name="printing">cups</smbconfoption> in the [global] + section. <command moreinfo="none">printcap name = cups</command> will use the "dummy" printcap + created by CUPS, as specified in your CUPS configuration file. + </para> + + <para> + On System V systems that use <command moreinfo="none">lpstat</command> to + list available printers you can use <command moreinfo="none">printcap name = lpstat + </command> to automatically obtain lists of available printers. This + is the default for systems that define SYSV at configure time in + Samba (this includes most System V based systems). If <parameter moreinfo="none"> + printcap name</parameter> is set to <command moreinfo="none">lpstat</command> on + these systems then Samba will launch <command moreinfo="none">lpstat -v</command> and + attempt to parse the output to obtain a printer list. + </para> + + <para> + A minimal printcap file would look something like this: +<programlisting format="linespecific"> +print1|My Printer 1 +print2|My Printer 2 +print3|My Printer 3 +print4|My Printer 4 +print5|My Printer 5 +</programlisting> + where the '|' separates aliases of a printer. The fact that the second alias has a space in + it gives a hint to Samba that it's a comment. + </para> + + <note><para> + Under AIX the default printcap name is <filename moreinfo="none">/etc/qconfig</filename>. Samba will + assume the file is in AIX <filename moreinfo="none">qconfig</filename> format if the string <filename + moreinfo="none">qconfig</filename> appears in the printcap filename. + </para></note> + +</description> + +<value type="default">/etc/printcap</value> +<value type="example">/etc/myprintcap</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/printing/printcommand.xml b/docs-xml/smbdotconf/printing/printcommand.xml new file mode 100644 index 0000000..c84e45f --- /dev/null +++ b/docs-xml/smbdotconf/printing/printcommand.xml @@ -0,0 +1,87 @@ +<samba:parameter name="print command" + context="S" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>After a print job has finished spooling to + a service, this command will be used via a <command moreinfo="none">system()</command> + call to process the spool file. Typically the command specified will + submit the spool file to the host's printing subsystem, but there + is no requirement that this be the case. The server will not remove + the spool file, so whatever command you specify should remove the + spool file when it has been processed, otherwise you will need to + manually remove old spool files.</para> + + <para>The print command is simply a text string. It will be used + verbatim after macro substitutions have been made:</para> + + <para>%s, %f - the path to the spool + file name</para> + + <para>%p - the appropriate printer + name</para> + + <para>%J - the job + name as transmitted by the client.</para> + + <para>%c - The number of printed pages + of the spooled job (if known).</para> + + <para>%z - the size of the spooled + print job (in bytes)</para> + + <para>The print command <emphasis>MUST</emphasis> contain at least + one occurrence of <parameter moreinfo="none">%s</parameter> or <parameter moreinfo="none">%f + </parameter> - the <parameter moreinfo="none">%p</parameter> is optional. At the time + a job is submitted, if no printer name is supplied the <parameter moreinfo="none">%p + </parameter> will be silently removed from the printer command.</para> + + <para>If specified in the [global] section, the print command given + will be used for any printable service that does not have its own + print command specified.</para> + + <para>If there is neither a specified print command for a + printable service nor a global print command, spool files will + be created but not processed and (most importantly) not removed.</para> + + <para>Note that printing may fail on some UNIXes from the + <constant>nobody</constant> account. If this happens then create + an alternative guest account that can print and set the <smbconfoption name="guest account"/> + in the [global] section.</para> + + <para>You can form quite complex print commands by realizing + that they are just passed to a shell. For example the following + will log a print job, print the file, then remove it. Note that + ';' is the usual separator for command in shell scripts.</para> + + <para><command moreinfo="none">print command = echo Printing %s >> + /tmp/print.log; lpr -P %p %s; rm %s</command></para> + + <para>You may have to vary this command considerably depending + on how you normally print files on your system. The default for + the parameter varies depending on the setting of the <smbconfoption name="printing"/> + parameter.</para> + + <para>Default: For <command moreinfo="none">printing = BSD, AIX, QNX, LPRNG + or PLP :</command></para> + <para><command moreinfo="none">print command = lpr -r -P%p %s</command></para> + + <para>For <command moreinfo="none">printing = SYSV or HPUX :</command></para> + <para><command moreinfo="none">print command = lp -c -d%p %s; rm %s</command></para> + + <para>For <command moreinfo="none">printing = SOFTQ :</command></para> + <para><command moreinfo="none">print command = lp -d%p -s %s; rm %s</command></para> + + <para>For printing = CUPS : If SAMBA is compiled against + libcups, then <smbconfoption name="printcap">cups</smbconfoption> + uses the CUPS API to + submit jobs, etc. Otherwise it maps to the System V + commands with the -oraw option for printing, i.e. it + uses <command moreinfo="none">lp -c -d%p -oraw; rm %s</command>. + With <command moreinfo="none">printing = cups</command>, + and if SAMBA is compiled against libcups, any manually + set print command will be ignored.</para> +</description> + +<value type="example">/usr/local/samba/bin/myprintscript %p %s</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/printing/printername.xml b/docs-xml/smbdotconf/printing/printername.xml new file mode 100644 index 0000000..6b82ef2 --- /dev/null +++ b/docs-xml/smbdotconf/printing/printername.xml @@ -0,0 +1,27 @@ +<samba:parameter name="printer name" + context="S" + type="string" + function="_printername" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + <synonym>printer</synonym> +<description> + <para> + This parameter specifies the name of the printer to which print jobs spooled through a printable service + will be sent. + </para> + + <para> + If specified in the [global] section, the printer name given will be used for any printable service that + does not have its own printer name specified. + </para> + + <para> + The default value of the <smbconfoption name="printer name"/> may be <literal>lp</literal> on many + systems. + </para> +</description> + +<value type="default"></value> +<value type="example">laserwriter</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/printing/printing.xml b/docs-xml/smbdotconf/printing/printing.xml new file mode 100644 index 0000000..2e25621 --- /dev/null +++ b/docs-xml/smbdotconf/printing/printing.xml @@ -0,0 +1,45 @@ +<samba:parameter name="printing" + context="S" + type="enum" + enumlist="enum_printing" + handler="handle_printing" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameters controls how printer status information is + interpreted on your system. It also affects the default values for + the <parameter moreinfo="none">print command</parameter>, <parameter + moreinfo="none">lpq command</parameter>, <parameter + moreinfo="none">lppause command </parameter>, <parameter + moreinfo="none">lpresume command</parameter>, and <parameter + moreinfo="none">lprm command</parameter> if specified in the + [global] section.</para> + + <para>Currently nine printing styles are supported. They are + <constant>BSD</constant>, <constant>AIX</constant>, + <constant>LPRNG</constant>, <constant>PLP</constant>, + <constant>SYSV</constant>, <constant>HPUX</constant>, + <constant>QNX</constant>, <constant>SOFTQ</constant>, + <constant>CUPS</constant> and <constant>IPRINT</constant>.</para> + + <para>Be aware that CUPS and IPRINT are only available if the CUPS + development library was available at the time Samba was compiled + or packaged.</para> + + <para>To see what the defaults are for the other print + commands when using the various options use the <citerefentry><refentrytitle>testparm</refentrytitle> + <manvolnum>1</manvolnum></citerefentry> program.</para> + + <para>This option can be set on a per printer basis. Please be + aware however, that you must place any of the various printing + commands (e.g. print command, lpq command, etc...) after defining + the value for the <parameter>printing</parameter> option since it will + reset the printing commands to default values.</para> + + <para>See also the discussion in the <link linkend="PRINTERSSECT"> + [printers]</link> section.</para> + + <para>See <command moreinfo="none">testparm -v.</command> for the default + value on your system</para> +</description> +<value type="default"><comment>Depends on the operating system</comment></value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/printing/printjobusername.xml b/docs-xml/smbdotconf/printing/printjobusername.xml new file mode 100644 index 0000000..06209f7 --- /dev/null +++ b/docs-xml/smbdotconf/printing/printjobusername.xml @@ -0,0 +1,15 @@ +<samba:parameter name="printjob username" + context="S" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter specifies which user information will be + passed to the printing system. Usually, the username is sent, + but in some cases, e.g. the domain prefix is useful, too.</para> +</description> + +<related>printing</related> + +<value type="example">%D\%U</value> +<value type="default">%U</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/printing/printnotifybackchannel.xml b/docs-xml/smbdotconf/printing/printnotifybackchannel.xml new file mode 100644 index 0000000..576bf75 --- /dev/null +++ b/docs-xml/smbdotconf/printing/printnotifybackchannel.xml @@ -0,0 +1,16 @@ +<samba:parameter name="print notify backchannel" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> +<para>Windows print clients can update print queue status by expecting + the server to open a backchannel SMB connection to them. Due to + client firewall settings this can cause considerable timeouts + and will often fail, as there is no guarantee the client is even + running an SMB server. By default, the Samba print server will + not try to connect back to clients, and will treat corresponding + requests as if the connection back to the client failed. +</para> +</description> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/printing/queuepausecommand.xml b/docs-xml/smbdotconf/printing/queuepausecommand.xml new file mode 100644 index 0000000..5dca456 --- /dev/null +++ b/docs-xml/smbdotconf/printing/queuepausecommand.xml @@ -0,0 +1,28 @@ +<samba:parameter name="queuepause command" + context="S" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter specifies the command to be + executed on the server host in order to pause the printer queue.</para> + + <para>This command should be a program or script which takes + a printer name as its only parameter and stops the printer queue, + such that no longer jobs are submitted to the printer.</para> + + <para>This command is not supported by Windows for Workgroups, + but can be issued from the Printers window under Windows 95 + and NT.</para> + + <para>If a <parameter moreinfo="none">%p</parameter> is given then the printer name + is put in its place. Otherwise it is placed at the end of the command. + </para> + + <para>Note that it is good practice to include the absolute + path in the command as the PATH may not be available to the + server.</para> +</description> + +<value type="default"><comment>determined by printing parameter</comment></value> +<value type="example">disable %p</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/printing/queueresumecommand.xml b/docs-xml/smbdotconf/printing/queueresumecommand.xml new file mode 100644 index 0000000..4a57333 --- /dev/null +++ b/docs-xml/smbdotconf/printing/queueresumecommand.xml @@ -0,0 +1,30 @@ +<samba:parameter name="queueresume command" + context="S" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter specifies the command to be + executed on the server host in order to resume the printer queue. It + is the command to undo the behavior that is caused by the + previous parameter (<smbconfoption name="queuepause command"/>).</para> + + <para>This command should be a program or script which takes + a printer name as its only parameter and resumes the printer queue, + such that queued jobs are resubmitted to the printer.</para> + + <para>This command is not supported by Windows for Workgroups, + but can be issued from the Printers window under Windows 95 + and NT.</para> + + <para>If a <parameter moreinfo="none">%p</parameter> is given then the printer name + is put in its place. Otherwise it is placed at the end of the + command.</para> + + <para>Note that it is good practice to include the absolute + path in the command as the PATH may not be available to the + server.</para> +</description> + +<value type="default"><comment>determined by printing parameter</comment></value> +<value type="example">enable %p</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/printing/showaddprinterwizard.xml b/docs-xml/smbdotconf/printing/showaddprinterwizard.xml new file mode 100644 index 0000000..14687b8 --- /dev/null +++ b/docs-xml/smbdotconf/printing/showaddprinterwizard.xml @@ -0,0 +1,34 @@ +<samba:parameter name="show add printer wizard" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>With the introduction of MS-RPC based printing support + for Windows NT/2000 client in Samba 2.2, a "Printers..." folder will + appear on Samba hosts in the share listing. Normally this folder will + contain an icon for the MS Add Printer Wizard (APW). However, it is + possible to disable this feature regardless of the level of privilege + of the connected user.</para> + + <para>Under normal circumstances, the Windows NT/2000 client will + open a handle on the printer server with OpenPrinterEx() asking for + Administrator privileges. If the user does not have administrative + access on the print server (i.e is not root or has granted the + SePrintOperatorPrivilege), the OpenPrinterEx() + call fails and the client makes another open call with a request for + a lower privilege level. This should succeed, however the APW + icon will not be displayed.</para> + + <para>Disabling the <parameter moreinfo="none">show add printer wizard</parameter> + parameter will always cause the OpenPrinterEx() on the server + to fail. Thus the APW icon will never be displayed. +</para> +<note><para>This does not prevent the same user from having + administrative privilege on an individual printer.</para></note> +</description> + +<related>addprinter command</related> +<related>deleteprinter command</related> + +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/printing/spoolssarchitecture.xml b/docs-xml/smbdotconf/printing/spoolssarchitecture.xml new file mode 100644 index 0000000..dae7390 --- /dev/null +++ b/docs-xml/smbdotconf/printing/spoolssarchitecture.xml @@ -0,0 +1,13 @@ +<samba:parameter name="spoolss: architecture" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>Windows spoolss print clients only allow association of server-side drivers + with printers when the driver architecture matches the advertised print server + architecture. Samba's spoolss print server architecture can be changed using + this parameter.</para> +</description> +<value type="default">Windows x64</value> +<value type="example">Windows NT x86</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/printing/spoolssosversion.xml b/docs-xml/smbdotconf/printing/spoolssosversion.xml new file mode 100644 index 0000000..1b57b69 --- /dev/null +++ b/docs-xml/smbdotconf/printing/spoolssosversion.xml @@ -0,0 +1,80 @@ +<samba:parameter name="spoolss: os_major" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>Windows might require a new os version number. This option allows + to modify the build number. The complete default version number is: + 5.0.2195 (Windows 2000). The example is 6.1.7601 (Windows 2008 R2). + </para> +</description> +<value type="default">5</value> +<value type="example">6</value> +</samba:parameter> + +<samba:parameter name="spoolss: os_minor" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>Windows might require a new os version number. This option allows + to modify the build number. The complete default version number is: + 5.0.2195 (Windows 2000). The example is 6.1.7601 (Windows 2008 R2). + </para> +</description> +<value type="default">0</value> +<value type="example">1</value> +</samba:parameter> + +<samba:parameter name="spoolss: os_build" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>Windows might require a new os version number. This option allows + to modify the build number. The complete default version number is: + 5.0.2195 (Windows 2000). The example is 6.1.7601 (Windows 2008 R2). + </para> +</description> +<value type="default">2195</value> +<value type="example">7601</value> +</samba:parameter> + +<samba:parameter name="spoolss_client: os_major" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>Windows might require a new os version number. This option allows + to modify the build number. The complete default version number is: + 6.1.7007 (Windows 7 and Windows Server 2008 R2). + </para> +</description> +<value type="default">6</value> +</samba:parameter> + +<samba:parameter name="spoolss_client: os_minor" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>Windows might require a new os version number. This option allows + to modify the build number. The complete default version number is: + 6.1.7007 (Windows 7 and Windows Server 2008 R2). + </para> +</description> +<value type="default">1</value> +</samba:parameter> + +<samba:parameter name="spoolss_client: os_build" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>Windows might require a new os version number. This option allows + to modify the build number. The complete default version number is: + 6.1.7007 (Windows 7 and Windows Server 2008 R2). + </para> +</description> +<value type="default">7007</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/printing/useclientdriver.xml b/docs-xml/smbdotconf/printing/useclientdriver.xml new file mode 100644 index 0000000..4d07604 --- /dev/null +++ b/docs-xml/smbdotconf/printing/useclientdriver.xml @@ -0,0 +1,39 @@ +<samba:parameter name="use client driver" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter applies only to Windows NT/2000 + clients. It has no effect on Windows 95/98/ME clients. When + serving a printer to Windows NT/2000 clients without first installing + a valid printer driver on the Samba host, the client will be required + to install a local printer driver. From this point on, the client + will treat the print as a local printer and not a network printer + connection. This is much the same behavior that will occur + when <command moreinfo="none">disable spoolss = yes</command>. + </para> + + <para>The differentiating factor is that under normal + circumstances, the NT/2000 client will attempt to open the network + printer using MS-RPC. The problem is that because the client + considers the printer to be local, it will attempt to issue the + OpenPrinterEx() call requesting access rights associated with the + logged on user. If the user possesses local administrator rights but + not root privilege on the Samba host (often the case), the + OpenPrinterEx() call will fail. The result is that the client will + now display an "Access Denied; Unable to connect" message + in the printer queue window (even though jobs may successfully be + printed). </para> + + <para>If this parameter is enabled for a printer, then any attempt + to open the printer with the PRINTER_ACCESS_ADMINISTER right is mapped + to PRINTER_ACCESS_USE instead. Thus allowing the OpenPrinterEx() + call to succeed. <emphasis>This parameter MUST not be enabled + on a print share which has valid print driver installed on the Samba + server.</emphasis></para> +</description> + +<related>disable spoolss</related> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/aclallowexecutealways.xml b/docs-xml/smbdotconf/protocol/aclallowexecutealways.xml new file mode 100644 index 0000000..60ffb34 --- /dev/null +++ b/docs-xml/smbdotconf/protocol/aclallowexecutealways.xml @@ -0,0 +1,25 @@ +<samba:parameter name="acl allow execute always" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This boolean parameter controls the behaviour of <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> when receiving a protocol request of "open for execution" + from a Windows client. + With Samba 3.6 and older, the execution right in the ACL was not checked, so a client + could execute a file even if it did not have execute rights on the file. In Samba 4.0, + this has been fixed, so that by default, i.e. when this parameter is set to "False", + "open for execution" is now denied when execution permissions are not present. + </para> + <para> + If this parameter is set to "True", Samba does not check execute permissions on + "open for execution", thus re-establishing the behaviour of Samba 3.6. + This can be useful to smoothen upgrades from older Samba versions to 4.0 and newer. + This setting is not meant to be used as a permanent setting, but as a temporary relief: + It is recommended to fix the permissions in the ACLs and reset this parameter to the + default after a certain transition period. + </para> +</description> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/aclcheckpermissions.xml b/docs-xml/smbdotconf/protocol/aclcheckpermissions.xml new file mode 100644 index 0000000..bfffcc0 --- /dev/null +++ b/docs-xml/smbdotconf/protocol/aclcheckpermissions.xml @@ -0,0 +1,33 @@ +<samba:parameter name="acl check permissions" + context="S" + type="boolean" + deprecated="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>Please note this parameter is now deprecated in Samba 3.6.2 and will be removed + in a future version of Samba. + </para> + <para>This boolean parameter controls what <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> does on receiving a protocol request of "open for delete" + from a Windows client. If a Windows client doesn't have permissions to delete a file then they + expect this to be denied at open time. POSIX systems normally only detect restrictions on delete by + actually attempting to delete the file or directory. As Windows clients can (and do) "back out" a + delete request by unsetting the "delete on close" bit Samba cannot delete the file immediately + on "open for delete" request as we cannot restore such a deleted file. With this parameter set to + true (the default) then smbd checks the file system permissions directly on "open for delete" and denies the + request without actually deleting the file if the file system permissions would seem to deny it. + This is not perfect, as it's possible a user could have deleted a file without Samba being able to + check the permissions correctly, but it is close enough to Windows semantics for mostly correct + behaviour. Samba will correctly check POSIX ACL semantics in this case. + </para> + <para>If this parameter is set to "false" Samba doesn't check permissions on "open for delete" + and allows the open. If the user doesn't have permission to delete the file this will only be + discovered at close time, which is too late for the Windows user tools to display an error message + to the user. The symptom of this is files that appear to have been deleted "magically" re-appearing + on a Windows explorer refresh. This is an extremely advanced protocol option which should not + need to be changed. This parameter was introduced in its final form in 3.0.21, an earlier version + with slightly different semantics was introduced in 3.0.20. That older version is not documented here. + </para> +</description> +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/aclmapfullcontrol.xml b/docs-xml/smbdotconf/protocol/aclmapfullcontrol.xml new file mode 100644 index 0000000..9bb1e7d --- /dev/null +++ b/docs-xml/smbdotconf/protocol/aclmapfullcontrol.xml @@ -0,0 +1,16 @@ +<samba:parameter name="acl map full control" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This boolean parameter controls whether <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> maps a POSIX ACE entry of "rwx" (read/write/execute), the maximum + allowed POSIX permission set, into a Windows ACL of "FULL CONTROL". If this parameter is set to true any POSIX + ACE entry of "rwx" will be returned in a Windows ACL as "FULL CONTROL", is this parameter is set to false any + POSIX ACE entry of "rwx" will be returned as the specific Windows ACL bits representing read, write and + execute. + </para> +</description> +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/cldapport.xml b/docs-xml/smbdotconf/protocol/cldapport.xml new file mode 100644 index 0000000..3fcb2b3 --- /dev/null +++ b/docs-xml/smbdotconf/protocol/cldapport.xml @@ -0,0 +1,12 @@ +<samba:parameter name="cldap port" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option controls the port used by the CLDAP protocol. +</para> +</description> + +<value type="default">389</value> +<value type="example">3389</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/clientipcmaxprotocol.xml b/docs-xml/smbdotconf/protocol/clientipcmaxprotocol.xml new file mode 100644 index 0000000..408af50 --- /dev/null +++ b/docs-xml/smbdotconf/protocol/clientipcmaxprotocol.xml @@ -0,0 +1,29 @@ +<samba:parameter name="client ipc max protocol" + context="G" + type="enum" + function="_client_ipc_max_protocol" + enumlist="enum_protocol" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>The value of the parameter (a string) is the highest + protocol level that will be supported for IPC$ connections as DCERPC transport.</para> + + <para>Normally this option should not be set as the automatic + negotiation phase in the SMB protocol takes care of choosing + the appropriate protocol.</para> + + <para>The value <constant>default</constant> refers to the latest + supported protocol, currently <constant>SMB3_11</constant>.</para> + + <para>See <smbconfoption name="client max protocol"/> for a full list + of available protocols. The values CORE, COREPLUS, LANMAN1, LANMAN2 + are silently upgraded to NT1.</para> +</description> + +<related>client ipc min protocol</related> +<related>client min protocol</related> +<related>client max protocol</related> + +<value type="default">default</value> +<value type="example">SMB2_10</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/clientipcminprotocol.xml b/docs-xml/smbdotconf/protocol/clientipcminprotocol.xml new file mode 100644 index 0000000..fc04b78 --- /dev/null +++ b/docs-xml/smbdotconf/protocol/clientipcminprotocol.xml @@ -0,0 +1,29 @@ +<samba:parameter name="client ipc min protocol" + context="G" + type="enum" + function="_client_ipc_min_protocol" + enumlist="enum_protocol" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This setting controls the minimum protocol version that the + will be attempted to use for IPC$ connections as DCERPC transport.</para> + + <para>Normally this option should not be set as the automatic + negotiation phase in the SMB protocol takes care of choosing + the appropriate protocol.</para> + + <para>The value <constant>default</constant> refers to the higher value + of <constant>NT1</constant> and the effective value of + <smbconfoption name="client min protocol"/>.</para> + + <para>See <smbconfoption name="client max protocol"/> for a full list + of available protocols. The values CORE, COREPLUS, LANMAN1, LANMAN2 + are silently upgraded to NT1.</para> +</description> + +<related>client ipc max protocol</related> +<related>client min protocol</related> +<related>client max protocol</related> +<value type="default">default</value> +<value type="example">SMB3_11</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/clientmaxprotocol.xml b/docs-xml/smbdotconf/protocol/clientmaxprotocol.xml new file mode 100644 index 0000000..784123e --- /dev/null +++ b/docs-xml/smbdotconf/protocol/clientmaxprotocol.xml @@ -0,0 +1,86 @@ +<samba:parameter name="client max protocol" + context="G" + type="enum" + function="_client_max_protocol" + enumlist="enum_protocol" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>The value of the parameter (a string) is the highest + protocol level that will be supported by the client.</para> + + <para>Possible values are :</para> + <itemizedlist> + <listitem> + <para><constant>CORE</constant>: Earliest version. No + concept of user names.</para> + </listitem> + + <listitem> + <para><constant>COREPLUS</constant>: Slight improvements on + CORE for efficiency.</para> + </listitem> + + <listitem> + <para><constant>LANMAN1</constant>: First <emphasis>modern</emphasis> + version of the protocol. Long filename support.</para> + </listitem> + + <listitem> + <para><constant>LANMAN2</constant>: Updates to Lanman1 protocol.</para> + </listitem> + + <listitem> + <para><constant>NT1</constant>: Current up to date version of the protocol. + Used by Windows NT. Known as CIFS.</para> + </listitem> + + <listitem> + <para><constant>SMB2</constant>: Re-implementation of the SMB protocol. + Used by Windows Vista and later versions of Windows. SMB2 has sub protocols available.</para> + <itemizedlist> + <listitem> + <para><constant>SMB2_02</constant>: The earliest SMB2 version.</para> + </listitem> + <listitem> + <para><constant>SMB2_10</constant>: Windows 7 SMB2 version.</para> + </listitem> + </itemizedlist> + <para>By default SMB2 selects the SMB2_10 variant.</para> + </listitem> + + <listitem> + <para><constant>SMB3</constant>: The same as SMB2. + Used by Windows 8. SMB3 has sub protocols available.</para> + <itemizedlist> + <listitem> + <para><constant>SMB3_00</constant>: Windows 8 SMB3 version.</para> + </listitem> + <listitem> + <para><constant>SMB3_02</constant>: Windows 8.1 SMB3 version.</para> + </listitem> + <listitem> + <para><constant>SMB3_11</constant>: Windows 10 SMB3 version.</para> + </listitem> + </itemizedlist> + <para>By default SMB3 selects the SMB3_11 variant.</para> + </listitem> + </itemizedlist> + + <para>Normally this option should not be set as the automatic + negotiation phase in the SMB protocol takes care of choosing + the appropriate protocol.</para> + + <para>The value <constant>default</constant> refers to <constant>SMB3_11</constant>.</para> + + <para>IPC$ connections for DCERPC e.g. in winbindd, are handled by the + <smbconfoption name="client ipc max protocol"/> option.</para> +</description> + +<related>server max protocol</related> +<related>client min protocol</related> +<related>client ipc min protocol</related> +<related>client ipc max protocol</related> + +<value type="default">default</value> +<value type="example">LANMAN1</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/clientminprotocol.xml b/docs-xml/smbdotconf/protocol/clientminprotocol.xml new file mode 100644 index 0000000..1eb07ad --- /dev/null +++ b/docs-xml/smbdotconf/protocol/clientminprotocol.xml @@ -0,0 +1,32 @@ +<samba:parameter name="client min protocol" + context="G" + type="enum" + enumlist="enum_protocol" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This setting controls the minimum protocol version that the + client will attempt to use.</para> + + <para>Normally this option should not be set as the automatic + negotiation phase in the SMB protocol takes care of choosing + the appropriate protocol unless you connect to a legacy SMB1-only server.</para> + + <para>See <related>client max protocol</related> for a full list + of available protocols.</para> + + <para>IPC$ connections for DCERPC e.g. in winbindd, are handled by the + <smbconfoption name="client ipc min protocol"/> option.</para> + + <para>Note that most command line tools support + --option='client min protocol=NT1', so it may not be required to + enable SMB1 protocols globally in smb.conf.</para> +</description> + +<related>client max protocol</related> +<related>server min protocol</related> +<related>client ipc min protocol</related> +<related>client ipc max protocol</related> + +<value type="default">SMB2_02</value> +<value type="example">NT1</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/clientusespnego.xml b/docs-xml/smbdotconf/protocol/clientusespnego.xml new file mode 100644 index 0000000..2d45f91 --- /dev/null +++ b/docs-xml/smbdotconf/protocol/clientusespnego.xml @@ -0,0 +1,27 @@ +<samba:parameter name="client use spnego" + context="G" + type="boolean" + deprecated="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter has been deprecated since Samba 4.13 and + support for NTLMv2, NTLM and LanMan authentication outside NTLMSSP + will be removed in a future Samba release.</para> + <para>That is, in the future, the current default of + <command>client use spnego = yes</command> + will be the enforced behaviour.</para> + + <para> This variable controls whether Samba clients will try + to use Simple and Protected NEGOciation (as specified by rfc2478) with + supporting servers (including WindowsXP, Windows2000 and Samba + 3.0) to agree upon an authentication + mechanism. This enables Kerberos authentication in particular.</para> + + <para>When <smbconfoption name="client NTLMv2 auth"/> is also set to + <constant>yes</constant> extended security (SPNEGO) is required + in order to use NTLMv2 only within NTLMSSP. This behavior was + introduced with the patches for CVE-2016-2111.</para> +</description> + +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/dcerpcendpointservers.xml b/docs-xml/smbdotconf/protocol/dcerpcendpointservers.xml new file mode 100644 index 0000000..c6642b7 --- /dev/null +++ b/docs-xml/smbdotconf/protocol/dcerpcendpointservers.xml @@ -0,0 +1,11 @@ +<samba:parameter name="dcerpc endpoint servers" + context="G" + type="list" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>Specifies which DCE/RPC endpoint servers should be run.</para> +</description> + +<value type="default">epmapper, wkssvc, samr, netlogon, lsarpc, drsuapi, dssetup, unixinfo, browser, eventlog6, backupkey, dnsserver</value> +<value type="example">rpcecho</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/defersharingviolations.xml b/docs-xml/smbdotconf/protocol/defersharingviolations.xml new file mode 100644 index 0000000..353dd9d --- /dev/null +++ b/docs-xml/smbdotconf/protocol/defersharingviolations.xml @@ -0,0 +1,25 @@ +<samba:parameter name="defer sharing violations" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + Windows allows specifying how a file will be shared with + other processes when it is opened. Sharing violations occur when + a file is opened by a different process using options that violate + the share settings specified by other processes. This parameter causes + smbd to act as a Windows server does, and defer returning a "sharing + violation" error message for up to one second, allowing the client + to close the file causing the violation in the meantime. + </para> + + <para>UNIX by default does not have this behaviour.</para> + + <para> + There should be no reason to turn off this parameter, as it is + designed to enable Samba to more correctly emulate Windows. + </para> +</description> + +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/dgramport.xml b/docs-xml/smbdotconf/protocol/dgramport.xml new file mode 100644 index 0000000..b68c81f --- /dev/null +++ b/docs-xml/smbdotconf/protocol/dgramport.xml @@ -0,0 +1,11 @@ +<samba:parameter name="dgram port" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>Specifies which ports the server should listen on for NetBIOS datagram traffic.</para> +</description> +<para>This parameter is deprecated, as it is not honoured in the +majority of the code base.</para> +<value type="default">138</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/disablenetbios.xml b/docs-xml/smbdotconf/protocol/disablenetbios.xml new file mode 100644 index 0000000..ce39834 --- /dev/null +++ b/docs-xml/smbdotconf/protocol/disablenetbios.xml @@ -0,0 +1,15 @@ +<samba:parameter name="disable netbios" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>Enabling this parameter will disable netbios support + in Samba. Netbios is the only available form of browsing in + all windows versions except for 2000 and XP. </para> + + <note><para>Clients that only support netbios won't be able to + see your samba server when netbios support is disabled. + </para></note> +</description> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/dnsport.xml b/docs-xml/smbdotconf/protocol/dnsport.xml new file mode 100644 index 0000000..20d39b2 --- /dev/null +++ b/docs-xml/smbdotconf/protocol/dnsport.xml @@ -0,0 +1,21 @@ +<samba:parameter name="dns port" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>Specifies which ports the server should listen on for + DNS traffic.</para> + + <para>It makes possible to use another DNS server as a front + and forward to Samba.</para> + + <warning> + <para>Dynamic DNS updates may not be proxied by the front + DNS server when forwarding to Samba. Dynamic DNS update + proxying depends on the features of the other DNS server + used as a front.</para> + </warning> +</description> + +<value type="default">53</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/durablehandles.xml b/docs-xml/smbdotconf/protocol/durablehandles.xml new file mode 100644 index 0000000..4267b29 --- /dev/null +++ b/docs-xml/smbdotconf/protocol/durablehandles.xml @@ -0,0 +1,26 @@ +<samba:parameter name="durable handles" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This boolean parameter controls + whether Samba can grant SMB2 durable file handles on a share. + </para> + <para> + Note that durable handles are only enabled if + <smbconfoption name="kernel oplocks">no</smbconfoption>, + <smbconfoption name="kernel share modes">no</smbconfoption>, and + <smbconfoption name="posix locking">no</smbconfoption>, + i.e. if the share is configured for CIFS/SMB2 only access, + not supporting interoperability features with local UNIX processes + or NFS operations. + </para> + <para> + Also note that, for the time being, durability is not granted + for a handle that has the delete on close flag set. + </para> +</description> + +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/easupport.xml b/docs-xml/smbdotconf/protocol/easupport.xml new file mode 100644 index 0000000..0ff9d32 --- /dev/null +++ b/docs-xml/smbdotconf/protocol/easupport.xml @@ -0,0 +1,43 @@ +<samba:parameter name="ea support" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This boolean parameter controls whether <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> will allow clients to attempt to access extended + attributes on a share. In order to enable this parameter on a setup with default VFS modules: + </para> + <itemizedlist> + <listitem><para>Samba must have been built with extended attributes support. + </para></listitem> + <listitem><para>The underlying filesystem exposed by the share must support extended + attributes (e.g. the getfattr<manvolnum>1</manvolnum> / setfattr<manvolnum>1</manvolnum> + utilities must work). + </para></listitem> + <listitem><para>Access to extended user attributes must be allowed by the underlying + filesystem (e.g. when mounted with a system-dependent option like user_xattr on Linux). + </para></listitem> + </itemizedlist> + <para> + This option exposes the "user" attribute namespace from the underlying filesystem to + clients. In order to match Windows conventions, the namespace prefix ("user.") is + stripped from the attribute name on the client side. The handling of further attribute + namespaces (like "security", "system", or "trusted") is not affected by this option. + </para> + <para> + Note that the SMB protocol allows setting attributes whose value is 64K bytes long, + and that on NTFS, the maximum storage space for extended attributes per file is 64K. + On most UNIX systems (Solaris and ZFS file system being the exception), the limits + are much lower - typically 4K. Worse, the same 4K space is often used to store + system metadata such as POSIX ACLs, or Samba's NT ACLs. Giving clients + access to this tight space via extended attribute support could consume all + of it by unsuspecting client applications, which would prevent changing + system metadata due to lack of space. + + The default has changed to yes in Samba release 4.9.0 and above to allow better Windows + fileserver compatibility in a default install. + </para> +</description> + +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/enableasusupport.xml b/docs-xml/smbdotconf/protocol/enableasusupport.xml new file mode 100644 index 0000000..2f05b01 --- /dev/null +++ b/docs-xml/smbdotconf/protocol/enableasusupport.xml @@ -0,0 +1,16 @@ +<samba:parameter name="enable asu support" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>Hosts running the "Advanced Server for Unix (ASU)" product + require some special accommodations such as creating a builtin [ADMIN$] + share that only supports IPC connections. The has been the default + behavior in smbd for many years. However, certain Microsoft applications + such as the Print Migrator tool require that the remote server support + an [ADMIN$] file share. Disabling this parameter allows for creating + an [ADMIN$] file share in smb.conf.</para> +</description> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/eventloglist.xml b/docs-xml/smbdotconf/protocol/eventloglist.xml new file mode 100644 index 0000000..6d0b400 --- /dev/null +++ b/docs-xml/smbdotconf/protocol/eventloglist.xml @@ -0,0 +1,22 @@ +<samba:parameter name="eventlog list" + type="cmdlist" + context="G" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option defines a list of log names that Samba will + report to the Microsoft EventViewer utility. The listed + eventlogs will be associated with tdb file on disk in the + <filename>$(statedir)/eventlog</filename>. + </para> + + <para> + The administrator must use an external process to parse the normal + Unix logs such as <filename>/var/log/messages</filename> + and write then entries to the eventlog tdb files. Refer to the + eventlogadm(8) utility for how to write eventlog entries. + </para> +</description> + +<value type="default"/> +<value type="example">Security Application Syslog Apache</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/largereadwrite.xml b/docs-xml/smbdotconf/protocol/largereadwrite.xml new file mode 100644 index 0000000..e7142d1 --- /dev/null +++ b/docs-xml/smbdotconf/protocol/largereadwrite.xml @@ -0,0 +1,17 @@ +<samba:parameter name="large readwrite" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter determines whether or not + <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> supports the new 64k + streaming read and write variant SMB requests introduced with + Windows 2000. Note that due to Windows 2000 client redirector bugs + this requires Samba to be running on a 64-bit capable operating + system such as IRIX, Solaris or a Linux 2.4 kernel. Can improve + performance by 10% with Windows 2000 clients. Defaults to on. Not as + tested as some other Samba code paths.</para> +</description> +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/lsaovernetlogon.xml b/docs-xml/smbdotconf/protocol/lsaovernetlogon.xml new file mode 100644 index 0000000..d67be29 --- /dev/null +++ b/docs-xml/smbdotconf/protocol/lsaovernetlogon.xml @@ -0,0 +1,21 @@ +<samba:parameter name="lsa over netlogon" + context="G" + type="boolean" + deprecated="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>Setting this deprecated option will allow the RPC server + in the AD DC to answer the LSARPC interface on the + <command>\pipe\netlogon</command> IPC pipe.</para> + + <para>When enabled, this matches the behaviour of Microsoft's + Windows, due to their internal implementation choices.</para> + + <para>If it is disabled (the default), the AD DC can offer + improved performance, as the netlogon server is decoupled and + can run as multiple processes.</para> + +</description> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/mapaclinherit.xml b/docs-xml/smbdotconf/protocol/mapaclinherit.xml new file mode 100644 index 0000000..28271f9 --- /dev/null +++ b/docs-xml/smbdotconf/protocol/mapaclinherit.xml @@ -0,0 +1,16 @@ +<samba:parameter name="map acl inherit" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This boolean parameter controls whether <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> will attempt to map the 'inherit' and 'protected' + access control entry flags stored in Windows ACLs into an extended attribute + called user.SAMBA_PAI (POSIX ACL Inheritance). This parameter requires + supports for extended attributes on the filesystem and + allows the Windows ACL editor to store inheritance information while + NT ACLs are mapped best-effort to the POSIX ACLs. + </para> +</description> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/maxmux.xml b/docs-xml/smbdotconf/protocol/maxmux.xml new file mode 100644 index 0000000..ab50001 --- /dev/null +++ b/docs-xml/smbdotconf/protocol/maxmux.xml @@ -0,0 +1,12 @@ +<samba:parameter name="max mux" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option controls the maximum number of + outstanding simultaneous SMB operations that Samba tells the client + it will allow. You should never need to set this parameter.</para> +</description> + +<value type="default">50</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/maxttl.xml b/docs-xml/smbdotconf/protocol/maxttl.xml new file mode 100644 index 0000000..c340ad1 --- /dev/null +++ b/docs-xml/smbdotconf/protocol/maxttl.xml @@ -0,0 +1,13 @@ +<samba:parameter name="max ttl" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option tells <citerefentry><refentrytitle>nmbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> what the default 'time to live' + of NetBIOS names should be (in seconds) when <command moreinfo="none">nmbd</command> is + requesting a name using either a broadcast packet or from a WINS server. You should + never need to change this parameter. The default is 3 days.</para> +</description> +<value type="default">259200</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/maxxmit.xml b/docs-xml/smbdotconf/protocol/maxxmit.xml new file mode 100644 index 0000000..d7bd66c --- /dev/null +++ b/docs-xml/smbdotconf/protocol/maxxmit.xml @@ -0,0 +1,17 @@ +<samba:parameter name="max xmit" + context="G" + type="bytes" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option controls the maximum packet size + that will be negotiated by Samba's + <citerefentry><refentrytitle>smbd</refentrytitle><manvolnum>8</manvolnum></citerefentry> + for the SMB1 protocol. The default is 16644, which + matches the behavior of Windows 2000. A value below 2048 is likely to cause problems. + You should never need to change this parameter from its default value. +</para> +</description> + +<value type="default">16644</value> +<value type="example">8192</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/minreceivefilesize.xml b/docs-xml/smbdotconf/protocol/minreceivefilesize.xml new file mode 100644 index 0000000..ce0ea30 --- /dev/null +++ b/docs-xml/smbdotconf/protocol/minreceivefilesize.xml @@ -0,0 +1,21 @@ +<samba:parameter name="min receivefile size" + type="bytes" + context="G" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> +<para>This option changes the behavior of <citerefentry><refentrytitle>smbd</refentrytitle> +<manvolnum>8</manvolnum></citerefentry> when processing SMBwriteX calls. Any incoming +SMBwriteX call on a non-signed SMB/CIFS connection greater than this value will not be processed in the normal way but will +be passed to any underlying kernel recvfile or splice system call (if there is no such +call Samba will emulate in user space). This allows zero-copy writes directly from network +socket buffers into the filesystem buffer cache, if available. It may improve performance +but user testing is recommended. If set to zero Samba processes SMBwriteX calls in the +normal way. To enable POSIX large write support (SMB/CIFS writes up to 16Mb) this option must be +nonzero. The maximum value is 128k. Values greater than 128k will be silently set to 128k.</para> +<para>Note this option will have NO EFFECT if set on a SMB signed connection.</para> +<para>The default is zero, which disables this option.</para> +</description> + +<related>min receivefile size</related> +<value type="default">0</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/nameresolveorder.xml b/docs-xml/smbdotconf/protocol/nameresolveorder.xml new file mode 100644 index 0000000..b85d060 --- /dev/null +++ b/docs-xml/smbdotconf/protocol/nameresolveorder.xml @@ -0,0 +1,70 @@ +<samba:parameter name="name resolve order" + context="G" + type="cmdlist" + handler="handle_name_resolve_order" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option is used by the programs in the Samba + suite to determine what naming services to use and in what order + to resolve host names to IP addresses. Its main purpose to is to + control how netbios name resolution is performed. The option takes a space + separated string of name resolution options.</para> + + <para>The options are: "lmhosts", "host", + "wins" and "bcast". They cause names to be + resolved as follows:</para> + + <itemizedlist> + <listitem> + <para> + <constant>lmhosts</constant> : Lookup an IP address in the Samba lmhosts file. If the line in lmhosts has + no name type attached to the NetBIOS name (see the manpage for lmhosts for details) then + any name type matches for lookup. + </para> + </listitem> + + <listitem> + <para> + <constant>host</constant> : Do a standard host name to IP address resolution, using the system + <filename moreinfo="none">/etc/hosts </filename> or DNS lookups. This method of name resolution is + operating system depended for instance on IRIX or Solaris this may be controlled by the <filename + moreinfo="none">/etc/nsswitch.conf</filename> file. Note that this method is used only if the NetBIOS name + type being queried is the 0x20 (server) name type or 0x1c (domain controllers). The latter case is only + useful for active directory domains and results in a DNS query for the SRV RR entry matching + _ldap._tcp.domain. + </para> + </listitem> + + <listitem> + <para><constant>wins</constant> : Query a name with + the IP address listed in the <smbconfoption name="WINSSERVER"><parameter moreinfo="none"> + wins server</parameter></smbconfoption> parameter. If no WINS server has + been specified this method will be ignored.</para> + </listitem> + + <listitem> + <para><constant>bcast</constant> : Do a broadcast on + each of the known local interfaces listed in the <smbconfoption name="interfaces"/> + parameter. This is the least reliable of the name resolution + methods as it depends on the target host being on a locally + connected subnet.</para> + </listitem> +</itemizedlist> + + <para>The example below will cause the local lmhosts file to be examined + first, followed by a broadcast attempt, followed by a normal + system hostname lookup.</para> + + <para>When Samba is functioning in ADS security mode (<command moreinfo="none">security = ads</command>) + it is advised to use following settings for <parameter moreinfo="none">name resolve order</parameter>:</para> + + <para><command moreinfo="none">name resolve order = wins bcast</command></para> + + <para>DC lookups will still be done via DNS, but fallbacks to netbios names will + not inundate your DNS servers with needless queries for DOMAIN<0x1c> lookups.</para> + +</description> + +<value type="default">lmhosts wins host bcast</value> +<value type="example">lmhosts bcast host</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/nbtport.xml b/docs-xml/smbdotconf/protocol/nbtport.xml new file mode 100644 index 0000000..7070b98 --- /dev/null +++ b/docs-xml/smbdotconf/protocol/nbtport.xml @@ -0,0 +1,13 @@ +<samba:parameter name="nbt port" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>Specifies which port the server should use for NetBIOS over IP name + services traffic.</para> +</description> + +<para>This parameter is deprecated, as it is not honoured in the +majority of the code base.</para> +<value type="default">137</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/ntaclsupport.xml b/docs-xml/smbdotconf/protocol/ntaclsupport.xml new file mode 100644 index 0000000..1b1f947 --- /dev/null +++ b/docs-xml/smbdotconf/protocol/ntaclsupport.xml @@ -0,0 +1,16 @@ +<samba:parameter name="nt acl support" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This boolean parameter controls whether <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> will attempt to map + UNIX permissions into Windows NT access control lists. The UNIX + permissions considered are the traditional UNIX owner and + group permissions, as well as POSIX ACLs set on any files or + directories. This parameter was formally a global parameter in + releases prior to 2.2.2.</para> +</description> + +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/ntpipesupport.xml b/docs-xml/smbdotconf/protocol/ntpipesupport.xml new file mode 100644 index 0000000..907dee1 --- /dev/null +++ b/docs-xml/smbdotconf/protocol/ntpipesupport.xml @@ -0,0 +1,15 @@ +<samba:parameter name="nt pipe support" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This boolean parameter controls whether + <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> will allow Windows NT + clients to connect to the NT SMB specific <constant>IPC$</constant> + pipes. This is a developer debugging option and can be left + alone.</para> +</description> + +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/ntstatussupport.xml b/docs-xml/smbdotconf/protocol/ntstatussupport.xml new file mode 100644 index 0000000..07d3462 --- /dev/null +++ b/docs-xml/smbdotconf/protocol/ntstatussupport.xml @@ -0,0 +1,17 @@ +<samba:parameter name="nt status support" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This boolean parameter controls whether <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> will negotiate NT specific status + support with Windows NT/2k/XP clients. This is a developer debugging option and should be left alone. + If this option is set to <constant>no</constant> then Samba offers + exactly the same DOS error codes that versions prior to Samba 2.2.3 + reported.</para> + + <para>You should not need to ever disable this parameter.</para> +</description> + +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/readraw.xml b/docs-xml/smbdotconf/protocol/readraw.xml new file mode 100644 index 0000000..a467f52 --- /dev/null +++ b/docs-xml/smbdotconf/protocol/readraw.xml @@ -0,0 +1,25 @@ +<samba:parameter name="read raw" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This is ignored if <smbconfoption name="async smb echo handler"/> is set, + because this feature is incompatible with raw read SMB requests</para> + + <para>If enabled, raw reads allow reads of 65535 bytes in + one packet. This typically provides a major performance benefit for some very, very old clients. + </para> + + <para>However, some clients either negotiate the allowable + block size incorrectly or are incapable of supporting larger block + sizes, and for these clients you may need to disable raw reads.</para> + +<para>In general this parameter should be viewed as a system tuning + tool and left severely alone.</para> +</description> + +<value type="default">yes</value> + +<related>write raw</related> +<related>async smb echo handler</related> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/rpcbigendian.xml b/docs-xml/smbdotconf/protocol/rpcbigendian.xml new file mode 100644 index 0000000..5f7c5b6 --- /dev/null +++ b/docs-xml/smbdotconf/protocol/rpcbigendian.xml @@ -0,0 +1,15 @@ +<samba:parameter name="rpc big endian" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>Setting this option will force the RPC client and server to + transfer data in big endian.</para> + + <para>If it is disabled, data will be transferred in little endian.</para> + + <para>The behaviour is independent of the endianness of the host machine.</para> +</description> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/rpcserverport.xml b/docs-xml/smbdotconf/protocol/rpcserverport.xml new file mode 100644 index 0000000..0fd87d6 --- /dev/null +++ b/docs-xml/smbdotconf/protocol/rpcserverport.xml @@ -0,0 +1,22 @@ +<samba:parameter name="rpc server port" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>Specifies which port the server should listen on for DCE/RPC over TCP/IP traffic.</para> + <para>This controls the default port for all protocols, except for NETLOGON.</para> + <para>If unset, the first available port from <smbconfoption name="rpc server dynamic port range"/> is used, e.g. 49152.</para> + <para>The NETLOGON server will use the next available port, e.g. 49153. To change this port use (eg) rpc server port:netlogon = 4000.</para> + <para>Furthermore, all RPC servers can have the port they use specified independenty, with (for example) rpc server port:drsuapi = 5000.</para> + + <para>This option applies currently only when + <citerefentry><refentrytitle>samba</refentrytitle> <manvolnum>8</manvolnum></citerefentry> + runs as an active directory domain controller.</para> + + <para>The default value 0 causes Samba to select the first available port from <smbconfoption name="rpc server dynamic port range"/>.</para> +</description> + +<related>rpc server dynamic port range</related> + +<value type="default">0</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/servermaxprotocol.xml b/docs-xml/smbdotconf/protocol/servermaxprotocol.xml new file mode 100644 index 0000000..815841d --- /dev/null +++ b/docs-xml/smbdotconf/protocol/servermaxprotocol.xml @@ -0,0 +1,69 @@ +<samba:parameter name="server max protocol" + context="G" + type="enum" + enumlist="enum_protocol" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>The value of the parameter (a string) is the highest + protocol level that will be supported by the server.</para> + + <para>Possible values are :</para> + <itemizedlist> + <listitem> + <para><constant>LANMAN1</constant>: First <emphasis>modern</emphasis> + version of the protocol. Long filename support.</para> + </listitem> + + <listitem> + <para><constant>LANMAN2</constant>: Updates to Lanman1 protocol.</para> + </listitem> + + <listitem> + <para><constant>NT1</constant>: Current up to date version of the protocol. + Used by Windows NT. Known as CIFS.</para> + </listitem> + + <listitem> + <para><constant>SMB2</constant>: Re-implementation of the SMB protocol. + Used by Windows Vista and later versions of Windows. SMB2 has sub protocols available.</para> + <itemizedlist> + <listitem> + <para><constant>SMB2_02</constant>: The earliest SMB2 version.</para> + </listitem> + <listitem> + <para><constant>SMB2_10</constant>: Windows 7 SMB2 version.</para> + </listitem> + </itemizedlist> + <para>By default SMB2 selects the SMB2_10 variant.</para> + </listitem> + + <listitem> + <para><constant>SMB3</constant>: The same as SMB2. + Used by Windows 8. SMB3 has sub protocols available.</para> + <itemizedlist> + <listitem> + <para><constant>SMB3_00</constant>: Windows 8 SMB3 version.</para> + </listitem> + <listitem> + <para><constant>SMB3_02</constant>: Windows 8.1 SMB3 version.</para> + </listitem> + <listitem> + <para><constant>SMB3_11</constant>: Windows 10 SMB3 version.</para> + </listitem> + </itemizedlist> + <para>By default SMB3 selects the SMB3_11 variant.</para> + </listitem> + </itemizedlist> + + <para>Normally this option should not be set as the automatic + negotiation phase in the SMB protocol takes care of choosing + the appropriate protocol.</para> +</description> + +<related>server min protocol</related> +<synonym>max protocol</synonym> +<synonym>protocol</synonym> + +<value type="default">SMB3</value> +<value type="example">LANMAN1</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/serverminprotocol.xml b/docs-xml/smbdotconf/protocol/serverminprotocol.xml new file mode 100644 index 0000000..1079eb8 --- /dev/null +++ b/docs-xml/smbdotconf/protocol/serverminprotocol.xml @@ -0,0 +1,23 @@ +<samba:parameter name="server min protocol" + context="G" + type="enum" + enumlist="enum_protocol" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<synonym>min protocol</synonym> +<description> + <para>This setting controls the minimum protocol version that the server + will allow the client to use.</para> + + <para>Normally this option should not be set as the automatic negotiation + phase in the SMB protocol takes care of choosing the appropriate + protocol unless you have legacy clients which are SMB1 capable only.</para> + + <para>See <related>server max protocol</related> for a full list + of available protocols.</para> +</description> + +<related>server max protocol</related> + +<value type="default">SMB2_02</value> +<value type="example">NT1</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/servermultichannelsupport.xml b/docs-xml/smbdotconf/protocol/servermultichannelsupport.xml new file mode 100644 index 0000000..1056271 --- /dev/null +++ b/docs-xml/smbdotconf/protocol/servermultichannelsupport.xml @@ -0,0 +1,27 @@ +<samba:parameter name="server multi channel support" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This boolean parameter controls whether + <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> will support + SMB3 multi-channel. + </para> + <para>This parameter was added with version 4.4.</para> + <para> + Note that this feature was still considered experimental up to 4.14. + </para> + + <para>Due to dependencies to kernel APIs of Linux or FreeBSD, it's only possible + to use this feature on Linux and FreeBSD for now. For testing this restriction + can be overwritten by specifying <constant>force:server multi channel support=yes</constant> + in addition.</para> + + <para> + This option is enabled by default starting with to 4.15 (on Linux and FreeBSD). + </para> +</description> + +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/sharefakefscaps.xml b/docs-xml/smbdotconf/protocol/sharefakefscaps.xml new file mode 100644 index 0000000..11f4955 --- /dev/null +++ b/docs-xml/smbdotconf/protocol/sharefakefscaps.xml @@ -0,0 +1,19 @@ +<samba:parameter name="share:fake_fscaps" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + + <para> + This is needed to support some special application that makes + QFSINFO calls to check whether we set the SPARSE_FILES bit + (0x40). If this bit is not set that particular application + refuses to work against + Samba. With <smbconfoption name="share:fake_fscaps">64</smbconfoption> + the SPARSE_FILES file system capability flag is set. Use other + decimal values to specify the bitmask you need to fake. + </para> + +</description> +<value type="default">0</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/smb1unixextensions.xml b/docs-xml/smbdotconf/protocol/smb1unixextensions.xml new file mode 100644 index 0000000..b1fcf6b --- /dev/null +++ b/docs-xml/smbdotconf/protocol/smb1unixextensions.xml @@ -0,0 +1,24 @@ +<samba:parameter name="smb1 unix extensions" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<synonym>unix extensions</synonym> + <description> + <para>This boolean parameter controls whether Samba + implements the SMB1/CIFS UNIX extensions, as defined by HP. + These extensions enable Samba to better serve UNIX SMB1/CIFS clients + by supporting features such as symbolic links, hard links, etc... + These extensions require a similarly enabled client, and are of + no current use to Windows clients.</para> + <para> + Note if this parameter is turned on, the <smbconfoption name="wide links"/> + parameter will automatically be disabled. + </para> + <para> + See the parameter <smbconfoption name="allow insecure wide links"/> + if you wish to change this coupling between the two parameters. + </para> +</description> + +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/smb2_disable_lock_sequence_checking.xml b/docs-xml/smbdotconf/protocol/smb2_disable_lock_sequence_checking.xml new file mode 100644 index 0000000..3a33b8b --- /dev/null +++ b/docs-xml/smbdotconf/protocol/smb2_disable_lock_sequence_checking.xml @@ -0,0 +1,41 @@ +<samba:parameter name="smb2 disable lock sequence checking" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This boolean parameter controls whether + <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> will disable + lock sequence checking even for multi-channel connections + as well as durable handles. + </para> + + <para>The [MS-SMB2] specification (under 3.3.5.14 Receiving an SMB2 LOCK Request) + documents that a server should do lock sequence if Open.IsResilient or Open.IsDurable + or Open.IsPersistent is TRUE or if Connection.Dialect belongs to the SMB 3.x dialect + family and Connection.ServerCapabilities includes SMB2_GLOBAL_CAP_MULTI_CHANNEL. + </para> + + <para>But Windows Server (at least up to v2004) only does these checks + for the Open.IsResilient and Open.IsPersistent. + That means they do not implement the behavior specified + in [MS-SMB2].</para> + + <para>By default Samba behaves according to the specification + and implements lock sequence checking when multi-channel is used.</para> + + <para>Warning: Only enable this option if existing clients can't + handle lock sequence checking for handles without Open.IsResilient and Open.IsPersistent. + And it turns out that the Windows Server behavior is required.</para> + + <para>Note: it's likely that this option will be removed again + if future Windows versions change their behavior.</para> + + <para>Note: Samba does not implement Open.IsResilient and Open.IsPersistent yet.</para> +</description> + +<related>server multi channel support</related> + +<value type="default">no</value> +<value type="example">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/smb2_disable_oplock_break_retry.xml b/docs-xml/smbdotconf/protocol/smb2_disable_oplock_break_retry.xml new file mode 100644 index 0000000..1b67100 --- /dev/null +++ b/docs-xml/smbdotconf/protocol/smb2_disable_oplock_break_retry.xml @@ -0,0 +1,39 @@ +<samba:parameter name="smb2 disable oplock break retry" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This boolean parameter controls whether + <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> will trigger + smb2 oplock break notification retries when using + <smbconfoption name="server multi channel support">yes</smbconfoption>. + </para> + + <para>The [MS-SMB2] specification documents that a server should + send smb2 oplock break notification retries on all available channel + to the given client.</para> + + <para>But Windows Server versions (at least up to 2019) do not send + smb2 oplock break notification retries on channel failures. + That means they do not implement the behavior specified + in [MS-SMB2].</para> + + <para>By default Samba behaves according to the specification + and send smb2 oplock break notification retries.</para> + + <para>Warning: Only enable this option if existing clients can't + handle possible retries and it turns out that the Windows Server + behavior is required.</para> + + <para>Note: it's likely that this option gets removed again + if future Windows versions change their behavior.</para> + + <para>Note: this only applies to oplocks and not SMB2 leases.</para> +</description> + +<related>server multi channel support</related> + +<value type="default">no</value> +<value type="example">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/smb2maxcredits.xml b/docs-xml/smbdotconf/protocol/smb2maxcredits.xml new file mode 100644 index 0000000..90bc622 --- /dev/null +++ b/docs-xml/smbdotconf/protocol/smb2maxcredits.xml @@ -0,0 +1,15 @@ +<samba:parameter name="smb2 max credits" + type="integer" + context="G" + handler="handle_smb2_max_credits" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> +<para>This option controls the maximum number of outstanding simultaneous SMB2 operations +that Samba tells the client it will allow. This is similar to the <smbconfoption name="max mux"/> +parameter for SMB1. You should never need to set this parameter. +</para> +<para>The default is 8192 credits, which is the same as a Windows 2008R2 SMB2 server.</para> +</description> + +<value type="default">8192</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/smb2maxread.xml b/docs-xml/smbdotconf/protocol/smb2maxread.xml new file mode 100644 index 0000000..01f9583 --- /dev/null +++ b/docs-xml/smbdotconf/protocol/smb2maxread.xml @@ -0,0 +1,19 @@ +<samba:parameter name="smb2 max read" + type="bytes" + context="G" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> +<para>This option specifies the protocol value that <citerefentry><refentrytitle>smbd</refentrytitle> +<manvolnum>8</manvolnum></citerefentry> will return to a client, informing the client of the largest +size that may be returned by a single SMB2 read call. +</para> +<para>The maximum is 8388608 bytes (8MiB), which is the same as a Windows Server 2012 r2.</para> +<para>Please note that the default is 8MiB, but it's limit is based on the +smb2 dialect (64KiB for SMB == 2.0, 8MiB for SMB >= 2.1 with LargeMTU). +Large MTU is not supported over NBT (tcp port 139).</para> +</description> + +<related>smb2 max write</related> +<related>smb2 max trans</related> +<value type="default">8388608</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/smb2maxtrans.xml b/docs-xml/smbdotconf/protocol/smb2maxtrans.xml new file mode 100644 index 0000000..5586d3f --- /dev/null +++ b/docs-xml/smbdotconf/protocol/smb2maxtrans.xml @@ -0,0 +1,19 @@ +<samba:parameter name="smb2 max trans" + type="bytes" + context="G" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> +<para>This option specifies the protocol value that <citerefentry><refentrytitle>smbd</refentrytitle> +<manvolnum>8</manvolnum></citerefentry> will return to a client, informing the client of the largest +size of buffer that may be used in querying file meta-data via QUERY_INFO and related SMB2 calls. +</para> +<para>The maximum is 8388608 bytes (8MiB), which is the same as a Windows Server 2012 r2.</para> +<para>Please note that the default is 8MiB, but it's limit is based on the +smb2 dialect (64KiB for SMB == 2.0, 1MiB for SMB >= 2.1 with LargeMTU). +Large MTU is not supported over NBT (tcp port 139).</para> +</description> + +<related>smb2 max read</related> +<related>smb2 max write</related> +<value type="default">8388608</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/smb2maxwrite.xml b/docs-xml/smbdotconf/protocol/smb2maxwrite.xml new file mode 100644 index 0000000..f895a04 --- /dev/null +++ b/docs-xml/smbdotconf/protocol/smb2maxwrite.xml @@ -0,0 +1,19 @@ +<samba:parameter name="smb2 max write" + type="bytes" + context="G" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> +<para>This option specifies the protocol value that <citerefentry><refentrytitle>smbd</refentrytitle> +<manvolnum>8</manvolnum></citerefentry> will return to a client, informing the client of the largest +size that may be sent to the server by a single SMB2 write call. +</para> +<para>The maximum is 8388608 bytes (8MiB), which is the same as a Windows Server 2012 r2.</para> +<para>Please note that the default is 8MiB, but it's limit is based on the +smb2 dialect (64KiB for SMB == 2.0, 8MiB for SMB => 2.1 with LargeMTU). +Large MTU is not supported over NBT (tcp port 139).</para> +</description> + +<related>smb2 max read</related> +<related>smb2 max trans</related> +<value type="default">8388608</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/smbports.xml b/docs-xml/smbdotconf/protocol/smbports.xml new file mode 100644 index 0000000..ec1df65 --- /dev/null +++ b/docs-xml/smbdotconf/protocol/smbports.xml @@ -0,0 +1,11 @@ +<samba:parameter name="smb ports" + context="G" + type="cmdlist" + handler="handle_smb_ports" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>Specifies which ports the server should listen on for SMB traffic.</para> +</description> + +<value type="default">445 139</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/svcctllist.xml b/docs-xml/smbdotconf/protocol/svcctllist.xml new file mode 100644 index 0000000..826bf70 --- /dev/null +++ b/docs-xml/smbdotconf/protocol/svcctllist.xml @@ -0,0 +1,22 @@ +<samba:parameter name="svcctl list" + type="cmdlist" + context="G" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option defines a list of init scripts that smbd + will use for starting and stopping Unix services via the Win32 + ServiceControl API. This allows Windows administrators to + utilize the MS Management Console plug-ins to manage a + Unix server running Samba.</para> + + <para>The administrator must create a directory + name <filename>svcctl</filename> in Samba's $(libdir) + and create symbolic links to the init scripts in + <filename>/etc/init.d/</filename>. The name of the links + must match the names given as part of the <parameter>svcctl list</parameter>. + </para> +</description> + +<value type="default"/> +<value type="example">cups postfix portmap httpd</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/timeserver.xml b/docs-xml/smbdotconf/protocol/timeserver.xml new file mode 100644 index 0000000..ceefbd3 --- /dev/null +++ b/docs-xml/smbdotconf/protocol/timeserver.xml @@ -0,0 +1,12 @@ +<samba:parameter name="time server" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter determines if <citerefentry><refentrytitle>nmbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> advertises itself as a time server to Windows +clients.</para> +</description> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/unicode.xml b/docs-xml/smbdotconf/protocol/unicode.xml new file mode 100644 index 0000000..25810cd --- /dev/null +++ b/docs-xml/smbdotconf/protocol/unicode.xml @@ -0,0 +1,13 @@ +<samba:parameter name="unicode" + context="G" + type="boolean" + deprecated="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>Specifies whether the server and client should support unicode.</para> + + <para>If this option is set to false, the use of ASCII will be forced.</para> +</description> + +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/protocol/writeraw.xml b/docs-xml/smbdotconf/protocol/writeraw.xml new file mode 100644 index 0000000..9a3d11f --- /dev/null +++ b/docs-xml/smbdotconf/protocol/writeraw.xml @@ -0,0 +1,25 @@ +<samba:parameter name="write raw" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This is ignored if <smbconfoption name="async smb echo handler"/> is set, + because this feature is incompatible with raw write SMB requests</para> + + <para>If enabled, raw writes allow writes of 65535 bytes in + one packet. This typically provides a major performance benefit for some very, very old clients. + </para> + + <para>However, some clients either negotiate the allowable + block size incorrectly or are incapable of supporting larger block + sizes, and for these clients you may need to disable raw writes.</para> + +<para>In general this parameter should be viewed as a system tuning + tool and left severely alone.</para> +</description> + +<value type="default">yes</value> + +<related>read raw</related> +<related>async smb echo handler</related> +</samba:parameter> diff --git a/docs-xml/smbdotconf/rpc/rpcserverdynamicportrange.xml b/docs-xml/smbdotconf/rpc/rpcserverdynamicportrange.xml new file mode 100644 index 0000000..e8d7268 --- /dev/null +++ b/docs-xml/smbdotconf/rpc/rpcserverdynamicportrange.xml @@ -0,0 +1,22 @@ +<samba:parameter name="rpc server dynamic port range" + context="G" + type="string" + handler="handle_rpc_server_dynamic_port_range" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter tells the RPC server which port range it is + allowed to use to create a listening socket for LSA, SAM, + Netlogon and others without wellknown tcp ports. + The first value is the lowest number of the port + range and the second the highest. + </para> + <para> + This applies to RPC servers in all server roles. + </para> +</description> + +<related>rpc server port</related> + +<value type="default">49152-65535</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/rpc/rpcstartondemandhelpers.xml b/docs-xml/smbdotconf/rpc/rpcstartondemandhelpers.xml new file mode 100644 index 0000000..5f97381 --- /dev/null +++ b/docs-xml/smbdotconf/rpc/rpcstartondemandhelpers.xml @@ -0,0 +1,22 @@ +<samba:parameter name="rpc start on demand helpers" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This global parameter determines if <command>samba-dcerpcd</command> + should be started on demand to service named pipe (np) DCE-RPC requests from + <command>smbd</command> or <command>winbindd</command>. This is the + normal case where no startup scripts have been modified to start + <command>samba-dcerpcd</command> as a daemon. + </para> + <para> + If <command>samba-dcerpcd</command> is started as a daemon + or via a system service manager such as systemd, this parameter + MUST be set to "no", otherwise <command>samba-dcerpcd</command> + will fail to start. + </para> +</description> + +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/accessbasedshareenum.xml b/docs-xml/smbdotconf/security/accessbasedshareenum.xml new file mode 100644 index 0000000..4557465 --- /dev/null +++ b/docs-xml/smbdotconf/security/accessbasedshareenum.xml @@ -0,0 +1,19 @@ +<samba:parameter name="access based share enum" + type="boolean" + context="S" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + <description> + <para>If this parameter is <constant>yes</constant> for a + service, then the share hosted by the service will only be visible + to users who have read or write access to the share during share + enumeration (for example net view \\sambaserver). The share ACLs + which allow or deny the access to the share can be modified using + for example the <command moreinfo="none">sharesec</command> command + or using the appropriate Windows tools. This has + parallels to access based enumeration, the main difference being + that only share permissions are evaluated, and security + descriptors on files contained on the share are not used in + computing enumeration access rights.</para> + </description> + <value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/aclflaginheritedcanonicalization.xml b/docs-xml/smbdotconf/security/aclflaginheritedcanonicalization.xml new file mode 100644 index 0000000..676d5b4 --- /dev/null +++ b/docs-xml/smbdotconf/security/aclflaginheritedcanonicalization.xml @@ -0,0 +1,30 @@ +<samba:parameter name="acl flag inherited canonicalization" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option controls the way Samba handles client requests setting + the Security Descriptor of files and directories and the effect the + operation has on the Security Descriptor flag "DACL + auto-inherited" (DI). Generally, this flag is set on a file (or + directory) upon creation if the parent directory has DI set and also has + inheritable ACEs. + </para> + + <para>On the other hand when a Security Descriptor is explicitly set on + a file, the DI flag is cleared, unless the flag "DACL Inheritance + Required" (DR) is also set in the new Security Descriptor (fwiw, DR is + never stored on disk).</para> + + <para>This is the default behaviour when this option is enabled (the + default). When setting this option to <command>no</command>, the + resulting value of the DI flag on-disk is directly taken from the DI + value of the to-be-set Security Descriptor. This can be used so dump + tools like rsync that copy data blobs from xattrs that represent ACLs + created by the acl_xattr VFS module will result in copies of the ACL + that are identical to the source. Without this option, the copied ACLs + would all loose the DI flag if set on the source.</para> +</description> + +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/aclgroupcontrol.xml b/docs-xml/smbdotconf/security/aclgroupcontrol.xml new file mode 100644 index 0000000..eeec434 --- /dev/null +++ b/docs-xml/smbdotconf/security/aclgroupcontrol.xml @@ -0,0 +1,45 @@ +<samba:parameter name="acl group control" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + In a POSIX filesystem, only the owner of a file or directory and the superuser can modify the permissions + and ACLs on a file. If this parameter is set, then Samba overrides this restriction, and also allows the + <emphasis>primary group owner</emphasis> of a file or directory to modify the permissions and ACLs + on that file. + </para> + <para> + On a Windows server, groups may be the owner of a file or directory - thus allowing anyone in + that group to modify the permissions on it. This allows the delegation of security controls + on a point in the filesystem to the group owner of a directory and anything below it also owned + by that group. This means there are multiple people with permissions to modify ACLs on a file + or directory, easing manageability. + </para> + <para> + This parameter allows Samba to also permit delegation of the control over a point in the exported + directory hierarchy in much the same way as Windows. This allows all members of a UNIX group to + control the permissions on a file or directory they have group ownership on. + </para> + + <para> + This parameter is best used with the <smbconfoption name="inherit owner"/> option and also + on a share containing directories with the UNIX <emphasis>setgid bit</emphasis> set + on them, which causes new files and directories created within it to inherit the group + ownership from the containing directory. + </para> + + <para> + This parameter was deprecated in Samba 3.0.23, but re-activated in + Samba 3.0.31 and above, as it now only controls permission changes if the user + is in the owning primary group. It is now no longer equivalent to the + <parameter moreinfo="none">dos filemode</parameter> option. + </para> + +</description> + +<related>inherit owner</related> +<related>inherit permissions</related> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/adminusers.xml b/docs-xml/smbdotconf/security/adminusers.xml new file mode 100644 index 0000000..5e0f60c --- /dev/null +++ b/docs-xml/smbdotconf/security/adminusers.xml @@ -0,0 +1,18 @@ +<samba:parameter name="admin users" + context="S" + type="cmdlist" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This is a list of users who will be granted + administrative privileges on the share. This means that they + will do all file operations as the super-user (root).</para> + + <para>You should use this option very carefully, as any user in + this list will be able to do anything they like on the share, + irrespective of file permissions.</para> + +</description> + +<value type="default"/> +<value type="example">jason</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/algorithmicridbase.xml b/docs-xml/smbdotconf/security/algorithmicridbase.xml new file mode 100644 index 0000000..a5eba3c --- /dev/null +++ b/docs-xml/smbdotconf/security/algorithmicridbase.xml @@ -0,0 +1,26 @@ +<samba:parameter name="algorithmic rid base" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This determines how Samba will use its + algorithmic mapping from uids/gid to the RIDs needed to construct + NT Security Identifiers. + </para> + + <para>Setting this option to a larger value could be useful to sites + transitioning from WinNT and Win2k, as existing user and + group rids would otherwise clash with system users etc. + </para> + + <para>All UIDs and GIDs must be able to be resolved into SIDs for + the correct operation of ACLs on the server. As such the algorithmic + mapping can't be 'turned off', but pushing it 'out of the way' should + resolve the issues. Users and groups can then be assigned 'low' RIDs + in arbitrary-rid supporting backends. + </para> +</description> + +<value type="default">1000</value> +<value type="example">100000</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/allowdcerpcauthlevelconnect.xml b/docs-xml/smbdotconf/security/allowdcerpcauthlevelconnect.xml new file mode 100644 index 0000000..8bccab3 --- /dev/null +++ b/docs-xml/smbdotconf/security/allowdcerpcauthlevelconnect.xml @@ -0,0 +1,27 @@ +<samba:parameter name="allow dcerpc auth level connect" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option controls whether DCERPC services are allowed to + be used with DCERPC_AUTH_LEVEL_CONNECT, which provides authentication, + but no per message integrity nor privacy protection.</para> + + <para>Some interfaces like samr, lsarpc and netlogon have a hard-coded default of + <constant>no</constant> and epmapper, mgmt and rpcecho have a hard-coded default of + <constant>yes</constant>. + </para> + + <para>The behavior can be overwritten per interface name (e.g. lsarpc, netlogon, samr, srvsvc, + winreg, wkssvc ...) by using 'allow dcerpc auth level connect:interface = yes' as option.</para> + + <para>This option is over-ridden by the implementation specific restrictions. + E.g. the drsuapi and backupkey protocols require DCERPC_AUTH_LEVEL_PRIVACY. + The dnsserver protocol requires DCERPC_AUTH_LEVEL_INTEGRITY. + </para> +</description> + +<value type="default">no</value> +<value type="example">yes</value> + +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/allowtrusteddomains.xml b/docs-xml/smbdotconf/security/allowtrusteddomains.xml new file mode 100644 index 0000000..3617210 --- /dev/null +++ b/docs-xml/smbdotconf/security/allowtrusteddomains.xml @@ -0,0 +1,25 @@ +<samba:parameter name="allow trusted domains" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This option only takes effect when the <smbconfoption name="security"/> option is set to + <constant>server</constant>, <constant>domain</constant> or <constant>ads</constant>. + If it is set to no, then attempts to connect to a resource from + a domain or workgroup other than the one which smbd is running + in will fail, even if that domain is trusted by the remote server + doing the authentication.</para> + + <para>This is useful if you only want your Samba server to + serve resources to users in the domain it is a member of. As + an example, suppose that there are two domains DOMA and DOMB. DOMB + is trusted by DOMA, which contains the Samba server. Under normal + circumstances, a user with an account in DOMB can then access the + resources of a UNIX account with the same account name on the + Samba server even if they do not have an account in DOMA. This + can make implementing a security boundary difficult.</para> +</description> + +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/binddnsdir.xml b/docs-xml/smbdotconf/security/binddnsdir.xml new file mode 100644 index 0000000..a948cb5 --- /dev/null +++ b/docs-xml/smbdotconf/security/binddnsdir.xml @@ -0,0 +1,17 @@ +<samba:parameter name="binddns dir" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<synonym>bind dns directory</synonym> +<description> + <para> + This parameters defines the directory samba will use to store the configuration + files for bind, such as named.conf. + + NOTE: The bind dns directory needs to be on the same mount point as the private + directory! + </para> +</description> + +<value type="default">&pathconfig.BINDDNS_DIR;</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/checkpasswordscript.xml b/docs-xml/smbdotconf/security/checkpasswordscript.xml new file mode 100644 index 0000000..18aa2c6 --- /dev/null +++ b/docs-xml/smbdotconf/security/checkpasswordscript.xml @@ -0,0 +1,43 @@ +<samba:parameter name="check password script" + context="G" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>The name of a program that can be used to check password + complexity. The password is sent to the program's standard input.</para> + + <para>The program must return 0 on a good password, or any other value + if the password is bad. + In case the password is considered weak (the program does not return 0) the + user will be notified and the password change will fail.</para> + + <para>In Samba AD, this script will be run <emphasis>AS ROOT</emphasis> by + <citerefentry><refentrytitle>samba</refentrytitle> <manvolnum>8</manvolnum> + </citerefentry> without any substitutions.</para> + + <para>Note that starting with Samba 4.11 the following environment variables are exported to the script:</para> + + <itemizedlist> + <listitem><para> + SAMBA_CPS_ACCOUNT_NAME is always present and contains the sAMAccountName of user, + the is the same as the %u substitutions in the none AD DC case. + </para></listitem> + + <listitem><para> + SAMBA_CPS_USER_PRINCIPAL_NAME is optional in the AD DC case if the userPrincipalName is present. + </para></listitem> + + <listitem><para> + SAMBA_CPS_FULL_NAME is optional if the displayName is present. + </para></listitem> + </itemizedlist> + + <para>Note: In the example directory is a sample program called <command moreinfo="none">crackcheck</command> + that uses cracklib to check the password quality.</para> + +</description> + +<value type="default"><comment>Disabled</comment></value> +<value type="example">/usr/local/sbin/crackcheck</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/clientipcsigning.xml b/docs-xml/smbdotconf/security/clientipcsigning.xml new file mode 100644 index 0000000..efbf17a --- /dev/null +++ b/docs-xml/smbdotconf/security/clientipcsigning.xml @@ -0,0 +1,26 @@ +<samba:parameter name="client ipc signing" + context="G" + type="enum" + function="_client_ipc_signing" + enumlist="enum_smb_signing_vals" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This controls whether the client is allowed or required to use SMB signing for IPC$ + connections as DCERPC transport. Possible values + are <emphasis>desired</emphasis>, <emphasis>required</emphasis> + and <emphasis>disabled</emphasis>. + </para> + + <para>When set to required or default, SMB signing is mandatory.</para> + + <para>When set to desired, SMB signing is offered, but not enforced and if set + to disabled, SMB signing is not offered either.</para> + + <para>Connections from winbindd to Active Directory Domain Controllers + always enforce signing.</para> +</description> + +<related>client signing</related> + +<value type="default">default</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/clientlanmanauth.xml b/docs-xml/smbdotconf/security/clientlanmanauth.xml new file mode 100644 index 0000000..60e1c86 --- /dev/null +++ b/docs-xml/smbdotconf/security/clientlanmanauth.xml @@ -0,0 +1,36 @@ +<samba:parameter name="client lanman auth" + context="G" + type="boolean" + deprecated="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter has been deprecated since Samba 4.13 and + support for LanMan (as distinct from NTLM, NTLMv2 or + Kerberos) authentication as a client + will be removed in a future Samba release.</para> + <para>That is, in the future, the current default of + <command>client NTLMv2 auth = yes</command> + will be the enforced behaviour.</para> + + <para>This parameter determines whether or not <citerefentry><refentrytitle>smbclient</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> and other samba client + tools will attempt to authenticate itself to servers using the + weaker LANMAN password hash. If disabled, only server which support NT + password hashes (e.g. Windows NT/2000, Samba, etc... but not + Windows 95/98) will be able to be connected from the Samba client.</para> + + <para>The LANMAN encrypted response is easily broken, due to its + case-insensitive nature, and the choice of algorithm. Clients + without Windows 95/98 servers are advised to disable + this option. </para> + + <para>Disabling this option will also disable the <command + moreinfo="none">client plaintext auth</command> option.</para> + + <para>Likewise, if the <command moreinfo="none">client ntlmv2 + auth</command> parameter is enabled, then only NTLMv2 logins will be + attempted.</para> +</description> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/clientntlmv2auth.xml b/docs-xml/smbdotconf/security/clientntlmv2auth.xml new file mode 100644 index 0000000..9b47944 --- /dev/null +++ b/docs-xml/smbdotconf/security/clientntlmv2auth.xml @@ -0,0 +1,46 @@ +<samba:parameter name="client NTLMv2 auth" + context="G" + type="boolean" + deprecated="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter has been deprecated since Samba 4.13 and + support for NTLM and LanMan (as distinct from NTLMv2 or + Kerberos authentication) + will be removed in a future Samba release.</para> + <para>That is, in the future, the current default of + <command>client NTLMv2 auth = yes</command> + will be the enforced behaviour.</para> + + <para>This parameter determines whether or not <citerefentry><refentrytitle>smbclient</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> will attempt to + authenticate itself to servers using the NTLMv2 encrypted password + response.</para> + + <para>If enabled, only an NTLMv2 and LMv2 response (both much more + secure than earlier versions) will be sent. Older servers + (including NT4 < SP4, Win9x and Samba 2.2) are not compatible with + NTLMv2 when not in an NTLMv2 supporting domain</para> + + <para>Similarly, if enabled, NTLMv1, <command + moreinfo="none">client lanman auth</command> and <command + moreinfo="none">client plaintext auth</command> + authentication will be disabled. This also disables share-level + authentication. </para> + + <para>If disabled, an NTLM response (and possibly a LANMAN response) + will be sent by the client, depending on the value of <command + moreinfo="none">client lanman auth</command>. </para> + + <para>Note that Windows Vista and later versions already use + NTLMv2 by default, and some sites (particularly those following + 'best practice' security polices) only allow NTLMv2 responses, and + not the weaker LM or NTLM.</para> + + <para>When <smbconfoption name="client use spnego"/> is also set to + <constant>yes</constant> extended security (SPNEGO) is required + in order to use NTLMv2 only within NTLMSSP. This behavior was + introduced with the patches for CVE-2016-2111.</para> +</description> +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/clientplaintextauth.xml b/docs-xml/smbdotconf/security/clientplaintextauth.xml new file mode 100644 index 0000000..5a51c33 --- /dev/null +++ b/docs-xml/smbdotconf/security/clientplaintextauth.xml @@ -0,0 +1,20 @@ +<samba:parameter name="client plaintext auth" + context="G" + type="boolean" + deprecated="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter has been deprecated since Samba 4.13 and + support for plaintext (as distinct from NTLM, NTLMv2 or + Kerberos authentication) + will be removed in a future Samba release.</para> + <para>That is, in the future, the current default of + <command>client plaintext auth = no</command> + will be the enforced behaviour.</para> + + <para>Specifies whether a client should send a plaintext + password if the server does not support encrypted passwords.</para> +</description> +<value type="default">no</value> +</samba:parameter> + diff --git a/docs-xml/smbdotconf/security/clientprotection.xml b/docs-xml/smbdotconf/security/clientprotection.xml new file mode 100644 index 0000000..347b004 --- /dev/null +++ b/docs-xml/smbdotconf/security/clientprotection.xml @@ -0,0 +1,51 @@ +<samba:parameter name="client protection" + context="G" + type="enum" + enumlist="enum_client_protection_vals" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter defines which protection Samba client + tools should use by default. + </para> + + <para>Possible client settings are:</para> + <itemizedlist> + <listitem> + <para> + <emphasis>default</emphasis> - Use the individual + default values of the options: + <itemizedlist> + <listitem><para><parameter>client signing</parameter></para></listitem> + <listitem><para><parameter>client smb encrypt</parameter></para></listitem> + </itemizedlist> + </para> + </listitem> + + <listitem> + <para> + <emphasis>plain</emphasis> - This will send + everything just as plaintext, signing or + encryption are turned off. + </para> + </listitem> + + <listitem> + <para> + <emphasis>sign</emphasis> - This will enable + integrity checking. + </para> + </listitem> + + <listitem> + <para> + <emphasis>encrypt</emphasis> - This will enable + integrity checks and force encryption for + privacy. + </para> + </listitem> + </itemizedlist> +</description> + +<value type="default">default</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/clientschannel.xml b/docs-xml/smbdotconf/security/clientschannel.xml new file mode 100644 index 0000000..d124ad4 --- /dev/null +++ b/docs-xml/smbdotconf/security/clientschannel.xml @@ -0,0 +1,30 @@ +<samba:parameter name="client schannel" + context="G" + type="enum" + enumlist="enum_bool_auto" + deprecated="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + + <para> + This option is deprecated with Samba 4.8 and will be removed in future. + At the same time the default changed to yes, which will be the + hardcoded behavior in future. + </para> + + <para> + This controls whether the client offers or even demands the use of the netlogon schannel. + <smbconfoption name="client schannel">no</smbconfoption> does not offer the schannel, + <smbconfoption name="client schannel">auto</smbconfoption> offers the schannel but does not + enforce it, and <smbconfoption name="client schannel">yes</smbconfoption> denies access + if the server is not able to speak netlogon schannel. + </para> + + <para>Note that for active directory domains this is hardcoded to + <smbconfoption name="client schannel">yes</smbconfoption>.</para> + + <para>This option is over-ridden by the <smbconfoption name="require strong key"/> option.</para> +</description> +<value type="default">yes</value> +<value type="example">auto</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/clientsigning.xml b/docs-xml/smbdotconf/security/clientsigning.xml new file mode 100644 index 0000000..bd92818 --- /dev/null +++ b/docs-xml/smbdotconf/security/clientsigning.xml @@ -0,0 +1,24 @@ +<samba:parameter name="client signing" + context="G" + type="enum" + enumlist="enum_smb_signing_vals" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This controls whether the client is allowed or required to use SMB signing. Possible values + are <emphasis>desired</emphasis>, <emphasis>required</emphasis> + and <emphasis>disabled</emphasis>. + </para> + + <para>When set to desired or default, SMB signing is offered, but not enforced.</para> + + <para>When set to required, SMB signing is mandatory and if set + to disabled, SMB signing is not offered either.</para> + + <para>IPC$ connections for DCERPC e.g. in winbindd, are handled by the + <smbconfoption name="client ipc signing"/> option.</para> +</description> + +<related>client ipc signing</related> + +<value type="default">default</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/clientsmbencrypt.xml b/docs-xml/smbdotconf/security/clientsmbencrypt.xml new file mode 100644 index 0000000..05df152 --- /dev/null +++ b/docs-xml/smbdotconf/security/clientsmbencrypt.xml @@ -0,0 +1,126 @@ +<samba:parameter name="client smb encrypt" + context="G" + type="enum" + enumlist="enum_smb_encryption_vals" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter controls whether a client should try or is required + to use SMB encryption. It has different effects depending on whether + the connection uses SMB1 or SMB3: + </para> + + <itemizedlist> + <listitem> + <para> + If the connection uses SMB1, then this option controls the use + of a Samba-specific extension to the SMB protocol introduced in + Samba 3.2 that makes use of the Unix extensions. + </para> + </listitem> + + <listitem> + <para> + If the connection uses SMB2 or newer, then this option controls + the use of the SMB-level encryption that is supported in SMB + version 3.0 and above and available in Windows 8 and newer. + </para> + </listitem> + </itemizedlist> + + <para> + This parameter can be set globally. Possible values are + + <emphasis>off</emphasis>, + <emphasis>if_required</emphasis>, + <emphasis>desired</emphasis>, + and + <emphasis>required</emphasis>. + A special value is <emphasis>default</emphasis> which is + the implicit default setting of <emphasis>if_required</emphasis>. + </para> + + <variablelist> + <varlistentry> + <term><emphasis>Effects for SMB1</emphasis></term> + <listitem> + <para> + The Samba-specific encryption of SMB1 connections is an + extension to the SMB protocol negotiated as part of the UNIX + extensions. SMB encryption uses the GSSAPI (SSPI on Windows) + ability to encrypt and sign every request/response in a SMB + protocol stream. When enabled it provides a secure method of + SMB/CIFS communication, similar to an ssh protected session, but + using SMB/CIFS authentication to negotiate encryption and + signing keys. Currently this is only supported smbclient of by + Samba 3.2 and newer. Windows does not support this feature. + </para> + + <para> + When set to default, SMB encryption is probed, but not + enforced. When set to required, SMB encryption is required and + if set to disabled, SMB encryption can not be negotiated. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><emphasis>Effects for SMB3 and newer</emphasis></term> + <listitem> + <para> + Native SMB transport encryption is available in SMB version 3.0 + or newer. It is only used by Samba if + <emphasis>client max protocol</emphasis> is set to + <emphasis>SMB3</emphasis> or newer. + </para> + + <para> + These features can be controlled with settings of + <emphasis>client smb encrypt</emphasis> as follows: + </para> + + <itemizedlist> + <listitem> + <para> + Leaving it as default, explicitly setting + <emphasis>default</emphasis>, or setting it to + <emphasis>if_required</emphasis> globally will enable + negotiation of encryption but will not turn on + data encryption globally. + </para> + </listitem> + + <listitem> + <para> + Setting it to <emphasis>desired</emphasis> globally + will enable negotiation and will turn on data encryption + on sessions and share connections for those servers + that support it. + </para> + </listitem> + + <listitem> + <para> + Setting it to <emphasis>required</emphasis> globally + will enable negotiation and turn on data encryption + on sessions and share connections. Clients that do + not support encryption will be denied access to the + server. + </para> + </listitem> + + <listitem> + <para> + Setting it to <emphasis>off</emphasis> globally will + completely disable the encryption feature for all + connections. + </para> + </listitem> + </itemizedlist> + </listitem> + </varlistentry> + </variablelist> +</description> + +<value type="default">default</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/clientsmbencryptionalgos.xml b/docs-xml/smbdotconf/security/clientsmbencryptionalgos.xml new file mode 100644 index 0000000..78df3f9 --- /dev/null +++ b/docs-xml/smbdotconf/security/clientsmbencryptionalgos.xml @@ -0,0 +1,21 @@ +<samba:parameter name="client smb3 encryption algorithms" + context="G" + type="list" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter specifies the availability and order of + encryption algorithms which are available for negotiation in the SMB3_11 dialect. + </para> + <para>It is also possible to remove individual algorithms from the default list, + by prefixing them with '-'. This can avoid having to specify a hardcoded list. + </para> + <para>Note: that the removal of AES-128-CCM from the list will result + in SMB3_00 and SMB3_02 being unavailable, as it is the default and only + available algorithm for these dialects. + </para> +</description> + +<value type="default">AES-128-GCM, AES-128-CCM, AES-256-GCM, AES-256-CCM</value> +<value type="example">AES-256-GCM</value> +<value type="example">-AES-128-GCM -AES-128-CCM</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/clientsmbsigningalgos.xml b/docs-xml/smbdotconf/security/clientsmbsigningalgos.xml new file mode 100644 index 0000000..f7c61f3 --- /dev/null +++ b/docs-xml/smbdotconf/security/clientsmbsigningalgos.xml @@ -0,0 +1,22 @@ +<samba:parameter name="client smb3 signing algorithms" + context="G" + type="list" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter specifies the availability and order of + signing algorithms which are available for negotiation in the SMB3_11 dialect. + </para> + <para>It is also possible to remove individual algorithms from the default list, + by prefixing them with '-'. This can avoid having to specify a hardcoded list. + </para> + <para>Note: that the removal of AES-128-CMAC from the list will result + in SMB3_00 and SMB3_02 being unavailable, and the removal of HMAC-SHA256 + will result in SMB2_02 and SMB2_10 being unavailable, as these are the default and only + available algorithms for these dialects. + </para> +</description> + +<value type="default">AES-128-GMAC, AES-128-CMAC, HMAC-SHA256</value> +<value type="example">AES-128-CMAC, HMAC-SHA256</value> +<value type="example">-AES-128-CMAC</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/clientusekerberos.xml b/docs-xml/smbdotconf/security/clientusekerberos.xml new file mode 100644 index 0000000..ad35dcf --- /dev/null +++ b/docs-xml/smbdotconf/security/clientusekerberos.xml @@ -0,0 +1,49 @@ +<samba:parameter name="client use kerberos" + context="G" + type="enum" + function="_client_use_kerberos" + enumlist="enum_use_kerberos_vals" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter determines whether Samba client tools will try + to authenticate using Kerberos. For Kerberos authentication you + need to use dns names instead of IP addresses when connecting + to a service. + </para> + + <para>Possible option settings are:</para> + <itemizedlist> + <listitem> + <para> + <emphasis>desired</emphasis> - Kerberos + authentication will be tried first and if it fails it + automatically fallback to NTLM. + </para> + </listitem> + + <listitem> + <para> + <emphasis>required</emphasis> - Kerberos + authentication will be required. There will be no + falllback to NTLM or a different alternative. + </para> + </listitem> + + <listitem> + <para> + <emphasis>off</emphasis> - Don't use + Kerberos, use NTLM instead or another + alternative. + </para> + </listitem> + </itemizedlist> + + <para> + In case that weak cryptography is not allowed (e.g. FIPS mode) + the default will be forced to <emphasis>required</emphasis>. + </para> +</description> + +<value type="default">desired</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/clientusepsnegoprincipal.xml b/docs-xml/smbdotconf/security/clientusepsnegoprincipal.xml new file mode 100644 index 0000000..8e9edd2 --- /dev/null +++ b/docs-xml/smbdotconf/security/clientusepsnegoprincipal.xml @@ -0,0 +1,35 @@ +<samba:parameter name="client use spnego principal" + context="G" + type="boolean" + deprecated="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter determines whether or not + <citerefentry><refentrytitle>smbclient</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> and other samba components + acting as a client will attempt to use the server-supplied + principal sometimes given in the SPNEGO exchange.</para> + + <para>If enabled, Samba can attempt to use Kerberos to contact + servers known only by IP address. Kerberos relies on names, so + ordinarily cannot function in this situation. </para> + + <para>This is a VERY BAD IDEA for security reasons, and so this + parameter SHOULD NOT BE USED. It will be removed in a future + version of Samba.</para> + + <para>If disabled, Samba will use the name used to look up the + server when asking the KDC for a ticket. This avoids situations + where a server may impersonate another, soliciting authentication + as one principal while being known on the network as another. + </para> + + <para>Note that Windows XP SP2 and later versions already follow + this behaviour, and Windows Vista and later servers no longer + supply this 'rfc4178 hint' principal on the server side.</para> + + <para>This parameter is deprecated in Samba 4.2.1 and will be removed + (along with the functionality) in a later release of Samba.</para> +</description> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/createmask.xml b/docs-xml/smbdotconf/security/createmask.xml new file mode 100644 index 0000000..06ee896 --- /dev/null +++ b/docs-xml/smbdotconf/security/createmask.xml @@ -0,0 +1,37 @@ +<samba:parameter name="create mask" + context="S" + type="octal" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + +<synonym>create mode</synonym> +<description> + <para> + When a file is created, the necessary permissions are calculated according to the mapping from DOS modes to + UNIX permissions, and the resulting UNIX mode is then bit-wise 'AND'ed with this parameter. This parameter may + be thought of as a bit-wise MASK for the UNIX modes of a file. Any bit <emphasis>not</emphasis> set here will + be removed from the modes set on a file when it is created. + </para> + + <para> + The default value of this parameter removes the <literal>group</literal> and <literal>other</literal> + write and execute bits from the UNIX modes. + </para> + + <para> + Following this Samba will bit-wise 'OR' the UNIX mode created from this parameter with the value of the + <smbconfoption name="force create mode"/> parameter which is set to 000 by default. + </para> + + <para> + This parameter does not affect directory masks. See the parameter <smbconfoption name="directory mask"/> + for details. + </para> +</description> + +<related>force create mode</related> +<related>directory mode</related> +<related>inherit permissions</related> + +<value type="default">0744</value> +<value type="example">0775</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/debugencryption.xml b/docs-xml/smbdotconf/security/debugencryption.xml new file mode 100644 index 0000000..5b51b4a --- /dev/null +++ b/docs-xml/smbdotconf/security/debugencryption.xml @@ -0,0 +1,22 @@ +<samba:parameter name="debug encryption" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + <description> + <para> + This option will make the smbd server and client code using + libsmb (smbclient, smbget, smbspool, ...) dump the Session Id, + the decrypted Session Key, the Signing Key, the Application Key, + the Encryption Key and the Decryption Key every time an SMB3+ + session is established. This information will be printed in logs + at level 0. + </para> + <para> + Warning: access to these values enables the decryption of any + encrypted traffic on the dumped sessions. This option should + only be enabled for debugging purposes. + </para> + </description> + + <value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/dedicatedkeytabfile.xml b/docs-xml/smbdotconf/security/dedicatedkeytabfile.xml new file mode 100644 index 0000000..b7c2680 --- /dev/null +++ b/docs-xml/smbdotconf/security/dedicatedkeytabfile.xml @@ -0,0 +1,16 @@ +<samba:parameter name="dedicated keytab file" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + Specifies the absolute path to the kerberos keytab file when + <smbconfoption name="kerberos method"/> is set to "dedicated + keytab". + </para> +</description> +<related>kerberos method</related> +<value type="default"/> +<value type="example">/usr/local/etc/krb5.keytab</value> +</samba:parameter> + diff --git a/docs-xml/smbdotconf/security/directorymask.xml b/docs-xml/smbdotconf/security/directorymask.xml new file mode 100644 index 0000000..890092a --- /dev/null +++ b/docs-xml/smbdotconf/security/directorymask.xml @@ -0,0 +1,33 @@ +<samba:parameter name="directory mask" + context="S" + type="octal" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<synonym>directory mode</synonym> +<description> + <para>This parameter is the octal modes which are + used when converting DOS modes to UNIX modes when creating UNIX + directories.</para> + + <para>When a directory is created, the necessary permissions are + calculated according to the mapping from DOS modes to UNIX permissions, + and the resulting UNIX mode is then bit-wise 'AND'ed with this + parameter. This parameter may be thought of as a bit-wise MASK for + the UNIX modes of a directory. Any bit <emphasis>not</emphasis> set + here will be removed from the modes set on a directory when it is + created.</para> + + <para>The default value of this parameter removes the 'group' + and 'other' write bits from the UNIX mode, allowing only the + user who owns the directory to modify it.</para> + + <para>Following this Samba will bit-wise 'OR' the UNIX mode + created from this parameter with the value of the <smbconfoption name="force directory mode"/> parameter. + This parameter is set to 000 by default (i.e. no extra mode bits are added).</para> +</description> + +<related>force directory mode</related> +<related>create mask</related> +<related>inherit permissions</related> +<value type="default">0755</value> +<value type="example">0775</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/directorysecuritymask.xml b/docs-xml/smbdotconf/security/directorysecuritymask.xml new file mode 100644 index 0000000..f02e4ff --- /dev/null +++ b/docs-xml/smbdotconf/security/directorysecuritymask.xml @@ -0,0 +1,12 @@ +<samba:parameter name="directory security mask" + context="S" + removed="1" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter has been removed for Samba 4.0.0. + </para> +</description> + +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/encryptpasswords.xml b/docs-xml/smbdotconf/security/encryptpasswords.xml new file mode 100644 index 0000000..4fdfa89 --- /dev/null +++ b/docs-xml/smbdotconf/security/encryptpasswords.xml @@ -0,0 +1,47 @@ +<samba:parameter name="encrypt passwords" + context="G" + type="boolean" + deprecated="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter has been deprecated since Samba 4.11 and + support for plaintext (as distinct from NTLM, NTLMv2 + or Kerberos authentication) + will be removed in a future Samba release.</para> + <para>That is, in the future, the current default of + <command>encrypt passwords = yes</command> + will be the enforced behaviour.</para> + <para>This boolean controls whether encrypted passwords + will be negotiated with the client. Note that Windows NT 4.0 SP3 and + above and also Windows 98 will by default expect encrypted passwords + unless a registry entry is changed. To use encrypted passwords in + Samba see the chapter "User Database" in the Samba HOWTO Collection. + </para> + + <para> + MS Windows clients that expect Microsoft encrypted passwords and that + do not have plain text password support enabled will be able to + connect only to a Samba server that has encrypted password support + enabled and for which the user accounts have a valid encrypted password. + Refer to the smbpasswd command man page for information regarding the + creation of encrypted passwords for user accounts. + </para> + + <para> + The use of plain text passwords is NOT advised as support for this feature + is no longer maintained in Microsoft Windows products. If you want to use + plain text passwords you must set this parameter to no. + </para> + + <para>In order for encrypted passwords to work correctly + <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> must either + have access to a local <citerefentry><refentrytitle>smbpasswd</refentrytitle> + <manvolnum>5</manvolnum></citerefentry> file (see the <citerefentry><refentrytitle>smbpasswd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> program for information on how to set up + and maintain this file), or set the <smbconfoption name="security">[domain|ads]</smbconfoption> parameter which + causes <command moreinfo="none">smbd</command> to authenticate against another + server.</para> +</description> +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/forcecreatemode.xml b/docs-xml/smbdotconf/security/forcecreatemode.xml new file mode 100644 index 0000000..79e6e63 --- /dev/null +++ b/docs-xml/smbdotconf/security/forcecreatemode.xml @@ -0,0 +1,25 @@ +<samba:parameter name="force create mode" + context="S" + type="octal" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter specifies a set of UNIX mode bit + permissions that will <emphasis>always</emphasis> be set on a + file created by Samba. This is done by bitwise 'OR'ing these bits onto + the mode bits of a file that is being created. The default for this parameter is (in octal) + 000. The modes in this parameter are bitwise 'OR'ed onto the file + mode after the mask set in the <parameter moreinfo="none">create mask</parameter> + parameter is applied.</para> + + <para>The example below would force all newly created files to have read and execute + permissions set for 'group' and 'other' as well as the + read/write/execute bits set for the 'user'.</para> + +</description> + +<related>create mask</related> +<related>inherit permissions</related> + +<value type="default">0000</value> +<value type="example">0755</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/forcedirectorymode.xml b/docs-xml/smbdotconf/security/forcedirectorymode.xml new file mode 100644 index 0000000..aa8375a --- /dev/null +++ b/docs-xml/smbdotconf/security/forcedirectorymode.xml @@ -0,0 +1,25 @@ +<samba:parameter name="force directory mode" + context="S" + type="octal" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter specifies a set of UNIX mode bit + permissions that will <emphasis>always</emphasis> be set on a directory + created by Samba. This is done by bitwise 'OR'ing these bits onto the + mode bits of a directory that is being created. The default for this + parameter is (in octal) 0000 which will not add any extra permission + bits to a created directory. This operation is done after the mode + mask in the parameter <parameter moreinfo="none">directory mask</parameter> is + applied.</para> + + <para>The example below would force all created directories to have read and execute + permissions set for 'group' and 'other' as well as the + read/write/execute bits set for the 'user'.</para> +</description> + +<value type="default">0000</value> +<value type="example">0755</value> + +<related>directory mask</related> +<related>inherit permissions</related> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/forcedirectorysecuritymode.xml b/docs-xml/smbdotconf/security/forcedirectorysecuritymode.xml new file mode 100644 index 0000000..fbd8e16 --- /dev/null +++ b/docs-xml/smbdotconf/security/forcedirectorysecuritymode.xml @@ -0,0 +1,11 @@ +<samba:parameter name="force directory security mode" + context="S" + type="string" + removed="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter has been removed for Samba 4.0.0. + </para> +</description> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/forcegroup.xml b/docs-xml/smbdotconf/security/forcegroup.xml new file mode 100644 index 0000000..646f550 --- /dev/null +++ b/docs-xml/smbdotconf/security/forcegroup.xml @@ -0,0 +1,40 @@ +<samba:parameter name="force group" + context="S" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<synonym>group</synonym> +<description> + <para>This specifies a UNIX group name that will be + assigned as the default primary group for all users connecting + to this service. This is useful for sharing files by ensuring + that all access to files on service will use the named group for + their permissions checking. Thus, by assigning permissions for this + group to the files and directories within this service the Samba + administrator can restrict or allow sharing of these files.</para> + + <para>In Samba 2.0.5 and above this parameter has extended + functionality in the following way. If the group name listed here + has a '+' character prepended to it then the current user accessing + the share only has the primary group default assigned to this group + if they are already assigned as a member of that group. This allows + an administrator to decide that only users who are already in a + particular group will create files with group ownership set to that + group. This gives a finer granularity of ownership assignment. For + example, the setting <filename moreinfo="none">force group = +sys</filename> means + that only users who are already in group sys will have their default + primary group assigned to sys when accessing this Samba share. All + other users will retain their ordinary primary group.</para> + + <para> + If the <smbconfoption name="force user"/> parameter is also set the group specified in + <parameter moreinfo="none">force group</parameter> will override the primary group + set in <parameter moreinfo="none">force user</parameter>.</para> + +</description> + +<related>force user</related> + +<value type="default"/> +<value type="example">agroup</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/forcesecuritymode.xml b/docs-xml/smbdotconf/security/forcesecuritymode.xml new file mode 100644 index 0000000..5a9479e --- /dev/null +++ b/docs-xml/smbdotconf/security/forcesecuritymode.xml @@ -0,0 +1,11 @@ +<samba:parameter name="force security mode" + context="S" + type="string" + removed="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter has been removed for Samba 4.0.0. + </para> +</description> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/forceunknownacluser.xml b/docs-xml/smbdotconf/security/forceunknownacluser.xml new file mode 100644 index 0000000..c5aec53 --- /dev/null +++ b/docs-xml/smbdotconf/security/forceunknownacluser.xml @@ -0,0 +1,27 @@ +<samba:parameter name="force unknown acl user" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + +<description> + <para> + If this parameter is set, a Windows NT ACL that contains an unknown SID (security descriptor, or + representation of a user or group id) as the owner or group owner of the file will be silently + mapped into the current UNIX uid or gid of the currently connected user. + </para> + + <para> + This is designed to allow Windows NT clients to copy files and folders containing ACLs that were + created locally on the client machine and contain users local to that machine only (no domain + users) to be copied to a Samba server (usually with XCOPY /O) and have the unknown userid and + groupid of the file owner map to the current connected user. This can only be fixed correctly + when winbindd allows arbitrary mapping from any Windows NT SID to a UNIX uid or gid. + </para> + + <para> + Try using this parameter when XCOPY /O gives an ACCESS_DENIED error. + </para> +</description> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/forceuser.xml b/docs-xml/smbdotconf/security/forceuser.xml new file mode 100644 index 0000000..f3010a9 --- /dev/null +++ b/docs-xml/smbdotconf/security/forceuser.xml @@ -0,0 +1,28 @@ +<samba:parameter name="force user" + type="string" + context="S" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This specifies a UNIX user name that will be + assigned as the default user for all users connecting to this service. + This is useful for sharing files. You should also use it carefully + as using it incorrectly can cause security problems.</para> + + <para>This user name only gets used once a connection is established. + Thus clients still need to connect as a valid user and supply a + valid password. Once connected, all file operations will be performed + as the "forced user", no matter what username the client connected + as. This can be very useful.</para> + + <para>In Samba 2.0.5 and above this parameter also causes the + primary group of the forced user to be used as the primary group + for all file activity. Prior to 2.0.5 the primary group was left + as the primary group of the connecting user (this was a bug).</para> + +</description> + +<related>force group</related> +<value type="default"/> +<value type="example">auser</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/guestaccount.xml b/docs-xml/smbdotconf/security/guestaccount.xml new file mode 100644 index 0000000..2914630 --- /dev/null +++ b/docs-xml/smbdotconf/security/guestaccount.xml @@ -0,0 +1,27 @@ +<samba:parameter name="guest account" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This is a username which will be used for access + to services which are specified as <smbconfoption name="guest ok"/> (see below). Whatever privileges this + user has will be available to any client connecting to the guest service. + This user must exist in the password file, but does not require + a valid login. The user account "ftp" is often a good choice + for this parameter. + </para> + + <para>On some systems the default guest account "nobody" may not + be able to print. Use another account in this case. You should test + this by trying to log in as your guest user (perhaps by using the + <command moreinfo="none">su -</command> command) and trying to print using the + system print command such as <command moreinfo="none">lpr(1)</command> or <command moreinfo="none"> + lp(1)</command>.</para> + + <para>This parameter does not accept % macros, because + many parts of the system require this value to be + constant for correct operation.</para> +</description> +<value type="default">nobody<comment>default can be changed at compile-time</comment></value> +<value type="example">ftp</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/guestok.xml b/docs-xml/smbdotconf/security/guestok.xml new file mode 100644 index 0000000..390f1c3 --- /dev/null +++ b/docs-xml/smbdotconf/security/guestok.xml @@ -0,0 +1,19 @@ +<samba:parameter name="guest ok" + type="boolean" + context="S" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<synonym>public</synonym> +<description> + <para>If this parameter is <constant>yes</constant> for + a service, then no password is required to connect to the service. + Privileges will be those of the <smbconfoption name="guest account"/>.</para> + + <para>This parameter nullifies the benefits of setting + <smbconfoption name="restrict anonymous">2</smbconfoption> + </para> + + <para>See the section below on <smbconfoption name="security"/> for more information about this option. + </para> +</description> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/guestonly.xml b/docs-xml/smbdotconf/security/guestonly.xml new file mode 100644 index 0000000..5660162 --- /dev/null +++ b/docs-xml/smbdotconf/security/guestonly.xml @@ -0,0 +1,15 @@ +<samba:parameter name="guest only" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<synonym>only guest</synonym> +<description> + <para>If this parameter is <constant>yes</constant> for + a service, then only guest connections to the service are permitted. + This parameter will have no effect if <smbconfoption name="guest ok"/> is not set for the service.</para> + + <para>See the section below on <smbconfoption name="security"/> for more information about this option. + </para> +</description> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/hostsallow.xml b/docs-xml/smbdotconf/security/hostsallow.xml new file mode 100644 index 0000000..8b4b622 --- /dev/null +++ b/docs-xml/smbdotconf/security/hostsallow.xml @@ -0,0 +1,62 @@ +<samba:parameter name="hosts allow" + context="S" + type="cmdlist" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<synonym>allow hosts</synonym> +<description> + <para>A synonym for this parameter is <smbconfoption name="allow hosts"/>.</para> + + <para>This parameter is a comma, space, or tab delimited + set of hosts which are permitted to access a service.</para> + + <para>If specified in the [global] section then it will + apply to all services, regardless of whether the individual + service has a different setting.</para> + + <para>You can specify the hosts by name or IP number. For + example, you could restrict access to only the hosts on a + Class C subnet with something like <command>allow hosts = 150.203.5.</command>. + The full syntax of the list is described in the man + page <filename>hosts_access(5)</filename>. Note that this man + page may not be present on your system, so a brief description will + be given here also.</para> + + <para>Note that the localhost address 127.0.0.1 will always + be allowed access unless specifically denied by a <smbconfoption name="hosts deny"/> option.</para> + + <para>You can also specify hosts by network/netmask pairs and + by netgroup names if your system supports netgroups. The + <emphasis>EXCEPT</emphasis> keyword can also be used to limit a + wildcard list. The following examples may provide some help:</para> + +<para>Example 1: allow all IPs in 150.203.*.*; except one</para> + + <para><command moreinfo="none">hosts allow = 150.203. EXCEPT 150.203.6.66</command></para> + + <para>Example 2: allow hosts that match the given network/netmask</para> + + <para><command moreinfo="none">hosts allow = 150.203.15.0/255.255.255.0</command></para> + + <para>Example 3: allow a couple of hosts</para> + + <para><command moreinfo="none">hosts allow = lapland, arvidsjaur</command></para> + + <para>Example 4: allow only hosts in NIS netgroup "foonet", but + deny access from one particular host</para> + + <para><command moreinfo="none">hosts allow = @foonet</command></para> + + <para><command moreinfo="none">hosts deny = pirate</command></para> + + <note><para>Note that access still requires suitable user-level passwords.</para></note> + + <para>See <citerefentry><refentrytitle>testparm</refentrytitle> + <manvolnum>1</manvolnum></citerefentry> for a way of testing your host access + to see if it does what you expect.</para> + + +</description> + +<value type="example">150.203.5. myhost.mynet.edu.au</value> +<value type="default"><comment>none (i.e., all hosts permitted access)</comment></value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/hostsdeny.xml b/docs-xml/smbdotconf/security/hostsdeny.xml new file mode 100644 index 0000000..cd2f8de --- /dev/null +++ b/docs-xml/smbdotconf/security/hostsdeny.xml @@ -0,0 +1,24 @@ +<samba:parameter name="hosts deny" + context="S" + type="cmdlist" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<synonym>deny hosts</synonym> +<description> + <para>The opposite of <parameter moreinfo="none">hosts allow</parameter> + - hosts listed here are <emphasis>NOT</emphasis> permitted access to + services unless the specific services have their own lists to override + this one. Where the lists conflict, the <parameter moreinfo="none">allow</parameter> + list takes precedence.</para> + + <para> + In the event that it is necessary to deny all by default, use the keyword + ALL (or the netmask <literal>0.0.0.0/0</literal>) and then explicitly specify + to the <smbconfoption name="hosts allow">hosts allow</smbconfoption> parameter those hosts + that should be permitted access. + </para> +</description> + +<value type="default"><comment>none (i.e., no hosts specifically excluded)</comment></value> + +<value type="example">150.203.4. badhost.mynet.edu.au</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/inheritacls.xml b/docs-xml/smbdotconf/security/inheritacls.xml new file mode 100644 index 0000000..4c6caef --- /dev/null +++ b/docs-xml/smbdotconf/security/inheritacls.xml @@ -0,0 +1,21 @@ +<samba:parameter name="inherit acls" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter can be used to ensure that if default acls + exist on parent directories, they are always honored when creating a + new file or subdirectory in these parent directories. The default + behavior is to use the unix mode specified when creating the directory. + Enabling this option sets the unix mode to 0777, thus guaranteeing that + default directory acls are propagated. + + Note that using the VFS modules acl_xattr or acl_tdb which store native + Windows as meta-data will automatically turn this option on for any + share for which they are loaded, as they require this option to emulate + Windows ACLs correctly. +</para> +</description> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/inheritowner.xml b/docs-xml/smbdotconf/security/inheritowner.xml new file mode 100644 index 0000000..2a7a4b8 --- /dev/null +++ b/docs-xml/smbdotconf/security/inheritowner.xml @@ -0,0 +1,58 @@ +<samba:parameter name="inherit owner" + context="S" + type="enum" + enumlist="enum_inherit_owner_vals" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>The ownership of new files and directories + is normally governed by effective uid of the connected user. + This option allows the Samba administrator to specify that + the ownership for new files and directories should be controlled + by the ownership of the parent directory.</para> + + <para>Valid options are:</para> + <itemizedlist> + <listitem><para><constant>no</constant> - + Both the Windows (SID) owner and the UNIX (uid) owner of the file are + governed by the identity of the user that created the file. + </para></listitem> + + <listitem><para><constant>windows and unix</constant> - + The Windows (SID) owner and the UNIX (uid) owner of new files and + directories are set to the respective owner of the parent directory. + </para></listitem> + + <listitem><para><constant>yes</constant> - a synonym for + <constant>windows and unix</constant>. + </para></listitem> + + <listitem><para><constant>unix only</constant> - + Only the UNIX owner is set to the UNIX owner of the parent directory. + </para></listitem> + </itemizedlist> + + <para>Common scenarios where this behavior is useful is in + implementing drop-boxes, where users can create and edit files but + not delete them and ensuring that newly created files in a user's + roaming profile directory are actually owned by the user.</para> + + <para>The <constant>unix only</constant> option effectively + breaks the tie between the Windows owner of a file and the + UNIX owner. As a logical consequence, in this mode, + setting the the Windows owner of a file does not modify the UNIX + owner. Using this mode should typically be combined with a + backing store that can emulate the full NT ACL model without + affecting the POSIX permissions, such as the acl_xattr + VFS module, coupled with + <smbconfoption name="acl_xattr:ignore system acls">yes</smbconfoption>. + This can be used to emulate folder quotas, when files are + exposed only via SMB (without UNIX extensions). + The UNIX owner of a directory is locally set + and inherited by all subdirectories and files, and they all + consume the same quota.</para> +</description> + +<related>inherit permissions</related> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/inheritpermissions.xml b/docs-xml/smbdotconf/security/inheritpermissions.xml new file mode 100644 index 0000000..9dda734 --- /dev/null +++ b/docs-xml/smbdotconf/security/inheritpermissions.xml @@ -0,0 +1,35 @@ +<samba:parameter name="inherit permissions" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + The permissions on new files and directories are normally governed by <smbconfoption name="create mask"/>, + <smbconfoption name="directory mask"/>, <smbconfoption name="force create mode"/> and <smbconfoption + name="force directory mode"/> but the boolean inherit permissions parameter overrides this. + </para> + + <para>New directories inherit the mode of the parent directory, + including bits such as setgid.</para> + + <para> + New files inherit their read/write bits from the parent directory. Their execute bits continue to be + determined by <smbconfoption name="map archive"/>, <smbconfoption name="map hidden"/> and <smbconfoption + name="map system"/> as usual. + </para> + + <para>Note that the setuid bit is <emphasis>never</emphasis> set via + inheritance (the code explicitly prohibits this).</para> + + <para>This can be particularly useful on large systems with + many users, perhaps several thousand, to allow a single [homes] + share to be used flexibly by each user.</para> +</description> + +<related>create mask</related> +<related>directory mask</related> +<related>force create mode</related> +<related>force directory mode</related> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/invalidusers.xml b/docs-xml/smbdotconf/security/invalidusers.xml new file mode 100644 index 0000000..b2fb2b9 --- /dev/null +++ b/docs-xml/smbdotconf/security/invalidusers.xml @@ -0,0 +1,34 @@ +<samba:parameter name="invalid users" + context="S" + type="cmdlist" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This is a list of users that should not be allowed + to login to this service. This is really a <emphasis>paranoid</emphasis> + check to absolutely ensure an improper setting does not breach + your security.</para> + + <para>A name starting with a '@' is interpreted as an NIS + netgroup first (if your system supports NIS), and then as a UNIX + group if the name was not found in the NIS netgroup database.</para> + + <para>A name starting with '+' is interpreted only + by looking in the UNIX group database via the NSS getgrnam() interface. A name starting with + '&' is interpreted only by looking in the NIS netgroup database + (this requires NIS to be working on your system). The characters + '+' and '&' may be used at the start of the name in either order + so the value <parameter moreinfo="none">+&group</parameter> means check the + UNIX group database, followed by the NIS netgroup database, and + the value <parameter moreinfo="none">&+group</parameter> means check the NIS + netgroup database, followed by the UNIX group database (the + same as the '@' prefix).</para> + + <para>The current servicename is substituted for <parameter moreinfo="none">%S</parameter>. + This is useful in the [homes] section.</para> +</description> + +<related>valid users</related> + +<value type="default"><comment>no invalid users</comment></value> +<value type="example">root fred admin @wheel</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/kdcdefaultdomainsupportedenctypes.xml b/docs-xml/smbdotconf/security/kdcdefaultdomainsupportedenctypes.xml new file mode 100644 index 0000000..9846111 --- /dev/null +++ b/docs-xml/smbdotconf/security/kdcdefaultdomainsupportedenctypes.xml @@ -0,0 +1,42 @@ +<samba:parameter name="kdc default domain supported enctypes" + type="integer" + context="G" + handler="handle_kdc_default_domain_supported_enctypes" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + Set the default value of <constant>msDS-SupportedEncryptionTypes</constant> for service accounts in Active Directory that are missing this value or where <constant>msDS-SupportedEncryptionTypes</constant> is set to 0. + </para> + + <para> + This allows Samba administrators to match the configuration flexibility provided by the + <constant>HKEY_LOCAL_MACHINE\System\CurrentControlSet\services\KDC\DefaultDomainSupportedEncTypes</constant> Registry Value on Windows. + </para> + <para> + Unlike the Windows registry key (which only takes an base-10 number), in Samba this may also be expressed in hexadecimal or as a list of Kerberos encryption type names. + </para> + <para> + Specified values are ORed together bitwise, and those currently supported consist of: + </para><itemizedlist> + <listitem> + <para><constant>arcfour-hmac-md5</constant>, <constant>rc4-hmac</constant>, <constant>0x4</constant>, or <constant>4</constant></para> + <para>Known on Windows as Kerberos RC4 encryption</para> + </listitem> + <listitem> + <para><constant>aes128-cts-hmac-sha1-96</constant>, <constant>aes128-cts</constant>, <constant>0x8</constant>, or <constant>8</constant></para> + <para>Known on Windows as Kerberos AES 128 bit encryption</para> + </listitem> + <listitem> + <para><constant>aes256-cts-hmac-sha1-96</constant>, <constant>aes256-cts</constant>, <constant>0x10</constant>, or <constant>16</constant></para> + <para>Known on Windows as Kerberos AES 256 bit encryption</para> + </listitem> + <listitem> + <para><constant>aes256-cts-hmac-sha1-96-sk</constant>, <constant>aes256-cts-sk</constant>, <constant>0x20</constant>, or <constant>32</constant></para> + <para>Allow AES session keys. When this is set, it indicates to the KDC that AES session keys can be used, even when <constant>aes256-cts</constant> and <constant>aes128-cts</constant> are not set. This allows use of AES keys against hosts otherwise only configured with RC4 for ticket keys (which is the default).</para> + </listitem> +</itemizedlist> + +</description> + +<value type="default">0<comment>maps to what the software supports currently: arcfour-hmac-md5 aes256-cts-hmac-sha1-96-sk</comment></value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/kdcenablefast.xml b/docs-xml/smbdotconf/security/kdcenablefast.xml new file mode 100644 index 0000000..e47ca3b --- /dev/null +++ b/docs-xml/smbdotconf/security/kdcenablefast.xml @@ -0,0 +1,15 @@ +<samba:parameter name="kdc enable fast" + type="boolean" + context="G" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>With the Samba 4.16 the embedded Heimdal KDC brings + support for RFC6113 FAST, which wasn't available in + older Samba versions.</para> + + <para>This option is mostly for testing and currently only applies + if the embedded Heimdal KDC is used.</para> +</description> + +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/kdcforceenablerc4weaksessionkeys.xml b/docs-xml/smbdotconf/security/kdcforceenablerc4weaksessionkeys.xml new file mode 100644 index 0000000..1cb46d7 --- /dev/null +++ b/docs-xml/smbdotconf/security/kdcforceenablerc4weaksessionkeys.xml @@ -0,0 +1,24 @@ +<samba:parameter name="kdc force enable rc4 weak session keys" + type="boolean" + context="G" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + <constant>RFC8429</constant> declares that + <constant>rc4-hmac</constant> Kerberos ciphers are weak and + there are known attacks on Active Directory use of this + cipher suite. + </para> + <para> + However for compatibility with Microsoft Windows this option + allows the KDC to assume that regardless of the value set in + a service account's + <constant>msDS-SupportedEncryptionTypes</constant> attribute + that a <constant>rc4-hmac</constant> Kerberos session key (as distinct from the ticket key, as + found in a service keytab) can be used if the potentially + older client requests it. + </para> +</description> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/kdcsupportedenctypes.xml b/docs-xml/smbdotconf/security/kdcsupportedenctypes.xml new file mode 100644 index 0000000..5e028bb --- /dev/null +++ b/docs-xml/smbdotconf/security/kdcsupportedenctypes.xml @@ -0,0 +1,40 @@ +<samba:parameter name="kdc supported enctypes" + type="integer" + context="G" + handler="handle_kdc_supported_enctypes" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + On an active directory domain controller, this is the list of supported encryption types for local running kdc. + </para> + + <para> + This allows Samba administrators to remove support for weak/unused encryption types, similar + the configuration flexibility provided by the <constant>Network security: Configure encryption types allowed for Kerberos</constant> + GPO/Local Policies/Security Options Value, which results in the + <constant>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\Kerberos\Parameters\SupportedEncryptionTypes</constant> Registry Value on Windows. + </para> + <para> + Unlike the Windows registry key (which only takes an base-10 number), in Samba this may also be expressed as hexadecimal or a list of Kerberos encryption type names. + </para> + <para> + Specified values are ORed together bitwise, and those currently supported consist of: + </para><itemizedlist> + <listitem> + <para><constant>arcfour-hmac-md5</constant>, <constant>rc4-hmac</constant>, <constant>0x4</constant>, or <constant>4</constant></para> + <para>Known on Windows as Kerberos RC4 encryption</para> + </listitem> + <listitem> + <para><constant>aes128-cts-hmac-sha1-96</constant>, <constant>aes128-cts</constant>, <constant>0x8</constant>, or <constant>8</constant></para> + <para>Known on Windows as Kerberos AES 128 bit encryption</para> + </listitem> + <listitem> + <para><constant>aes256-cts-hmac-sha1-96</constant>, <constant>aes256-cts</constant>, <constant>0x10</constant>, or <constant>16</constant></para> + <para>Known on Windows as Kerberos AES 256 bit encryption</para> + </listitem> +</itemizedlist> + +</description> + +<value type="default">0<comment>maps to what the software supports currently: arcfour-hmac-md5 aes128-cts-hmac-sha1-96 aes256-cts-hmac-sha1-96</comment></value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/kerberosencryptiontypes.xml b/docs-xml/smbdotconf/security/kerberosencryptiontypes.xml new file mode 100644 index 0000000..a245af5 --- /dev/null +++ b/docs-xml/smbdotconf/security/kerberosencryptiontypes.xml @@ -0,0 +1,47 @@ +<samba:parameter name="kerberos encryption types" + context="G" + type="enum" + enumlist="enum_kerberos_encryption_types_vals" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter determines the encryption types to use when operating + as a Kerberos client. Possible values are <emphasis>all</emphasis>, + <emphasis>strong</emphasis>, and <emphasis>legacy</emphasis>. + </para> + + <para>Samba uses a Kerberos library (MIT or Heimdal) to obtain Kerberos + tickets. This library is normally configured outside of Samba, using + the krb5.conf file. This file may also include directives to configure + the encryption types to be used. However, Samba implements Active Directory + protocols and algorithms to locate a domain controller. In order to + force the Kerberos library into using the correct domain controller, + some Samba processes, such as + <citerefentry><refentrytitle>winbindd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> and + <citerefentry><refentrytitle>net</refentrytitle> + <manvolnum>8</manvolnum></citerefentry>, build a private krb5.conf + file for use by the Kerberos library while being invoked from Samba. + This private file controls all aspects of the Kerberos library operation, + and this parameter controls how the encryption types are configured + within this generated file, and therefore also controls the encryption + types negotiable by Samba. + </para> + + <para>When set to <constant>all</constant>, all active directory + encryption types are allowed. + </para> + + <para>When set to <constant>strong</constant>, only AES-based encryption + types are offered. This can be used in hardened environments to prevent + downgrade attacks. + </para> + + <para>When set to <constant>legacy</constant>, only RC4-HMAC-MD5 + is allowed. AVOID using this option, because of + <ulink url="https://www.samba.org/samba/security/CVE-2022-37966.html">CVE-2022-37966</ulink> see + <ulink url="https://bugzilla.samba.org/show_bug.cgi?id=15237">https://bugzilla.samba.org/show_bug.cgi?id=15237</ulink>. + </para> +</description> + +<value type="default">all</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/kerberosmethod.xml b/docs-xml/smbdotconf/security/kerberosmethod.xml new file mode 100644 index 0000000..b7cd988 --- /dev/null +++ b/docs-xml/smbdotconf/security/kerberosmethod.xml @@ -0,0 +1,41 @@ +<samba:parameter name="kerberos method" + context="G" + type="enum" + enumlist="enum_kerberos_method" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + Controls how kerberos tickets are verified. + </para> + + <para>Valid options are:</para> + <itemizedlist> + <listitem><para>secrets only - use only the secrets.tdb for + ticket verification (default)</para></listitem> + + <listitem><para>system keytab - use only the system keytab + for ticket verification</para></listitem> + + <listitem><para>dedicated keytab - use a dedicated keytab + for ticket verification</para></listitem> + + <listitem><para>secrets and keytab - use the secrets.tdb + first, then the system keytab</para></listitem> + </itemizedlist> + + <para> + The major difference between "system keytab" and "dedicated + keytab" is that the latter method relies on kerberos to find the + correct keytab entry instead of filtering based on expected + principals. + </para> + + <para> + When the kerberos method is in "dedicated keytab" mode, + <smbconfoption name="dedicated keytab file"/> must be set to + specify the location of the keytab file. + </para> +</description> +<related>dedicated keytab file</related> +<value type="default">default</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/kpasswdport.xml b/docs-xml/smbdotconf/security/kpasswdport.xml new file mode 100644 index 0000000..71cd337 --- /dev/null +++ b/docs-xml/smbdotconf/security/kpasswdport.xml @@ -0,0 +1,11 @@ +<samba:parameter name="kpasswd port" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>Specifies which ports the Kerberos server should listen on for + password changes.</para> +</description> + +<value type="default">464</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/krb5port.xml b/docs-xml/smbdotconf/security/krb5port.xml new file mode 100644 index 0000000..06c7988 --- /dev/null +++ b/docs-xml/smbdotconf/security/krb5port.xml @@ -0,0 +1,10 @@ +<samba:parameter name="krb5 port" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>Specifies which port the KDC should listen on for Kerberos traffic.</para> +</description> + +<value type="default">88</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/lanmanauth.xml b/docs-xml/smbdotconf/security/lanmanauth.xml new file mode 100644 index 0000000..045e89d --- /dev/null +++ b/docs-xml/smbdotconf/security/lanmanauth.xml @@ -0,0 +1,55 @@ +<samba:parameter name="lanman auth" + context="G" + type="boolean" + function="_lanman_auth" + deprecated="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter has been deprecated since Samba 4.11 and + support for LanMan (as distinct from NTLM, NTLMv2 or + Kerberos authentication) + will be removed in a future Samba release.</para> + <para>That is, in the future, the current default of + <command>lanman auth = no</command> + will be the enforced behaviour.</para> + + <para>This parameter determines whether or not <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> will attempt to + authenticate users or permit password changes + using the LANMAN password hash. If disabled, only clients which support NT + password hashes (e.g. Windows NT/2000 clients, smbclient, but not + Windows 95/98 or the MS DOS network client) will be able to + connect to the Samba host.</para> + + <para>The LANMAN encrypted response is easily broken, due to its + case-insensitive nature, and the choice of algorithm. Servers + without Windows 95/98/ME or MS DOS clients are advised to disable + this option. </para> + + <para>When this parameter is set to <value>no</value> this + will also result in sambaLMPassword in Samba's passdb being + blanked after the next password change. As a result of that + lanman clients won't be able to authenticate, even if lanman + auth is re-enabled later on. + </para> + + <para>Unlike the <parameter moreinfo="none">encrypt + passwords</parameter> option, this parameter cannot alter client + behaviour, and the LANMAN response will still be sent over the + network. See the <command moreinfo="none">client lanman + auth</command> to disable this for Samba's clients (such as smbclient)</para> + + <para>This parameter is overridden by <parameter moreinfo="none">ntlm + auth</parameter>, so unless that it is also set to + <constant>ntlmv1-permitted</constant> or <constant>yes</constant>, + then only NTLMv2 logins will be permitted and no LM hash will be + stored. All modern clients support NTLMv2, and but some older + clients require special configuration to use it.</para> + + <para><emphasis>This parameter has no impact on the Samba AD DC, + LM authentication is always disabled and no LM password is ever + stored.</emphasis></para> +</description> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/lognttokencommand.xml b/docs-xml/smbdotconf/security/lognttokencommand.xml new file mode 100644 index 0000000..0ea269e --- /dev/null +++ b/docs-xml/smbdotconf/security/lognttokencommand.xml @@ -0,0 +1,14 @@ +<samba:parameter name="log nt token command" + context="G" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option can be set to a command that will be called when new nt + tokens are created.</para> + + <para>This is only useful for development purposes.</para> +</description> + +<value type="default"></value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/maptoguest.xml b/docs-xml/smbdotconf/security/maptoguest.xml new file mode 100644 index 0000000..c98086a --- /dev/null +++ b/docs-xml/smbdotconf/security/maptoguest.xml @@ -0,0 +1,62 @@ +<samba:parameter name="map to guest" + type="enum" + context="G" + enumlist="enum_map_to_guest" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter can take four different values, which tell + <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> what to do with user + login requests that don't match a valid UNIX user in some way.</para> + + <para>The four settings are :</para> + + <itemizedlist> + <listitem> + <para><constant>Never</constant> - Means user login + requests with an invalid password are rejected. This is the + default.</para> + </listitem> + + <listitem> + <para><constant>Bad User</constant> - Means user + logins with an invalid password are rejected, unless the username + does not exist, in which case it is treated as a guest login and + mapped into the <smbconfoption name="guest account"/>.</para> + </listitem> + + <listitem> + <para><constant>Bad Password</constant> - Means user logins + with an invalid password are treated as a guest login and mapped + into the <smbconfoption name="guest account"/>. Note that + this can cause problems as it means that any user incorrectly typing + their password will be silently logged on as "guest" - and + will not know the reason they cannot access files they think + they should - there will have been no message given to them + that they got their password wrong. Helpdesk services will + <emphasis>hate</emphasis> you if you set the <parameter moreinfo="none">map to + guest</parameter> parameter this way :-).</para> + </listitem> + <listitem> + <para><constant>Bad Uid</constant> - Is only applicable when Samba is configured + in some type of domain mode security (security = {domain|ads}) and means that + user logins which are successfully authenticated but which have no valid Unix + user account (and smbd is unable to create one) should be mapped to the defined + guest account. This was the default behavior of Samba 2.x releases. Note that + if a member server is running winbindd, this option should never be required + because the nss_winbind library will export the Windows domain users and groups + to the underlying OS via the Name Service Switch interface.</para> + </listitem> + </itemizedlist> + + <para>Note that this parameter is needed to set up "Guest" + share services. This is because in these modes the name of the resource being + requested is <emphasis>not</emphasis> sent to the server until after + the server has successfully authenticated the client so the server + cannot make authentication decisions at the correct time (connection + to the share) for "Guest" shares. </para> +</description> + +<value type="default">Never</value> +<value type="example">Bad User</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/mindomainuid.xml b/docs-xml/smbdotconf/security/mindomainuid.xml new file mode 100644 index 0000000..46ae795 --- /dev/null +++ b/docs-xml/smbdotconf/security/mindomainuid.xml @@ -0,0 +1,17 @@ +<samba:parameter name="min domain uid" + type="integer" + context="G" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + The integer parameter specifies the minimum uid allowed when mapping a + local account to a domain account. + </para> + + <para> + Note that this option interacts with the configured <emphasis>idmap ranges</emphasis>! + </para> +</description> + +<value type="default">1000</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/mitkdccommand.xml b/docs-xml/smbdotconf/security/mitkdccommand.xml new file mode 100644 index 0000000..602f27d --- /dev/null +++ b/docs-xml/smbdotconf/security/mitkdccommand.xml @@ -0,0 +1,15 @@ +<samba:parameter name="mit kdc command" + context="G" + type="list" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option specifies the path to the MIT kdc binary.</para> + + <para>If the KDC is not installed in the default location and wasn't + correctly detected during build then you should modify this variable and + point it to the correct binary.</para> +</description> + +<value type="default">&pathconfig.MITKDCPATH;</value> +<value type="example">/opt/mit/sbin/krb5kdc</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/nt_hash_store.xml b/docs-xml/smbdotconf/security/nt_hash_store.xml new file mode 100644 index 0000000..d7ed705 --- /dev/null +++ b/docs-xml/smbdotconf/security/nt_hash_store.xml @@ -0,0 +1,70 @@ +<samba:parameter name="nt hash store" + context="G" + type="enum" + enumlist="enum_nt_hash_store" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter determines whether or not <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> will, as an AD DC, attempt to + store the NT password hash used in NTLM and NTLMv2 authentication for + users in this domain. </para> + + <para>If so configured, the Samba Active Directory Domain Controller, + will, except for trust accounts (computers, domain + controllers and inter-domain trusts) the + <emphasis>NOT store the NT hash</emphasis> + for new and changed accounts in the sam.ldb database.</para> + + <para>This avoids the storage of an unsalted hash for these + user-created passwords. As a consequence the + <constant>arcfour-hmac-md5</constant> Kerberos key type is + also unavailable in the KDC for these users - thankfully + <emphasis>modern clients will select an AES based key + instead.</emphasis></para> + + <para>NOTE: As the password history in Active Directory is + stored as an NT hash (and thus unavailable), a workaround is + used, relying instead on Kerberos password hash values. + This stores three passwords, the current, previous and second previous + password. This allows some checking against reuse. </para> + + <para>However as these values are salted, changing the + sAMAccountName, userAccountControl or userPrincipalName of + an account will cause the salt to change. After the rare + combination of both a rename and a password change only the + current password will be recognised for password history + purposes. + </para> + <para>The available settings are:</para> + + <itemizedlist> + <listitem> + <para><constant>always</constant> - Always store the NT hash + (as machine accounts will also always store an NT hash, + a hash will be stored for all accounts).</para> + + <para>This setting may be useful if <parameter + moreinfo="none">ntlm auth</parameter> is set to <constant>disabled</constant> + for a trial period</para> + + </listitem> + + <listitem> + <para><constant>never</constant> - Never store the NT hash + for user accounts, only for machine accounts</para> + </listitem> + + <listitem> + <para><constant>auto</constant> - Store an NT hash if <parameter + moreinfo="none">ntlm auth</parameter> is not set to <constant>disabled</constant>. + </para> + + </listitem> + + </itemizedlist> + +</description> + +<related>ntlm auth</related> +<value type="default">always</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/ntlmauth.xml b/docs-xml/smbdotconf/security/ntlmauth.xml new file mode 100644 index 0000000..d7c84cc --- /dev/null +++ b/docs-xml/smbdotconf/security/ntlmauth.xml @@ -0,0 +1,87 @@ +<samba:parameter name="ntlm auth" + context="G" + type="enum" + enumlist="enum_ntlm_auth" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter determines whether or not <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> will attempt to + authenticate users using the NTLM encrypted password response for + this local passdb (SAM or account database). </para> + + <para>If disabled, both NTLM and LanMan authentication against the + local passdb is disabled.</para> + + <para>Note that these settings apply only to local users, + authentication will still be forwarded to and NTLM authentication + accepted against any domain we are joined to, and any trusted + domain, even if disabled or if NTLMv2-only is enforced here. To + control NTLM authentiation for domain users, this must option must + be configured on each DC.</para> + + <para>By default with <command moreinfo="none">ntlm auth</command> set to + <constant>ntlmv2-only</constant> only NTLMv2 logins will be + permitted. All modern clients support NTLMv2 by default, but some older + clients will require special configuration to use it.</para> + + <para>The primary user of NTLMv1 is MSCHAPv2 for VPNs and 802.1x.</para> + + <para>The available settings are:</para> + + <itemizedlist> + <listitem> + <para><constant>ntlmv1-permitted</constant> + (alias <constant>yes</constant>) - Allow NTLMv1 and above for all clients.</para> + + <para>This is the required setting for to enable the <parameter + moreinfo="none">lanman auth</parameter> parameter.</para> + + </listitem> + + <listitem> + <para><constant>ntlmv2-only</constant> + (alias <constant>no</constant>) - Do not allow NTLMv1 to be used, + but permit NTLMv2.</para> + </listitem> + + <listitem> + <para><constant>mschapv2-and-ntlmv2-only</constant> - Only + allow NTLMv1 when the client promises that it is providing + MSCHAPv2 authentication (such as the <command + moreinfo="none">ntlm_auth</command> tool).</para> + </listitem> + + <listitem> + <para><constant>disabled</constant> - Do not accept NTLM (or + LanMan) authentication of any level, nor permit + NTLM password changes.</para> + + <para><emphasis>WARNING:</emphasis> Both Microsoft Windows + and Samba <emphasis>Read Only Domain Controllers</emphasis> + (RODCs) convert a plain-text LDAP Simple Bind into an NTLMv2 + authentication to forward to a full DC. Setting this option + to <constant>disabled</constant> will cause these forwarded + authentications to fail.</para> + + <para>Additionally, for Samba acting as an Active Directory + Domain Controller, for user accounts, if <parameter moreinfo="none">nt hash store</parameter> + is set to the default setting of <constant>auto</constant>, + the <emphasis>NT hash will not be stored</emphasis> + in the sam.ldb database for new users and after a + password change.</para> + + </listitem> + + </itemizedlist> + + <para>The default changed from <constant>yes</constant> to + <constant>no</constant> with Samba 4.5. The default changed again + to <constant>ntlmv2-only</constant> with Samba 4.7, however the + behaviour is unchanged.</para> +</description> + +<related>nt hash store</related> +<related>lanman auth</related> +<related>raw NTLMv2 auth</related> +<value type="default">ntlmv2-only</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/ntpsigndsocketdirectory.xml b/docs-xml/smbdotconf/security/ntpsigndsocketdirectory.xml new file mode 100644 index 0000000..18d70cf --- /dev/null +++ b/docs-xml/smbdotconf/security/ntpsigndsocketdirectory.xml @@ -0,0 +1,16 @@ +<samba:parameter name="ntp signd socket directory" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This setting controls the location of the socket that + the NTP daemon uses to communicate with Samba for + signing packets.</para> + + <para>If a non-default path is specified here, then it is also necessary + to make NTP aware of the new path using the <constant>ntpsigndsocket</constant> + directive in <filename>ntp.conf</filename>.</para> +</description> + +<value type="default">&pathconfig.NTP_SIGND_SOCKET_DIR;</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/nullpasswords.xml b/docs-xml/smbdotconf/security/nullpasswords.xml new file mode 100644 index 0000000..49533f6 --- /dev/null +++ b/docs-xml/smbdotconf/security/nullpasswords.xml @@ -0,0 +1,14 @@ +<samba:parameter name="null passwords" + context="G" + type="boolean" + deprecated="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>Allow or disallow client access to accounts that have null passwords. </para> + + <para>See also <citerefentry><refentrytitle>smbpasswd</refentrytitle> + <manvolnum>5</manvolnum></citerefentry>.</para> +</description> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/obeypamrestrictions.xml b/docs-xml/smbdotconf/security/obeypamrestrictions.xml new file mode 100644 index 0000000..92708ef --- /dev/null +++ b/docs-xml/smbdotconf/security/obeypamrestrictions.xml @@ -0,0 +1,19 @@ +<samba:parameter name="obey pam restrictions" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>When Samba 3.0 is configured to enable PAM support + (i.e. --with-pam), this parameter will control whether or not Samba + should obey PAM's account and session management directives. The + default behavior is to use PAM for clear text authentication only + and to ignore any account or session management. Note that Samba + always ignores PAM for authentication in the case of <smbconfoption + name="encrypt passwords">yes</smbconfoption>. The reason + is that PAM modules cannot support the challenge/response + authentication mechanism needed in the presence of SMB password encryption. +</para> +</description> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/oldpasswordallowedperiod.xml b/docs-xml/smbdotconf/security/oldpasswordallowedperiod.xml new file mode 100644 index 0000000..78d6ff1 --- /dev/null +++ b/docs-xml/smbdotconf/security/oldpasswordallowedperiod.xml @@ -0,0 +1,12 @@ +<samba:parameter name="old password allowed period" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>Number of minutes to permit an NTLM login after a password change or reset using the old password. This allows the user to re-cache the new password on multiple clients without disrupting a network reconnection in the meantime. </para> + + <para>This parameter only applies when <smbconfoption name="server role"/> is set to Active Directory Domain Controller.</para> +</description> + +<value type="default">60</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/pampasswordchange.xml b/docs-xml/smbdotconf/security/pampasswordchange.xml new file mode 100644 index 0000000..92ab4ad --- /dev/null +++ b/docs-xml/smbdotconf/security/pampasswordchange.xml @@ -0,0 +1,16 @@ +<samba:parameter name="pam password change" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>With the addition of better PAM support in Samba 2.2, + this parameter, it is possible to use PAM's password change control + flag for Samba. If enabled, then PAM will be used for password + changes when requested by an SMB client instead of the program listed in + <smbconfoption name="passwd program"/>. + It should be possible to enable this without changing your + <smbconfoption name="passwd chat"/> parameter for most setups.</para> +</description> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/passdbbackend.xml b/docs-xml/smbdotconf/security/passdbbackend.xml new file mode 100644 index 0000000..8265b3e --- /dev/null +++ b/docs-xml/smbdotconf/security/passdbbackend.xml @@ -0,0 +1,65 @@ +<samba:parameter name="passdb backend" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + + <para>This option allows the administrator to chose which backend + will be used for storing user and possibly group information. This allows + you to swap between different storage mechanisms without recompile. </para> + + <para>The parameter value is divided into two parts, the backend's name, and a 'location' + string that has meaning only to that particular backed. These are separated + by a : character.</para> + + <para>Available backends can include: + <itemizedlist> + <listitem> + <para><command moreinfo="none">smbpasswd</command> - The old plaintext passdb + backend. Some Samba features will not work if this passdb + backend is used. Takes a path to the smbpasswd file as an + optional argument. + </para> + </listitem> + + <listitem> + <para><command moreinfo="none">tdbsam</command> - The TDB based password storage + backend. Takes a path to the TDB as an optional argument (defaults to passdb.tdb + in the <smbconfoption name="private dir"/> directory.</para> + </listitem> + + <listitem> + <para><command moreinfo="none">ldapsam</command> - The LDAP based passdb + backend. Takes an LDAP URL as an optional argument (defaults to + <command moreinfo="none">ldap://localhost</command>)</para> + + <para>LDAP connections should be secured where possible. This may be done using either + Start-TLS (see <smbconfoption name="ldap ssl"/>) or by + specifying <parameter moreinfo="none">ldaps://</parameter> in + the URL argument. </para> + + <para>Multiple servers may also be specified in double-quotes. + Whether multiple servers are supported or not and the exact + syntax depends on the LDAP library you use. + </para> + + </listitem> + </itemizedlist> + + </para> + Examples of use are: +<programlisting> +passdb backend = tdbsam:/etc/samba/private/passdb.tdb + +or multi server LDAP URL with OpenLDAP library: + +passdb backend = ldapsam:"ldap://ldap-1.example.com ldap://ldap-2.example.com" + +or multi server LDAP URL with Netscape based LDAP library: + +passdb backend = ldapsam:"ldap://ldap-1.example.com ldap-2.example.com" +</programlisting> +</description> + +<value type="default">tdbsam</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/passdbexpandexplicit.xml b/docs-xml/smbdotconf/security/passdbexpandexplicit.xml new file mode 100644 index 0000000..41c8ea0 --- /dev/null +++ b/docs-xml/smbdotconf/security/passdbexpandexplicit.xml @@ -0,0 +1,14 @@ +<samba:parameter name="passdb expand explicit" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter controls whether Samba substitutes %-macros in the passdb fields if they are explicitly set. We + used to expand macros here, but this turned out to be a bug because the Windows client can expand a variable + %G_osver% in which %G would have been substituted by the user's primary group. + </para> +</description> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/passwdchat.xml b/docs-xml/smbdotconf/security/passwdchat.xml new file mode 100644 index 0000000..a04fc62 --- /dev/null +++ b/docs-xml/smbdotconf/security/passwdchat.xml @@ -0,0 +1,57 @@ +<samba:parameter name="passwd chat" + context="G" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This string controls the <emphasis>"chat"</emphasis> + conversation that takes places between <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> and the local password changing + program to change the user's password. The string describes a + sequence of response-receive pairs that <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> uses to determine what to send to the + <smbconfoption name="passwd program"/> and what to expect back. If the expected output is not + received then the password is not changed.</para> + + <para>This chat sequence is often quite site specific, depending + on what local methods are used for password control.</para> + + <para>Note that this parameter only is used if the <smbconfoption + name="unix password sync"/> parameter is set to <constant>yes</constant>. This sequence is + then called <emphasis>AS ROOT</emphasis> when the SMB password in the + smbpasswd file is being changed, without access to the old password + cleartext. This means that root must be able to reset the user's password without + knowing the text of the previous password. + </para> + + <para>The string can contain the macro <parameter + moreinfo="none">%n</parameter> which is substituted + for the new password. The old password (<parameter + moreinfo="none">%o</parameter>) is only available when + <smbconfoption name="encrypt passwords"/> has been disabled. + The chat sequence can also contain the standard macros + \n, \r, \t and \s to give line-feed, carriage-return, tab + and space. The chat sequence string can also contain + a '*' which matches any sequence of characters. Double quotes can + be used to collect strings with spaces in them into a single + string.</para> + + <para>If the send string in any part of the chat sequence is a full + stop ".", then no string is sent. Similarly, if the + expect string is a full stop then no string is expected.</para> + + <para>If the <smbconfoption name="pam password change"/> parameter is set to <constant>yes</constant>, the + chat pairs may be matched in any order, and success is determined by the PAM result, not any particular + output. The \n macro is ignored for PAM conversions. + </para> + +</description> + +<related>unix password sync</related> +<related>passwd program</related> +<related>passwd chat debug</related> +<related>pam password change</related> + +<value type="default">*new*password* %n\n *new*password* %n\n *changed*</value> +<value type="example">"*Enter NEW password*" %n\n "*Reenter NEW password*" %n\n "*Password changed*"</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/passwdchatdebug.xml b/docs-xml/smbdotconf/security/passwdchatdebug.xml new file mode 100644 index 0000000..0c3481e --- /dev/null +++ b/docs-xml/smbdotconf/security/passwdchatdebug.xml @@ -0,0 +1,26 @@ +<samba:parameter name="passwd chat debug" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This boolean specifies if the passwd chat script + parameter is run in <emphasis>debug</emphasis> mode. In this mode the + strings passed to and received from the passwd chat are printed + in the <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> log with a + <smbconfoption name="debug level"/> + of 100. This is a dangerous option as it will allow plaintext passwords + to be seen in the <command moreinfo="none">smbd</command> log. It is available to help + Samba admins debug their <parameter moreinfo="none">passwd chat</parameter> scripts + when calling the <parameter moreinfo="none">passwd program</parameter> and should + be turned off after this has been done. This option has no effect if the + <smbconfoption name="pam password change"/> + parameter is set. This parameter is off by default.</para> +</description> + +<related>passwd chat</related> +<related>pam password change</related> +<related>passwd program</related> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/passwdchattimeout.xml b/docs-xml/smbdotconf/security/passwdchattimeout.xml new file mode 100644 index 0000000..74e8688 --- /dev/null +++ b/docs-xml/smbdotconf/security/passwdchattimeout.xml @@ -0,0 +1,13 @@ +<samba:parameter name="passwd chat timeout" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This integer specifies the number of seconds smbd will wait for an initial + answer from a passwd chat script being run. Once the initial answer is received + the subsequent answers must be received in one tenth of this time. The default it + two seconds.</para> +</description> + +<value type="default">2</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/passwdprogram.xml b/docs-xml/smbdotconf/security/passwdprogram.xml new file mode 100644 index 0000000..e12cc8e --- /dev/null +++ b/docs-xml/smbdotconf/security/passwdprogram.xml @@ -0,0 +1,37 @@ +<samba:parameter name="passwd program" + context="G" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + <description> + <para>The name of a program that can be used to set + UNIX user passwords. Any occurrences of <parameter moreinfo="none">%u</parameter> + will be replaced with the user name. The user name is checked for + existence before calling the password changing program.</para> + + <para>Also note that many passwd programs insist in <emphasis>reasonable + </emphasis> passwords, such as a minimum length, or the inclusion + of mixed case chars and digits. This can pose a problem as some clients + (such as Windows for Workgroups) uppercase the password before sending + it.</para> + + <para><emphasis>Note</emphasis> that if the <parameter moreinfo="none">unix + password sync</parameter> parameter is set to <constant>yes + </constant> then this program is called <emphasis>AS ROOT</emphasis> + before the SMB password in the smbpasswd + file is changed. If this UNIX password change fails, then + <command moreinfo="none">smbd</command> will fail to change the SMB password also + (this is by design).</para> + + <para>If the <parameter moreinfo="none">unix password sync</parameter> parameter + is set this parameter <emphasis>MUST USE ABSOLUTE PATHS</emphasis> + for <emphasis>ALL</emphasis> programs called, and must be examined + for security implications. Note that by default <parameter moreinfo="none">unix + password sync</parameter> is set to <constant>no</constant>.</para> + </description> + + <related>unix password symc</related> + + <value type="default"></value> +<value type="example">/bin/passwd %u</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/passwordhashgpgkeyids.xml b/docs-xml/smbdotconf/security/passwordhashgpgkeyids.xml new file mode 100644 index 0000000..e53cdbe --- /dev/null +++ b/docs-xml/smbdotconf/security/passwordhashgpgkeyids.xml @@ -0,0 +1,45 @@ +<samba:parameter name="password hash gpg key ids" + context="G" + type="cmdlist" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>If <command moreinfo="none">samba</command> is running as an + active directory domain controller, it is possible to store the + cleartext password of accounts in a PGP/OpenGPG encrypted form.</para> + + <para>You can specify one or more recipients by key id or user id. + Note that 32bit key ids are not allowed, specify at least 64bit.</para> + + <para>The value is stored as 'Primary:SambaGPG' in the + <command moreinfo="none">supplementalCredentials</command> attribute.</para> + + <para>As password changes can occur on any domain controller, + you should configure this on each of them. Note that this feature is currently + available only on Samba domain controllers.</para> + + <para>This option is only available if <command moreinfo="none">samba</command> + was compiled with <command moreinfo="none">gpgme</command> support.</para> + + <para>You may need to export the <command moreinfo="none">GNUPGHOME</command> + environment variable before starting <command moreinfo="none">samba</command>. + <emphasis>It is strongly recommended to only store the public key in this + location. The private key is not used for encryption and should be + only stored where decryption is required.</emphasis></para> + + <para>Being able to restore the cleartext password helps, when they need to be imported + into other authentication systems later (see <command moreinfo="none">samba-tool user getpassword</command>) + or you want to keep the passwords in sync with another system, e.g. an OpenLDAP server + (see <command moreinfo="none">samba-tool user syncpasswords</command>).</para> + + <para>While this option needs to be configured on all domain controllers, the + <command moreinfo="none">samba-tool user syncpasswords</command> command should + run on a single domain controller only (typically the PDC-emulator).</para> +</description> + +<related>unix password sync</related> + +<value type="default"></value> +<value type="example">4952E40301FAB41A</value> +<value type="example">selftest@samba.example.com</value> +<value type="example">selftest@samba.example.com, 4952E40301FAB41A</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/passwordhashuserpasswordschemes.xml b/docs-xml/smbdotconf/security/passwordhashuserpasswordschemes.xml new file mode 100644 index 0000000..18a43f9 --- /dev/null +++ b/docs-xml/smbdotconf/security/passwordhashuserpasswordschemes.xml @@ -0,0 +1,67 @@ +<samba:parameter name="password hash userPassword schemes" + context="G" + type="cmdlist" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + +<para>This parameter determines whether or not +<citerefentry><refentrytitle>samba</refentrytitle> +<manvolnum>8</manvolnum></citerefentry> acting as an Active +Directory Domain Controller will attempt to store additional +passwords hash types for the user</para> + +<para>The values are stored as 'Primary:userPassword' in the +<command moreinfo="none">supplementalCredentials</command> +attribute. The value of this option is a hash type.</para> + +<para>The currently supported hash types are:</para> +<itemizedlist> + <listitem> + <para><constant>CryptSHA256</constant></para> + </listitem> + <listitem> + <para><constant>CryptSHA512</constant></para> + </listitem> +</itemizedlist> + +<para>Multiple instances of a hash type may be computed and stored. +The password hashes are calculated using the +<citerefentry><refentrytitle>crypt</refentrytitle> +<manvolnum>3</manvolnum></citerefentry> call. +The number of rounds used to compute the hash can be specified by adding +':rounds=xxxx' to the hash type, i.e. CryptSHA512:rounds=4500 would calculate +an SHA512 hash using 4500 rounds. If not specified the Operating System +defaults for +<citerefentry><refentrytitle>crypt</refentrytitle> +<manvolnum>3</manvolnum></citerefentry> are used. +</para> + +<para>As password changes can occur on any domain controller, +you should configure this on each of them. Note that this feature is +currently available only on Samba domain controllers.</para> + +<para>Currently the NT Hash of the password is recorded when these hashes +are calculated and stored. When retrieving the hashes the current value of the +NT Hash is checked against the stored NT Hash. This detects password changes +that have not updated the password hashes. In this case +<command moreinfo="none">samba-tool user</command> will ignore the stored +hash values. +</para> + +<para>Being able to obtain the hashed password helps, when +they need to be imported into other authentication systems +later (see <command moreinfo="none">samba-tool user +getpassword</command>) or you want to keep the passwords in +sync with another system, e.g. an OpenLDAP server (see +<command moreinfo="none">samba-tool user +syncpasswords</command>).</para> + +<related>unix password sync</related> + +</description> + +<value type="default"></value> +<value type="example">CryptSHA256</value> +<value type="example">CryptSHA256 CryptSHA512</value> +<value type="example">CryptSHA256:rounds=5000 CryptSHA512:rounds=7000</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/passwordserver.xml b/docs-xml/smbdotconf/security/passwordserver.xml new file mode 100644 index 0000000..8bc2ecb --- /dev/null +++ b/docs-xml/smbdotconf/security/passwordserver.xml @@ -0,0 +1,46 @@ +<samba:parameter name="password server" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>By specifying the name of a domain controller with this option, + and using <command moreinfo="none">security = [ads|domain]</command> + it is possible to get Samba + to do all its username/password validation using a specific remote server.</para> + + <para>Ideally, this option + <emphasis>should not</emphasis> be used, as the default '*' indicates to Samba + to determine the best DC to contact dynamically, just as all other hosts in an + AD domain do. This allows the domain to be maintained (addition + and removal of domain controllers) without modification to + the smb.conf file. The cryptographic protection on the authenticated RPC calls + used to verify passwords ensures that this default is safe.</para> + + <para><emphasis>It is strongly recommended that you use the + default of '*'</emphasis>, however if in your particular + environment you have reason to specify a particular DC list, then + the list of machines in this option must be a list of names or IP + addresses of Domain controllers for the Domain. If you use the + default of '*', or list several hosts in the <parameter + moreinfo="none">password server</parameter> option then <command + moreinfo="none">smbd </command> will try each in turn till it + finds one that responds. This is useful in case your primary + server goes down.</para> + + <para>If the list of servers contains both names/IP's and the '*' + character, the list is treated as a list of preferred + domain controllers, but an auto lookup of all remaining DC's + will be added to the list as well. Samba will not attempt to optimize + this list by locating the closest DC.</para> + + <para>If parameter is a name, it is looked up using the + parameter <smbconfoption name="name resolve order"/> and so may resolved + by any method and order described in that parameter.</para> + +</description> + +<related>security</related> +<value type="default">*</value> +<value type="example">NT-PDC, NT-BDC1, NT-BDC2, *</value> +<value type="example">windc.mydomain.com:389 192.168.1.101 *</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/preloadmodules.xml b/docs-xml/smbdotconf/security/preloadmodules.xml new file mode 100644 index 0000000..7b77674 --- /dev/null +++ b/docs-xml/smbdotconf/security/preloadmodules.xml @@ -0,0 +1,13 @@ +<samba:parameter name="preload modules" + type="cmdlist" + context="G" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This is a list of paths to modules that should + be loaded into smbd before a client connects. This improves + the speed of smbd when reacting to new connections somewhat. </para> +</description> + +<value type="default"></value> +<value type="example">/usr/lib/samba/passdb/mysql.so</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/privatedir.xml b/docs-xml/smbdotconf/security/privatedir.xml new file mode 100644 index 0000000..9abcb7e --- /dev/null +++ b/docs-xml/smbdotconf/security/privatedir.xml @@ -0,0 +1,14 @@ +<samba:parameter name="private dir" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<synonym>private directory</synonym> +<description> + <para>This parameters defines the directory + smbd will use for storing such files as <filename moreinfo="none">smbpasswd</filename> + and <filename moreinfo="none">secrets.tdb</filename>. +</para> +</description> + +<value type="default">&pathconfig.PRIVATE_DIR;</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/rawntlmv2auth.xml b/docs-xml/smbdotconf/security/rawntlmv2auth.xml new file mode 100644 index 0000000..c4d7554 --- /dev/null +++ b/docs-xml/smbdotconf/security/rawntlmv2auth.xml @@ -0,0 +1,27 @@ +<samba:parameter name="raw NTLMv2 auth" + context="G" + type="boolean" + deprecated="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter has been deprecated since Samba 4.13 and + support for NTLMv2 authentication without NTLMSSP will be removed + in a future Samba release.</para> + <para>That is, in the future, the current default of + <command>raw NTLMv2 auth = no</command> + will be the enforced behaviour.</para> + + <para>This parameter determines whether or not <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> will allow SMB1 clients without + extended security (without SPNEGO) to use NTLMv2 authentication.</para> + + <para>If this option, <command moreinfo="none">lanman auth</command> + and <command moreinfo="none">ntlm auth</command> are all disabled, + then only clients with SPNEGO support will be permitted. + That means NTLMv2 is only supported within NTLMSSP.</para> +</description> + +<related>lanman auth</related> +<related>ntlm auth</related> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/readlist.xml b/docs-xml/smbdotconf/security/readlist.xml new file mode 100644 index 0000000..96f3746 --- /dev/null +++ b/docs-xml/smbdotconf/security/readlist.xml @@ -0,0 +1,18 @@ +<samba:parameter name="read list" + context="S" + type="cmdlist" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This is a list of users that are given read-only access to a service. If the connecting user is in this list + then they will not be given write access, no matter what the <smbconfoption name="read only"/> option is set + to. The list can include group names using the syntax described in the <smbconfoption name="invalid users"/> + parameter. + </para> +</description> +<related>write list</related> +<related>invalid users</related> + +<value type="default"></value> +<value type="example">mary, @students</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/readonly.xml b/docs-xml/smbdotconf/security/readonly.xml new file mode 100644 index 0000000..834633f --- /dev/null +++ b/docs-xml/smbdotconf/security/readonly.xml @@ -0,0 +1,18 @@ +<samba:parameter name="read only" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>An inverted synonym is <smbconfoption name="writeable"/>.</para> + + <para>If this parameter is <constant>yes</constant>, then users + of a service may not create or modify files in the service's + directory.</para> + + <para>Note that a printable service (<command moreinfo="none">printable = yes</command>) + will <emphasis>ALWAYS</emphasis> allow writing to the directory + (user privileges permitting), but only via spooling operations.</para> +</description> + +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/renameuserscript.xml b/docs-xml/smbdotconf/security/renameuserscript.xml new file mode 100644 index 0000000..2bfbea4 --- /dev/null +++ b/docs-xml/smbdotconf/security/renameuserscript.xml @@ -0,0 +1,33 @@ +<samba:parameter name="rename user script" + context="G" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This is the full pathname to a script that will be run as root by <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> under special circumstances described below. + </para> + + <para> + When a user with admin authority or SeAddUserPrivilege rights renames a user (e.g.: from the NT4 User Manager + for Domains), this script will be run to rename the POSIX user. Two variables, <literal>%uold</literal> and + <literal>%unew</literal>, will be substituted with the old and new usernames, respectively. The script should + return 0 upon successful completion, and nonzero otherwise. + </para> + + <note><para> + The script has all responsibility to rename all the necessary data that is accessible in this posix method. + This can mean different requirements for different backends. The tdbsam and smbpasswd backends will take care + of the contents of their respective files, so the script is responsible only for changing the POSIX username, and + other data that may required for your circumstances, such as home directory. Please also consider whether or + not you need to rename the actual home directories themselves. The ldapsam backend will not make any changes, + because of the potential issues with renaming the LDAP naming attribute. In this case the script is + responsible for changing the attribute that samba uses (uid) for locating users, as well as any data that + needs to change for other applications using the same directory. + </para></note> + +</description> + +<value type="default"></value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/restrictanonymous.xml b/docs-xml/smbdotconf/security/restrictanonymous.xml new file mode 100644 index 0000000..06abe7b --- /dev/null +++ b/docs-xml/smbdotconf/security/restrictanonymous.xml @@ -0,0 +1,38 @@ +<samba:parameter name="restrict anonymous" + type="integer" + context="G" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + The setting of this parameter determines whether SAMR and LSA + DCERPC services can be accessed anonymously. This corresponds + to the following Windows Server registry options: + </para> + + <programlisting> + HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\RestrictAnonymous + </programlisting> + + <para> + The option also affects the browse option which is required by + legacy clients which rely on Netbios browsing. While modern + Windows version should be fine with restricting the access + there could still be applications relying on anonymous access. + </para> + + <para> + Setting <smbconfoption name="restrict anonymous">1</smbconfoption> + will disable anonymous SAMR access. + </para> + + <para> + Setting <smbconfoption name="restrict anonymous">2</smbconfoption> + will, in addition to restricting SAMR access, disallow anonymous + connections to the IPC$ share in general. + Setting <smbconfoption name="guest ok">yes</smbconfoption> on any share + will remove the security advantage. + </para> +</description> + +<value type="default">0</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/rootdirectory.xml b/docs-xml/smbdotconf/security/rootdirectory.xml new file mode 100644 index 0000000..008ec50 --- /dev/null +++ b/docs-xml/smbdotconf/security/rootdirectory.xml @@ -0,0 +1,35 @@ +<samba:parameter name="root directory" + context="G" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<synonym>root</synonym> +<synonym>root dir</synonym> +<description> + <para>The server will <command moreinfo="none">chroot()</command> (i.e. + Change its root directory) to this directory on startup. This is + not strictly necessary for secure operation. Even without it the + server will deny access to files not in one of the service entries. + It may also check for, and deny access to, soft links to other + parts of the filesystem, or attempts to use ".." in file names + to access other directories (depending on the setting of the + <smbconfoption name="wide smbconfoptions"/> parameter). + </para> + + <para>Adding a <parameter moreinfo="none">root directory</parameter> entry other + than "/" adds an extra level of security, but at a price. It + absolutely ensures that no access is given to files not in the + sub-tree specified in the <parameter moreinfo="none">root directory</parameter> + option, <emphasis>including</emphasis> some files needed for + complete operation of the server. To maintain full operability + of the server you will need to mirror some system files + into the <parameter moreinfo="none">root directory</parameter> tree. In particular + you will need to mirror <filename moreinfo="none">/etc/passwd</filename> (or a + subset of it), and any binaries or configuration files needed for + printing (if required). The set of files that must be mirrored is + operating system dependent.</para> +</description> + +<value type="default"></value> +<value type="example">/homes/smb</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/sambakcccommand.xml b/docs-xml/smbdotconf/security/sambakcccommand.xml new file mode 100644 index 0000000..af8a28a --- /dev/null +++ b/docs-xml/smbdotconf/security/sambakcccommand.xml @@ -0,0 +1,18 @@ +<samba:parameter name="samba kcc command" + context="G" + type="cmdlist" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option specifies the path to the Samba KCC command. + This script is used for replication topology replication. + </para> + + <para>It should not be necessary to modify this option except + for testing purposes or if the <filename>samba_kcc</filename> + was installed in a non-default location. + </para> +</description> + +<value type="default">&pathconfig.SCRIPTSBINDIR;/samba_kcc</value> +<value type="example">/usr/local/bin/kcc</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/security.xml b/docs-xml/smbdotconf/security/security.xml new file mode 100644 index 0000000..86f5f2a --- /dev/null +++ b/docs-xml/smbdotconf/security/security.xml @@ -0,0 +1,104 @@ +<samba:parameter name="security" + context="G" + type="enum" + function="_security" + enumlist="enum_security" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<when_value value="security"> + <requires option="encrypted passwords">/(yes|true)/</requires> +</when_value> +<description> + <para>This option affects how clients respond to + Samba and is one of the most important settings in the <filename moreinfo="none"> + smb.conf</filename> file.</para> + + <para>The default is <command moreinfo="none">security = user</command>, as this is + the most common setting, used for a standalone file server or a DC.</para> + + <para>The alternatives are + <command moreinfo="none">security = ads</command> or <command moreinfo="none">security = domain + </command>, which support joining Samba to a Windows domain</para> + + <para>You should use <command moreinfo="none">security = user</command> and + <smbconfoption name="map to guest"/> if you + want to mainly setup shares without a password (guest shares). This + is commonly used for a shared printer server. </para> + + <para>The different settings will now be explained.</para> + + + <para><anchor id="SECURITYEQUALSAUTO"/><emphasis>SECURITY = AUTO</emphasis></para> + + <para>This is the default security setting in Samba, and causes Samba to consult + the <smbconfoption name="server role"/> parameter (if set) to determine the security mode.</para> + + <para><anchor id="SECURITYEQUALSUSER"/><emphasis>SECURITY = USER</emphasis></para> + + <para>If <smbconfoption name="server role"/> is not specified, this is the default security setting in Samba. + With user-level security a client must first "log-on" with a + valid username and password (which can be mapped using the <smbconfoption name="username map"/> + parameter). Encrypted passwords (see the <smbconfoption name="encrypted passwords"/> parameter) can also + be used in this security mode. Parameters such as <smbconfoption name="user"/> and <smbconfoption + name="guest only"/> if set are then applied and + may change the UNIX user to use on this connection, but only after + the user has been successfully authenticated.</para> + + <para><emphasis>Note</emphasis> that the name of the resource being + requested is <emphasis>not</emphasis> sent to the server until after + the server has successfully authenticated the client. This is why + guest shares don't work in user level security without allowing + the server to automatically map unknown users into the <smbconfoption name="guest account"/>. + See the <smbconfoption name="map to guest"/> parameter for details on doing this.</para> + + <para><anchor id="SECURITYEQUALSDOMAIN"/><emphasis>SECURITY = DOMAIN</emphasis></para> + + <para>This mode will only work correctly if <citerefentry><refentrytitle>net</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> has been used to add this + machine into a Windows NT Domain. It expects the <smbconfoption name="encrypted passwords"/> + parameter to be set to <constant>yes</constant>. In this + mode Samba will try to validate the username/password by passing + it to a Windows NT Primary or Backup Domain Controller, in exactly + the same way that a Windows NT Server would do.</para> + + <para><emphasis>Note</emphasis> that a valid UNIX user must still + exist as well as the account on the Domain Controller to allow + Samba to have a valid UNIX account to map file access to.</para> + + <para><emphasis>Note</emphasis> that from the client's point + of view <command moreinfo="none">security = domain</command> is the same + as <command moreinfo="none">security = user</command>. It only + affects how the server deals with the authentication, + it does not in any way affect what the client sees.</para> + + <para><emphasis>Note</emphasis> that the name of the resource being + requested is <emphasis>not</emphasis> sent to the server until after + the server has successfully authenticated the client. This is why + guest shares don't work in user level security without allowing + the server to automatically map unknown users into the <smbconfoption name="guest account"/>. + See the <smbconfoption name="map to guest"/> parameter for details on doing this.</para> + + <para>See also the <smbconfoption name="password server"/> parameter and + the <smbconfoption name="encrypted passwords"/> parameter.</para> + + <para><anchor id="SECURITYEQUALSADS"/><emphasis>SECURITY = ADS</emphasis></para> + + <para>In this mode, Samba will act as a domain member in an ADS realm. To operate + in this mode, the machine running Samba will need to have Kerberos installed + and configured and Samba will need to be joined to the ADS realm using the + net utility. </para> + + <para>Note that this mode does NOT make Samba operate as a Active Directory Domain + Controller. </para> + + <para>Note that this forces <smbconfoption name="require strong key">yes</smbconfoption> + and <smbconfoption name="client schannel">yes</smbconfoption> for the primary domain.</para> + + <para>Read the chapter about Domain Membership in the HOWTO for details.</para> +</description> + +<related>realm</related> +<related>encrypt passwords</related> + +<value type="default">AUTO</value> +<value type="example">DOMAIN</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/securitymask.xml b/docs-xml/smbdotconf/security/securitymask.xml new file mode 100644 index 0000000..e535d32 --- /dev/null +++ b/docs-xml/smbdotconf/security/securitymask.xml @@ -0,0 +1,11 @@ +<samba:parameter name="security mask" + context="S" + type="string" + removed="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter has been removed for Samba 4.0.0. + </para> +</description> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/serverrole.xml b/docs-xml/smbdotconf/security/serverrole.xml new file mode 100644 index 0000000..b8b83a1 --- /dev/null +++ b/docs-xml/smbdotconf/security/serverrole.xml @@ -0,0 +1,96 @@ +<samba:parameter name="server role" + context="G" + type="enum" + function="_server_role" + enumlist="enum_server_role" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option determines the basic operating mode of a Samba + server and is one of the most important settings in the <filename + moreinfo="none"> smb.conf</filename> file.</para> + + <para>The default is <command moreinfo="none">server role = auto</command>, as causes + Samba to operate according to the <smbconfoption name="security"/> setting, or if not + specified as a simple file server that is not connected to any domain.</para> + + <para>The alternatives are + <command moreinfo="none">server role = standalone</command> or <command moreinfo="none">server role = member server + </command>, which support joining Samba to a Windows domain, along with <command moreinfo="none">server role = domain controller</command>, which run Samba as a Windows domain controller.</para> + + <para>You should use <command moreinfo="none">server role = standalone</command> and + <smbconfoption name="map to guest"/> if you + want to mainly setup shares without a password (guest shares). This + is commonly used for a shared printer server. </para> + + <para><anchor id="AUTO"/><emphasis>SERVER ROLE = AUTO</emphasis></para> + + <para>This is the default server role in Samba, and causes Samba to consult + the <smbconfoption name="security"/> parameter (if set) to determine the server role, giving compatible behaviours to previous Samba versions.</para> + + <para><anchor id="STANDALONE"/><emphasis>SERVER ROLE = STANDALONE</emphasis></para> + + <para>If <smbconfoption name="security"/> is also not specified, this is the default security setting in Samba. + In standalone operation, a client must first "log-on" with a + valid username and password (which can be mapped using the <smbconfoption name="username map"/> + parameter) stored on this machine. Encrypted passwords (see the <smbconfoption name="encrypted passwords"/> parameter) are by default + used in this security mode. Parameters such as <smbconfoption name="user"/> and <smbconfoption + name="guest only"/> if set are then applied and + may change the UNIX user to use on this connection, but only after + the user has been successfully authenticated.</para> + + <para><anchor id="MEMBER SERVER"/><emphasis>SERVER ROLE = MEMBER SERVER</emphasis></para> + + <para>This mode will only work correctly if <citerefentry><refentrytitle>net</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> has been used to add this + machine into a Windows Domain. It expects the <smbconfoption name="encrypted passwords"/> + parameter to be set to <constant>yes</constant>. In this + mode Samba will try to validate the username/password by passing + it to a Windows or Samba Domain Controller, in exactly + the same way that a Windows Server would do.</para> + + <para><emphasis>Note</emphasis> that a valid UNIX user must still + exist as well as the account on the Domain Controller to allow + Samba to have a valid UNIX account to map file access to. Winbind can provide this.</para> + + <para><anchor id="PDC"/><emphasis>SERVER ROLE = CLASSIC PRIMARY DOMAIN CONTROLLER</emphasis></para> + + <para>This mode of operation runs a classic Samba primary domain + controller, providing domain logon services to Windows and Samba + clients of an NT4-like domain. Clients must be joined to the domain to + create a secure, trusted path across the network. There must be + only one PDC per NetBIOS scope (typcially a broadcast network or + clients served by a single WINS server).</para> + + <para><anchor id="BDC"/><emphasis>SERVER ROLE = CLASSIC BACKUP DOMAIN CONTROLLER</emphasis></para> + + <para>This mode of operation runs a classic Samba backup domain + controller, providing domain logon services to Windows and Samba + clients of an NT4-like domain. As a BDC, this allows + multiple Samba servers to provide redundant logon services to a + single NetBIOS scope.</para> + + <para><anchor id="AD-DC"/><emphasis>SERVER ROLE = ACTIVE DIRECTORY DOMAIN CONTROLLER</emphasis></para> + + <para>This mode of operation runs Samba as an active directory + domain controller, providing domain logon services to Windows and + Samba clients of the domain. This role requires special + configuration, see the <ulink + url="http://wiki.samba.org/index.php/Samba4/HOWTO">Samba4 + HOWTO</ulink></para> + + <para><anchor id="IPA-DC"/><emphasis>SERVER ROLE = IPA DOMAIN CONTROLLER</emphasis></para> + + <para>This mode of operation runs Samba in a hybrid mode for IPA + domain controller, providing forest trust to Active Directory. + This role requires special configuration performed by IPA installers + and should not be used manually by any administrator. + </para> +</description> + +<related>security</related> +<related>realm</related> +<related>encrypt passwords</related> + +<value type="default">AUTO</value> +<value type="example">ACTIVE DIRECTORY DOMAIN CONTROLLER</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/serverschannel.xml b/docs-xml/smbdotconf/security/serverschannel.xml new file mode 100644 index 0000000..5c69f0f --- /dev/null +++ b/docs-xml/smbdotconf/security/serverschannel.xml @@ -0,0 +1,102 @@ +<samba:parameter name="server schannel" + context="G" + type="enum" + enumlist="enum_bool_auto" + deprecated="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + + <para> + This option is deprecated and will be removed in future, + as it is a security problem if not set to "yes" (which will be + the hardcoded behavior in future). + </para> + + <para><emphasis>Avoid using this option!</emphasis> Use explicit '<smbconfoption name="server require schannel:COMPUTERACCOUNT">no</smbconfoption>' instead! + </para> + + <para> + Samba will log an error in the log files at log level 0 + if legacy a client is rejected or allowed without an explicit, + '<smbconfoption name="server require schannel:COMPUTERACCOUNT">no</smbconfoption>' option + for the client. The message will indicate + the explicit '<smbconfoption name="server require schannel:COMPUTERACCOUNT">no</smbconfoption>' + line to be added, if the legacy client software requires it. (The log level can be adjusted with + '<smbconfoption name="CVE_2020_1472:error_debug_level">1</smbconfoption>' + in order to complain only at a higher log level). + </para> + + <para> + This allows admins to use "auto" only for a short grace period, + in order to collect the explicit + '<smbconfoption name="server require schannel:COMPUTERACCOUNT">no</smbconfoption>' options. + </para> + + <para> + See <ulink url="https://www.samba.org/samba/security/CVE-2020-1472.html">CVE-2020-1472(ZeroLogon)</ulink>, + <ulink url="https://bugzilla.samba.org/show_bug.cgi?id=14497">https://bugzilla.samba.org/show_bug.cgi?id=14497</ulink>. + </para> + + <para>This option is over-ridden by the <smbconfoption name="server require schannel:COMPUTERACCOUNT"/> option.</para> + + <para>This option is over-ridden by the effective value of 'yes' from + the '<smbconfoption name="server schannel require seal:COMPUTERACCOUNT"/>' + and/or '<smbconfoption name="server schannel require seal"/>' options.</para> + +</description> + +<value type="default">yes</value> +</samba:parameter> + +<samba:parameter name="server require schannel:COMPUTERACCOUNT" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + + <para>If you still have legacy domain members, which required "server schannel = auto" before, + it is possible to specify explicit exception per computer account + by using 'server require schannel:COMPUTERACCOUNT = no' as option. + Note that COMPUTERACCOUNT has to be the sAMAccountName value of + the computer account (including the trailing '$' sign). + </para> + + <para> + Samba will complain in the log files at log level 0, + about the security problem if the option is not set to "no", + but the related computer is actually using the netlogon + secure channel (schannel) feature. + (The log level can be adjusted with + '<smbconfoption name="CVE_2020_1472:warn_about_unused_debug_level">1</smbconfoption>' + in order to complain only at a higher log level). + </para> + + <para> + Samba will warn in the log files at log level 5, + if a setting is still needed for the specified computer account. + </para> + + <para> + See <ulink url="https://www.samba.org/samba/security/CVE-2020-1472.html">CVE-2020-1472(ZeroLogon)</ulink>, + <ulink url="https://bugzilla.samba.org/show_bug.cgi?id=14497">https://bugzilla.samba.org/show_bug.cgi?id=14497</ulink>. + </para> + + <para>This option overrides the <smbconfoption name="server schannel"/> option.</para> + + <para>This option is over-ridden by the effective value of 'yes' from + the '<smbconfoption name="server schannel require seal:COMPUTERACCOUNT"/>' + and/or '<smbconfoption name="server schannel require seal"/>' options.</para> + <para>Which means '<smbconfoption name="server require schannel:COMPUTERACCOUNT">no</smbconfoption>' + is only useful in combination with '<smbconfoption name="server schannel require seal:COMPUTERACCOUNT">no</smbconfoption>'</para> + + <programlisting> + server require schannel:LEGACYCOMPUTER1$ = no + server require schannel seal:LEGACYCOMPUTER1$ = no + server require schannel:NASBOX$ = no + server require schannel seal:NASBOX$ = no + server require schannel:LEGACYCOMPUTER2$ = no + server require schannel seal:LEGACYCOMPUTER2$ = no + </programlisting> +</description> + +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/serverschannelrequireseal.xml b/docs-xml/smbdotconf/security/serverschannelrequireseal.xml new file mode 100644 index 0000000..0bec67d --- /dev/null +++ b/docs-xml/smbdotconf/security/serverschannelrequireseal.xml @@ -0,0 +1,117 @@ +<samba:parameter name="server schannel require seal" + context="G" + type="boolean" + deprecated="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + + <para> + This option is deprecated and will be removed in future, + as it is a security problem if not set to "yes" (which will be + the hardcoded behavior in future). + </para> + + <para> + This option controls whether the netlogon server, will reject the usage + of netlogon secure channel without privacy/enryption. + </para> + + <para> + The option is modelled after the registry key available on Windows. + </para> + + <programlisting> + HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\RequireSeal=2 + </programlisting> + + <para> + <emphasis>Avoid using this option!</emphasis> Use the per computer account specific option + '<smbconfoption name="server schannel require seal:COMPUTERACCOUNT"/>' instead! + Which is available with the patches for + <ulink url="https://www.samba.org/samba/security/CVE-2022-38023.html">CVE-2022-38023</ulink> + see <ulink url="https://bugzilla.samba.org/show_bug.cgi?id=15240">https://bugzilla.samba.org/show_bug.cgi?id=15240</ulink>. + </para> + + <para> + Samba will log an error in the log files at log level 0 + if legacy a client is rejected or allowed without an explicit, + '<smbconfoption name="server schannel require seal:COMPUTERACCOUNT">no</smbconfoption>' option + for the client. The message will indicate + the explicit '<smbconfoption name="server schannel require seal:COMPUTERACCOUNT">no</smbconfoption>' + line to be added, if the legacy client software requires it. (The log level can be adjusted with + '<smbconfoption name="CVE_2022_38023:error_debug_level">1</smbconfoption>' + in order to complain only at a higher log level). + </para> + + <para>This allows admins to use "no" only for a short grace period, + in order to collect the explicit + '<smbconfoption name="server schannel require seal:COMPUTERACCOUNT">no</smbconfoption>' options.</para> + + <para> + When set to 'yes' this option overrides the + '<smbconfoption name="server require schannel:COMPUTERACCOUNT"/>' and + '<smbconfoption name="server schannel"/>' options and implies + '<smbconfoption name="server require schannel:COMPUTERACCOUNT">yes</smbconfoption>'. + </para> + + <para> + This option is over-ridden by the <smbconfoption name="server schannel require seal:COMPUTERACCOUNT"/> option. + </para> + +</description> + +<value type="default">yes</value> +</samba:parameter> + +<samba:parameter name="server schannel require seal:COMPUTERACCOUNT" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + + <para> + If you still have legacy domain members, which required "server schannel require seal = no" before, + it is possible to specify explicit exception per computer account + by using 'server schannel require seal:COMPUTERACCOUNT = no' as option. + Note that COMPUTERACCOUNT has to be the sAMAccountName value of + the computer account (including the trailing '$' sign). + </para> + + <para> + Samba will log a complaint in the log files at log level 0 + about the security problem if the option is set to "no", + but the related computer does not require it. + (The log level can be adjusted with + '<smbconfoption name="CVE_2022_38023:warn_about_unused_debug_level">1</smbconfoption>' + in order to complain only at a higher log level). + </para> + + <para> + Samba will warn in the log files at log level 5, + if a setting is still needed for the specified computer account. + </para> + + <para> + See <ulink url="https://www.samba.org/samba/security/CVE-2022-38023.html">CVE-2022-38023</ulink>, + <ulink url="https://bugzilla.samba.org/show_bug.cgi?id=15240">https://bugzilla.samba.org/show_bug.cgi?id=15240</ulink>. + </para> + + <para> + This option overrides the '<smbconfoption name="server schannel require seal"/>' option. + </para> + + <para> + When set to 'yes' this option overrides the + '<smbconfoption name="server require schannel:COMPUTERACCOUNT"/>' and + '<smbconfoption name="server schannel"/>' options and implies + '<smbconfoption name="server require schannel:COMPUTERACCOUNT">yes</smbconfoption>'. + </para> + + <programlisting> + server require schannel seal:LEGACYCOMPUTER1$ = no + server require schannel seal:NASBOX$ = no + server require schannel seal:LEGACYCOMPUTER2$ = no + </programlisting> +</description> + +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/serversigning.xml b/docs-xml/smbdotconf/security/serversigning.xml new file mode 100644 index 0000000..0b7755a --- /dev/null +++ b/docs-xml/smbdotconf/security/serversigning.xml @@ -0,0 +1,29 @@ +<samba:parameter name="server signing" + context="G" + type="enum" + enumlist="enum_smb_signing_vals" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + + <para>This controls whether the client is allowed or required to use SMB1 and SMB2 signing. Possible values + are <emphasis>default</emphasis>, <emphasis>auto</emphasis>, <emphasis>mandatory</emphasis> + and <emphasis>disabled</emphasis>. + </para> + + <para>By default, and when smb signing is set to + <emphasis>default</emphasis>, smb signing is required when + <smbconfoption name="server role"/> is <emphasis>active directory + domain controller</emphasis> and disabled otherwise.</para> + + <para>When set to auto, SMB1 signing is offered, but not enforced. + When set to mandatory, SMB1 signing is required and if set + to disabled, SMB signing is not offered either.</para> + + <para>For the SMB2 protocol, by design, signing cannot be disabled. In the case + where SMB2 is negotiated, if this parameter is set to <emphasis>disabled</emphasis>, + it will be treated as <emphasis>auto</emphasis>. Setting it to <emphasis>mandatory</emphasis> + will still require SMB2 clients to use signing.</para> +</description> + +<value type="default">default</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/serversmbencrypt.xml b/docs-xml/smbdotconf/security/serversmbencrypt.xml new file mode 100644 index 0000000..5f38b46 --- /dev/null +++ b/docs-xml/smbdotconf/security/serversmbencrypt.xml @@ -0,0 +1,241 @@ +<samba:parameter name="server smb encrypt" + context="S" + type="enum" + enumlist="enum_smb_encryption_vals" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This parameter controls whether a remote client is allowed or required + to use SMB encryption. It has different effects depending on whether + the connection uses SMB1 or SMB2 and newer: + </para> + + <itemizedlist> + <listitem> + <para> + If the connection uses SMB1, then this option controls the use + of a Samba-specific extension to the SMB protocol introduced in + Samba 3.2 that makes use of the Unix extensions. + </para> + </listitem> + + <listitem> + <para> + If the connection uses SMB2 or newer, then this option controls + the use of the SMB-level encryption that is supported in SMB + version 3.0 and above and available in Windows 8 and newer. + </para> + </listitem> + </itemizedlist> + + <para> + This parameter can be set globally and on a per-share bases. + Possible values are + + <emphasis>off</emphasis>, + <emphasis>if_required</emphasis>, + <emphasis>desired</emphasis>, + and + <emphasis>required</emphasis>. + A special value is <emphasis>default</emphasis> which is + the implicit default setting of <emphasis>if_required</emphasis>. + </para> + + <variablelist> + <varlistentry> + <term><emphasis>Effects for SMB1</emphasis></term> + <listitem> + <para> + The Samba-specific encryption of SMB1 connections is an + extension to the SMB protocol negotiated as part of the UNIX + extensions. SMB encryption uses the GSSAPI (SSPI on Windows) + ability to encrypt and sign every request/response in a SMB + protocol stream. When enabled it provides a secure method of + SMB/CIFS communication, similar to an ssh protected session, but + using SMB/CIFS authentication to negotiate encryption and + signing keys. Currently this is only supported smbclient of by + Samba 3.2 and newer, and hopefully soon Linux CIFSFS and MacOS/X + clients. Windows clients do not support this feature. + </para> + + <para>This may be set on a per-share + basis, but clients may chose to encrypt the entire session, not + just traffic to a specific share. If this is set to mandatory + then all traffic to a share <emphasis>must</emphasis> + be encrypted once the connection has been made to the share. + The server would return "access denied" to all non-encrypted + requests on such a share. Selecting encrypted traffic reduces + throughput as smaller packet sizes must be used (no huge UNIX + style read/writes allowed) as well as the overhead of encrypting + and signing all the data. + </para> + + <para> + If SMB encryption is selected, Windows style SMB signing (see + the <smbconfoption name="server signing"/> option) is no longer + necessary, as the GSSAPI flags use select both signing and + sealing of the data. + </para> + + <para> + When set to auto or default, SMB encryption is offered, but not + enforced. When set to mandatory, SMB encryption is required and + if set to disabled, SMB encryption can not be negotiated. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><emphasis>Effects for SMB2 and newer</emphasis></term> + <listitem> + <para> + Native SMB transport encryption is available in SMB version 3.0 + or newer. It is only offered by Samba if + <emphasis>server max protocol</emphasis> is set to + <emphasis>SMB3</emphasis> or newer. + Clients supporting this type of encryption include + Windows 8 and newer, + Windows server 2012 and newer, + and smbclient of Samba 4.1 and newer. + </para> + + <para> + The protocol implementation offers various options: + </para> + + <itemizedlist> + <listitem> + <para> + The capability to perform SMB encryption can be + negotiated during protocol negotiation. + </para> + </listitem> + + <listitem> + <para> + Data encryption can be enabled globally. In that case, + an encryption-capable connection will have all traffic + in all its sessions encrypted. In particular all share + connections will be encrypted. + </para> + </listitem> + + <listitem> + <para> + Data encryption can also be enabled per share if not + enabled globally. For an encryption-capable connection, + all connections to an encryption-enabled share will be + encrypted. + </para> + </listitem> + + <listitem> + <para> + Encryption can be enforced. This means that session + setups will be denied on non-encryption-capable + connections if data encryption has been enabled + globally. And tree connections will be denied for + non-encryption capable connections to shares with data + encryption enabled. + </para> + </listitem> + </itemizedlist> + + <para> + These features can be controlled with settings of + <emphasis>server smb encrypt</emphasis> as follows: + </para> + + <itemizedlist> + <listitem> + <para> + Leaving it as default, explicitly setting + <emphasis>default</emphasis>, or setting it to + <emphasis>if_required</emphasis> globally will enable + negotiation of encryption but will not turn on + data encryption globally or per share. + </para> + </listitem> + + <listitem> + <para> + Setting it to <emphasis>desired</emphasis> globally + will enable negotiation and will turn on data encryption + on sessions and share connections for those clients + that support it. + </para> + </listitem> + + <listitem> + <para> + Setting it to <emphasis>required</emphasis> globally + will enable negotiation and turn on data encryption + on sessions and share connections. Clients that do + not support encryption will be denied access to the + server. + </para> + </listitem> + + <listitem> + <para> + Setting it to <emphasis>off</emphasis> globally will + completely disable the encryption feature for all + connections. Setting <parameter>server smb encrypt = + required</parameter> for individual shares (while it's + globally off) will deny access to this shares for all + clients. + </para> + </listitem> + + <listitem> + <para> + Setting it to <emphasis>desired</emphasis> on a share + will turn on data encryption for this share for clients + that support encryption if negotiation has been + enabled globally. + </para> + </listitem> + + <listitem> + <para> + Setting it to <emphasis>required</emphasis> on a share + will enforce data encryption for this share if + negotiation has been enabled globally. I.e. clients that + do not support encryption will be denied access to the + share. + </para> + <para> + Note that this allows per-share enforcing to be + controlled in Samba differently from Windows: + In Windows, <emphasis>RejectUnencryptedAccess</emphasis> + is a global setting, and if it is set, all shares with + data encryption turned on + are automatically enforcing encryption. In order to + achieve the same effect in Samba, one + has to globally set <emphasis>server smb encrypt</emphasis> to + <emphasis>if_required</emphasis>, and then set all shares + that should be encrypted to + <emphasis>required</emphasis>. + Additionally, it is possible in Samba to have some + shares with encryption <emphasis>required</emphasis> + and some other shares with encryption only + <emphasis>desired</emphasis>, which is not possible in + Windows. + </para> + </listitem> + + <listitem> + <para> + Setting it to <emphasis>off</emphasis> or + <emphasis>if_required</emphasis> for a share has + no effect. + </para> + </listitem> + </itemizedlist> + </listitem> + </varlistentry> + </variablelist> +</description> + +<value type="default">default</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/serversmbencryptionalgos.xml b/docs-xml/smbdotconf/security/serversmbencryptionalgos.xml new file mode 100644 index 0000000..2dd2db9 --- /dev/null +++ b/docs-xml/smbdotconf/security/serversmbencryptionalgos.xml @@ -0,0 +1,21 @@ +<samba:parameter name="server smb3 encryption algorithms" + context="G" + type="list" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter specifies the availability and order of + encryption algorithms which are available for negotiation in the SMB3_11 dialect. + </para> + <para>It is also possible to remove individual algorithms from the default list, + by prefixing them with '-'. This can avoid having to specify a hardcoded list. + </para> + <para>Note: that the removal of AES-128-CCM from the list will result + in SMB3_00 and SMB3_02 being unavailable, as it is the default and only + available algorithm for these dialects. + </para> +</description> + +<value type="default">AES-128-GCM, AES-128-CCM, AES-256-GCM, AES-256-CCM</value> +<value type="example">AES-256-GCM</value> +<value type="example">-AES-128-GCM -AES-128-CCM</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/serversmbsigningalgos.xml b/docs-xml/smbdotconf/security/serversmbsigningalgos.xml new file mode 100644 index 0000000..7884e60 --- /dev/null +++ b/docs-xml/smbdotconf/security/serversmbsigningalgos.xml @@ -0,0 +1,22 @@ +<samba:parameter name="server smb3 signing algorithms" + context="G" + type="list" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter specifies the availability and order of + signing algorithms which are available for negotiation in the SMB3_11 dialect. + </para> + <para>It is also possible to remove individual algorithms from the default list, + by prefixing them with '-'. This can avoid having to specify a hardcoded list. + </para> + <para>Note: that the removal of AES-128-CMAC from the list will result + in SMB3_00 and SMB3_02 being unavailable, and the removal of HMAC-SHA256 + will result in SMB2_02 and SMB2_10 being unavailable, as these are the default and only + available algorithms for these dialects. + </para> +</description> + +<value type="default">AES-128-GMAC, AES-128-CMAC, HMAC-SHA256</value> +<value type="example">AES-128-CMAC, HMAC-SHA256</value> +<value type="example">-AES-128-CMAC</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/smbencrypt.xml b/docs-xml/smbdotconf/security/smbencrypt.xml new file mode 100644 index 0000000..6027120 --- /dev/null +++ b/docs-xml/smbdotconf/security/smbencrypt.xml @@ -0,0 +1,15 @@ +<samba:parameter name="smb encrypt" + context="S" + type="enum" + enumlist="enum_smb_encryption_vals" + function="server_smb_encrypt" + synonym="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This is a synonym for <smbconfoption name="server smb encrypt"/>. + </para> +</description> + +<value type="default">default</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/smbpasswdfile.xml b/docs-xml/smbdotconf/security/smbpasswdfile.xml new file mode 100644 index 0000000..fab7037 --- /dev/null +++ b/docs-xml/smbdotconf/security/smbpasswdfile.xml @@ -0,0 +1,18 @@ +<samba:parameter name="smb passwd file" + type="string" + context="G" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option sets the path to the encrypted smbpasswd file. By + default the path to the smbpasswd file is compiled into Samba.</para> + + <para> + An example of use is: +<programlisting> +smb passwd file = /etc/samba/smbpasswd +</programlisting> + </para> +</description> + +<value type="default">&pathconfig.SMB_PASSWD_FILE;</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/tlscafile.xml b/docs-xml/smbdotconf/security/tlscafile.xml new file mode 100644 index 0000000..bcbac62 --- /dev/null +++ b/docs-xml/smbdotconf/security/tlscafile.xml @@ -0,0 +1,20 @@ +<samba:parameter name="tls cafile" + type="string" + context="G" + function="_tls_cafile" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + <description> + <para>This option can be set to a file (PEM format) + containing CA certificates of root CAs to trust to sign + certificates or intermediate CA certificates.</para> + <para>This path is relative to <smbconfoption name="private dir"/> if the path + does not start with a /.</para> + </description> + + <related>tls certfile</related> + <related>tls crlfile</related> + <related>tls dh params file</related> + <related>tls enabled</related> + <related>tls keyfile</related> + <value type="default">tls/ca.pem</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/tlscertfile.xml b/docs-xml/smbdotconf/security/tlscertfile.xml new file mode 100644 index 0000000..cf70954 --- /dev/null +++ b/docs-xml/smbdotconf/security/tlscertfile.xml @@ -0,0 +1,19 @@ +<samba:parameter name="tls certfile" + type="string" + context="G" + function="_tls_certfile" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + <description> + <para>This option can be set to a file (PEM format) + containing the RSA certificate. </para> + <para>This path is relative to <smbconfoption name="private dir"/> if the path + does not start with a /.</para> +</description> + + <related>tls keyfile</related> + <related>tls crlfile</related> + <related>tls dh params file</related> + <related>tls enabled</related> + <related>tls cafile</related> + <value type="default">tls/cert.pem</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/tlscrlfile.xml b/docs-xml/smbdotconf/security/tlscrlfile.xml new file mode 100644 index 0000000..1f42b85 --- /dev/null +++ b/docs-xml/smbdotconf/security/tlscrlfile.xml @@ -0,0 +1,19 @@ +<samba:parameter name="tls crlfile" + type="string" + context="G" + function="_tls_crlfile" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + <description> + <para>This option can be set to a file containing a certificate + revocation list (CRL).</para> + <para>This path is relative to <smbconfoption name="private dir"/> if the path + does not start with a /.</para> +</description> + + <related>tls certfile</related> + <related>tls crlfile</related> + <related>tls dh params file</related> + <related>tls enabled</related> + <related>tls cafile</related> + <value type="default"></value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/tlsdhparamsfile.xml b/docs-xml/smbdotconf/security/tlsdhparamsfile.xml new file mode 100644 index 0000000..5bf59aa --- /dev/null +++ b/docs-xml/smbdotconf/security/tlsdhparamsfile.xml @@ -0,0 +1,20 @@ +<samba:parameter name="tls dh params file" + type="string" + context="G" + function="_tls_dhpfile" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + <description> + <para>This option can be set to a file with Diffie-Hellman parameters + which will be used with DH ciphers. + </para> + <para>This path is relative to <smbconfoption name="private dir"/> if the path + does not start with a /.</para> +</description> + + <related>tls certfile</related> + <related>tls crlfile</related> + <related>tls cafile</related> + <related>tls enabled</related> + <related>tls keyfile</related> + <value type="default"></value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/tlsenabled.xml b/docs-xml/smbdotconf/security/tlsenabled.xml new file mode 100644 index 0000000..411b928 --- /dev/null +++ b/docs-xml/smbdotconf/security/tlsenabled.xml @@ -0,0 +1,10 @@ +<samba:parameter name="tls enabled" + type="boolean" + context="G" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + <description> + <para>If this option is set to <constant>yes</constant>, then Samba + will use TLS when possible in communication.</para> + </description> + <value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/tlskeyfile.xml b/docs-xml/smbdotconf/security/tlskeyfile.xml new file mode 100644 index 0000000..9caa824 --- /dev/null +++ b/docs-xml/smbdotconf/security/tlskeyfile.xml @@ -0,0 +1,20 @@ +<samba:parameter name="tls keyfile" + type="string" + context="G" + function="_tls_keyfile" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + <description> + <para>This option can be set to a file (PEM format) + containing the RSA private key. This file must be accessible without + a pass-phrase, i.e. it must not be encrypted.</para> + <para>This path is relative to <smbconfoption name="private dir"/> if the path + does not start with a /.</para> + </description> + + <related>tls certfile</related> + <related>tls crlfile</related> + <related>tls dh params file</related> + <related>tls enabled</related> + <related>tls cafile</related> + <value type="default">tls/key.pem</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/tlspriority.xml b/docs-xml/smbdotconf/security/tlspriority.xml new file mode 100644 index 0000000..471dc25 --- /dev/null +++ b/docs-xml/smbdotconf/security/tlspriority.xml @@ -0,0 +1,19 @@ +<samba:parameter name="tls priority" + type="string" + context="G" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + <description> + <para>This option can be set to a string describing the TLS protocols + to be supported in the parts of Samba that use GnuTLS, specifically + the AD DC. + </para> + <para>The string is appended to the default priority list of GnuTLS.</para> + <para>The valid options are described in the + <ulink url="http://gnutls.org/manual/html_node/Priority-Strings.html">GNUTLS + Priority-Strings documentation at http://gnutls.org/manual/html_node/Priority-Strings.html</ulink> + </para> + <para>The SSL3.0 protocol will be disabled.</para> + </description> + + <value type="default">NORMAL:-VERS-SSL3.0</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/tlsverifypeer.xml b/docs-xml/smbdotconf/security/tlsverifypeer.xml new file mode 100644 index 0000000..4f47dd4 --- /dev/null +++ b/docs-xml/smbdotconf/security/tlsverifypeer.xml @@ -0,0 +1,47 @@ +<samba:parameter name="tls verify peer" + context="G" + type="enum" + enumlist="enum_tls_verify_peer_vals" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This controls if and how strict the client will verify the peer's certificate and name. + Possible values are (in increasing order): + <constant>no_check</constant>, + <constant>ca_only</constant>, + <constant>ca_and_name_if_available</constant>, + <constant>ca_and_name</constant> + and + <constant>as_strict_as_possible</constant>.</para> + + <para>When set to <constant>no_check</constant> the certificate is not verified at + all, which allows trivial man in the middle attacks. + </para> + + <para>When set to <constant>ca_only</constant> the certificate is verified to + be signed from a ca specified in the <smbconfoption name="tls ca file"/> option. + Setting <smbconfoption name="tls ca file"/> to a valid file is required. + The certificate lifetime is also verified. If the <smbconfoption name="tls crl file"/> + option is configured, the certificate is also verified against the ca crl. + </para> + + <para>When set to <constant>ca_and_name_if_available</constant> all checks from + <constant>ca_only</constant> are performed. In addition, the peer hostname is verified + against the certificate's name, if it is provided by the application layer and + not given as an ip address string. + </para> + + <para>When set to <constant>ca_and_name</constant> all checks from + <constant>ca_and_name_if_available</constant> are performed. + In addition the peer hostname needs to be provided and even an ip + address is checked against the certificate's name. + </para> + + <para>When set to <constant>as_strict_as_possible</constant> all checks from + <constant>ca_and_name</constant> are performed. In addition the + <smbconfoption name="tls crl file"/> needs to be configured. + Future versions of Samba may implement additional checks. + </para> +</description> + +<value type="default">as_strict_as_possible</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/unixpasswordsync.xml b/docs-xml/smbdotconf/security/unixpasswordsync.xml new file mode 100644 index 0000000..89b0158 --- /dev/null +++ b/docs-xml/smbdotconf/security/unixpasswordsync.xml @@ -0,0 +1,26 @@ +<samba:parameter name="unix password sync" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This boolean parameter controls whether Samba + attempts to synchronize the UNIX password with the SMB password + when the encrypted SMB password in the smbpasswd file is changed. + If this is set to <constant>yes</constant> the program specified in the <parameter moreinfo="none">passwd + program</parameter> parameter is called <emphasis>AS ROOT</emphasis> - + to allow the new UNIX password to be set without access to the + old UNIX password (as the SMB password change code has no + access to the old password cleartext, only the new).</para> + + <para>This option has no effect if <command moreinfo="none">samba</command> + is running as an active directory domain controller, in that case have a + look at the <smbconfoption name="password hash gpg key ids"/> option and the + <command moreinfo="none">samba-tool user syncpasswords</command> command.</para> +</description> + +<related>passwd program</related> +<related>passwd chat</related> +<related>password hash gpg key ids</related> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/usernamelevel.xml b/docs-xml/smbdotconf/security/usernamelevel.xml new file mode 100644 index 0000000..f5248c0 --- /dev/null +++ b/docs-xml/smbdotconf/security/usernamelevel.xml @@ -0,0 +1,26 @@ +<samba:parameter name="username level" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option helps Samba to try and 'guess' at + the real UNIX username, as many DOS clients send an all-uppercase + username. By default Samba tries all lowercase, followed by the + username with the first letter capitalized, and fails if the + username is not found on the UNIX machine.</para> + + <para>If this parameter is set to non-zero the behavior changes. + This parameter is a number that specifies the number of uppercase + combinations to try while trying to determine the UNIX user name. The + higher the number the more combinations will be tried, but the slower + the discovery of usernames will be. Use this parameter when you have + strange usernames on your UNIX machine, such as <constant>AstrangeUser + </constant>.</para> + + <para>This parameter is needed only on UNIX systems that have case + sensitive usernames.</para> +</description> + +<value type="default">0</value> +<value type="example">5</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/usernamemap.xml b/docs-xml/smbdotconf/security/usernamemap.xml new file mode 100644 index 0000000..809a54c --- /dev/null +++ b/docs-xml/smbdotconf/security/usernamemap.xml @@ -0,0 +1,130 @@ +<samba:parameter name="username map" + context="G" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This option allows you to specify a file containing a mapping of usernames from the clients to the server. + This can be used for several purposes. The most common is to map usernames that users use on DOS or Windows + machines to those that the UNIX box uses. The other is to map multiple users to a single username so that they + can more easily share files. + </para> + + <para> + Please note that for user mode security, the username map is applied prior to validating the user + credentials. Domain member servers (domain or ads) apply the username map after the user has been + successfully authenticated by the domain controller and require fully qualified entries in the map table (e.g. + biddle = <literal>DOMAIN\foo</literal>). + </para> + + <para> + The map file is parsed line by line. Each line should contain a single UNIX username on the left then a '=' + followed by a list of usernames on the right. The list of usernames on the right may contain names of the form + @group in which case they will match any UNIX username in that group. The special client name '*' is a + wildcard and matches any name. Each line of the map file may be up to 1023 characters long. + </para> + + <para> + The file is processed on each line by taking the supplied username and comparing it with each username on the + right hand side of the '=' signs. If the supplied name matches any of the names on the right hand side then it + is replaced with the name on the left. Processing then continues with the next line. + </para> + + <para> + If any line begins with a '#' or a ';' then it is ignored. + </para> + + <para> + If any line begins with an '!' then the processing will stop after that line if a mapping was done by the + line. Otherwise mapping continues with every line being processed. Using '!' is most useful when you have a + wildcard mapping line later in the file. + </para> + + <para> + For example to map from the name <constant>admin</constant> or <constant>administrator</constant> to the UNIX + name <constant> root</constant> you would use: +<programlisting> +<command moreinfo="none">root = admin administrator</command> +</programlisting> + Or to map anyone in the UNIX group <constant>system</constant> to the UNIX name <constant>sys</constant> you would use: +<programlisting> +<command moreinfo="none">sys = @system</command> +</programlisting> + </para> + + <para> + You can have as many mappings as you like in a username map file. + </para> + + + <para> + If your system supports the NIS NETGROUP option then the netgroup database is checked before the <filename + moreinfo="none">/etc/group </filename> database for matching groups. + </para> + + <para> + You can map Windows usernames that have spaces in them by using double quotes around the name. For example: +<programlisting> +<command moreinfo="none">tridge = "Andrew Tridgell"</command> +</programlisting> + would map the windows username "Andrew Tridgell" to the unix username "tridge". + </para> + + <para> + The following example would map mary and fred to the unix user sys, and map the rest to guest. Note the use of the + '!' to tell Samba to stop processing if it gets a match on that line: +<programlisting format="linespecific"> +!sys = mary fred +guest = * +</programlisting> + </para> + + <para> + Note that the remapping is applied to all occurrences of usernames. Thus if you connect to \\server\fred and + <constant>fred</constant> is remapped to <constant>mary</constant> then you will actually be connecting to + \\server\mary and will need to supply a password suitable for <constant>mary</constant> not + <constant>fred</constant>. The only exception to this is the + username passed to a Domain Controller (if you have one). The DC will receive whatever username the client + supplies without modification. + </para> + + <para> + Also note that no reverse mapping is done. The main effect this has is with printing. Users who have been + mapped may have trouble deleting print jobs as PrintManager under WfWg will think they don't own the print + job. + </para> + + <para> + Samba versions prior to 3.0.8 would only support reading the fully qualified username + (e.g.: <literal>DOMAIN\user</literal>) from + the username map when performing a kerberos login from a client. However, when looking up a map entry for a + user authenticated by NTLM[SSP], only the login name would be used for matches. This resulted in inconsistent + behavior sometimes even on the same server. + </para> + + <para> + The following functionality is obeyed in version 3.0.8 and later: + </para> + + <para> + When performing local authentication, the username map is applied to the login name before attempting to authenticate + the connection. + </para> + + <para> + When relying upon a external domain controller for validating authentication requests, smbd will apply the username map + to the fully qualified username (i.e. <literal>DOMAIN\user</literal>) only after the user has been successfully authenticated. + </para> + + <para> + An example of use is: +<programlisting> +username map = /usr/local/samba/lib/users.map +</programlisting> + </para> + +</description> + +<value type="default"><comment>no username map</comment></value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/usernamemapcachetime.xml b/docs-xml/smbdotconf/security/usernamemapcachetime.xml new file mode 100644 index 0000000..974026c --- /dev/null +++ b/docs-xml/smbdotconf/security/usernamemapcachetime.xml @@ -0,0 +1,26 @@ +<samba:parameter name="username map cache time" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + Mapping usernames with the <smbconfoption name="username map"/> + or <smbconfoption name="username map script"/> + features of Samba can be relatively expensive. + During login of a user, the mapping is done several times. + In particular, calling the <smbconfoption name="username map script"/> + can slow down logins if external databases have to be queried from + the script being called. + </para> + + <para> + The parameter <smbconfoption name="username map cache time"/> + controls a mapping cache. It specifies the number of seconds a + mapping from the username map file or script is to be efficiently cached. + The default of 0 means no caching is done. + </para> +</description> + +<value type="default">0</value> +<value type="example">60</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/usernamemapscript.xml b/docs-xml/smbdotconf/security/usernamemapscript.xml new file mode 100644 index 0000000..7123c53 --- /dev/null +++ b/docs-xml/smbdotconf/security/usernamemapscript.xml @@ -0,0 +1,19 @@ +<samba:parameter name="username map script" + context="G" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This script is a mutually exclusive alternative to the + <smbconfoption name="username map"/> parameter. This parameter + specifies an external program or script that must accept a single + command line option (the username transmitted in the authentication + request) and return a line on standard output (the name to which + the account should mapped). In this way, it is possible to store + username map tables in an LDAP directory services. + </para> +</description> + +<value type="default"/> +<value type="example">/etc/samba/scripts/mapusers.sh</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/validusers.xml b/docs-xml/smbdotconf/security/validusers.xml new file mode 100644 index 0000000..0b681a1 --- /dev/null +++ b/docs-xml/smbdotconf/security/validusers.xml @@ -0,0 +1,38 @@ +<samba:parameter name="valid users" + context="S" + type="cmdlist" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This is a list of users that should be allowed to login to this service. Names starting with + '@', '+' and '&' are interpreted using the same rules as described in the + <parameter moreinfo="none">invalid users</parameter> parameter. + </para> + + <para> + If this is empty (the default) then any user can login. If a username is in both this list + and the <parameter moreinfo="none">invalid users</parameter> list then access is denied + for that user. + </para> + + <para> + The current servicename is substituted for <parameter moreinfo="none">%S</parameter>. + This is useful in the [homes] section. + </para> + + <para><emphasis>Note: </emphasis>When used in the [global] section this + parameter may have unwanted side effects. For example: If samba is configured as a MASTER BROWSER (see + <parameter moreinfo="none">local master</parameter>, + <parameter moreinfo="none">os level</parameter>, + <parameter moreinfo="none">domain master</parameter>, + <parameter moreinfo="none">preferred master</parameter>) this option + will prevent workstations from being able to browse the network. + </para> + +</description> + +<related>invalid users</related> + +<value type="default"><comment>No valid users list (anyone can login) </comment></value> +<value type="example">greg, @pcusers</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/writeable.xml b/docs-xml/smbdotconf/security/writeable.xml new file mode 100644 index 0000000..5433849 --- /dev/null +++ b/docs-xml/smbdotconf/security/writeable.xml @@ -0,0 +1,14 @@ +<samba:parameter name="writeable" + context="S" + type="boolean-rev" + function="read_only" + synonym="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<synonym>writable</synonym> +<synonym>write ok</synonym> +<description> + <para>Inverted synonym for <smbconfoption name="read only"/>.</para> +</description> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/security/writelist.xml b/docs-xml/smbdotconf/security/writelist.xml new file mode 100644 index 0000000..a9b9e8b --- /dev/null +++ b/docs-xml/smbdotconf/security/writelist.xml @@ -0,0 +1,24 @@ +<samba:parameter name="write list" + context="S" + type="cmdlist" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This is a list of users that are given read-write access to a service. If the + connecting user is in this list then they will be given write access, no matter + what the <smbconfoption name="read only"/> option is set to. The list can + include group names using the @group syntax. + </para> + + <para> + Note that if a user is in both the read list and the write list then they will be + given write access. + </para> + +</description> + +<related>read list</related> + +<value type="default"></value> +<value type="example">admin, root, @staff</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/tuning/aiomaxthreads.xml b/docs-xml/smbdotconf/tuning/aiomaxthreads.xml new file mode 100644 index 0000000..3afe989 --- /dev/null +++ b/docs-xml/smbdotconf/tuning/aiomaxthreads.xml @@ -0,0 +1,19 @@ +<samba:parameter name="aio max threads" + type="integer" + context="G" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + The integer parameter specifies the maximum number of + threads each smbd process will create when doing parallel asynchronous IO + calls. If the number of outstanding calls is greater than this + number the requests will not be refused but go onto a queue + and will be scheduled in turn as outstanding requests complete. + </para> + + <related>aio read size</related> + <related>aio write size</related> +</description> + +<value type="default">100</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/tuning/aioreadsize.xml b/docs-xml/smbdotconf/tuning/aioreadsize.xml new file mode 100644 index 0000000..4785d2a --- /dev/null +++ b/docs-xml/smbdotconf/tuning/aioreadsize.xml @@ -0,0 +1,19 @@ +<samba:parameter name="aio read size" + context="S" + type="bytes" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>If this integer parameter is set to a non-zero value, + Samba will read from files asynchronously when the request size is bigger + than this value. Note that it happens only for non-chained and non-chaining + reads and when not using write cache.</para> + <para>The only reasonable values for this parameter are 0 (no async I/O) and + 1 (always do async I/O).</para> + <related>write cache size</related> + <related>aio write size</related> +</description> + +<value type="default">1</value> +<value type="example">0<comment>Always do reads synchronously + </comment></value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/tuning/aiowritebehind.xml b/docs-xml/smbdotconf/tuning/aiowritebehind.xml new file mode 100644 index 0000000..d60af71 --- /dev/null +++ b/docs-xml/smbdotconf/tuning/aiowritebehind.xml @@ -0,0 +1,24 @@ +<samba:parameter name="aio write behind" + context="S" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>If Samba has been built with asynchronous I/O support, + Samba will not wait until write requests are finished before returning + the result to the client for files listed in this parameter. + Instead, Samba will immediately return that the write + request has been finished successfully, no matter if the + operation will succeed or not. This might speed up clients without + aio support, but is really dangerous, because data could be lost + and files could be damaged. + </para> + <para> + The syntax is identical to the <smbconfoption name="veto files"/> + parameter. + </para> +</description> + +<value type="default"/> +<value type="example">/*.tmp/</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/tuning/aiowritesize.xml b/docs-xml/smbdotconf/tuning/aiowritesize.xml new file mode 100644 index 0000000..1d649fe --- /dev/null +++ b/docs-xml/smbdotconf/tuning/aiowritesize.xml @@ -0,0 +1,24 @@ +<samba:parameter name="aio write size" + context="S" + type="bytes" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>If this integer parameter is set to a non-zero value, + Samba will write to files asynchronously when the request size is bigger + than this value. Note that it happens only for non-chained and non-chaining + reads and when not using write cache.</para> + <para>The only reasonable values for this parameter are 0 (no async I/O) and + 1 (always do async I/O).</para> + <para>Compared to <smbconfoption name="aio read size"/> this parameter has + a smaller effect, most writes should end up in the + file system cache. Writes that require space allocation might + benefit most from going asynchronous.</para> + + <related>write cache size</related> + <related>aio read size</related> +</description> + +<value type="default">1</value> +<value type="example">0<comment>Always do writes synchronously + </comment></value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/tuning/allocationroundupsize.xml b/docs-xml/smbdotconf/tuning/allocationroundupsize.xml new file mode 100644 index 0000000..08aa621 --- /dev/null +++ b/docs-xml/smbdotconf/tuning/allocationroundupsize.xml @@ -0,0 +1,28 @@ +<samba:parameter name="allocation roundup size" + context="S" + type="bytes" + deprecated="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter allows an administrator to tune the + allocation size reported to Windows clients. This is only + useful for old SMB1 clients because modern SMB dialects + eliminated that bottleneck and have better performance by + default. Using this parameter may cause + difficulties for some applications, e.g. MS Visual Studio. + If the MS Visual Studio compiler starts to crash with an + internal error, set this parameter to zero for this share. + Settings this parameter to a large value can also cause + small files to allocate more space on the disk than + needed. + </para> + <para>This parameter is deprecated and will be removed in + one of the next Samba releases. + </para> + + <para>The integer parameter specifies the roundup size in bytes.</para> +</description> + +<value type="default">0</value> +<value type="example">1048576<comment>(to set it to the former default of 1 MiB)</comment></value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/tuning/asyncdnstimeout.xml b/docs-xml/smbdotconf/tuning/asyncdnstimeout.xml new file mode 100644 index 0000000..522ef20 --- /dev/null +++ b/docs-xml/smbdotconf/tuning/asyncdnstimeout.xml @@ -0,0 +1,20 @@ +<samba:parameter name="async dns timeout" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>The number of seconds the asynchronous DNS + resolver code in Samba will wait for responses. + Some of the Samba client library code uses internal + asynchronous DNS resolution for A and AAAA records + when trying to find Active Directory Domain controllers. + This value prevents this name resolution code from + waiting for DNS server timeouts. + </para> + <para>The minimum value of this parameter is clamped + at 1 second.</para> +</description> + +<value type="default">10</value> +<value type="example">20</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/tuning/blocksize.xml b/docs-xml/smbdotconf/tuning/blocksize.xml new file mode 100644 index 0000000..8d0dd8c --- /dev/null +++ b/docs-xml/smbdotconf/tuning/blocksize.xml @@ -0,0 +1,27 @@ +<samba:parameter name="block size" + type="bytes" + context="S" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter controls the behavior of <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> when reporting disk free + sizes. By default, this reports a disk block size of 1024 bytes. + </para> + + <para>Changing this parameter may have some effect on the + efficiency of client writes, this is not yet confirmed. This + parameter was added to allow advanced administrators to change + it (usually to a higher value) and test the effect it has on + client write performance without re-compiling the code. As this + is an experimental option it may be removed in a future release. + </para> + + <para>Changing this option does not change the disk free reporting + size, just the block size unit reported to the client. + </para> +</description> + +<value type="default">1024</value> +<value type="example">4096</value> + +</samba:parameter> diff --git a/docs-xml/smbdotconf/tuning/checkparentdirectorydeleteonclose.xml b/docs-xml/smbdotconf/tuning/checkparentdirectorydeleteonclose.xml new file mode 100644 index 0000000..1de0609 --- /dev/null +++ b/docs-xml/smbdotconf/tuning/checkparentdirectorydeleteonclose.xml @@ -0,0 +1,13 @@ +<samba:parameter name="check parent directory delete on close" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>A Windows SMB server prevents the client from creating files in a + directory that has the delete-on-close flag set. By default Samba doesn't + perform this check as this check is a quite expensive operation in Samba. + </para> +</description> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/tuning/deadtime.xml b/docs-xml/smbdotconf/tuning/deadtime.xml new file mode 100644 index 0000000..77e0e5f --- /dev/null +++ b/docs-xml/smbdotconf/tuning/deadtime.xml @@ -0,0 +1,27 @@ +<samba:parameter name="deadtime" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>The value of the parameter (a decimal integer) + represents the number of minutes of inactivity before a connection + is considered dead, and it is disconnected. The deadtime only takes + effect if the number of open files is zero.</para> + + <para>This is useful to stop a server's resources being + exhausted by a large number of inactive connections.</para> + + <para>Most clients have an auto-reconnect feature when a + connection is broken so in most cases this parameter should be + transparent to users.</para> + + <para>Using this parameter with a timeout of a few minutes + is recommended for most systems.</para> + + <para>A deadtime of zero indicates that no auto-disconnection + should be performed.</para> +</description> + +<value type="default">10080</value> +<value type="example">15</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/tuning/getwdcache.xml b/docs-xml/smbdotconf/tuning/getwdcache.xml new file mode 100644 index 0000000..ec4d9ed --- /dev/null +++ b/docs-xml/smbdotconf/tuning/getwdcache.xml @@ -0,0 +1,13 @@ +<samba:parameter name="getwd cache" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This is a tuning option. When this is enabled a + caching algorithm will be used to reduce the time taken for getwd() + calls. This can have a significant impact on performance, especially + when the <smbconfoption name="wide links"/> parameter is set to <constant>no</constant>.</para> +</description> + +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/tuning/hostnamelookups.xml b/docs-xml/smbdotconf/tuning/hostnamelookups.xml new file mode 100644 index 0000000..03678e9 --- /dev/null +++ b/docs-xml/smbdotconf/tuning/hostnamelookups.xml @@ -0,0 +1,15 @@ +<samba:parameter name="hostname lookups" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>Specifies whether samba should use (expensive) + hostname lookups or use the ip addresses instead. An example place + where hostname lookups are currently used is when checking + the <command moreinfo="none">hosts deny</command> and <command moreinfo="none">hosts allow</command>. + </para> +</description> + +<value type="default">no</value> +<value type="example">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/tuning/keepalive.xml b/docs-xml/smbdotconf/tuning/keepalive.xml new file mode 100644 index 0000000..7fbe8cc --- /dev/null +++ b/docs-xml/smbdotconf/tuning/keepalive.xml @@ -0,0 +1,22 @@ +<samba:parameter name="keepalive" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>The value of the parameter (an integer) represents + the number of seconds between <parameter moreinfo="none">keepalive</parameter> + packets. If this parameter is zero, no keepalive packets will be + sent. Keepalive packets, if sent, allow the server to tell whether + a client is still present and responding.</para> + + <para>Keepalives should, in general, not be needed if the socket + has the SO_KEEPALIVE attribute set on it by default. (see <smbconfoption name="socket options"/>). +Basically you should only use this option if you strike difficulties.</para> + + <para>Please note this option only applies to SMB1 client connections, and + has no effect on SMB2 clients.</para> +</description> + +<value type="default">300</value> +<value type="example">600</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/tuning/maxconnections.xml b/docs-xml/smbdotconf/tuning/maxconnections.xml new file mode 100644 index 0000000..1e3043b --- /dev/null +++ b/docs-xml/smbdotconf/tuning/maxconnections.xml @@ -0,0 +1,17 @@ +<samba:parameter name="max connections" + context="S" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option allows the number of simultaneous connections to a service to be limited. + If <parameter moreinfo="none">max connections</parameter> is greater than 0 then connections + will be refused if this number of connections to the service are already open. A value + of zero mean an unlimited number of connections may be made.</para> + + <para>Record lock files are used to implement this feature. The lock files will be stored in + the directory specified by the <smbconfoption name="lock directory"/> option.</para> +</description> + +<value type="default">0</value> +<value type="example">10</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/tuning/maxdisksize.xml b/docs-xml/smbdotconf/tuning/maxdisksize.xml new file mode 100644 index 0000000..0361358 --- /dev/null +++ b/docs-xml/smbdotconf/tuning/maxdisksize.xml @@ -0,0 +1,27 @@ +<samba:parameter name="max disk size" + context="G" + type="bytes" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option allows you to put an upper limit + on the apparent size of disks. If you set this option to 100 + then all shares will appear to be not larger than 100 MB in + size.</para> + + <para>Note that this option does not limit the amount of + data you can put on the disk. In the above case you could still + store much more than 100 MB on the disk, but if a client ever asks + for the amount of free disk space or the total disk size then the + result will be bounded by the amount specified in <parameter moreinfo="none">max + disk size</parameter>.</para> + + <para>This option is primarily useful to work around bugs + in some pieces of software that can't handle very large disks, + particularly disks over 1GB in size.</para> + + <para>A <parameter moreinfo="none">max disk size</parameter> of 0 means no limit.</para> +</description> + +<value type="default">0</value> +<value type="example">1000</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/tuning/maxopenfiles.xml b/docs-xml/smbdotconf/tuning/maxopenfiles.xml new file mode 100644 index 0000000..f873ef7 --- /dev/null +++ b/docs-xml/smbdotconf/tuning/maxopenfiles.xml @@ -0,0 +1,22 @@ +<samba:parameter name="max open files" + type="integer" + context="G" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter limits the maximum number of + open files that one <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> file + serving process may have open for a client at any one time. + This parameter can be set very high (16384) as Samba uses + only one bit per unopened file. Setting this parameter lower than + 16384 will cause Samba to complain and set this value back to + the minimum of 16384, as Windows 7 depends on this number of + open file handles being available.</para> + + <para>The limit of the number of open files is usually set + by the UNIX per-process file descriptor limit rather than + this parameter so you should never need to touch this parameter.</para> +</description> + +<value type="default">16384</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/tuning/maxsmbdprocesses.xml b/docs-xml/smbdotconf/tuning/maxsmbdprocesses.xml new file mode 100644 index 0000000..f5b1e42 --- /dev/null +++ b/docs-xml/smbdotconf/tuning/maxsmbdprocesses.xml @@ -0,0 +1,24 @@ +<samba:parameter name="max smbd processes" + type="integer" + context="G" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter limits the maximum number of <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> processes concurrently running on a system and is intended + as a stopgap to prevent degrading service to clients in the event that the server has insufficient + resources to handle more than this number of connections. Remember that under normal operating + conditions, each user will have an <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> associated with him or her to handle connections to all + shares from a given host.</para> + + <para>For a Samba ADDC running the standard process model this option + limits the number of processes forked to handle requests. + Currently new processes are only forked for ldap and netlogon + requests. + </para> + +</description> + +<value type="default">0</value> +<value type="example">1000</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/tuning/minprintspace.xml b/docs-xml/smbdotconf/tuning/minprintspace.xml new file mode 100644 index 0000000..b5bba27 --- /dev/null +++ b/docs-xml/smbdotconf/tuning/minprintspace.xml @@ -0,0 +1,15 @@ +<samba:parameter name="min print space" + context="S" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This sets the minimum amount of free disk + space that must be available before a user will be able to spool + a print job. It is specified in kilobytes. The default is 0, which + means a user can always spool a print job.</para> +</description> + +<related>printing</related> +<value type="default">0</value> +<value type="example">2000</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/tuning/namecachetimeout.xml b/docs-xml/smbdotconf/tuning/namecachetimeout.xml new file mode 100644 index 0000000..4d29194 --- /dev/null +++ b/docs-xml/smbdotconf/tuning/namecachetimeout.xml @@ -0,0 +1,14 @@ +<samba:parameter name="name cache timeout" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>Specifies the number of seconds it takes before + entries in samba's hostname resolve cache time out. If + the timeout is set to 0. the caching is disabled. +</para> +</description> + +<value type="default">660</value> +<value type="example">0</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/tuning/socketoptions.xml b/docs-xml/smbdotconf/tuning/socketoptions.xml new file mode 100644 index 0000000..d2be514 --- /dev/null +++ b/docs-xml/smbdotconf/tuning/socketoptions.xml @@ -0,0 +1,104 @@ +<samba:parameter name="socket options" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + <warning> + <para>Modern server operating systems are tuned for high + network performance in the majority of situations; when you set socket + options you are overriding those settings. Linux in particular has an + auto-tuning mechanism for buffer sizes that will be disabled if you + specify a socket buffer size. This can potentially cripple your + TCP/IP stack.</para> + + <para> Getting the socket options correct can make a big difference to + your performance, but getting them wrong can degrade it by just as + much. As with any other low level setting, if you must make changes + to it, make small changes and <emphasis>test</emphasis> the effect + before making any large changes.</para> + </warning> + </para> + + <para>This option allows you to set socket options + to be used when talking with the client.</para> + + <para>Socket options are controls on the networking layer + of the operating systems which allow the connection to be + tuned.</para> + + <para>This option will typically be used to tune your Samba server + for optimal performance for your local network. There is no way + that Samba can know what the optimal parameters are for your net, + so you must experiment and choose them yourself. We strongly + suggest you read the appropriate documentation for your operating + system first (perhaps <command moreinfo="none">man + setsockopt</command> will help).</para> + + <para>You may find that on some systems Samba will say + "Unknown socket option" when you supply an option. This means you + either incorrectly typed it or you need to add an include file + to includes.h for your OS. If the latter is the case please + send the patch to <ulink url="mailto:samba-technical@lists.samba.org"> + samba-technical@lists.samba.org</ulink>.</para> + + <para>Any of the supported socket options may be combined + in any way you like, as long as your OS allows it.</para> + + <para>This is the list of socket options currently settable + using this option:</para> + + <itemizedlist> + <listitem><para>SO_KEEPALIVE</para></listitem> + <listitem><para>SO_REUSEADDR</para></listitem> + <listitem><para>SO_BROADCAST</para></listitem> + <listitem><para>TCP_NODELAY</para></listitem> + <listitem><para>TCP_KEEPCNT *</para></listitem> + <listitem><para>TCP_KEEPIDLE *</para></listitem> + <listitem><para>TCP_KEEPINTVL *</para></listitem> + <listitem><para>IPTOS_LOWDELAY</para></listitem> + <listitem><para>IPTOS_THROUGHPUT</para></listitem> + <listitem><para>SO_REUSEPORT</para></listitem> + <listitem><para>SO_SNDBUF *</para></listitem> + <listitem><para>SO_RCVBUF *</para></listitem> + <listitem><para>SO_SNDLOWAT *</para></listitem> + <listitem><para>SO_RCVLOWAT *</para></listitem> + <listitem><para>SO_SNDTIMEO *</para></listitem> + <listitem><para>SO_RCVTIMEO *</para></listitem> + <listitem><para>TCP_FASTACK *</para></listitem> + <listitem><para>TCP_QUICKACK</para></listitem> + <listitem><para>TCP_NODELAYACK</para></listitem> + <listitem><para>TCP_KEEPALIVE_THRESHOLD *</para></listitem> + <listitem><para>TCP_KEEPALIVE_ABORT_THRESHOLD *</para></listitem> + <listitem><para>TCP_DEFER_ACCEPT *</para></listitem> + <listitem><para>TCP_USER_TIMEOUT *</para></listitem> + </itemizedlist> + + <para>Those marked with a <emphasis>'*'</emphasis> take an integer + argument. The others can optionally take a 1 or 0 argument to enable + or disable the option, by default they will be enabled if you + don't specify 1 or 0.</para> + + <para>To specify an argument use the syntax SOME_OPTION = VALUE + for example <command moreinfo="none">SO_SNDBUF = 8192</command>. Note that you must + not have any spaces before or after the = sign.</para> + + <para>If you are on a local network then a sensible option + might be:</para> + + <para><command moreinfo="none">socket options = IPTOS_LOWDELAY</command></para> + + <para>If you have a local network then you could try:</para> + + <para><command moreinfo="none">socket options = IPTOS_LOWDELAY TCP_NODELAY</command></para> + + <para>If you are on a wide area network then perhaps try + setting IPTOS_THROUGHPUT. </para> + + <para>Note that several of the options may cause your Samba + server to fail completely. Use these options with caution!</para> +</description> + +<value type="default">TCP_NODELAY</value> +<value type="example">IPTOS_LOWDELAY</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/tuning/strictallocate.xml b/docs-xml/smbdotconf/tuning/strictallocate.xml new file mode 100644 index 0000000..bd867da --- /dev/null +++ b/docs-xml/smbdotconf/tuning/strictallocate.xml @@ -0,0 +1,40 @@ +<samba:parameter name="strict allocate" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This is a boolean that controls the handling of + disk space allocation in the server. When this is set to <constant>yes</constant> + the server will change from UNIX behaviour of not committing real + disk storage blocks when a file is extended to the Windows behaviour + of actually forcing the disk system to allocate real storage blocks + when a file is created or extended to be a given size. In UNIX + terminology this means that Samba will stop creating sparse files.</para> + + <para>This option is really designed for file systems that support + fast allocation of large numbers of blocks such as extent-based file systems. + On file systems that don't support extents (most notably ext3) this can + make Samba slower. When you work with large files over >100MB on file + systems without extents you may even run into problems with clients + running into timeouts.</para> + + <para>When you have an extent based filesystem it's likely that we can make + use of unwritten extents which allows Samba to allocate even large amounts + of space very fast and you will not see any timeout problems caused by + strict allocate. With strict allocate in use you will also get much better + out of quota messages in case you use quotas. Another advantage of + activating this setting is that it will help to reduce file + fragmentation.</para> + + <para>To give you an idea on which filesystems this setting might currently + be a good option for you: XFS, ext4, btrfs, ocfs2 on Linux and JFS2 on + AIX support unwritten extents. On Filesystems that do not support it, + preallocation is probably an expensive operation where you will see reduced + performance and risk to let clients run into timeouts when creating large + files. Examples are ext3, ZFS, HFS+ and most others, so be aware if you + activate this setting on those filesystems.</para> + +</description> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/tuning/strictrename.xml b/docs-xml/smbdotconf/tuning/strictrename.xml new file mode 100644 index 0000000..91572f2 --- /dev/null +++ b/docs-xml/smbdotconf/tuning/strictrename.xml @@ -0,0 +1,34 @@ +<samba:parameter name="strict rename" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>By default a Windows SMB server prevents directory + renames when there are open file or directory handles below + it in the filesystem hierarchy. Historically Samba has always + allowed this as POSIX filesystem semantics require it.</para> + + <para>This boolean parameter allows Samba to match the Windows + behavior. Setting this to "yes" is a very expensive change, + as it forces Samba to travers the entire open file handle + database on every directory rename request. In a clustered + Samba system the cost is even greater than the non-clustered + case.</para> + + <para>When set to "no" smbd only checks the local process + the client is attached to for open files below a directory + being renamed, instead of checking for open files across all + smbd processes.</para> + + <para>Because of the expense in fully searching the database, + the default is "no", and it is recommended to be left that way + unless a specific Windows application requires it to be changed.</para> + + <para>If the client has requested UNIX extensions (POSIX + pathnames) then renames are always allowed and this parameter + has no effect.</para> + +</description> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/tuning/strictsync.xml b/docs-xml/smbdotconf/tuning/strictsync.xml new file mode 100644 index 0000000..f2e3788 --- /dev/null +++ b/docs-xml/smbdotconf/tuning/strictsync.xml @@ -0,0 +1,40 @@ +<samba:parameter name="strict sync" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + <description> + <para>This parameter controls whether Samba honors a request + from an SMB client to ensure any outstanding operating system + buffer contents held in memory are safely written onto stable + storage on disk. If set to <constant>yes</constant>, which is + the default, then Windows applications can force the smbd server + to synchronize unwritten data onto the disk. If set to + <constant>no</constant> then smbd will ignore client + requests to synchronize unwritten data onto stable storage on + disk.</para> + + <para>In Samba 4.7.0, the default for this parameter changed from + <constant>no</constant> to <constant>yes</constant> to better + match the expectations of SMB2/3 clients and improve application + safety when running against smbd.</para> + + <para>The flush request from SMB2/3 clients is handled + asynchronously inside smbd, so leaving the parameter as the default + value of <constant>yes</constant> does not block the processing of + other requests to the smbd process.</para> + + <para>Legacy Windows applications (such as the Windows 98 explorer + shell) seemed to confuse writing buffer contents to the operating + system with synchronously writing outstanding data onto stable storage + on disk. Changing this parameter to <constant>no</constant> means that + <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> will ignore the Windows + applications request to synchronize unwritten data onto disk. Only + consider changing this if smbd is serving obsolete SMB1 Windows clients + prior to Windows XP (Windows 98 and below). There should be no need to + change this setting for normal operations.</para> +</description> + +<related>sync always</related> +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/tuning/syncalways.xml b/docs-xml/smbdotconf/tuning/syncalways.xml new file mode 100644 index 0000000..9a095d5 --- /dev/null +++ b/docs-xml/smbdotconf/tuning/syncalways.xml @@ -0,0 +1,21 @@ +<samba:parameter name="sync always" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This is a boolean parameter that controls + whether writes will always be written to stable storage before + the write call returns. If this is <constant>no</constant> then the server will be + guided by the client's request in each write call (clients can + set a bit indicating that a particular write should be synchronous). + If this is <constant>yes</constant> then every write will be followed by a <command moreinfo="none">fsync() + </command> call to ensure the data is written to disk. Note that + the <parameter moreinfo="none">strict sync</parameter> parameter must be set to + <constant>yes</constant> in order for this parameter to have + any effect.</para> +</description> + +<related>strict sync</related> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/tuning/usemmap.xml b/docs-xml/smbdotconf/tuning/usemmap.xml new file mode 100644 index 0000000..40ca7b9 --- /dev/null +++ b/docs-xml/smbdotconf/tuning/usemmap.xml @@ -0,0 +1,17 @@ +<samba:parameter name="use mmap" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This global parameter determines if the tdb internals of Samba can + depend on mmap working correctly on the running system. Samba requires a coherent + mmap/read-write system memory cache. Currently only OpenBSD and HPUX do not have such a + coherent cache, and on those platforms this parameter is overridden internally + to be effeceively <constant>no</constant>. On all systems this parameter should be left alone. This + parameter is provided to help the Samba developers track down problems with + the tdb internal code. + </para> +</description> + +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/tuning/usesendfile.xml b/docs-xml/smbdotconf/tuning/usesendfile.xml new file mode 100644 index 0000000..46255cd --- /dev/null +++ b/docs-xml/smbdotconf/tuning/usesendfile.xml @@ -0,0 +1,18 @@ +<samba:parameter name="use sendfile" + context="S" + type="boolean" + function="_use_sendfile" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>If this parameter is <constant>yes</constant>, and the <constant>sendfile()</constant> + system call is supported by the underlying operating system, then some SMB read calls + (mainly ReadAndX and ReadRaw) will use the more efficient sendfile system call for files that + are exclusively oplocked. This may make more efficient use of the system CPU's + and cause Samba to be faster. Samba automatically turns this off for clients + that use protocol levels lower than NT LM 0.12 and when it detects a client is + Windows 9x (using sendfile from Linux will cause these clients to fail). + </para> +</description> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/vfs/getquotacommand.xml b/docs-xml/smbdotconf/vfs/getquotacommand.xml new file mode 100644 index 0000000..9422b7e --- /dev/null +++ b/docs-xml/smbdotconf/vfs/getquotacommand.xml @@ -0,0 +1,58 @@ +<samba:parameter name="get quota command" + context="G" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>The <command>get quota command</command> should only be used + whenever there is no operating system API available from the OS that + samba can use.</para> + + <para>This option is only available Samba was compiled with + quotas support.</para> + + <para>This parameter should specify the path to a script that + queries the quota information for the specified + user/group for the partition that + the specified directory is on.</para> + + <para>Such a script is being given 3 arguments:</para> + + <itemizedlist> + <listitem><para>directory</para></listitem> + <listitem><para>type of query</para></listitem> + <listitem><para>uid of user or gid of group</para></listitem> + </itemizedlist> + + <para>The directory is actually mostly just "." - It needs to be + treated relatively to the current working directory that the script can + also query.</para> + + <para>The type of query can be one of:</para> + + <itemizedlist> + <listitem><para>1 - user quotas</para></listitem> + <listitem><para>2 - user default quotas (uid = -1)</para></listitem> + <listitem><para>3 - group quotas</para></listitem> + <listitem><para>4 - group default quotas (gid = -1)</para></listitem> + </itemizedlist> + + <para>This script should print one line as output with spaces between the columns. The printed columns should be: + </para> + + <itemizedlist> + <listitem><para>1 - quota flags (0 = no quotas, 1 = quotas enabled, 2 = quotas enabled and enforced)</para></listitem> + <listitem><para>2 - number of currently used blocks</para></listitem> + <listitem><para>3 - the softlimit number of blocks</para></listitem> + <listitem><para>4 - the hardlimit number of blocks</para></listitem> + <listitem><para>5 - currently used number of inodes</para></listitem> + <listitem><para>6 - the softlimit number of inodes</para></listitem> + <listitem><para>7 - the hardlimit number of inodes</para></listitem> + <listitem><para>8 (optional) - the number of bytes in a block(default is 1024)</para></listitem> + </itemizedlist> +</description> + +<related>set quote command</related> +<value type="default"></value> +<value type="example">/usr/local/sbin/query_quota</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/vfs/hostmsdfs.xml b/docs-xml/smbdotconf/vfs/hostmsdfs.xml new file mode 100644 index 0000000..e61b0f6 --- /dev/null +++ b/docs-xml/smbdotconf/vfs/hostmsdfs.xml @@ -0,0 +1,18 @@ +<samba:parameter name="host msdfs" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + <description> + <para> + If set to <constant>yes</constant>, Samba will act as a Dfs server, and allow Dfs-aware clients to browse + Dfs trees hosted on the server. + </para> + + <para> + See also the <smbconfoption name="msdfs root"/> share level parameter. For more information on + setting up a Dfs tree on Samba, refer to the MSFDS chapter in the book Samba3-HOWTO. + </para> +</description> + +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/vfs/msdfsproxy.xml b/docs-xml/smbdotconf/vfs/msdfsproxy.xml new file mode 100644 index 0000000..55a410f --- /dev/null +++ b/docs-xml/smbdotconf/vfs/msdfsproxy.xml @@ -0,0 +1,19 @@ +<samba:parameter name="msdfs proxy" + context="S" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter indicates that the share is a + stand-in for another CIFS share whose location is specified by + the value of the parameter. When clients attempt to connect to + this share, they are redirected to one or multiple, comma separated + proxied shares using the SMB-Dfs protocol.</para> + + <para>Only Dfs roots can act as proxy shares. Take a look at the + <smbconfoption name="msdfs root"/> and <smbconfoption name="host msdfs"/> + options to find out how to set up a Dfs root share.</para> +</description> + +<value type="example">\otherserver\someshare,\otherserver2\someshare</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/vfs/msdfsroot.xml b/docs-xml/smbdotconf/vfs/msdfsroot.xml new file mode 100644 index 0000000..d858599 --- /dev/null +++ b/docs-xml/smbdotconf/vfs/msdfsroot.xml @@ -0,0 +1,18 @@ +<samba:parameter name="msdfs root" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>If set to <constant>yes</constant>, Samba treats the + share as a Dfs root and allows clients to browse the + distributed file system tree rooted at the share directory. + Dfs links are specified in the share directory by symbolic + links of the form <filename>msdfs:serverA\\shareA,serverB\\shareB</filename> + and so on. For more information on setting up a Dfs tree on + Samba, refer to the MSDFS chapter in the Samba3-HOWTO book.</para> +</description> + +<related>host msdfs</related> +<value type="default">no</value> +<para>See also <smbconfoption name="host msdfs"/></para> +</samba:parameter> diff --git a/docs-xml/smbdotconf/vfs/msdfsshufflereferrals.xml b/docs-xml/smbdotconf/vfs/msdfsshufflereferrals.xml new file mode 100644 index 0000000..3461f3a --- /dev/null +++ b/docs-xml/smbdotconf/vfs/msdfsshufflereferrals.xml @@ -0,0 +1,16 @@ +<samba:parameter name="msdfs shuffle referrals" + context="S" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>If set to <constant>yes</constant>, Samba will shuffle + Dfs referrals for a given Dfs link if multiple are available, + allowing for load balancing across clients. For more information + on setting up a Dfs tree on Samba, refer to the MSDFS chapter in + the Samba3-HOWTO book.</para> +</description> + +<related>host msdfs</related> +<related>msdfs root</related> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/vfs/ntvfshandler.xml b/docs-xml/smbdotconf/vfs/ntvfshandler.xml new file mode 100644 index 0000000..c5fcf8c --- /dev/null +++ b/docs-xml/smbdotconf/vfs/ntvfshandler.xml @@ -0,0 +1,27 @@ +<samba:parameter name="ntvfs handler" + context="S" + type="list" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This specifies the NTVFS handlers for this share.</para> + + <itemizedlist> + <listitem><para>unixuid: Sets up user credentials based on POSIX gid/uid.</para></listitem> + <listitem><para>cifs: Proxies a remote CIFS FS. Mainly useful for testing.</para></listitem> + <listitem><para>nbench: Filter module that saves data useful to the nbench benchmark suite.</para></listitem> + <listitem><para>ipc: Allows using SMB for inter process communication. Only used for the IPC$ share.</para></listitem> + <listitem><para>posix: Maps POSIX FS semantics to NT semantics</para></listitem> + <listitem><para>print: Allows printing over SMB. This is + LANMAN-style printing, not the be confused with the spoolss + DCE/RPC interface used by later versions of + Windows.</para></listitem> + </itemizedlist> + + <para>Note that this option is only used when the NTVFS file server + is in use. It is not used with the (default) + s3fs file server. + </para> +</description> + +<value type="default">unixuid, default</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/vfs/setquotacommand.xml b/docs-xml/smbdotconf/vfs/setquotacommand.xml new file mode 100644 index 0000000..6ae6ef1 --- /dev/null +++ b/docs-xml/smbdotconf/vfs/setquotacommand.xml @@ -0,0 +1,46 @@ +<samba:parameter name="set quota command" + context="G" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>The <command>set quota command</command> should only be used + whenever there is no operating system API available from the OS that + samba can use.</para> + + <para>This option is only available if Samba was compiled with + quota support.</para> + + <para>This parameter should specify the path to a script that + can set quota for the specified arguments.</para> + + <para>The specified script should take the following arguments:</para> + + <itemizedlist> + <listitem><para>1 - path to where the quota needs to be set. + This needs to be interpreted relative to the current working + directory that the script may also check for.</para></listitem> + <listitem><para>2 - quota type + <itemizedlist> + <listitem><para>1 - user quotas</para></listitem> + <listitem><para>2 - user default quotas (uid = -1)</para></listitem> + <listitem><para>3 - group quotas</para></listitem> + <listitem><para>4 - group default quotas (gid = -1)</para></listitem> + </itemizedlist></para></listitem> + <listitem><para>3 - id (uid for user, gid for group, -1 if N/A)</para></listitem> + <listitem><para>4 - quota state (0 = disable, 1 = enable, 2 = enable and enforce)</para></listitem> + <listitem><para>5 - block softlimit</para></listitem> + <listitem><para>6 - block hardlimit</para></listitem> + <listitem><para>7 - inode softlimit</para></listitem> + <listitem><para>8 - inode hardlimit</para></listitem> + <listitem><para>9(optional) - block size, defaults to 1024</para></listitem> + </itemizedlist> + + <para>The script should output at least one line of data on success. And nothing on failure.</para> +</description> + +<related>get quota command</related> + +<value type="default"></value> +<value type="example">/usr/local/sbin/set_quota</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/vfs/vfsobjects.xml b/docs-xml/smbdotconf/vfs/vfsobjects.xml new file mode 100644 index 0000000..f8f33b5 --- /dev/null +++ b/docs-xml/smbdotconf/vfs/vfsobjects.xml @@ -0,0 +1,16 @@ +<samba:parameter name="vfs objects" + type="cmdlist" + context="S" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<synonym>vfs object</synonym> +<description> + <para>This parameter specifies the backend names which + are used for Samba VFS I/O operations. By default, normal + disk I/O operations are used but these can be overloaded + with one or more VFS objects. Be aware that the definition of this + parameter will overwrite a possible previous definition of the + vfs objects parameter.</para> </description> + +<value type="default"/> +<value type="example">extd_audit recycle</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/winbind/applygrouppolicies.xml b/docs-xml/smbdotconf/winbind/applygrouppolicies.xml new file mode 100644 index 0000000..67baa0d --- /dev/null +++ b/docs-xml/smbdotconf/winbind/applygrouppolicies.xml @@ -0,0 +1,19 @@ +<samba:parameter name="apply group policies" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + + <para>This option controls whether winbind will execute the gpupdate + command defined in <smbconfoption name="gpo update command"/> on the + Group Policy update interval. The Group Policy update interval is + defined as every 90 minutes, plus a random offset between 0 and 30 + minutes. This applies Group Policy Machine polices to the client or + KDC and machine policies to a server. + </para> + +</description> + +<value type="default">no</value> +<value type="example">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/winbind/createkrb5conf.xml b/docs-xml/smbdotconf/winbind/createkrb5conf.xml new file mode 100644 index 0000000..4054034 --- /dev/null +++ b/docs-xml/smbdotconf/winbind/createkrb5conf.xml @@ -0,0 +1,23 @@ +<samba:parameter name="create krb5 conf" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + + <para> + Setting this parameter to <value type="example">no</value> prevents + winbind from creating custom krb5.conf files. Winbind normally does + this because the krb5 libraries are not AD-site-aware and thus would + pick any domain controller out of potentially very many. Winbind + is site-aware and makes the krb5 libraries use a local DC by + creating its own krb5.conf files. + </para> + <para> + Preventing winbind from doing this might become necessary if you + have to add special options into your system-krb5.conf that winbind + does not see. + </para> + +</description> +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/winbind/idmapbackend.xml b/docs-xml/smbdotconf/winbind/idmapbackend.xml new file mode 100644 index 0000000..864a975 --- /dev/null +++ b/docs-xml/smbdotconf/winbind/idmapbackend.xml @@ -0,0 +1,22 @@ +<samba:parameter name="idmap backend" + context="G" + type="string" + generated_function="0" + handler="handle_idmap_backend" + deprecated="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + The idmap backend provides a plugin interface for Winbind to use + varying backends to store SID/uid/gid mapping tables. + </para> + + <para> + This option specifies the default backend that is used when no special + configuration set, but it is now deprecated in favour of the new + spelling <smbconfoption name="idmap config * : backend"/>. + </para> +</description> + +<value type="default">tdb</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/winbind/idmapcachetime.xml b/docs-xml/smbdotconf/winbind/idmapcachetime.xml new file mode 100644 index 0000000..87c6c56 --- /dev/null +++ b/docs-xml/smbdotconf/winbind/idmapcachetime.xml @@ -0,0 +1,13 @@ +<samba:parameter name="idmap cache time" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter specifies the number of seconds that Winbind's + idmap interface will cache positive SID/uid/gid query results. By + default, Samba will cache these results for one week. + </para> +</description> + +<value type="default">604800</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/winbind/idmapconfig.xml b/docs-xml/smbdotconf/winbind/idmapconfig.xml new file mode 100644 index 0000000..f70f11d --- /dev/null +++ b/docs-xml/smbdotconf/winbind/idmapconfig.xml @@ -0,0 +1,122 @@ +<samba:parameter name="idmap config DOMAIN : OPTION" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + + <para> + ID mapping in Samba is the mapping between Windows SIDs and Unix user + and group IDs. This is performed by Winbindd with a configurable plugin + interface. Samba's ID mapping is configured by options starting with the + <smbconfoption name="idmap config"/> prefix. + An idmap option consists of the <smbconfoption name="idmap config"/> + prefix, followed by a domain name or the asterisk character (*), + a colon, and the name of an idmap setting for the chosen domain. + </para> + + <para> + The idmap configuration is hence divided into groups, one group + for each domain to be configured, and one group with the + asterisk instead of a proper domain name, which specifies the + default configuration that is used to catch all domains that do + not have an explicit idmap configuration of their own. + </para> + + <para> + There are three general options available: + </para> + + <variablelist> + <varlistentry> + <term>backend = backend_name</term> + <listitem><para> + This specifies the name of the idmap plugin to use as the + SID/uid/gid backend for this domain. The standard backends are + tdb + (<citerefentry><refentrytitle>idmap_tdb</refentrytitle> <manvolnum>8</manvolnum> </citerefentry>), + tdb2 + (<citerefentry><refentrytitle>idmap_tdb2</refentrytitle> <manvolnum>8</manvolnum></citerefentry>), + ldap + (<citerefentry><refentrytitle>idmap_ldap</refentrytitle> <manvolnum>8</manvolnum></citerefentry>), + rid + (<citerefentry><refentrytitle>idmap_rid</refentrytitle> <manvolnum>8</manvolnum></citerefentry>), + hash + (<citerefentry><refentrytitle>idmap_hash</refentrytitle> <manvolnum>8</manvolnum></citerefentry>), + autorid + (<citerefentry><refentrytitle>idmap_autorid</refentrytitle> <manvolnum>8</manvolnum></citerefentry>), + ad + (<citerefentry><refentrytitle>idmap_ad</refentrytitle> <manvolnum>8</manvolnum></citerefentry>) + and nss + (<citerefentry><refentrytitle>idmap_nss</refentrytitle> <manvolnum>8</manvolnum></citerefentry>). + The corresponding manual pages contain the details, but + here is a summary. + </para> + <para> + The first three of these create mappings of their own using + internal unixid counters and store the mappings in a database. + These are suitable for use in the default idmap configuration. + The rid and hash backends use a pure algorithmic calculation + to determine the unixid for a SID. The autorid module is a + mixture of the tdb and rid backend. It creates ranges for + each domain encountered and then uses the rid algorithm for each + of these automatically configured domains individually. + The ad backend uses unix ids stored in Active Directory via + the standard schema extensions. The nss backend reverses + the standard winbindd setup and gets the unix ids via names + from nsswitch which can be useful in an ldap setup. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>range = low - high</term> + <listitem><para> + Defines the available matching uid and gid range for which the + backend is authoritative. For allocating backends, this also + defines the start and the end of the range for allocating + new unique IDs. + </para> + <para> + winbind uses this parameter to find the backend that is + authoritative for a unix ID to SID mapping, so it must be set + for each individually configured domain and for the default + configuration. The configured ranges must be mutually disjoint. + </para> + <para> + Note that the low value interacts with the <smbconfoption name="min domain uid"/> option! + </para></listitem> + </varlistentry> + + <varlistentry> + <term>read only = yes|no</term> + <listitem><para> + This option can be used to turn the writing backends + tdb, tdb2, and ldap into read only mode. This can be useful + e.g. in cases where a pre-filled database exists that should + not be extended automatically. + </para></listitem> + </varlistentry> + </variablelist> + + <para> + The following example illustrates how to configure the <citerefentry> + <refentrytitle>idmap_ad</refentrytitle> <manvolnum>8</manvolnum> + </citerefentry> backend for the CORP domain and the + <citerefentry><refentrytitle>idmap_tdb</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> backend for all other + domains. This configuration assumes that the admin of CORP assigns + unix ids below 1000000 via the SFU extensions, and winbind is supposed + to use the next million entries for its own mappings from trusted + domains and for local groups for example. + </para> + + <programlisting> + idmap config * : backend = tdb + idmap config * : range = 1000000-1999999 + + idmap config CORP : backend = ad + idmap config CORP : range = 1000-999999 + </programlisting> + +</description> +<related>min domain uid</related> +</samba:parameter> diff --git a/docs-xml/smbdotconf/winbind/idmapgid.xml b/docs-xml/smbdotconf/winbind/idmapgid.xml new file mode 100644 index 0000000..1b576b2 --- /dev/null +++ b/docs-xml/smbdotconf/winbind/idmapgid.xml @@ -0,0 +1,21 @@ +<samba:parameter name="idmap gid" + context="G" + type="string" + generated_function="0" + handler="handle_idmap_gid" + deprecated="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<synonym>winbind gid</synonym> +<description> + <para> + The idmap gid parameter specifies the range of group ids + for the default idmap configuration. It is now deprecated + in favour of <smbconfoption name="idmap config * : range"/>. + </para> + + <para>See the <smbconfoption name="idmap config"/> option.</para> +</description> + +<value type="default"></value> +<value type="example">10000-20000</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/winbind/idmapnegativecachetime.xml b/docs-xml/smbdotconf/winbind/idmapnegativecachetime.xml new file mode 100644 index 0000000..32c4e1f --- /dev/null +++ b/docs-xml/smbdotconf/winbind/idmapnegativecachetime.xml @@ -0,0 +1,12 @@ +<samba:parameter name="idmap negative cache time" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter specifies the number of seconds that Winbind's + idmap interface will cache negative SID/uid/gid query results. + </para> +</description> + +<value type="default">120</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/winbind/idmapuid.xml b/docs-xml/smbdotconf/winbind/idmapuid.xml new file mode 100644 index 0000000..f666f61 --- /dev/null +++ b/docs-xml/smbdotconf/winbind/idmapuid.xml @@ -0,0 +1,21 @@ +<samba:parameter name="idmap uid" + type="string" + context="G" + generated_function="0" + handler="handle_idmap_uid" + deprecated="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<synonym>winbind uid</synonym> +<description> + <para> + The idmap uid parameter specifies the range of user ids for + the default idmap configuration. It is now deprecated in favour + of <smbconfoption name="idmap config * : range"/>. + </para> + + <para>See the <smbconfoption name="idmap config"/> option.</para> +</description> + +<value type="default"></value> +<value type="example">10000-20000</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/winbind/includesystemkrb5conf.xml b/docs-xml/smbdotconf/winbind/includesystemkrb5conf.xml new file mode 100644 index 0000000..3e53292 --- /dev/null +++ b/docs-xml/smbdotconf/winbind/includesystemkrb5conf.xml @@ -0,0 +1,15 @@ +<samba:parameter name="include system krb5 conf" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + Setting this parameter to <value type="example">no</value> will prevent + winbind to include the system /etc/krb5.conf file into the krb5.conf file + it creates. See also <smbconfoption name="create krb5 conf"/>. This option + only applies to Samba built with MIT Kerberos. + </para> + +</description> +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/winbind/netutralizent4emulation.xml b/docs-xml/smbdotconf/winbind/netutralizent4emulation.xml new file mode 100644 index 0000000..247822e --- /dev/null +++ b/docs-xml/smbdotconf/winbind/netutralizent4emulation.xml @@ -0,0 +1,18 @@ +<samba:parameter name="neutralize nt4 emulation" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option controls whether winbindd sends + the NETLOGON_NEG_NEUTRALIZE_NT4_EMULATION flag in order to bypass + the NT4 emulation of a domain controller.</para> + + <para>Typically you should not need set this. + It can be useful for upgrades from NT4 to AD domains.</para> + + <para>The behavior can be controlled per netbios domain + by using 'neutralize nt4 emulation:NETBIOSDOMAIN = yes' as option.</para> +</description> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/winbind/rejectmd5servers.xml b/docs-xml/smbdotconf/winbind/rejectmd5servers.xml new file mode 100644 index 0000000..3bc4eaf --- /dev/null +++ b/docs-xml/smbdotconf/winbind/rejectmd5servers.xml @@ -0,0 +1,25 @@ +<samba:parameter name="reject md5 servers" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option controls whether winbindd requires support + for aes support for the netlogon secure channel.</para> + + <para>The following flags will be required NETLOGON_NEG_ARCFOUR, + NETLOGON_NEG_SUPPORTS_AES, NETLOGON_NEG_PASSWORD_SET2 and NETLOGON_NEG_AUTHENTICATED_RPC.</para> + + <para>You can set this to yes if all domain controllers support aes. + This will prevent downgrade attacks.</para> + + <para>The behavior can be controlled per netbios domain + by using 'reject md5 servers:NETBIOSDOMAIN = no' as option.</para> + + <para>The default changed from 'no' to 'yes, with the patches for CVE-2022-38023, + see https://bugzilla.samba.org/show_bug.cgi?id=15240</para> + + <para>This option overrides the <smbconfoption name="require strong key"/> option.</para> +</description> + +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/winbind/requirestrongkey.xml b/docs-xml/smbdotconf/winbind/requirestrongkey.xml new file mode 100644 index 0000000..9c1c1d7 --- /dev/null +++ b/docs-xml/smbdotconf/winbind/requirestrongkey.xml @@ -0,0 +1,26 @@ +<samba:parameter name="require strong key" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option controls whether winbindd requires support + for md5 strong key support for the netlogon secure channel.</para> + + <para>The following flags will be required NETLOGON_NEG_STRONG_KEYS, + NETLOGON_NEG_ARCFOUR and NETLOGON_NEG_AUTHENTICATED_RPC.</para> + + <para>You can set this to no if some domain controllers only support des. + This might allows weak crypto to be negotiated, may via downgrade attacks.</para> + + <para>The behavior can be controlled per netbios domain + by using 'require strong key:NETBIOSDOMAIN = no' as option.</para> + + <para>Note for active directory domain this option is hardcoded to 'yes'</para> + + <para>This option is over-ridden by the <smbconfoption name="reject md5 servers"/> option.</para> + + <para>This option overrides the <smbconfoption name="client schannel"/> option.</para> +</description> + +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/winbind/templatehomedir.xml b/docs-xml/smbdotconf/winbind/templatehomedir.xml new file mode 100644 index 0000000..2801edf --- /dev/null +++ b/docs-xml/smbdotconf/winbind/templatehomedir.xml @@ -0,0 +1,17 @@ +<samba:parameter name="template homedir" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>When filling out the user information for a Windows NT + user, the <citerefentry><refentrytitle>winbindd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> daemon uses this + parameter to fill in the home directory for that user. If the + string <parameter moreinfo="none">%D</parameter> is present it + is substituted with the user's Windows NT domain name. If the + string <parameter moreinfo="none">%U</parameter> is present it + is substituted with the user's Windows NT user name.</para> +</description> + +<value type="default">/home/%D/%U</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/winbind/templateshell.xml b/docs-xml/smbdotconf/winbind/templateshell.xml new file mode 100644 index 0000000..891c424 --- /dev/null +++ b/docs-xml/smbdotconf/winbind/templateshell.xml @@ -0,0 +1,13 @@ +<samba:parameter name="template shell" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>When filling out the user information for a Windows NT + user, the <citerefentry><refentrytitle>winbindd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> daemon uses this + parameter to fill in the login shell for that user.</para> +</description> + +<value type="default">/bin/false</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/winbind/winbindcachetime.xml b/docs-xml/smbdotconf/winbind/winbindcachetime.xml new file mode 100644 index 0000000..2f69de3 --- /dev/null +++ b/docs-xml/smbdotconf/winbind/winbindcachetime.xml @@ -0,0 +1,20 @@ +<samba:parameter name="winbind cache time" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter specifies the number of + seconds the <citerefentry><refentrytitle>winbindd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> daemon will cache + user and group information before querying a Windows NT server + again.</para> + + <para> + This does not apply to authentication requests, these are always + evaluated in real time unless the <smbconfoption name="winbind + offline logon"/> option has been enabled. + </para> +</description> + +<value type="default">300</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/winbind/winbinddsocketdirectory.xml b/docs-xml/smbdotconf/winbind/winbinddsocketdirectory.xml new file mode 100644 index 0000000..7827d36 --- /dev/null +++ b/docs-xml/smbdotconf/winbind/winbinddsocketdirectory.xml @@ -0,0 +1,15 @@ +<samba:parameter name="winbindd socket directory" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This setting controls the location of the winbind daemon's socket.</para> + <para>Except within automated test scripts, this should not be + altered, as the client tools (nss_winbind etc) do not honour + this parameter. Client tools must then be advised of the + altered path with the WINBINDD_SOCKET_DIR environment + variable.</para> +</description> + +<value type="default">&pathconfig.WINBINDD_SOCKET_DIR;</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/winbind/winbindenumgroups.xml b/docs-xml/smbdotconf/winbind/winbindenumgroups.xml new file mode 100644 index 0000000..c3339e1 --- /dev/null +++ b/docs-xml/smbdotconf/winbind/winbindenumgroups.xml @@ -0,0 +1,19 @@ +<samba:parameter name="winbind enum groups" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>On large installations using <citerefentry><refentrytitle>winbindd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> it may be necessary to suppress + the enumeration of groups through the <command moreinfo="none">setgrent()</command>, + <command moreinfo="none">getgrent()</command> and + <command moreinfo="none">endgrent()</command> group of system calls. If + the <parameter moreinfo="none">winbind enum groups</parameter> parameter is + <constant>no</constant>, calls to the <command moreinfo="none">getgrent()</command> system + call will not return any data. </para> + +<warning><para>Turning off group enumeration may cause some programs to behave oddly. </para></warning> +</description> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/winbind/winbindenumusers.xml b/docs-xml/smbdotconf/winbind/winbindenumusers.xml new file mode 100644 index 0000000..5ce53d6 --- /dev/null +++ b/docs-xml/smbdotconf/winbind/winbindenumusers.xml @@ -0,0 +1,23 @@ +<samba:parameter name="winbind enum users" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>On large installations using <citerefentry><refentrytitle>winbindd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> it may be + necessary to suppress the enumeration of users through the <command moreinfo="none">setpwent()</command>, + <command moreinfo="none">getpwent()</command> and + <command moreinfo="none">endpwent()</command> group of system calls. If + the <parameter moreinfo="none">winbind enum users</parameter> parameter is + <constant>no</constant>, calls to the <command moreinfo="none">getpwent</command> system call + will not return any data. </para> + +<warning><para>Turning off user + enumeration may cause some programs to behave oddly. For + example, the finger program relies on having access to the + full user list when searching for matching + usernames. </para></warning> +</description> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/winbind/winbindexpandgroups.xml b/docs-xml/smbdotconf/winbind/winbindexpandgroups.xml new file mode 100644 index 0000000..5a05ecf --- /dev/null +++ b/docs-xml/smbdotconf/winbind/winbindexpandgroups.xml @@ -0,0 +1,35 @@ +<samba:parameter name="winbind expand groups" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option controls the maximum depth that winbindd + will traverse when flattening nested group memberships + of Windows domain groups. This is different from the + <smbconfoption name="winbind nested groups"/> option + which implements the Windows NT4 model of local group + nesting. The "winbind expand groups" + parameter specifically applies to the membership of + domain groups.</para> + + <para>This option also affects the return of non nested + group memberships of Windows domain users. With the + new default "winbind expand groups = 0" winbind does + not query group memberships at all.</para> + + <para>Be aware that a high value for this parameter can + result in system slowdown as the main parent winbindd daemon + must perform the group unrolling and will be unable to answer + incoming NSS or authentication requests during this time.</para> + + <para>The default value was changed from 1 to 0 with Samba 4.2. + Some broken applications (including some implementations of + newgrp and sg) calculate the group memberships of + users by traversing groups, such applications will require + "winbind expand groups = 1". But the new default makes winbindd + more reliable as it doesn't require SAMR access to domain + controllers of trusted domains.</para> +</description> + +<value type="default">0</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/winbind/winbindignoredomains.xml b/docs-xml/smbdotconf/winbind/winbindignoredomains.xml new file mode 100644 index 0000000..af99222 --- /dev/null +++ b/docs-xml/smbdotconf/winbind/winbindignoredomains.xml @@ -0,0 +1,14 @@ +<samba:parameter name="winbind:ignore domains" + context="G" + type="cmdlist" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>Allows one to enter a list of trusted domains winbind should + ignore (untrust). This can avoid the overhead of resources from + attempting to login to DCs that should not be communicated with. + </para> + +</description> +<value type="default"></value> +<value type="example">DOMAIN1, DOMAIN2</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/winbind/winbindmaxclients.xml b/docs-xml/smbdotconf/winbind/winbindmaxclients.xml new file mode 100644 index 0000000..847a588 --- /dev/null +++ b/docs-xml/smbdotconf/winbind/winbindmaxclients.xml @@ -0,0 +1,19 @@ +<samba:parameter name="winbind max clients" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter specifies the maximum number of clients + the <citerefentry><refentrytitle>winbindd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> daemon can connect with. + The parameter is not a hard limit. + The <citerefentry><refentrytitle>winbindd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> daemon configures + itself to be able to accept at least that many connections, + and if the limit is reached, an attempt is made to disconnect + idle clients. + </para> +</description> + +<value type="default">200</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/winbind/winbindmaxdomainconnections.xml b/docs-xml/smbdotconf/winbind/winbindmaxdomainconnections.xml new file mode 100644 index 0000000..be39143 --- /dev/null +++ b/docs-xml/smbdotconf/winbind/winbindmaxdomainconnections.xml @@ -0,0 +1,24 @@ +<samba:parameter name="winbind max domain connections" + context="G" + type="integer" + function="_winbind_max_domain_connections" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter specifies the maximum number of simultaneous + connections that the <citerefentry><refentrytitle>winbindd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> daemon should open to the + domain controller of one domain. + Setting this parameter to a value greater than 1 can improve + scalability with many simultaneous winbind requests, + some of which might be slow. + </para> + <para> + Note that if <smbconfoption name="winbind offline logon"/> is set to + <constant>Yes</constant>, then only one + DC connection is allowed per domain, regardless of this setting. + </para> +</description> + +<value type="default">1</value> +<value type="example">10</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/winbind/winbindnestedgroups.xml b/docs-xml/smbdotconf/winbind/winbindnestedgroups.xml new file mode 100644 index 0000000..a4a03eb --- /dev/null +++ b/docs-xml/smbdotconf/winbind/winbindnestedgroups.xml @@ -0,0 +1,16 @@ +<samba:parameter name="winbind nested groups" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>If set to yes, this parameter activates the support for nested + groups. Nested groups are also called local groups or + aliases. They work like their counterparts in Windows: Nested + groups are defined locally on any machine (they are shared + between DC's through their SAM) and can contain users and + global groups from any trusted SAM. To be able to use nested + groups, you need to run nss_winbind.</para> +</description> + +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/winbind/winbindnormalizenames.xml b/docs-xml/smbdotconf/winbind/winbindnormalizenames.xml new file mode 100644 index 0000000..362f488 --- /dev/null +++ b/docs-xml/smbdotconf/winbind/winbindnormalizenames.xml @@ -0,0 +1,30 @@ +<samba:parameter name="winbind normalize names" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter controls whether winbindd will replace + whitespace in user and group names with an underscore (_) character. + For example, whether the name "Space Kadet" should be + replaced with the string "space_kadet". + Frequently Unix shell scripts will have difficulty with usernames + contains whitespace due to the default field separator in the shell. + If your domain possesses names containing the underscore character, + this option may cause problems unless the name aliasing feature + is supported by your nss_info plugin. + </para> + + <para>This feature also enables the name aliasing API which can + be used to make domain user and group names to a non-qualified + version. Please refer to the manpage for the configured + idmap and nss_info plugin for the specifics on how to configure + name aliasing for a specific configuration. Name aliasing takes + precedence (and is mutually exclusive) over the whitespace + replacement mechanism discussed previously. + </para> + +</description> + +<value type="default">no</value> +<value type="example">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/winbind/winbindnssinfo.xml b/docs-xml/smbdotconf/winbind/winbindnssinfo.xml new file mode 100644 index 0000000..e6d17c2 --- /dev/null +++ b/docs-xml/smbdotconf/winbind/winbindnssinfo.xml @@ -0,0 +1,38 @@ +<samba:parameter name="winbind nss info" + context="G" + type="cmdlist" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + + <para>This parameter is designed to control how Winbind retrieves Name + Service Information to construct a user's home directory and login shell. + Currently the following settings are available: + + <itemizedlist> + <listitem> + <para><parameter moreinfo="none">template</parameter> + - The default, using the parameters of <parameter moreinfo="none">template + shell</parameter> and <parameter moreinfo="none">template homedir</parameter>) + </para> + </listitem> + + <listitem> + <para><parameter moreinfo="none"><sfu | sfu20 | rfc2307 ></parameter> + - When Samba is running in security = ads and your Active Directory + Domain Controller does support the Microsoft "Services for Unix" (SFU) + LDAP schema, winbind can retrieve the login shell and the home + directory attributes directly from your Directory Server. For SFU 3.0 or 3.5 simply choose + "sfu", if you use SFU 2.0 please choose "sfu20".</para> + <para>Note that for the idmap backend <refentrytitle>idmap_ad</refentrytitle> + you need to configure those settings in the idmap configuration section. + Make sure to consult the documentation of the idmap backend that you are using. + </para> + </listitem> + </itemizedlist> + +</para> +</description> + +<value type="default">template</value> +<value type="example">sfu</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/winbind/winbindofflinelogon.xml b/docs-xml/smbdotconf/winbind/winbindofflinelogon.xml new file mode 100644 index 0000000..9cf1249 --- /dev/null +++ b/docs-xml/smbdotconf/winbind/winbindofflinelogon.xml @@ -0,0 +1,17 @@ +<samba:parameter name="winbind offline logon" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + + <para>This parameter is designed to control whether Winbind should + allow one to login with the <parameter moreinfo="none">pam_winbind</parameter> + module using Cached Credentials. If enabled, winbindd will store user credentials + from successful logins encrypted in a local cache. + </para> + +</description> + +<value type="default">no</value> +<value type="example">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/winbind/winbindreconnectdelay.xml b/docs-xml/smbdotconf/winbind/winbindreconnectdelay.xml new file mode 100644 index 0000000..f26fd5e --- /dev/null +++ b/docs-xml/smbdotconf/winbind/winbindreconnectdelay.xml @@ -0,0 +1,14 @@ +<samba:parameter name="winbind reconnect delay" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter specifies the number of + seconds the <citerefentry><refentrytitle>winbindd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> daemon will wait between + attempts to contact a Domain controller for a domain that is + determined to be down or not contactable.</para> +</description> + +<value type="default">30</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/winbind/winbindrefreshtickets.xml b/docs-xml/smbdotconf/winbind/winbindrefreshtickets.xml new file mode 100644 index 0000000..f6bb738 --- /dev/null +++ b/docs-xml/smbdotconf/winbind/winbindrefreshtickets.xml @@ -0,0 +1,15 @@ +<samba:parameter name="winbind refresh tickets" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + + <para>This parameter is designed to control whether Winbind should refresh Kerberos Tickets + retrieved using the <parameter moreinfo="none">pam_winbind</parameter> module. + +</para> +</description> + +<value type="default">no</value> +<value type="example">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/winbind/winbindrequesttimeout.xml b/docs-xml/smbdotconf/winbind/winbindrequesttimeout.xml new file mode 100644 index 0000000..8c7ec56 --- /dev/null +++ b/docs-xml/smbdotconf/winbind/winbindrequesttimeout.xml @@ -0,0 +1,15 @@ +<samba:parameter name="winbind request timeout" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter specifies the number of + seconds the <citerefentry><refentrytitle>winbindd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> daemon will wait before + disconnecting either a client connection with no outstanding + requests (idle) or a client connection with a request that has + remained outstanding (hung) for longer than this number of seconds.</para> +</description> + +<value type="default">60</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/winbind/winbindrpconly.xml b/docs-xml/smbdotconf/winbind/winbindrpconly.xml new file mode 100644 index 0000000..50795ac --- /dev/null +++ b/docs-xml/smbdotconf/winbind/winbindrpconly.xml @@ -0,0 +1,15 @@ +<samba:parameter name="winbind rpc only" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + + <para> + Setting this parameter to <value type="example">yes</value> forces + winbindd to use RPC instead of LDAP to retrieve information from Domain + Controllers. + </para> + +</description> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/winbind/winbindscantrusteddomains.xml b/docs-xml/smbdotconf/winbind/winbindscantrusteddomains.xml new file mode 100644 index 0000000..12e94cb --- /dev/null +++ b/docs-xml/smbdotconf/winbind/winbindscantrusteddomains.xml @@ -0,0 +1,29 @@ +<samba:parameter name="winbind scan trusted domains" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para> + This option only takes effect when the <smbconfoption name="security"/> option is set to + <constant>domain</constant> or <constant>ads</constant>. + If it is set to yes, winbindd periodically tries to scan for new + trusted domains and adds them to a global list inside of winbindd. + The list can be extracted with <command>wbinfo --trusted-domains --verbose</command>. + Setting it to yes matches the behaviour of Samba 4.7 and older.</para> + + <para>The construction of that global list is not reliable and often + incomplete in complex trust setups. In most situations the list is + not needed any more for winbindd to operate correctly. + E.g. for plain file serving via SMB using a simple idmap setup + with <constant>autorid</constant>, <constant>tdb</constant> or <constant>ad</constant>. + However some more complex setups require the list, e.g. + if you specify idmap backends for specific domains. + Some pam_winbind setups may also require the global list.</para> + + <para>If you have a setup that doesn't require the global list, you should set + <smbconfoption name="winbind scan trusted domains">no</smbconfoption>. + </para> +</description> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/winbind/winbindsealedpipes.xml b/docs-xml/smbdotconf/winbind/winbindsealedpipes.xml new file mode 100644 index 0000000..016ac9b --- /dev/null +++ b/docs-xml/smbdotconf/winbind/winbindsealedpipes.xml @@ -0,0 +1,15 @@ +<samba:parameter name="winbind sealed pipes" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option controls whether any requests from winbindd to domain controllers + pipe will be sealed. Disabling sealing can be useful for debugging + purposes.</para> + + <para>The behavior can be controlled per netbios domain + by using 'winbind sealed pipes:NETBIOSDOMAIN = no' as option.</para> +</description> + +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/winbind/winbindseparator.xml b/docs-xml/smbdotconf/winbind/winbindseparator.xml new file mode 100644 index 0000000..eda14f4 --- /dev/null +++ b/docs-xml/smbdotconf/winbind/winbindseparator.xml @@ -0,0 +1,20 @@ +<samba:parameter name="winbind separator" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter allows an admin to define the character + used when listing a username of the form of <replaceable>DOMAIN + </replaceable>\<replaceable>user</replaceable>. This parameter + is only applicable when using the <filename moreinfo="none">pam_winbind.so</filename> + and <filename moreinfo="none">nss_winbind.so</filename> modules for UNIX services. + </para> + + <para>Please note that setting this parameter to + causes problems + with group membership at least on glibc systems, as the character + + is used as a special character for NIS in /etc/group.</para> +</description> + +<value type="default">\</value> +<value type="example">+</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/winbind/winbindusedefaultdomain.xml b/docs-xml/smbdotconf/winbind/winbindusedefaultdomain.xml new file mode 100644 index 0000000..186398e --- /dev/null +++ b/docs-xml/smbdotconf/winbind/winbindusedefaultdomain.xml @@ -0,0 +1,22 @@ +<samba:parameter name="winbind use default domain" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter specifies whether the + <citerefentry><refentrytitle>winbindd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> daemon should operate on users + without domain component in their username. Users without a domain + component are treated as is part of the winbindd server's own + domain. While this does not benefit Windows users, it makes SSH, FTP and + e-mail function in a way much closer to the way they + would in a native unix system.</para> + <para>This option should be avoided if possible. It can cause confusion + about responsibilities for a user or group. In many situations it is + not clear whether winbind or /etc/passwd should be seen as authoritative + for a user, likewise for groups.</para> +</description> + +<value type="default">no</value> +<value type="example">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/winbind/winbindusekrb5enterpriseprincipals.xml b/docs-xml/smbdotconf/winbind/winbindusekrb5enterpriseprincipals.xml new file mode 100644 index 0000000..d30b7f3 --- /dev/null +++ b/docs-xml/smbdotconf/winbind/winbindusekrb5enterpriseprincipals.xml @@ -0,0 +1,34 @@ +<samba:parameter name="winbind use krb5 enterprise principals" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>winbindd is able to get kerberos tickets for + pam_winbind with krb5_auth or wbinfo -K/--krb5auth=. + </para> + + <para>winbindd (at least on a domain member) is never be able + to have a complete picture of the trust topology (which is managed by the DCs). + There might be uPNSuffixes and msDS-SPNSuffixes values, + which don't belong to any AD domain at all. + </para> + + <para>With <smbconfoption name="winbind scan trusted domains">no</smbconfoption> + winbindd doesn't even get a complete picture of the topology. + </para> + + <para>It is not really required to know about the trust topology. + We can just rely on the [K]DCs of our primary domain (e.g. PRIMARY.A.EXAMPLE.COM) + and use enterprise principals e.g. upnfromB@B.EXAMPLE.COM@PRIMARY.A.EXAMPLE.COM + and follow the WRONG_REALM referrals in order to find the correct DC. + The final principal might be userfromB@INTERNALB.EXAMPLE.PRIVATE. + </para> + + <para>With <smbconfoption name="winbind use krb5 enterprise principals">yes</smbconfoption> + winbindd enterprise principals will be used. + </para> +</description> + +<value type="default">yes</value> +<value type="example">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/wins/dnsproxy.xml b/docs-xml/smbdotconf/wins/dnsproxy.xml new file mode 100644 index 0000000..75d4446 --- /dev/null +++ b/docs-xml/smbdotconf/wins/dnsproxy.xml @@ -0,0 +1,24 @@ +<samba:parameter name="dns proxy" + context="G" + type="boolean" + function="wins_dns_proxy" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>Specifies that <citerefentry><refentrytitle>nmbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> when acting as a WINS server and + finding that a NetBIOS name has not been registered, should treat the + NetBIOS name word-for-word as a DNS name and do a lookup with the DNS server + for that name on behalf of the name-querying client.</para> + + <para>Note that the maximum length for a NetBIOS name is 15 + characters, so the DNS name (or DNS alias) can likewise only be + 15 characters, maximum.</para> + + <para><command moreinfo="none">nmbd</command> spawns a second copy of itself to do the + DNS name lookup requests, as doing a name lookup is a blocking + action.</para> +</description> + +<related>wins support</related> +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/wins/maxwinsttl.xml b/docs-xml/smbdotconf/wins/maxwinsttl.xml new file mode 100644 index 0000000..2427eec --- /dev/null +++ b/docs-xml/smbdotconf/wins/maxwinsttl.xml @@ -0,0 +1,16 @@ +<samba:parameter name="max wins ttl" + type="integer" + context="G" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option tells <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> when acting as a WINS server + (<smbconfoption name="wins support">yes</smbconfoption>) what the maximum + 'time to live' of NetBIOS names that <command moreinfo="none">nmbd</command> + will grant will be (in seconds). You should never need to change this + parameter. The default is 6 days (518400 seconds).</para> +</description> + +<related>min wins ttl</related> +<value type="default">518400</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/wins/minwinsttl.xml b/docs-xml/smbdotconf/wins/minwinsttl.xml new file mode 100644 index 0000000..8991757 --- /dev/null +++ b/docs-xml/smbdotconf/wins/minwinsttl.xml @@ -0,0 +1,15 @@ +<samba:parameter name="min wins ttl" + context="G" + type="integer" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This option tells <citerefentry><refentrytitle>nmbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> + when acting as a WINS server (<smbconfoption name="wins support">yes</smbconfoption>) what the minimum 'time to live' + of NetBIOS names that <command moreinfo="none">nmbd</command> will grant will be (in + seconds). You should never need to change this parameter. The default + is 6 hours (21600 seconds).</para> +</description> + +<value type="default">21600</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/wins/nbtd-wins_prepend1bto1cqueries.xml b/docs-xml/smbdotconf/wins/nbtd-wins_prepend1bto1cqueries.xml new file mode 100644 index 0000000..e8d548e --- /dev/null +++ b/docs-xml/smbdotconf/wins/nbtd-wins_prepend1bto1cqueries.xml @@ -0,0 +1,16 @@ +<samba:parameter name="nbtd:wins_prepend1Bto1Cqueries" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>Normally queries for 0x1C names (all logon servers for a domain) + will return the first address of the 0x1B names (domain master browser + and PDC) as first address in the result list. As many client only use + the first address in the list by default, all clients will use the same + server (the PDC). Windows servers have an option to disable this + behavior (since Windows 2000 Service Pack 2). + </para> +</description> + +<value type="default">yes</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/wins/nbtd-wins_randomize1clist.xml b/docs-xml/smbdotconf/wins/nbtd-wins_randomize1clist.xml new file mode 100644 index 0000000..2566062 --- /dev/null +++ b/docs-xml/smbdotconf/wins/nbtd-wins_randomize1clist.xml @@ -0,0 +1,19 @@ +<samba:parameter name="nbtd:wins_wins_randomize1Clist" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>Normally queries for 0x1C names will return the addresses in the + same order as they're stored in the database, that means first all + addresses which have been directly registered at the local wins server + and then all addresses registered at other servers. Windows servers + have an option to change this behavior and randomize the returned + addresses. Set this parameter to "yes" and Samba will sort the + address list depending on the client address and the matching bits of + the addresses, the first address is randomized based on depending on + the "nbtd:wins_randomize1Clist_mask" parameter. + </para> +</description> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/wins/nbtd-wins_randomize1clist_mask.xml b/docs-xml/smbdotconf/wins/nbtd-wins_randomize1clist_mask.xml new file mode 100644 index 0000000..ea3978c --- /dev/null +++ b/docs-xml/smbdotconf/wins/nbtd-wins_randomize1clist_mask.xml @@ -0,0 +1,16 @@ +<samba:parameter name="nbtd:wins_randomize1Clist_mask" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>If the "nbtd:wins_randomize1Clist" parameter is set to "yes", + then randomizing of the first returned address is based on the + specified netmask. If there are addresses which are in the same subnet + as the client address, the first returned address is randomly chosen + out them. Otherwise the first returned address is randomly chosen out + of all addresses. + </para> +</description> + +<value type="default">255.255.255.0</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/wins/winsdb-localowner.xml b/docs-xml/smbdotconf/wins/winsdb-localowner.xml new file mode 100644 index 0000000..c5a674f --- /dev/null +++ b/docs-xml/smbdotconf/wins/winsdb-localowner.xml @@ -0,0 +1,12 @@ +<samba:parameter name="winsdb:local_owner" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This specifies the address that is stored in the winsOwner attribute, of + locally registered winsRecord-objects. + The default is to use the ip-address of the first network interface. + </para> +</description> + +</samba:parameter> diff --git a/docs-xml/smbdotconf/wins/winsdb-nosync.xml b/docs-xml/smbdotconf/wins/winsdb-nosync.xml new file mode 100644 index 0000000..d66aa09 --- /dev/null +++ b/docs-xml/smbdotconf/wins/winsdb-nosync.xml @@ -0,0 +1,11 @@ +<samba:parameter name="winsdb:dbnosync" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This parameter disables fsync() after changes of the WINS database. + </para> +</description> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/wins/winshook.xml b/docs-xml/smbdotconf/wins/winshook.xml new file mode 100644 index 0000000..3dcf5d7 --- /dev/null +++ b/docs-xml/smbdotconf/wins/winshook.xml @@ -0,0 +1,58 @@ +<samba:parameter name="wins hook" + context="G" + type="string" + substitution="1" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>When Samba is running as a WINS server this + allows you to call an external program for all changes to the + WINS database. The primary use for this option is to allow the + dynamic update of external name resolution databases such as + dynamic DNS.</para> + + <para>The wins hook parameter specifies the name of a script + or executable that will be called as follows:</para> + + <para><command moreinfo="none">wins_hook operation name nametype ttl IP_list</command></para> + + <itemizedlist> + <listitem> + <para>The first argument is the operation and is + one of "add", "delete", or + "refresh". In most cases the operation + can be ignored as the rest of the parameters + provide sufficient information. Note that + "refresh" may sometimes be called when + the name has not previously been added, in that + case it should be treated as an add.</para> + </listitem> + + <listitem> + <para>The second argument is the NetBIOS name. If the + name is not a legal name then the wins hook is not called. + Legal names contain only letters, digits, hyphens, underscores + and periods.</para> + </listitem> + + <listitem> + <para>The third argument is the NetBIOS name + type as a 2 digit hexadecimal number. </para> + </listitem> + + <listitem> + <para>The fourth argument is the TTL (time to live) + for the name in seconds.</para> + </listitem> + + <listitem> + <para>The fifth and subsequent arguments are the IP + addresses currently registered for that name. If this list is + empty then the name should be deleted.</para> + </listitem> + </itemizedlist> + + <para>An example script that calls the BIND dynamic DNS update + program <command moreinfo="none">nsupdate</command> is provided in the examples + directory of the Samba source code. </para> +</description> +</samba:parameter> diff --git a/docs-xml/smbdotconf/wins/winsproxy.xml b/docs-xml/smbdotconf/wins/winsproxy.xml new file mode 100644 index 0000000..d240c21 --- /dev/null +++ b/docs-xml/smbdotconf/wins/winsproxy.xml @@ -0,0 +1,12 @@ +<samba:parameter name="wins proxy" + context="G" + type="boolean" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This is a boolean that controls if <citerefentry><refentrytitle>nmbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> will respond to broadcast name + queries on behalf of other hosts. You may need to set this + to <constant>yes</constant> for some older clients.</para> +</description> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/wins/winsserver.xml b/docs-xml/smbdotconf/wins/winsserver.xml new file mode 100644 index 0000000..d323b38 --- /dev/null +++ b/docs-xml/smbdotconf/wins/winsserver.xml @@ -0,0 +1,34 @@ +<samba:parameter name="wins server" + context="G" + type="cmdlist" + function="wins_server_list" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This specifies the IP address (or DNS name: IP + address for preference) of the WINS server that <citerefentry><refentrytitle>nmbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> should register with. If you have a WINS server on + your network then you should set this to the WINS server's IP.</para> + + <para>You should point this at your WINS server if you have a + multi-subnetted network.</para> + + <para>If you want to work in multiple namespaces, you can + give every wins server a 'tag'. For each tag, only one + (working) server will be queried for a name. The tag should be + separated from the ip address by a colon. + </para> + + <note><para>You need to set up Samba to point + to a WINS server if you have multiple subnets and wish cross-subnet + browsing to work correctly.</para></note> + <para>See the chapter in the Samba3-HOWTO on Network Browsing.</para> +</description> + +<value type="default"></value> +<value type="example">mary:192.9.200.1 fred:192.168.3.199 mary:192.168.2.61 + <comment>For this example when querying a certain name, 192.19.200.1 will + be asked first and if that doesn't respond 192.168.2.61. If either + of those doesn't know the name 192.168.3.199 will be queried.</comment></value> + +<value type="example">192.9.200.1 192.168.2.61</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/wins/winssupport.xml b/docs-xml/smbdotconf/wins/winssupport.xml new file mode 100644 index 0000000..c1c7fed --- /dev/null +++ b/docs-xml/smbdotconf/wins/winssupport.xml @@ -0,0 +1,16 @@ +<samba:parameter name="wins support" + type="boolean" + context="G" + function="we_are_a_wins_server" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + <description> + <para>This boolean controls if the <citerefentry><refentrytitle>nmbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> process in Samba will act as a WINS server. You should + not set this to <constant>yes</constant> unless you have a multi-subnetted network and + you wish a particular <command moreinfo="none">nmbd</command> to be your WINS server. + Note that you should <emphasis>NEVER</emphasis> set this to <constant>yes</constant> + on more than one machine in your network.</para> + +</description> +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/wins/wreplsrv-periodic_interval.xml b/docs-xml/smbdotconf/wins/wreplsrv-periodic_interval.xml new file mode 100644 index 0000000..a3414e3 --- /dev/null +++ b/docs-xml/smbdotconf/wins/wreplsrv-periodic_interval.xml @@ -0,0 +1,14 @@ +<samba:parameter name="wreplsrv:periodic_interval" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This maximum interval in seconds between 2 periodically scheduled runs + where we check for wins.ldb changes and do push notifications to our + push partners. Also wins_config.ldb changes are checked in that + interval and partner configuration reloads are done. + </para> +</description> + +<value type="default">15</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/wins/wreplsrv-propagate_name_releases.xml b/docs-xml/smbdotconf/wins/wreplsrv-propagate_name_releases.xml new file mode 100644 index 0000000..9633150 --- /dev/null +++ b/docs-xml/smbdotconf/wins/wreplsrv-propagate_name_releases.xml @@ -0,0 +1,23 @@ +<samba:parameter name="wreplsrv:propagate name releases" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>If this parameter is enabled, then + explicit (from the client) and implicit (via the scavenging) name releases + are propagated to the other servers directly, even if there are still other + addresses active, this applies to SPECIAL GROUP (2) and MULTIHOMED (3) entries. + Also the replication conflict merge algorithm for SPECIAL GROUP (2) entries + discards replica addresses where the address owner is the local server, + if the address was not stored locally before. The merge result is + propagated directly in case an address was discarded. + A Windows servers doesn't propagate name releases of SPECIAL GROUP (2) + and MULTIHOMED (3) entries directly, which means that Windows servers may + return different results to name queries for SPECIAL GROUP (2) and MULTIHOMED (3) + names. The option doesn't have much negative impact if Windows servers are + around, but be aware that they might return unexpected results. + </para> +</description> + +<value type="default">no</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/wins/wreplsrv-scavenging_interval.xml b/docs-xml/smbdotconf/wins/wreplsrv-scavenging_interval.xml new file mode 100644 index 0000000..d05170e --- /dev/null +++ b/docs-xml/smbdotconf/wins/wreplsrv-scavenging_interval.xml @@ -0,0 +1,11 @@ +<samba:parameter name="wreplsrv:scavenging_interval" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This is the interval in s between 2 scavenging runs which + clean up the WINS database and changes the states of expired name records. + Defaults to half of the value of wreplsrv:renew_interval. + </para> +</description> +</samba:parameter> diff --git a/docs-xml/smbdotconf/wins/wreplsrv-tombstone_extra_timeout.xml b/docs-xml/smbdotconf/wins/wreplsrv-tombstone_extra_timeout.xml new file mode 100644 index 0000000..2320854 --- /dev/null +++ b/docs-xml/smbdotconf/wins/wreplsrv-tombstone_extra_timeout.xml @@ -0,0 +1,12 @@ +<samba:parameter name="wreplsrv:tombstone_extra_timeout" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This is the time in s the server needs to be up till we'll remove + tombstone records from our database. Defaults to 3 days. + </para> +</description> + +<value type="default">259200</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/wins/wreplsrv-tombstone_interval.xml b/docs-xml/smbdotconf/wins/wreplsrv-tombstone_interval.xml new file mode 100644 index 0000000..ee7d727 --- /dev/null +++ b/docs-xml/smbdotconf/wins/wreplsrv-tombstone_interval.xml @@ -0,0 +1,12 @@ +<samba:parameter name="wreplsrv:tombstone_interval" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This is the interval in s till released records of the WINS + server become tombstone. Defaults to 6 days. + </para> +</description> + +<value type="default">518400</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/wins/wreplsrv-tombstone_timeout.xml b/docs-xml/smbdotconf/wins/wreplsrv-tombstone_timeout.xml new file mode 100644 index 0000000..b17def9 --- /dev/null +++ b/docs-xml/smbdotconf/wins/wreplsrv-tombstone_timeout.xml @@ -0,0 +1,12 @@ +<samba:parameter name="wreplsrv:tombstone_timeout" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This is the interval in s till tombstone records are deleted from + the WINS database. Defaults to 1 day. + </para> +</description> + +<value type="default">86400</value> +</samba:parameter> diff --git a/docs-xml/smbdotconf/wins/wreplsrv-verify_interval.xml b/docs-xml/smbdotconf/wins/wreplsrv-verify_interval.xml new file mode 100644 index 0000000..1efd97b --- /dev/null +++ b/docs-xml/smbdotconf/wins/wreplsrv-verify_interval.xml @@ -0,0 +1,13 @@ +<samba:parameter name="wreplsrv:verify_interval" + context="G" + type="string" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> +<description> + <para>This is the interval in s till we verify active replica records + with the owning WINS server. Unfortunately not implemented yet. + Defaults to 24 days. + </para> +</description> + +<value type="default">2073600</value> +</samba:parameter> diff --git a/docs-xml/structure.svg b/docs-xml/structure.svg new file mode 100644 index 0000000..82dfd46 --- /dev/null +++ b/docs-xml/structure.svg @@ -0,0 +1,585 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.0" + width="33.269001cm" + height="34.450001cm" + viewBox="0.35 1.35 33.619 35.8" + id="svg2"> + <defs + id="defs197" /> + <rect + width="10.55" + height="1.9" + x="3.375" + y="1.4" + id="rect4" + style="fill:#ffffff;stroke:none;stroke-width:0" /> + <rect + width="13.364128" + height="1.8878119" + x="3.381094" + y="1.406094" + id="rect6" + style="fill:none;stroke:#000000;stroke-width:0.11218806" /> + <text + x="4.2309999" + y="2.493" + id="text8" + style="font-size:0.80000001px;font-style:normal;font-weight:400;text-anchor:start;fill:#000000;font-family:sans">Samba DocBook Source (XML)</text> + <polygon + points="4.653,6.75 12.794,6.75 12.066,8.75 3.925,8.75 4.653,6.75 " + id="polygon10" + style="fill:#ffffff;stroke:none;stroke-width:0.1" /> + <polygon + points="4.653,6.75 12.794,6.75 12.066,8.75 3.925,8.75 4.653,6.75 " + transform="matrix(1.211345,0,0,0.9951043,-0.8246336,3.7941591e-2)" + id="polygon12" + style="fill:none;stroke:#000000;stroke-width:0.1" /> + <text + x="5.1760001" + y="7.8920002" + id="text14" + style="font-size:0.80000001px;font-style:normal;font-weight:400;text-anchor:start;fill:#000000;font-family:sans">expand-sambadoc.xsl</text> + <line + x1="8.6499996" + y1="3.3" + x2="8.7130003" + y2="6.263" + stroke="#000000" + stroke-width="0.100" + id="line16" + style="stroke:#000000;stroke-width:0.1" /> + <polygon + points="8.721,6.638 8.461,6.144 8.713,6.263 8.96,6.133 8.721,6.638 " + id="polygon18" + style="fill:#000000;stroke:none;stroke-width:0.1" /> + <polygon + points="8.721,6.638 8.461,6.144 8.713,6.263 8.96,6.133 8.721,6.638 " + id="polygon20" + style="fill:none;stroke:#000000;stroke-width:0.1" /> + <rect + width="8.1999998" + height="1.9" + x="4.8499999" + y="11.65" + id="rect22" + style="fill:#ffffff;stroke:none;stroke-width:0" /> + <rect + width="10.289943" + height="1.8883237" + x="4.8558378" + y="11.655838" + id="rect24" + style="fill:none;stroke:#000000;stroke-width:0.11167629" /> + <text + x="5.6350002" + y="12.742" + id="text26" + style="font-size:0.80000001px;font-style:normal;font-weight:400;text-anchor:start;fill:#000000;font-family:sans">DocBook Source (XML)</text> + <line + x1="7.9499998" + y1="8.5500002" + x2="8.8009996" + y2="11.187" + stroke="#000000" + stroke-width="0.100" + id="line28" + style="stroke:#000000;stroke-width:0.1" /> + <polygon + points="8.916,11.544 8.524,11.144 8.801,11.187 9,10.991 8.916,11.544 " + id="polygon30" + style="fill:#000000;stroke:none;stroke-width:0.1" /> + <polygon + points="8.916,11.544 8.524,11.144 8.801,11.187 9,10.991 8.916,11.544 " + id="polygon32" + style="fill:none;stroke:#000000;stroke-width:0.1" /> + <rect + width="6.6999998" + height="1.9" + x="7" + y="21.700001" + id="rect34" + style="fill:#ffffff;stroke:none;stroke-width:0" /> + <rect + width="6.6999998" + height="1.9" + x="7" + y="21.700001" + id="rect36" + style="fill:none;stroke:#000000;stroke-width:0.1" /> + <text + x="7.704" + y="22.792999" + id="text38" + style="font-size:0.80000001px;font-style:normal;font-weight:400;text-anchor:start;fill:#000000;font-family:sans" /> + <text + x="7.704" + y="22.792999" + id="text5583" + style="font-size:0.80000001px;font-style:normal;font-weight:400;text-anchor:start;fill:#000000;font-family:sans" /> + <polygon + points="7.328,16.55 12.319,16.55 11.591,18.55 6.6,18.55 7.328,16.55 " + id="polygon40" + style="fill:#ffffff;stroke:none;stroke-width:0.1" /> + <polygon + points="7.328,16.55 12.319,16.55 11.591,18.55 6.6,18.55 7.328,16.55 " + transform="matrix(1.1005379,0,0,0.9976095,-0.6611594,4.1953777e-2)" + id="polygon42" + style="fill:none;stroke:#000000;stroke-width:0.1" /> + <text + x="7.3450627" + y="17.691999" + id="text44" + style="font-size:0.80000001px;font-style:normal;font-weight:400;text-anchor:start;fill:#000000;font-family:sans">xslt/man.xsl</text> + <line + x1="8.6999998" + y1="13.45" + x2="9.658" + y2="16.091999" + stroke="#000000" + stroke-width="0.100" + id="line46" + style="stroke:#000000;stroke-width:0.1" /> + <polygon + points="9.785,16.445 9.38,16.06 9.658,16.092 9.85,15.89 9.785,16.445 " + id="polygon48" + style="fill:#000000;stroke:none;stroke-width:0.1" /> + <polygon + points="9.785,16.445 9.38,16.06 9.658,16.092 9.85,15.89 9.785,16.445 " + id="polygon50" + style="fill:none;stroke:#000000;stroke-width:0.1" /> + <g + id="g5595"> + <line + style="stroke:#000000;stroke-width:0.1" + id="line52" + stroke-width="0.100" + stroke="#000000" + y2="21.247999" + x2="10.17" + y1="18.549999" + x1="9.0959997" /> + <polygon + points="10.309,21.596 9.891,21.224 10.17,21.248 10.356,21.039 10.309,21.596 " + id="polygon54" + style="fill:#000000;stroke:none;stroke-width:0.1" /> + <polygon + points="10.309,21.596 9.891,21.224 10.17,21.248 10.356,21.039 10.309,21.596 " + id="polygon56" + style="fill:none;stroke:#000000;stroke-width:0.1" /> + </g> + <polygon + points="18.853,16.6 27.394,16.6 26.666,18.6 18.125,18.6 18.853,16.6 " + id="polygon58" + style="fill:#ffffff;stroke:none;stroke-width:0.1" /> + <polygon + points="18.853,16.6 27.394,16.6 26.666,18.6 18.125,18.6 18.853,16.6 " + transform="matrix(1.1478017,0,0,0.9965254,-2.9687126,6.1153121e-2)" + id="polygon60" + style="fill:none;stroke:#000000;stroke-width:0.1" /> + <text + x="18.508806" + y="17.742001" + id="text62" + style="font-size:0.80000001px;font-style:normal;font-weight:400;text-anchor:start;fill:#000000;font-family:sans">db2latex (xslt/latex.xsl)</text> + <rect + width="5.3000002" + height="1.9" + x="20.75" + y="21.549999" + id="rect64" + style="fill:#ffffff;stroke:none;stroke-width:0" /> + <rect + width="5.7650704" + height="1.8958195" + x="20.75209" + y="21.55209" + id="rect66" + style="fill:none;stroke:#000000;stroke-width:0.10418041" /> + <text + x="20.932089" + y="22.643" + id="text68" + style="font-size:0.80000001px;font-style:normal;font-weight:400;text-anchor:start;fill:#000000;font-family:sans">LaTeX Source</text> + <line + x1="11" + y1="13.55" + x2="22.650999" + y2="16.481001" + stroke="#000000" + stroke-width="0.100" + id="line70" + style="stroke:#000000;stroke-width:0.1" /> + <polygon + points="23.015,16.573 22.469,16.693 22.651,16.481 22.591,16.208 23.015,16.573 " + id="polygon72" + style="fill:#000000;stroke:none;stroke-width:0.1" /> + <polygon + points="23.015,16.573 22.469,16.693 22.651,16.481 22.591,16.208 23.015,16.573 " + id="polygon74" + style="fill:none;stroke:#000000;stroke-width:0.1" /> + <line + x1="22.396" + y1="18.6" + x2="23.243" + y2="21.089001" + stroke="#000000" + stroke-width="0.100" + id="line76" + style="stroke:#000000;stroke-width:0.1" /> + <polygon + points="23.364,21.444 22.966,21.051 23.243,21.089 23.439,20.89 23.364,21.444 " + id="polygon78" + style="fill:#000000;stroke:none;stroke-width:0.1" /> + <polygon + points="23.364,21.444 22.966,21.051 23.243,21.089 23.439,20.89 23.364,21.444 " + id="polygon80" + style="fill:none;stroke:#000000;stroke-width:0.1" /> + <polygon + points="18.828,29.2 23.219,29.2 22.491,31.2 18.1,31.2 18.828,29.2 " + id="polygon82" + style="fill:#ffffff;stroke:none;stroke-width:0.1" /> + <polygon + points="18.828,29.2 23.219,29.2 22.491,31.2 18.1,31.2 18.828,29.2 " + transform="matrix(1.1760017,0,0,0.9958897,-3.1815209,0.1241298)" + id="polygon84" + style="fill:none;stroke:#000000;stroke-width:0.1" /> + <text + x="19.246" + y="30.341999" + id="text86" + style="font-size:0.80000001px;font-style:normal;font-weight:400;text-anchor:start;fill:#000000;font-family:sans">PDFLaTeX</text> + <rect + width="2.3" + height="1.9" + x="17" + y="33.849998" + id="rect88" + style="fill:#ffffff;stroke:none;stroke-width:0" /> + <rect + width="2.3" + height="1.9" + x="17" + y="33.849998" + id="rect90" + style="fill:none;stroke:#000000;stroke-width:0.1" /> + <text + x="17.582001" + y="34.943001" + id="text92" + style="font-size:0.80000001px;font-style:normal;font-weight:400;text-anchor:start;fill:#000000;font-family:sans">PDF</text> + <line + x1="23.4" + y1="23.450001" + x2="21.209" + y2="28.75" + stroke="#000000" + stroke-width="0.100" + id="line94" + style="stroke:#000000;stroke-width:0.1" /> + <polygon + points="21.066,29.097 21.026,28.539 21.209,28.75 21.488,28.73 21.066,29.097 " + id="polygon96" + style="fill:#000000;stroke:none;stroke-width:0.1" /> + <polygon + points="21.066,29.097 21.026,28.539 21.209,28.75 21.488,28.73 21.066,29.097 " + id="polygon98" + style="fill:none;stroke:#000000;stroke-width:0.1" /> + <line + x1="20.296" + y1="31.200001" + x2="18.455999" + y2="33.472" + stroke="#000000" + stroke-width="0.100" + id="line100" + style="stroke:#000000;stroke-width:0.1" /> + <polygon + points="18.22,33.763 18.341,33.217 18.456,33.472 18.729,33.532 18.22,33.763 " + id="polygon102" + style="fill:#000000;stroke:none;stroke-width:0.1" /> + <polygon + points="18.22,33.763 18.341,33.217 18.456,33.472 18.729,33.532 18.22,33.763 " + id="polygon104" + style="fill:none;stroke:#000000;stroke-width:0.1" /> + <polygon + points="13.703,16.6 17.944,16.6 17.216,18.6 12.975,18.6 13.703,16.6 " + id="polygon106" + style="fill:#ffffff;stroke:none;stroke-width:0.1" /> + <polygon + points="13.703,16.6 17.944,16.6 17.216,18.6 12.975,18.6 13.703,16.6 " + id="polygon108" + style="fill:none;stroke:#000000;stroke-width:0.1" /> + <text + x="13.54009" + y="17.742001" + id="text110" + style="font-size:0.80000001px;font-style:normal;font-weight:400;text-anchor:start;fill:#000000;font-family:sans">xslt/fo.xsl</text> + <line + x1="8.9499998" + y1="13.55" + x2="15.379" + y2="16.403" + stroke="#000000" + stroke-width="0.100" + id="line112" + style="stroke:#000000;stroke-width:0.1" /> + <polygon + points="15.721,16.555 15.163,16.58 15.379,16.403 15.366,16.123 15.721,16.555 " + id="polygon114" + style="fill:#000000;stroke:none;stroke-width:0.1" /> + <polygon + points="15.721,16.555 15.163,16.58 15.379,16.403 15.366,16.123 15.721,16.555 " + id="polygon116" + style="fill:none;stroke:#000000;stroke-width:0.1" /> + <rect + width="5.3000002" + height="1.9" + x="14.039402" + y="21.591343" + id="rect118" + style="fill:#ffffff;stroke:none;stroke-width:0" /> + <rect + width="6.3466492" + height="1.8908348" + x="14.043984" + y="21.595926" + id="rect120" + style="fill:none;stroke:#000000;stroke-width:0.10916522" /> + <text + x="14.691403" + y="22.683344" + id="text122" + style="font-size:0.80000001px;font-style:normal;font-weight:400;text-anchor:start;fill:#000000;font-family:sans">FO Document</text> + <polygon + points="15.178,29.25 17.769,29.25 17.041,31.25 14.45,31.25 15.178,29.25 " + id="polygon130" + style="fill:#ffffff;stroke:none;stroke-width:0.1" /> + <polygon + points="15.178,29.25 17.769,29.25 17.041,31.25 14.45,31.25 15.178,29.25 " + id="polygon132" + style="fill:none;stroke:#000000;stroke-width:0.1" /> + <text + x="15.537" + y="30.392" + id="text134" + style="font-size:0.80000001px;font-style:normal;font-weight:400;text-anchor:start;fill:#000000;font-family:sans">FOP</text> + <line + x1="17.1" + y1="23.549999" + x2="16.527" + y2="28.766001" + stroke="#000000" + stroke-width="0.100" + id="line136" + style="stroke:#000000;stroke-width:0.1" /> + <polygon + points="16.486,29.139 16.292,28.615 16.527,28.766 16.789,28.669 16.486,29.139 " + id="polygon138" + style="fill:#000000;stroke:none;stroke-width:0.1" /> + <polygon + points="16.486,29.139 16.292,28.615 16.527,28.766 16.789,28.669 16.486,29.139 " + id="polygon140" + style="fill:none;stroke:#000000;stroke-width:0.1" /> + <line + x1="15.746" + y1="31.25" + x2="17.819" + y2="33.493" + stroke="#000000" + stroke-width="0.100" + id="line142" + style="stroke:#000000;stroke-width:0.1" /> + <polygon + points="18.074,33.768 17.551,33.571 17.819,33.493 17.918,33.231 18.074,33.768 " + id="polygon144" + style="fill:#000000;stroke:none;stroke-width:0.1" /> + <polygon + points="18.074,33.768 17.551,33.571 17.819,33.493 17.918,33.231 18.074,33.768 " + id="polygon146" + style="fill:none;stroke:#000000;stroke-width:0.1" /> + <polygon + points="1.528,16.5 6.519,16.5 5.791,18.5 0.8,18.5 1.528,16.5 " + id="polygon148" + style="fill:#ffffff;stroke:none;stroke-width:0.1" /> + <polygon + points="1.528,16.5 6.519,16.5 5.791,18.5 0.8,18.5 1.528,16.5 " + transform="matrix(1.1005379,0,0,0.9976095,-0.6577968,4.1834251e-2)" + id="polygon150" + style="fill:none;stroke:#000000;stroke-width:0.1" /> + <text + x="1.001155" + y="17.642" + id="text152" + style="font-size:0.80000001px;font-style:normal;font-weight:400;text-anchor:start;fill:#000000;font-family:sans">xslt/html.xsl</text> + <rect + width="6.0999999" + height="1.9" + x="0.34134367" + y="21.700001" + id="rect154" + style="fill:#ffffff;stroke:none;stroke-width:0" /> + <rect + width="6.0862045" + height="2.4659617" + x="0.40689769" + y="21.706898" + id="rect156" + style="fill:none;stroke:#000000;stroke-width:0.11379541" /> + <line + x1="6.9000001" + y1="13.55" + x2="4.3629999" + y2="16.150999" + stroke="#000000" + stroke-width="0.100" + id="line160" + style="stroke:#000000;stroke-width:0.1" /> + <polygon + points="4.102,16.42 4.272,15.887 4.363,16.151 4.63,16.236 4.102,16.42 " + id="polygon162" + style="fill:#000000;stroke:none;stroke-width:0.1" /> + <polygon + points="4.102,16.42 4.272,15.887 4.363,16.151 4.63,16.236 4.102,16.42 " + id="polygon164" + style="fill:none;stroke:#000000;stroke-width:0.1" /> + <line + x1="3.296" + y1="18.5" + x2="3.427" + y2="21.214001" + stroke="#000000" + stroke-width="0.100" + id="line166" + style="stroke:#000000;stroke-width:0.1" /> + <polygon + points="3.445,21.588 3.171,21.101 3.427,21.214 3.67,21.077 3.445,21.588 " + id="polygon168" + style="fill:#000000;stroke:none;stroke-width:0.1" /> + <polygon + points="3.445,21.588 3.171,21.101 3.427,21.214 3.67,21.077 3.445,21.588 " + id="polygon170" + style="fill:none;stroke:#000000;stroke-width:0.1" /> + <polygon + points="28.678,16.75 33.569,16.75 32.841,18.75 27.95,18.75 28.678,16.75 " + id="polygon172" + style="fill:#ffffff;stroke:none;stroke-width:0.1" /> + <polygon + points="28.678,16.75 33.569,16.75 32.841,18.75 27.95,18.75 28.678,16.75 " + transform="matrix(1.0511507,0,0,0.9987687,-1.0178379,2.1854741e-2)" + id="polygon174" + style="fill:none;stroke:#000000;stroke-width:0.1" /> + <text + x="29.027" + y="17.892" + id="text176" + style="font-size:0.80000001px;font-style:normal;font-weight:400;text-anchor:start;fill:#000000;font-family:sans">xslt/yodl.xsl</text> + <line + x1="13.05" + y1="13.55" + x2="30.643999" + y2="16.665001" + stroke="#000000" + stroke-width="0.100" + id="line178" + style="stroke:#000000;stroke-width:0.1" /> + <polygon + points="31.013,16.731 30.477,16.89 30.644,16.665 30.565,16.397 31.013,16.731 " + id="polygon180" + style="fill:#000000;stroke:none;stroke-width:0.1" /> + <polygon + points="31.013,16.731 30.477,16.89 30.644,16.665 30.565,16.397 31.013,16.731 " + id="polygon182" + style="fill:none;stroke:#000000;stroke-width:0.1" /> + <rect + width="6" + height="1.9" + x="26.948059" + y="21.6" + id="rect184" + style="fill:#ffffff;stroke:none;stroke-width:0" /> + <rect + width="6.8730097" + height="1.8931645" + x="27.303417" + y="21.603418" + id="rect186" + style="fill:none;stroke:#000000;stroke-width:0.10683542" /> + <text + x="27.394091" + y="22.693001" + id="text188" + style="font-size:0.80000001px;font-style:normal;font-weight:400;text-anchor:start;fill:#000000;font-family:sans">YODL Document</text> + <line + x1="30.15" + y1="18.700001" + x2="30.275" + y2="21.114" + stroke="#000000" + stroke-width="0.100" + id="line190" + style="stroke:#000000;stroke-width:0.1" /> + <polygon + points="30.294,21.488 30.019,21.002 30.275,21.114 30.518,20.976 30.294,21.488 " + id="polygon192" + style="fill:#000000;stroke:none;stroke-width:0.1" /> + <polygon + points="30.294,21.488 30.019,21.002 30.275,21.114 30.518,20.976 30.294,21.488 " + id="polygon194" + style="fill:none;stroke:#000000;stroke-width:0.1" /> + <text + x="3.6583791" + y="22.583603" + id="text5573" + xml:space="preserve" + style="font-size:0.82118881px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"><tspan + x="3.7890956" + y="22.583603" + id="tspan5575">HTML </tspan><tspan + x="3.6583791" + y="23.610088" + id="tspan5577">Document</tspan></text> + <text + x="1.0326539" + y="22.656073" + id="text5579" + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"><tspan + x="1.0326539" + y="22.656073" + id="tspan5581" /></text> + <text + x="10.297968" + y="22.32135" + id="text5585" + xml:space="preserve" + style="font-size:0.82118881px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"><tspan + x="10.297968" + y="22.32135" + id="tspan5587">Man pages</tspan><tspan + x="10.297968" + y="23.347836" + id="tspan5589">(NROFF)</tspan></text> + <g + transform="translate(6.2483064,3.7332239e-2)" + id="g5600"> + <line + style="stroke:#000000;stroke-width:0.1" + id="line5602" + y2="21.247999" + x2="10.17" + y1="18.549999" + x1="9.0959997" /> + <polygon + points="10.309,21.596 9.891,21.224 10.17,21.248 10.356,21.039 10.309,21.596 " + id="polygon5604" + style="fill:#000000;stroke:none;stroke-width:0.1" /> + <polygon + points="10.309,21.596 9.891,21.224 10.17,21.248 10.356,21.039 10.309,21.596 " + id="polygon5606" + style="fill:none;stroke:#000000;stroke-width:0.1" /> + </g> +</svg> diff --git a/docs-xml/templates/attributions.xml b/docs-xml/templates/attributions.xml new file mode 100644 index 0000000..281a9e5 --- /dev/null +++ b/docs-xml/templates/attributions.xml @@ -0,0 +1,5 @@ +<?xml version="1.0"?> +<!DOCTYPE preface PUBLIC "-//Samba-Team//DTD DocBook V4.2-Based Variant V1.0//EN" "http://www.samba.org/samba/DTD/samba-doc"> +<preface> +</preface> + diff --git a/docs-xml/templates/template.5.xml b/docs-xml/templates/template.5.xml new file mode 100644 index 0000000..9d3ce8a --- /dev/null +++ b/docs-xml/templates/template.5.xml @@ -0,0 +1,37 @@ +<?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="lmhosts.5"> + +<refmeta> + <refentrytitle>smb-idmap</refentrytitle> + <manvolnum>5</manvolnum> +</refmeta> + + +<refnamediv> + <refname>smb-idmap</refname> + <refpurpose>The Samba IdMap Interface</refpurpose> +</refnamediv> + +<refsynopsisdiv> + <para>The IdMap interface in <citerefentry><refentrytitle>samba</refentrytitle> + <manvolnum>7</manvolnum></citerefentry> is responsible for + mapping Windows SIDs to Unix uids/gids.</para> +</refsynopsisdiv> + +<refsect1> + <title>DESCRIPTION</title> + + <para>To be filled in.</para> +</refsect1> + +<refsect1> + <title>AUTHOR</title> + + <para>The original Samba software and related utilities + were created by Andrew Tridgell. Samba is now developed + by the Samba Team as an Open Source project similar + to the way the Linux kernel is developed.</para> +</refsect1> + +</refentry> diff --git a/docs-xml/test/images/slmed.png b/docs-xml/test/images/slmed.png Binary files differnew file mode 100644 index 0000000..fcc3003 --- /dev/null +++ b/docs-xml/test/images/slmed.png diff --git a/docs-xml/test/index.xml b/docs-xml/test/index.xml new file mode 100644 index 0000000..7aaf584 --- /dev/null +++ b/docs-xml/test/index.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!DOCTYPE book PUBLIC "-//Samba-Team//DTD DocBook V4.2-Based Variant V1.0//EN" "http://www.samba.org/samba/DTD/samba-doc"> + +<book id="testdoc" + xmlns:xi="http://www.w3.org/2003/XInclude"> +<title>Test-document</title> + +<bookinfo> + <authorgroup> + <editor>&person.jelmer;</editor> + </authorgroup> + <pubdate><?latex \today ?></pubdate> +</bookinfo> + +<chapter> + <title>Foo</title> + + <para>I use <smbconfoption name="path">/tmp</smbconfoption></para> + + <imagefile>slmed</imagefile> + +</chapter> + +</book> diff --git a/docs-xml/wscript_build b/docs-xml/wscript_build new file mode 100644 index 0000000..40f5514 --- /dev/null +++ b/docs-xml/wscript_build @@ -0,0 +1,206 @@ +#!/usr/bin/env python +from samba_utils import save_file +import os +manpages=''' + manpages/cifsdd.8 + manpages/dbwrap_tool.1 + manpages/eventlogadm.8 + manpages/idmap_ad.8 + manpages/idmap_autorid.8 + manpages/idmap_hash.8 + manpages/idmap_ldap.8 + manpages/idmap_nss.8 + manpages/idmap_rfc2307.8 + manpages/idmap_rid.8 + manpages/idmap_script.8 + manpages/idmap_tdb.8 + manpages/idmap_tdb2.8 + manpages/libsmbclient.7 + manpages/lmhosts.5 + manpages/log2pcap.1 + manpages/mdsearch.1 + manpages/mvxattr.1 + manpages/net.8 + manpages/nmbd.8 + manpages/nmblookup.1 + manpages/ntlm_auth.1 + manpages/pdbedit.8 + manpages/profiles.1 + manpages/rpcclient.1 + manpages/samba-dcerpcd.8 + manpages/samba-regedit.8 + manpages/samba-tool.8 + manpages/samba.7 + manpages/samba.8 + manpages/samba_downgrade_db.8 + manpages/sharesec.1 + manpages/smbcacls.1 + manpages/smbclient.1 + manpages/smbcontrol.1 + manpages/smbcquotas.1 + manpages/smbd.8 + manpages/smbget.1 + manpages/smbgetrc.5 + manpages/smbpasswd.5 + manpages/smbpasswd.8 + manpages/smbspool_krb5_wrapper.8 + manpages/smbspool.8 + manpages/samba-bgqd.8 + manpages/smbstatus.1 + manpages/smbtar.1 + manpages/smbtree.1 + manpages/testparm.1 + manpages/traffic_learner.7 + manpages/traffic_replay.7 + manpages/wbinfo.1 + manpages/winbindd.8 + ''' + +pam_winbind_manpages = ''' + manpages/pam_winbind.8 + manpages/pam_winbind.conf.5 + ''' + +krb5_locator_manpages = 'manpages/winbind_krb5_locator.8' +krb5_localauth_manpages = 'manpages/winbind_krb5_localauth.8' + +winexe_manpages = 'manpages/winexe.1' + +vfs_module_manpages = ['vfs_acl_tdb', + 'vfs_acl_xattr', + 'vfs_aio_fork', + 'vfs_aio_pthread', + 'vfs_io_uring', + 'vfs_audit', + 'vfs_btrfs', + 'vfs_cacheprime', + 'vfs_cap', + 'vfs_catia', + 'vfs_ceph', + 'vfs_ceph_snapshots', + 'vfs_commit', + 'vfs_crossrename', + 'vfs_default_quota', + 'vfs_dirsort', + 'vfs_expand_msdfs', + 'vfs_extd_audit', + 'vfs_fake_perms', + 'vfs_fileid', + 'vfs_fruit', + 'vfs_full_audit', + 'vfs_glusterfs', + 'vfs_glusterfs_fuse', + 'vfs_gpfs', + 'vfs_linux_xfs_sgid', + 'vfs_media_harmony', + 'vfs_nfs4acl_xattr', + 'vfs_offline', + 'vfs_prealloc', + 'vfs_preopen', + 'vfs_readahead', + 'vfs_readonly', + 'vfs_recycle', + 'vfs_shadow_copy', + 'vfs_shadow_copy2', + 'vfs_shell_snap', + 'vfs_snapper', + 'vfs_streams_depot', + 'vfs_streams_xattr', + 'vfs_syncops', + 'vfs_time_audit', + 'vfs_tsmsm', + 'vfs_unityed_media', + 'vfs_virusfilter', + 'vfs_widelinks', + 'vfs_worm', + 'vfs_xattr_tdb', + 'vfs_zfsacl' ] + +def generate_path_entity_list(): + entities = bld.pathconfig_entities() + + # We need this if we build with Heimdal as we can't easily make + # the whole option go away + mit_kdc_path = '""' + # The MIT krb5kdc path is set if we build with MIT Kerberos + if bld.CONFIG_SET('MIT_KDC_PATH'): + mit_kdc_path = bld.CONFIG_GET('MIT_KDC_PATH') + + t = "\n".join(entities) +\ + "\n" +\ + "<!ENTITY pathconfig.MITKDCPATH " + mit_kdc_path + ">\n" +\ + "\n" + return t + +def smbdotconf_generate_parameter_list_file(task): + parameter_all = task.outputs[0].bldpath(task.env) + articles = task.inputs + + t = "<!DOCTYPE section [\n" +\ + generate_path_entity_list() + \ + "]>\n" +\ + "<section>\n" +\ + "".join(art.read() for art in articles) +\ + "</section>\n" + + + save_file(parameter_all, t , create_dir=True) + return 0 + +# Since nothing really forces sorting in glob, we have to sort by file name +# POSIX file systems aren't required to return sorted content but we want +# smb.conf parameters to be sorted alphabetically +parameter_all = 'smbdotconf/parameters.all.xml' +sources = bld.path.ant_glob("smbdotconf/**/*.xml", flat=False, excl=parameter_all) +articles = " ".join(sorted([x.path_from(bld.path) for x in sources], + key=lambda m: m.split(os.sep)[-1])) + +bld.SAMBA_GENERATOR(parameter_all, + source=articles, + target=parameter_all, + rule=smbdotconf_generate_parameter_list_file) + +def generate_path_entity_file(task): + path_entities_file = task.outputs[0].bldpath(task.env) + + save_file(path_entities_file, + generate_path_entity_list(), + create_dir=True) + return 0 + +path_entities = 'build/DTD/samba.build.pathconfig' + +bld.SAMBA_GENERATOR(path_entities, + source=articles, + target=path_entities, + rule=generate_path_entity_file, + dep_vars=bld.dynconfig_varnames()) + + +def SMBDOTCONF_MANPAGE(bld, target): + ''' assemble and build smb.conf.5 manual page''' + bld.SAMBAMANPAGES(target, parameter_all) + +if ('XSLTPROC_MANPAGES' in bld.env and bld.env['XSLTPROC_MANPAGES']): + + SMBDOTCONF_MANPAGE(bld, 'manpages/smb.conf.5') + bld.SAMBAMANPAGES(manpages) + + if bld.CONFIG_SET('WITH_PAM_MODULES') and bld.CONFIG_SET('HAVE_PAM_START'): + bld.SAMBAMANPAGES(pam_winbind_manpages) + + if bld.CONFIG_SET('HAVE_KRB5_LOCATE_PLUGIN_H'): + bld.SAMBAMANPAGES(krb5_locator_manpages) + + if bld.CONFIG_SET('HAVE_KRB5_LOCALAUTH_PLUGIN_H'): + bld.SAMBAMANPAGES(krb5_localauth_manpages) + + if conf.env.build_winexe == True: + bld.SAMBAMANPAGES(winexe_manpages) + + if bld.CONFIG_SET('ENABLE_SELFTEST'): + bld.SAMBAMANPAGES('manpages/vfstest.1') + + for manpage in vfs_module_manpages: + if bld.SAMBA3_IS_ENABLED_MODULE(manpage): + bld.SAMBAMANPAGES('manpages/%s.8' % manpage) diff --git a/docs-xml/xslt/docbook2pearson.xsl b/docs-xml/xslt/docbook2pearson.xsl new file mode 100644 index 0000000..ebe2a95 --- /dev/null +++ b/docs-xml/xslt/docbook2pearson.xsl @@ -0,0 +1,1042 @@ +<?xml version='1.0'?> +<!-- + Convert DocBook to XML validating against the Pearson DTD + + (C) Jochen Hein + (C) Jelmer Vernooij <jelmer@samba.org> 2004 +--> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" + exclude-result-prefixes="doc" + version="1.1"> + + <!-- TODO <entry></entry> -> <entry><p/></entry> --> + + <xsl:output method="xml" + encoding="UTF-8" + doctype-public="-//Pearson//DTD Books//DE" + doctype-system="http://www.pearson.de/pearson.dtd" + indent="yes" + omit-xml-declaration="no" + standalone="no"/> + + <!-- Warn about DocBook elements that are not converted --> + <xsl:template match="*"> + <xsl:message> + <xsl:text>No template matches </xsl:text> + <xsl:value-of select="name(.)"/> + <xsl:text>.</xsl:text> + </xsl:message> + </xsl:template> + + <!-- + ==================================================================== + --> + <!-- Establish strip/preserve whitespace rules --> + + <xsl:preserve-space elements="*"/> + + <xsl:strip-space elements=" + abstract affiliation anchor answer appendix area areaset areaspec + artheader article audiodata audioobject author authorblurb authorgroup + beginpage bibliodiv biblioentry bibliography biblioset blockquote book + bookbiblio bookinfo callout calloutlist caption caution + city pubdate publisher publishername"/> + + <xsl:template name="transform.id.attribute"> + <xsl:if test="@id != ''"> + <xsl:attribute name="id"> + <xsl:value-of select="@id"/> + </xsl:attribute> + </xsl:if> + </xsl:template> + + <xsl:template match="/" mode="default"> + <xsl:processing-instruction + name="xml-stylesheet">href="pearson.css" + type="text/css"</xsl:processing-instruction> + <xsl:text> + </xsl:text> + <xsl:comment> + <xsl:text>Transformed with pearson.xsl by Jochen Hein</xsl:text> + </xsl:comment> + <xsl:text> + </xsl:text> + <!-- Releaseinfo einbauen? --> + <xsl:comment> + <xsl:apply-templates select=".//releaseinfo" mode="comment"/> + </xsl:comment> + <xsl:text> + </xsl:text> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="book"> + <book> + <xsl:apply-templates/> + </book> + </xsl:template> + + <xsl:template match="bookinfo"> + <bookinfo> + <xsl:apply-templates/> + </bookinfo> + </xsl:template> + + <xsl:template match="author"> + <author> + <xsl:apply-templates/> + </author> + </xsl:template> + + <xsl:template match="editor"> + <editor> + <xsl:apply-templates/> + </editor> + </xsl:template> + + <xsl:template match="chapter"> + <chapter> + <xsl:call-template name="transform.id.attribute"/> + <xsl:apply-templates/> + </chapter> + </xsl:template> + + <xsl:template match="chapter/title/command"> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="index"> + <xsl:comment> XXX insert index here </xsl:comment> + </xsl:template> + + <xsl:template match="preface"> + <preface> + <xsl:call-template name="transform.id.attribute"/> + <xsl:apply-templates/> + </preface> + </xsl:template> + + <xsl:template match="section|sect1|sect2|sect3|sect4"> + <sect> + <xsl:call-template name="transform.id.attribute"/> + <xsl:apply-templates/> + </sect> + </xsl:template> + + <xsl:template match="partintro"> + <xsl:copy> + <xsl:apply-templates select="@*|node()"/> + </xsl:copy> + </xsl:template> + + <xsl:template match="part"> + <appendix> + <xsl:apply-templates/> + </appendix> + </xsl:template> + + <xsl:template match="appendix[1]"> + <appendix> + <chapter> + <xsl:call-template name="transform.id.attribute"/> + <xsl:apply-templates/> + </chapter> + <xsl:for-each select="following-sibling::appendix"> + <chapter> + <xsl:call-template name="transform.id.attribute"/> + <xsl:apply-templates/> + </chapter> + </xsl:for-each> + </appendix> + </xsl:template> + + <xsl:template match="appendix[position() != 1]"> + </xsl:template> + + <xsl:template match="title"> + <title><xsl:apply-templates/></title> + </xsl:template> + + <xsl:param name="notpchilds" select="'variablelist itemizedlist orderedlist'"/> + + <xsl:template match="para"> + <!-- loop thru all elements: --> + <xsl:for-each select="*|text()"> + <xsl:choose> + <xsl:when test="string-length(name(.)) > 0 and contains($notpchilds,name(.))"> + <xsl:message><xsl:text>Removing from p:</xsl:text><xsl:value-of select="name(.)"/></xsl:message> + <xsl:apply-templates select="."/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="hstartpara"/> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + </xsl:template> + + <!-- Do open paragraph when previous sibling was not a valid p child --> + <xsl:template name="hstartpara"> + <xsl:if test="not(preceding-sibling::*[1]) or (contains($notpchilds,name(preceding-sibling::*[1])) and not(string-length(name(.)) > 0))"> + <p> + <xsl:apply-templates select="."/> + <xsl:for-each select="following-sibling::*[not(contains($notpchilds,name(.)) and string-length(name(.)) > 0)]"> + <xsl:apply-templates select="."/> + </xsl:for-each> + </p> + </xsl:if> + </xsl:template> + + <xsl:template name="hsubpara"> + <xsl:param name="data"/> + <xsl:apply-templates select="$data"/> + <xsl:if test="$data[following-sibling::*[1]]"> + <xsl:param name="next" select="$data[following-sibling::*[1]]"/> + <xsl:message><xsl:value-of select="name(.)"/></xsl:message> + <xsl:if test="$next and (not(contains($notpchilds,name($next))) or $next[text()])"> + <xsl:message><xsl:text>Followed by : </xsl:text><xsl:value-of select="name($next)"/></xsl:message> + <xsl:call-template name="hsubpara"> + <xsl:with-param name="data" select="$next"/> + </xsl:call-template> + <xsl:message><xsl:text>Done Followed by : </xsl:text><xsl:value-of select="name($next)"/></xsl:message> + </xsl:if> + </xsl:if> + </xsl:template> + + <xsl:template match="tip"> + <tip><xsl:apply-templates/></tip> + </xsl:template> + + <xsl:template match="warning|important|caution"> + <stop><xsl:apply-templates/></stop> + </xsl:template> + + <xsl:template match="note"> + <info><xsl:apply-templates/></info> + </xsl:template> + + <xsl:template match="emphasis"> + <xsl:variable name="role" select="@role"/> + + <xsl:choose> + <xsl:when test="$role='italic'"> + <i><xsl:apply-templates/></i> + </xsl:when> + <xsl:otherwise> + <em><xsl:apply-templates/></em> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template match="ulink"> + <xsl:apply-templates/> + <footnote><p><url><xsl:value-of select="@ulink"/></url></p></footnote> + </xsl:template> + + <xsl:template match="email"> + <url>mailto:<xsl:apply-templates/></url> + </xsl:template> + + <xsl:template match="indexterm"> + <ie><xsl:apply-templates/></ie> + </xsl:template> + + <xsl:template match="primary"> + <t><xsl:apply-templates/></t> + </xsl:template> + + <xsl:template match="secondary"> + <t><xsl:apply-templates/></t> + </xsl:template> + + <xsl:template match="citerefentry"> + <xsl:value-of select="refentrytitle"/><xsl:text>(</xsl:text><xsl:value-of select="manvolnum"/><xsl:text>)</xsl:text> + </xsl:template> + + <xsl:template match="formalpara"> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="substeps"> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="see|seealso"> + <synonym><xsl:apply-templates/></synonym> + </xsl:template> + + <xsl:template + match="footnote"><footnote><xsl:apply-templates/></footnote></xsl:template> + + <xsl:template match="command"> + <code><xsl:apply-templates/></code> + </xsl:template> + + <xsl:template match="function"> + <code><xsl:apply-templates/></code> + </xsl:template> + + <xsl:template match="systemitem"> + + <!-- xsl:if test="@role != '' and @role != 'signal'"> + <xsl:message> + Warning: role attribute is <xsl:value-of select="@role"/> + </xsl:message> + </xsl:if --> + <code><xsl:apply-templates/></code> + </xsl:template> + + <xsl:template match="sgmltag"> + <code><xsl:apply-templates/></code> + </xsl:template> + + <xsl:template match="filename"> + <code><xsl:apply-templates/></code> + </xsl:template> + + <xsl:template match="errorcode"> + <code><xsl:apply-templates/></code> + </xsl:template> + + <xsl:template match="errortype"> + <code><xsl:apply-templates/></code> + </xsl:template> + + <xsl:template match="returnvalue"> + <code><xsl:apply-templates/></code> + </xsl:template> + + <xsl:template match="glosslist|glossary"> + <dl><xsl:apply-templates/></dl> + </xsl:template> + + <xsl:template match="glossentry"> + <dlitem><xsl:apply-templates/></dlitem> + </xsl:template> + + <xsl:template match="glossentry/acronym"> + <dt><xsl:apply-templates/></dt> + </xsl:template> + + <xsl:template match="acronym"> + <b><xsl:apply-templates/></b> + </xsl:template> + + <xsl:template match="glossterm"> + <dt><xsl:apply-templates/></dt> + </xsl:template> + + <xsl:template match="glossdef"> + <dd><xsl:apply-templates/></dd> + </xsl:template> + + <xsl:template match="itemizedlist"> + <ul><xsl:apply-templates/></ul> + </xsl:template> + + <xsl:template match="varlistentry/term"> + <dt><xsl:apply-templates/></dt> + </xsl:template> + + <xsl:template match="varlistentry/listitem"> + <dd><xsl:apply-templates/></dd> + </xsl:template> + + <xsl:template match="varlistentry"> + <dlitem> + <xsl:apply-templates/> + </dlitem> + </xsl:template> + + <xsl:template match="variablelist"> + <dl><xsl:apply-templates/></dl> + </xsl:template> + + <xsl:template match="simplelist"> + <ul> + <xsl:for-each select="member"> + <li><p><xsl:apply-templates/></p></li> + </xsl:for-each> + </ul> + </xsl:template> + + <xsl:template match="orderedlist"> + <xsl:variable name="numeration" select="@numeration"/> + <ol> + <xsl:if test="$numeration != ''"> + <xsl:attribute name="type"> + <xsl:value-of select="$numeration"/> + </xsl:attribute> + </xsl:if> + <xsl:apply-templates/> + </ol> + </xsl:template> + + <xsl:template match="listitem"> + <li><xsl:apply-templates/></li> + </xsl:template> + + <xsl:template match="firstterm"> + <em><xsl:apply-templates/></em> + </xsl:template> + + <xsl:template match="literal/systemitem"> + <em><xsl:apply-templates/></em> + </xsl:template> + + <xsl:template match="superscript"> + <sup><xsl:apply-templates/></sup> + </xsl:template> + + <xsl:template match="productname"> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="keycombo"> + + <xsl:variable name="action" select="@action"/> + <xsl:variable name="joinchar"> + + <xsl:choose> + + <xsl:when test="$action='seq'"> + <xsl:text> </xsl:text></xsl:when> + <xsl:when test="$action='simul'">+</xsl:when> + <xsl:when test="$action='press'">-</xsl:when> + <xsl:when test="$action='click'">-</xsl:when> + <xsl:when test="$action='double-click'">-</xsl:when> + <xsl:when test="$action='other'"></xsl:when> + <xsl:otherwise>-</xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:for-each select="*"> + <xsl:if test="position()>1"><xsl:value-of + select="$joinchar"/></xsl:if> + <xsl:apply-templates select="."/> + </xsl:for-each> + + </xsl:template> + + + <xsl:template match="keycap"> + <key><xsl:apply-templates/></key> + </xsl:template> + + <xsl:template match="keycap/replaceable"> + <xsl:apply-templates/> + </xsl:template> + + + + <xsl:template match="menuchoice"> + <xsl:variable name="shortcut" select="./shortcut"/> + <xsl:call-template name="process.menuchoice"/> + <xsl:if test="$shortcut"> + <xsl:text> (</xsl:text> + <xsl:apply-templates select="$shortcut"/> + <xsl:text>)</xsl:text> + </xsl:if> + </xsl:template> + + <xsl:template name="process.menuchoice"> + <xsl:param name="nodelist" + select="guibutton|guiicon|guilabel|guimenu|guimenuitem|guisubmenu|interface"/><!-- not(shortcut) --> + <xsl:param name="count" select="1"/> + + <xsl:choose> + <xsl:when test="$count>count($nodelist)"></xsl:when> + <xsl:when test="$count=1"> + <xsl:apply-templates select="$nodelist[$count=position()]"/> + <xsl:call-template name="process.menuchoice"> + <xsl:with-param name="nodelist" select="$nodelist"/> + <xsl:with-param name="count" select="$count+1"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:variable name="node" select="$nodelist[$count=position()]"/> + <xsl:choose> + <xsl:when test="name($node)='guimenuitem' + or name($node)='guisubmenu'"> + <xsl:text>-></xsl:text> + </xsl:when> + <xsl:otherwise>+</xsl:otherwise> + </xsl:choose> + <xsl:apply-templates select="$node"/> + <xsl:call-template name="process.menuchoice"> + <xsl:with-param name="nodelist" select="$nodelist"/> + <xsl:with-param name="count" select="$count+1"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + + <xsl:template match="guimenu"> + <guiitem><xsl:apply-templates/></guiitem> + </xsl:template> + + <xsl:template match="guimenuitem"> + <guiitem><xsl:apply-templates/></guiitem> + </xsl:template> + + <xsl:template match="guiicon"> + <guiitem><xsl:apply-templates/></guiitem> + </xsl:template> + + <xsl:template match="guilabel"> + <guiitem><xsl:apply-templates/></guiitem> + </xsl:template> + + <xsl:template match="guibutton"> + <guiitem><xsl:apply-templates/></guiitem> + </xsl:template> + + <xsl:template name="transform.epigraph"> + <xsl:apply-templates select="para"/> + <xsl:apply-templates select="attribution"/> + </xsl:template> + + <xsl:template match="epigraph"> + <chapterintro><motto><xsl:call-template + name="transform.epigraph"/></motto></chapterintro> + </xsl:template> + + <xsl:template match="section/epigraph"> + <motto><xsl:call-template name="transform.epigraph"/></motto> + </xsl:template> + + <xsl:template match="epigraph/para"> + <p><em><xsl:apply-templates/></em></p> + </xsl:template> + <xsl:template match="attribution"> + <p><i><xsl:apply-templates/></i></p> + </xsl:template> + + <xsl:template match="errorname"> + <i><xsl:apply-templates/></i> + </xsl:template> + + <xsl:template match="constant"> + <b><xsl:apply-templates/></b> + </xsl:template> + + <xsl:template match="envar"> + <code><xsl:apply-templates/></code> + </xsl:template> + + <xsl:template match="literal"> + <code><xsl:apply-templates/></code> + </xsl:template> + + <xsl:template match="option"> + <code><xsl:apply-templates/></code> + </xsl:template> + + <xsl:template match="parameter"> + <code><xsl:apply-templates/></code> + </xsl:template> + + <xsl:template match="application"> + <b><xsl:apply-templates/></b> + </xsl:template> + + <xsl:template match="screen/userinput"> + <b><xsl:apply-templates/></b> + </xsl:template> + + <xsl:template match="screen/prompt"> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="prompt"> + <code><xsl:apply-templates/></code> + </xsl:template> + + <xsl:template match="userinput"> + <code><b><xsl:apply-templates/></b></code> + </xsl:template> + + <xsl:template match="computeroutput"> + <code><xsl:apply-templates/></code> + </xsl:template> + + <xsl:template match="screen/computeroutput"> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="replaceable"> + <i><xsl:apply-templates/></i> + </xsl:template> + + <xsl:template match="userinput/replaceable"> + <i><xsl:apply-templates/></i> + </xsl:template> + + <xsl:template match="citation" + xmlns:xlink="http://www.w3.org/1999/xlink"> + + <xsl:variable name="target" select="."/> + <xsl:variable name="targets" select="id($target)"/> + + <!-- xsl:call-template name="check.id.unique"> + <xsl:with-param name="linkend" select="$target"/> + </xsl:call-template --> + + <xsl:choose> + <xsl:when test="count($targets) = 0"> + <xsl:message> + <xsl:text>Citation of nonexistent id: </xsl:text> + <xsl:value-of select="."/> + </xsl:message> + <xsl:text>[??? </xsl:text> + <xsl:value-of select="."/> + <xsl:text>]</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>[</xsl:text><xsl:value-of + select="."/><xsl:text>]</xsl:text> + </xsl:otherwise> + </xsl:choose> + + </xsl:template> + + <xsl:template match="figure"> + <figure> + <xsl:call-template name="transform.id.attribute"/> + <xsl:apply-templates/> + </figure> + </xsl:template> + + <xsl:template match="graphic"> + <xsl:message> + <xsl:text>Obsolete tag "graphic" found.</xsl:text> + </xsl:message> + + <figureref> + <xsl:attribute name="fileref"> + <xsl:value-of select="@fileref"/> + </xsl:attribute> + </figureref> + </xsl:template> + + <xsl:template match="mediaobject"> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="imageobject"> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="imagedata"> + <xsl:variable name="scale" select="@scale"/> + <figureref> + <xsl:attribute name="fileref"> + <xsl:value-of select="@fileref"/> + </xsl:attribute> + <xsl:if test="$scale != ''"> + <xsl:attribute name="scale"><xsl:value-of + select="$scale"/>%</xsl:attribute> + </xsl:if> + </figureref> + </xsl:template> + + <xsl:template match="example"> + <screen> + <xsl:call-template name="transform.id.attribute"/> + <xsl:apply-templates/> + </screen> + </xsl:template> + + <xsl:template match="listing"> + <screen> + <xsl:call-template name="transform.id.attribute"/> + <xsl:apply-templates/> </screen> + </xsl:template> + + <xsl:template name="check.title.not.empty"> + <xsl:variable name="title" select="."/> + <xsl:if test="$title=''"> + <xsl:message>title tag is empty!</xsl:message> + </xsl:if> + </xsl:template> + + <xsl:template match="figure/title"> + <xsl:call-template name="check.title.not.empty"/> + <description><xsl:apply-templates/></description> + </xsl:template> + <xsl:template match="listing/title"> + <xsl:call-template name="check.title.not.empty"/> + <description><xsl:apply-templates/></description> + </xsl:template> + <xsl:template match="example/title"> + <xsl:call-template name="check.title.not.empty"/> + <description><xsl:apply-templates/></description> + </xsl:template> + + <xsl:template match="literallayout"> + <screentext><xsl:apply-templates/></screentext> + </xsl:template> + <xsl:template match="screen"> + <screentext><xsl:apply-templates/></screentext> + </xsl:template> + + <xsl:template match="programlisting"> + <listing> + <xsl:if test="title != ''"> + <description><xsl:value-of select="title"/></description> + </xsl:if> + <listingcode> + <xsl:apply-templates/> + </listingcode> + </listing> + </xsl:template> + + <!-- Tabellen --> + <xsl:template match="table"> + <table> + <xsl:call-template name="transform.id.attribute"/> + <xsl:apply-templates/> + </table> + </xsl:template> + <xsl:template match="table/title"> + <description><xsl:apply-templates/></description> + </xsl:template> + + <xsl:template match="tgroup"> + <tgroup> + <xsl:attribute name="cols"> + <xsl:value-of select="@cols"/></xsl:attribute> + <xsl:apply-templates/> + </tgroup> + </xsl:template> + <xsl:template match="thead"> + <thead><xsl:apply-templates/></thead> + </xsl:template> + <xsl:template match="tbody"> + <tbody><xsl:apply-templates/></tbody> + </xsl:template> + <xsl:template match="row"> + <row><xsl:apply-templates/></row> + </xsl:template> + <xsl:template match="entry"> + <entry><p><xsl:apply-templates/></p></entry> + </xsl:template> + <xsl:template match="colspec"> + <colspec><xsl:copy-of select="@*"/><xsl:apply-templates/></colspec> + </xsl:template> + + <!-- xref nach pearson-equivalent - Einige Ideen stammen von Norm --> + + <xsl:template name="object.id"> + <xsl:param name="object" select="."/> + <xsl:choose> + <xsl:when test="$object/@id"> + <xsl:value-of select="$object/@id"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="generate-id($object)"/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template name="anchor"> + <xsl:param name="node" select="."/> + <xsl:param name="conditional" select="1"/> + <xsl:variable name="id"> + <xsl:call-template name="object.id"> + <xsl:with-param name="object" select="$node"/> + </xsl:call-template> + </xsl:variable> + <xsl:if test="$conditional = 0 or $node/@id"> + <a name="{$id}"/> + </xsl:if> + </xsl:template> + + <xsl:template name="check.id.unique"> + <xsl:param name="linkend"></xsl:param> + <xsl:if test="$linkend != ''"> + <xsl:variable name="targets" select="id($linkend)"/> + <xsl:variable name="target" select="$targets[1]"/> + + <xsl:if test="count($targets)=0"> + <xsl:message> + <xsl:text>Error: no ID for constraint linkend: </xsl:text> + <xsl:value-of select="$linkend"/> + <xsl:text>.</xsl:text> + </xsl:message> + </xsl:if> + + <xsl:if test="count($targets)>1"> + <xsl:message> + <xsl:text>Warning: multiple "IDs" for constraint linkend: + </xsl:text> + <xsl:value-of select="$linkend"/> + <xsl:text>.</xsl:text> + </xsl:message> + </xsl:if> + </xsl:if> + </xsl:template> + + <xsl:template match="xref|link" + xmlns:xlink="http://www.w3.org/1999/xlink"> + <xsl:variable name="linkend" select="@linkend"/> + <xsl:variable name="targets" select="id(@linkend)"/> + <xsl:variable name="target" select="$targets[1]"/> + <xsl:variable name="refelem" select="local-name($target)"/> + + <xsl:call-template name="check.id.unique"> + <xsl:with-param name="linkend" select="$linkend"/> + </xsl:call-template> + + <xsl:call-template name="anchor"/> + + <xsl:choose> + <xsl:when test="count($targets) = 0"> + <xsl:message> + <xsl:text>XRef to nonexistent id: </xsl:text> + <xsl:value-of select="@linkend"/> + </xsl:message> + <xsl:text>[??? </xsl:text> + <xsl:value-of select="@linkend"/> + <xsl:text>]</xsl:text> + </xsl:when> + <xsl:when test="count($targets) > 1"> + <xsl:message>Uh, multiple linkends + <xsl:value-of select="@linkend"/> + </xsl:message> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test='$refelem = "chapter" or $refelem = "preface"'> + <xsl:text>Kapitel </xsl:text> + </xsl:when> + <xsl:when test='$refelem = "section" or $refelem = "sect1" or $refelem = "sect2" or $refelem = "sect3" or $refelem = "sect4"'> + <xsl:text>Abschnitt </xsl:text> + </xsl:when> + <xsl:when test='$refelem = "figure"'> + <xsl:text>Abbildung </xsl:text> + </xsl:when> + <xsl:when test='$refelem = "example"'> + <!-- xsl:choose> + <xsl:when test="$target/@role='listing'"> + <xsl:text>Listing </xsl:text> + </xsl:when> + <xsl:otherwise --> + <xsl:text>Listing </xsl:text> + <!-- /xsl:otherwise> + </xsl:choose --> + </xsl:when> + <xsl:when test='$refelem = "table"'> + <xsl:text>Tabelle </xsl:text> + </xsl:when> + <xsl:when test='$refelem = "appendix"'> + <xsl:text>Anhang </xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:if test="$refelem != ''"> + <xsl:message> + <xsl:text>Cant't handle xref to </xsl:text> + <xsl:value-of select="$refelem"/> + <xsl:text>:</xsl:text> + <xsl:value-of select="@linkend"/> + </xsl:message> + <xsl:text>(??? $refelem)</xsl:text> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + + <xref> + <xsl:attribute name="xlink:href" + xmlns:xlink="http://www.w3.org/1999/xlink"> + <!-- xsl:attribute name="id" --> + <xsl:value-of select="@linkend"/> + </xsl:attribute> + </xref> + </xsl:template> + + <xsl:template match="quote">"<xsl:apply-templates/>"</xsl:template> + <!-- xsl:template + match="quote"><quote><xsl:apply-templates/></quote></xsl:template --> + + + <xsl:template match="othername"> + <xsl:text>(</xsl:text><xsl:apply-templates/><xsl:text>)</xsl:text>0 + </xsl:template> + <xsl:template match="firstname"> + <xsl:apply-templates/><xsl:text> </xsl:text> + </xsl:template> + <xsl:template match="surname"> + <xsl:apply-templates/> + </xsl:template> + <xsl:template match="copyright"> + <!-- empty --> + </xsl:template> + <xsl:template match="edition"> + <!-- empty --> + </xsl:template> + <xsl:template match="publisher"> + <!-- empty --> + </xsl:template> + <xsl:template match="pubdate"> + <xsl:apply-templates/> + </xsl:template> + <xsl:template match="isbn"> + ISBN <xsl:apply-templates/> + </xsl:template> + + <!-- Literaturverzeichnis --> + <xsl:template match="bibliography"> + <sect> + <xsl:apply-templates/> + </sect> + </xsl:template> + + <xsl:template name="process.bibliomixed"> + + <xsl:variable name="bibid" select="id(@id)"/> + <dlitem><dt>[<xsl:value-of select="@id"/>]</dt> + <dd><p><xsl:apply-templates select=".//title"/>, + <xsl:if test="count(.//subtitle)>0"> + <xsl:apply-templates select=".//subtitle"/>, + </xsl:if> + <xsl:apply-templates select=".//author"/> + <xsl:apply-templates select=".//publisher"/> + <xsl:apply-templates select=".//pubdate"/> + <xsl:if test="count(.//isbn)>0"> + <xsl:text>, </xsl:text> + <xsl:apply-templates select=".//isbn"/> + </xsl:if> + <xsl:text>.</xsl:text></p> + <xsl:call-template name="process.abstract" select=".//abstract"/> + </dd> + </dlitem> + </xsl:template> + + <xsl:template match="bibliomixed[1]"> + <dl><xsl:call-template name="process.bibliomixed"/> + <xsl:for-each select="following-sibling::bibliomixed"> + <xsl:call-template name="process.bibliomixed"/> + </xsl:for-each> + </dl> + </xsl:template> + + + <xsl:template match="bibliomixed/title"> + <i><xsl:apply-templates/></i> + </xsl:template> + + <xsl:template match="biblioentry/title"> + <i><xsl:apply-templates/></i> + </xsl:template> + + <xsl:template match="bibliomixed/subtitle"> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="bibliomixed/publisher"> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="publishername"> + <xsl:apply-templates/>, + </xsl:template> + <xsl:template match="publisher/address"> + <xsl:apply-templates/> + </xsl:template> + <xsl:template match="city"> + <xsl:apply-templates/>, + </xsl:template> + + <xsl:template name="process.abstract"> + <xsl:apply-templates select="abstract//para"/> + </xsl:template> + <xsl:template match="bibliomixed"> + <!-- empty --> + </xsl:template> + + <xsl:template match="chapterinfo"> + <!-- empty --> + </xsl:template> + + <xsl:template match="sectioninfo"> + <!-- empty --> + </xsl:template> + + <xsl:template match="prefaceinfo"> + <!-- empty --> + </xsl:template> + + <xsl:template match="appendixinfo"> + <!-- empty --> + </xsl:template> + + <xsl:template match="releaseinfo"> + <xsl:comment><xsl:apply-templates/></xsl:comment> + </xsl:template> + + <xsl:template match="releaseinfo" mode="comment"> + <xsl:text> + </xsl:text> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="trademark"> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="processing-instruction('linebreak')"> + <br/> + </xsl:template> + + <xsl:template match="processing-instruction('pearson')"> + <xsl:copy/> + </xsl:template> + + <xsl:template match="procedure"> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="step"> + <step><xsl:apply-templates/></step> + </xsl:template> + + <xsl:template match="toc"> + <xsl:element name="toc"> + <xsl:attribute name="role"> + <xsl:text>sect</xsl:text> + </xsl:attribute> + </xsl:element> + </xsl:template> + + <xsl:template match="lot"> + <xsl:element name="toc"> + <xsl:attribute name="role"> + <xsl:text>table</xsl:text> + </xsl:attribute> + </xsl:element> + </xsl:template> + + <xsl:template match="lof"> + <xsl:element name="toc"> + <xsl:attribute name="role"> + <xsl:text>figure</xsl:text> + </xsl:attribute> + </xsl:element> + </xsl:template> + + <xsl:template match="blockquote"> + <motto><xsl:apply-templates/></motto> + </xsl:template> + + <xsl:template match="authorgroup"> + <xsl:apply-templates/> + </xsl:template> + + + <xsl:template match="affiliation"> + <!-- Ignoring affiliations for now --> + </xsl:template> + +</xsl:stylesheet> diff --git a/docs-xml/xslt/expand-sambadoc.xsl b/docs-xml/xslt/expand-sambadoc.xsl new file mode 100644 index 0000000..97aaafb --- /dev/null +++ b/docs-xml/xslt/expand-sambadoc.xsl @@ -0,0 +1,177 @@ +<?xml version='1.0'?> +<!-- + Samba-documentation specific stylesheets. + This stylesheet eliminates Samba-specific XML elements and replaces them with + DocBook-only elements. + Published under the GNU GPLv3 or later + + (C) Jelmer Vernooij 2002-2004 +--> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc" + xmlns:xlink='http://www.w3.org/1999/xlink' + version="1.1"> + + <xsl:output method="xml" encoding="UTF-8" doctype-public="-//OASIS//DTD DocBook XML V4.2//EN" indent="yes" doctype-system="http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"/> + + <xsl:include href="strip-references.xsl"/> + <xsl:include href="expand-smbconfdoc.xsl"/> + + <!-- This is needed to copy content unchanged --> + <xsl:template match="@*|node()"> + <xsl:copy> + <xsl:apply-templates select="@*|node()"/> + </xsl:copy> + </xsl:template> + + <xsl:template name="xsmbconfoption"> + <xsl:param name="name"/> + <xsl:param name="content"/> + <xsl:variable name="linkcontent"> + <xsl:element name="parameter"> + <xsl:attribute name="moreinfo"> + <xsl:text>none</xsl:text> + </xsl:attribute> + <xsl:value-of select="$name"/> + </xsl:element> + + <xsl:choose> + <xsl:when test="$content != ''"> + <xsl:text> = </xsl:text> + <xsl:value-of select="$content"/> + </xsl:when> + </xsl:choose> + </xsl:variable> + + <xsl:choose> + <xsl:when test="$noreference = 1"> + <xsl:value-of select="$linkcontent"/> + </xsl:when> + <xsl:otherwise> + <xsl:variable name="newid"><xsl:value-of select="translate(translate(string($name),' ',''),'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/></xsl:variable> + <xsl:element name="link"> + <xsl:attribute name="linkend"> + <xsl:value-of select="$newid"/> + </xsl:attribute> + <xsl:attribute name="xlink:href">smb.conf.5.html#<xsl:value-of select="$newid"/></xsl:attribute> + <xsl:value-of select="$linkcontent"/> + </xsl:element> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template match="related"> + <xsl:element name="para"> + <xsl:text>Related command: </xsl:text> + <xsl:call-template name="xsmbconfoption"> + <xsl:with-param name="name" select="text()"/> + </xsl:call-template> + </xsl:element> + </xsl:template> + + <xsl:template match="smbconfblock/smbconfoption"> + <xsl:element name="member"> + <xsl:element name="indexterm"> + <xsl:value-of select="@name"/> + </xsl:element> + <xsl:choose> + <xsl:when test="text() != ''"> + <xsl:element name="parameter"> + <xsl:value-of select="@name"/> + <xsl:text> = </xsl:text> + <xsl:value-of select="text()"/> + </xsl:element> + </xsl:when> + </xsl:choose> + </xsl:element> + </xsl:template> + + <xsl:template match="smbconfblock/smbconfcomment"> + <xsl:element name="member"> + <xsl:text># </xsl:text> + <xsl:apply-templates/> + </xsl:element> + </xsl:template> + + <xsl:template match="smbconfblock/smbconfsection"> + <xsl:element name="member"> + <xsl:text> </xsl:text> + </xsl:element> + <xsl:element name="member"> + <xsl:element name="parameter"> + <xsl:value-of select="@name"/> + </xsl:element> + </xsl:element> + </xsl:template> + + <xsl:template match="smbconfoption"> + <xsl:call-template name="xsmbconfoption"> + <xsl:with-param name="name" select="@name"/> + <xsl:with-param name="content" select="text()"/> + </xsl:call-template> + </xsl:template> + + + <xsl:template match="smbconfblock"> + <xsl:element name="simplelist"> + <xsl:apply-templates/> + </xsl:element> + </xsl:template> + + <xsl:template match="smbconfsection"> + <xsl:element name="parameter"> + <xsl:value-of select="@name"/> + </xsl:element> + </xsl:template> + + <xsl:template match="imagefile"> + <xsl:element name="mediaobject"> + <xsl:element name="imageobject"> + <xsl:attribute name="role"><xsl:text>html</xsl:text></xsl:attribute> + <xsl:element name="imagedata"> + <xsl:attribute name="fileref"> + <xsl:text>images/</xsl:text><xsl:value-of select="text()"/><xsl:text>.png</xsl:text></xsl:attribute> + <xsl:attribute name="scale"> + <xsl:choose> + <xsl:when test="@scale != ''"> + <xsl:value-of select="@scale"/> + </xsl:when> + + <xsl:otherwise> + <xsl:text>100</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:attribute> + <xsl:attribute name="scalefit"><xsl:text>1</xsl:text></xsl:attribute> + </xsl:element> + </xsl:element> + <xsl:element name="imageobject"> + <xsl:element name="imagedata"> + <xsl:attribute name="fileref"> + <xsl:text>images/</xsl:text><xsl:value-of select="text()"/><xsl:text>.png</xsl:text></xsl:attribute> + <xsl:attribute name="scale"> + <xsl:choose> + <xsl:when test="@scale != ''"> + <xsl:value-of select="@scale"/> + </xsl:when> + + <xsl:otherwise> + <xsl:text>50</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:attribute> + <xsl:attribute name="scalefit"><xsl:text>1</xsl:text></xsl:attribute> + </xsl:element> + </xsl:element> + <xsl:element name="imageobject"> + <xsl:attribute name="role"><xsl:text>latex</xsl:text></xsl:attribute> + <xsl:element name="imagedata"> + <xsl:attribute name="fileref"> + <xsl:value-of select="$latex.imagebasedir"/><xsl:text>images/</xsl:text><xsl:value-of select="text()"/></xsl:attribute> + </xsl:element> + </xsl:element> + + </xsl:element> + </xsl:template> + +</xsl:stylesheet> diff --git a/docs-xml/xslt/expand-smbconfdoc.xsl b/docs-xml/xslt/expand-smbconfdoc.xsl new file mode 100644 index 0000000..778b80c --- /dev/null +++ b/docs-xml/xslt/expand-smbconfdoc.xsl @@ -0,0 +1,191 @@ +<?xml version='1.0'?> +<!-- + smb.conf-documentation specific stylesheets + Published under the GNU GPLv3 or later + + (C) Jelmer Vernooij 2002-2004 + (C) Alexander Bokovoy 2002-2004 +--> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc" + version="1.1"> + + <xsl:template match="description"><xsl:apply-templates/></xsl:template> + + <xsl:template match="value"><xsl:element name="literal"><xsl:apply-templates/></xsl:element></xsl:template> + + <xsl:template match="command"><xsl:element name="literal"><xsl:apply-templates/></xsl:element></xsl:template> + + <xsl:template match="synonym"><xsl:apply-templates/></xsl:template> + + <xsl:template match="related"><xsl:element name="para"><xsl:text>Related command</xsl:text><xsl:apply-templates/></xsl:element></xsl:template> + + <xsl:template match="samba:parameterlist"> + <xsl:apply-templates> + <xsl:sort select="samba:parameter/@name"/> + </xsl:apply-templates> + </xsl:template> + + <xsl:template match="value/comment"> + <xsl:text> # </xsl:text> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="samba:parameter"> + <xsl:variable name="cname"><xsl:value-of select="translate(translate(string(@name),' ',''), + 'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/> + </xsl:variable> + + <xsl:variable name="name"><xsl:value-of select="@name"/></xsl:variable> + + <xsl:variable name="anchor"> + <xsl:element name="anchor"> + <xsl:attribute name="id"> + <xsl:value-of select="$cname"/> + </xsl:attribute> + </xsl:element> + </xsl:variable> + + <xsl:variable name="context"> + <xsl:text> (</xsl:text> + <xsl:value-of select="@context"/> + <xsl:text>)</xsl:text> + </xsl:variable> + + <xsl:variable name="term"> + <xsl:copy-of select="$anchor"/> + <xsl:element name="title"> + <xsl:text> </xsl:text> + <xsl:text> </xsl:text> + <xsl:value-of select="@name"/> + <xsl:value-of select="$context"/> + <xsl:text> </xsl:text> + </xsl:element> + </xsl:variable> + + + <!-- Generate list of examples --> + <xsl:variable name="examples"> + <xsl:for-each select="value"> + <xsl:if test="@type = 'example'"> + <xsl:element name="para"> + <xsl:text>Example: </xsl:text> + <xsl:element name="emphasis"> + <xsl:element name="parameter"> + <xsl:copy-of select="$name"/> + </xsl:element> + <xsl:text> = </xsl:text> + <xsl:apply-templates select="."/> + <xsl:text> </xsl:text> + </xsl:element> + <xsl:text> </xsl:text> + </xsl:element> + </xsl:if> + </xsl:for-each> + </xsl:variable> + + <xsl:variable name="tdefault"> + <xsl:for-each select="value"> + <xsl:if test="@type = 'default'"> + <xsl:element name="para"> + <xsl:text>Default: </xsl:text> + <xsl:element name="emphasis"> + <xsl:element name="parameter"> + <xsl:copy-of select="$name"/> + </xsl:element> + <xsl:text> = </xsl:text> + <xsl:apply-templates select="."/> + <xsl:text> </xsl:text> + </xsl:element> + <xsl:text> </xsl:text> + </xsl:element> + </xsl:if> + </xsl:for-each> + </xsl:variable> + + <xsl:variable name="default"> + <xsl:choose> + <xsl:when test="$tdefault = ''"> + <xsl:element name="para"> + <xsl:element name="emphasis"> + <xsl:text>No default</xsl:text> + </xsl:element> + </xsl:element> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="$tdefault"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="content"> + <xsl:apply-templates select="description"/> + </xsl:variable> + + <xsl:for-each select="synonym"> + <xsl:element name="section"> + <xsl:element name="indexterm"> + <xsl:attribute name="significance"> + <xsl:text>preferred</xsl:text> + </xsl:attribute> + <xsl:element name="primary"> + <xsl:value-of select="."/> + </xsl:element> + <xsl:element name="see"> + <xsl:value-of select="$name"/> + </xsl:element> + </xsl:element> + <xsl:element name="title"> + <xsl:text> </xsl:text> + <xsl:text> </xsl:text> + <xsl:element name="anchor"> + <xsl:attribute name="id"> + <xsl:value-of select="translate(translate(string(.),' ',''), 'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/> + </xsl:attribute> + </xsl:element> + <xsl:value-of select="."/> + <xsl:text> </xsl:text> + </xsl:element> + <xsl:element name="variablelist"> + <xsl:element name="varlistentry"> + <xsl:element name="listitem"> + <xsl:element name="para"> + <xsl:text>This parameter is a synonym for </xsl:text> + <xsl:element name="link"> + <xsl:attribute name="linkend"> + <xsl:value-of select="translate(translate(string($name),' ',''), 'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/> + </xsl:attribute> + <xsl:value-of select="$name"/> + </xsl:element> + <xsl:text>.</xsl:text> + </xsl:element> + </xsl:element> + </xsl:element> + </xsl:element> + <xsl:text> </xsl:text> + </xsl:element> + </xsl:for-each> + + <xsl:element name="section"> + <xsl:element name="indexterm"> + <xsl:attribute name="significance"> + <xsl:text>preferred</xsl:text> + </xsl:attribute> + <xsl:element name="primary"> + <xsl:value-of select="@name"/> + </xsl:element> + </xsl:element> + <xsl:copy-of select="$term"/> + <xsl:element name="variablelist"> + <xsl:element name="varlistentry"> + <xsl:element name="listitem"> + <xsl:copy-of select="$content"/> <xsl:text> </xsl:text> + <xsl:copy-of select="$default"/> <xsl:text> </xsl:text> + <xsl:copy-of select="$examples"/> <xsl:text> </xsl:text> + </xsl:element> + </xsl:element> + </xsl:element> + <xsl:text> </xsl:text> + </xsl:element> + </xsl:template> +</xsl:stylesheet> diff --git a/docs-xml/xslt/generate-attributions.xsl b/docs-xml/xslt/generate-attributions.xsl new file mode 100644 index 0000000..427a740 --- /dev/null +++ b/docs-xml/xslt/generate-attributions.xsl @@ -0,0 +1,84 @@ +<?xml version='1.0'?> +<!-- + Generate Docbook/XML file with attributions based on chapter/author tags + (C) Jelmer Vernooij 2003 + + Published under the GNU GPLv3 or later +--> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + version="1.1"> + +<xsl:output method="xml" doctype-public="-//Samba-Team//DTD DocBook V4.2-Based Variant V1.0//EN" doctype-system="http://www.samba.org/samba/DTD/samba-doc" indent="yes"/> + +<!-- Remove all character data --> +<xsl:template match="@*|node()"> + <xsl:apply-templates select="@*|node()"/> +</xsl:template> + +<xsl:template match="/"> + <xsl:element name="preface"> + <xsl:element name="title"><xsl:text>Attribution</xsl:text></xsl:element> + <xsl:apply-templates/> + </xsl:element> +</xsl:template> + +<xsl:template match="chapter|preface"> + <xsl:choose> + <xsl:when test="chapterinfo/author != ''"> + <xsl:element name="para"> + <xsl:element name="link"> + <xsl:attribute name="linkend"><xsl:value-of select="@id"/></xsl:attribute> + <xsl:value-of select="title"/> + </xsl:element> + <xsl:text> 	</xsl:text> + <xsl:element name="itemizedlist"> + <xsl:apply-templates/> + <xsl:text>	</xsl:text> + </xsl:element> + <xsl:text> </xsl:text> + </xsl:element> + </xsl:when> + </xsl:choose> +</xsl:template> + +<xsl:template match="chapterinfo/author"> + <xsl:choose> + <xsl:when test="firstname != ''"> + <xsl:text>	</xsl:text> + <xsl:element name="listitem"> + <xsl:element name="para"> + <xsl:value-of select="firstname"/> + <xsl:if test="othername != ''"> + <xsl:text> </xsl:text> + <xsl:value-of select="othername"/> + <xsl:text> </xsl:text> + </xsl:if> + <xsl:text> </xsl:text><xsl:value-of select="surname"/> + <xsl:choose> + <xsl:when test="affiliation/address/email != ''"> + <xsl:element name="ulink"> + <xsl:attribute name="noescape"> + <xsl:text>1</xsl:text> + </xsl:attribute> + <xsl:attribute name="url"> + <xsl:text>mailto:</xsl:text> + <xsl:value-of select="affiliation/address/email"/> + </xsl:attribute> + </xsl:element> + </xsl:when> + </xsl:choose> + <xsl:choose> + <xsl:when test="contrib != ''"> + <xsl:text> (</xsl:text> + <xsl:value-of select="contrib"/> + <xsl:text>) </xsl:text> + </xsl:when> + </xsl:choose> + </xsl:element> + </xsl:element> + <xsl:text> </xsl:text> + </xsl:when> + </xsl:choose> +</xsl:template> + +</xsl:stylesheet> diff --git a/docs-xml/xslt/generate-dependencies.xsl b/docs-xml/xslt/generate-dependencies.xsl new file mode 100644 index 0000000..2fe3dd0 --- /dev/null +++ b/docs-xml/xslt/generate-dependencies.xsl @@ -0,0 +1,36 @@ +<?xml version='1.0'?> +<!-- + Find the image dependencies of a certain XML file + Generates (part of) a Makefile + + - $(FNAME)-images-latex-{png,eps,pdf} for role=latex + - $(FNAME)-images-role for all other roles + + (C) Jelmer Vernooij 2004-2005 + + Published under the GNU GPLv3 or later +--> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1"> + <xsl:output method="text"/> + + <xsl:template match="/"> + <xsl:for-each select="//mediaobject/imageobject[@role and not(@role=following::imageobject/@role)]"> + <xsl:call-template name="generate-images"> + <xsl:with-param name="role"><xsl:value-of select="@role"/></xsl:with-param> + </xsl:call-template> + </xsl:for-each> + <xsl:call-template name="generate-images"> + <xsl:with-param name="role"/> + </xsl:call-template> + </xsl:template> + + <xsl:template name="generate-images"> + <xsl:param name="role"/> + <xsl:value-of select="$target"/><xsl:text>-images-</xsl:text><xsl:value-of select="$role"/><xsl:text> = </xsl:text> + <xsl:for-each select="//mediaobject/imageobject[@role=$role]"> + <xsl:value-of select="imagedata/@fileref"/> + <xsl:text> </xsl:text> + </xsl:for-each> + <xsl:text> </xsl:text> + </xsl:template> +</xsl:stylesheet> diff --git a/docs-xml/xslt/html-chunk.xsl b/docs-xml/xslt/html-chunk.xsl new file mode 100644 index 0000000..9598398 --- /dev/null +++ b/docs-xml/xslt/html-chunk.xsl @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> + +<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/html/chunk.xsl"/> +<xsl:import href="html-common.xsl"/> +<xsl:param name="chunk.first.sections" select="1"/> +<xsl:param name="chunk.quietly" select="0"/> +<xsl:param name="chunk.section.depth" select="0"/> +<xsl:param name="chunk.toc" select="''"/> +<xsl:param name="chunk.tocs.and.lots" select="0"/> + +</xsl:stylesheet> diff --git a/docs-xml/xslt/html-common.xsl b/docs-xml/xslt/html-common.xsl new file mode 100644 index 0000000..86d31a5 --- /dev/null +++ b/docs-xml/xslt/html-common.xsl @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:xlink='http://www.w3.org/1999/xlink' + exclude-result-prefixes="xlink" + version="1.0"> + +<xsl:param name="base.dir" select="'../htmldocs/'"/> +<xsl:param name="bridgehead.in.toc" select="1"/> +<xsl:param name="citerefentry.link" select="'1'"/> +<xsl:param name="css.decoration" select="1"/> +<xsl:param name="html.stylesheet" select="'../samba.css'"/> +<xsl:param name="html.stylesheet.type">text/css</xsl:param> +<xsl:param name="use.extensions" select="'0'"/> +<xsl:param name="use.id.as.filename" select="'1'"/> +<xsl:param name="use.local.olink.style" select="1"/> +<xsl:param name="use.role.as.xrefstyle" select="1"/> +<xsl:param name="use.role.for.mediaobject" select="1"/> + +<xsl:template name="generate.citerefentry.link"> + <xsl:value-of select="refentrytitle"/><xsl:text>.</xsl:text><xsl:value-of select="manvolnum"/><xsl:text>.html</xsl:text> +</xsl:template> + +<xsl:template match="author"> +</xsl:template> + +<xsl:template match="link" name="link"> + <xsl:param name="linkend" select="@linkend"/> + <xsl:param name="a.target"/> + <xsl:param name="xhref" select="@xlink:href"/> + + <xsl:variable name="content"> + <xsl:call-template name="anchor"/> + <xsl:choose> + <xsl:when test="count(child::node()) > 0"> + <!-- If it has content, use it --> + <xsl:apply-templates/> + </xsl:when> + <!-- else look for an endterm --> + <xsl:when test="@endterm"> + <xsl:variable name="etargets" select="key('id',@endterm)"/> + <xsl:variable name="etarget" select="$etargets[1]"/> + <xsl:choose> + <xsl:when test="count($etarget) = 0"> + <xsl:message> + <xsl:value-of select="count($etargets)"/> + <xsl:text>Endterm points to nonexistent ID: </xsl:text> + <xsl:value-of select="@endterm"/> + </xsl:message> + <xsl:text>???</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="$etarget" mode="endterm"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:choose> + <xsl:when test="key('id', @linkend)/title[1]"> + <xsl:call-template name="gentext.startquote"/> + <xsl:value-of select="key('id', @linkend)/title[1]"/> + <xsl:call-template name="gentext.endquote"/> + </xsl:when> + <xsl:otherwise> + <xsl:message> + <xsl:text>Link element has no content and no Endterm. And linkend's pointer has no title. </xsl:text> + <xsl:text>Nothing to show in the link to </xsl:text> + <xsl:value-of select="(@linkend)[1]"/> + </xsl:message> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:call-template name="simple.xlink"> + <xsl:with-param name="node" select="."/> + <xsl:with-param name="linkend" select="$linkend"/> + <xsl:with-param name="content" select="$content"/> + <xsl:with-param name="a.target" select="$a.target"/> + <xsl:with-param name="xhref" select="$xhref"/> + </xsl:call-template> + +</xsl:template> + +</xsl:stylesheet> diff --git a/docs-xml/xslt/html.xsl b/docs-xml/xslt/html.xsl new file mode 100644 index 0000000..b597b29 --- /dev/null +++ b/docs-xml/xslt/html.xsl @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> + +<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/html/docbook.xsl"/> +<xsl:import href="html-common.xsl"/> + +</xsl:stylesheet> diff --git a/docs-xml/xslt/html/samba.css b/docs-xml/xslt/html/samba.css new file mode 100644 index 0000000..3d926e8 --- /dev/null +++ b/docs-xml/xslt/html/samba.css @@ -0,0 +1,80 @@ +BODY { + font-family: helvetica, arial, lucida sans, sans-serif; + background-color: white; +} + +H1, H2, H3 { + color: blue; + font-size: 120%; + padding: 2px; + margin-top: 0px; +} + +H1 { + background-color: #EEEEFF; + color: blue; +} + +H2 { + background-color: #DDDDFF; + color: blue; +} + +H3 { + background-color: #CCCCFF; + color: blue; +} + +H4 { + color: blue; +} + +TR.qandadiv TD { + padding-top: 1em; +} + +DIV.navhead { + font-size: 80%; +} + +A:link { + color: #36F; +} + +A:visited { + color: #96C; +} + +A:active { + color: #F63; +} + +TR.question { + color: #33C; + font-weight: bold; +} + +TR.question TD { + padding-top: 1em; +} + +DIV.variablelist { + padding-left: 2em; + color: #33C; +} + +P { + color: black; +} + +DIV.note, DIV.warning, DIV.caution, DIV.tip, DIV.important { + border: dashed 1px; + background-color: #EEEEFF; + width: 40em; +} + +PRE.programlisting, PRE.screen { + border: #630 1px dashed; + color: #630; +} + diff --git a/docs-xml/xslt/latex.overrides.xml b/docs-xml/xslt/latex.overrides.xml new file mode 100644 index 0000000..76943b0 --- /dev/null +++ b/docs-xml/xslt/latex.overrides.xml @@ -0,0 +1,9 @@ +<?xml version='1.0'?> +<latexbindings> + <latexmapping role="begin"> + </latexmapping> + <latexmapping role="end"> + <mapping key="glossary" text=""/> + <mapping key="index" text=""/> + </latexmapping> +</latexbindings> diff --git a/docs-xml/xslt/latex.xsl b/docs-xml/xslt/latex.xsl new file mode 100644 index 0000000..5bc6deb --- /dev/null +++ b/docs-xml/xslt/latex.xsl @@ -0,0 +1,64 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version='1.0' + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + + <!-- Remove bits from the manual pages that are not relevant for the HOWTO Collection, + such as author info, etc --> + <xsl:import href="strip-references.xsl"/> + + <!-- Handle Samba-specific elements --> + <xsl:import href="latex/samba.xsl"/> + + <xsl:param name="latex.mapping.xml" select="document('latex.overrides.xml')"/> + +<xsl:param name="generate.toc"> + /appendix toc,title + article/appendix nop + /article toc,title + book toc,title,figure,table,example,equation + /chapter toc,title,lop + part toc,title + /preface toc,title + qandadiv toc + qandaset toc + procedure lop + reference toc,title + /sect1 toc + /sect2 toc + /sect3 toc + /sect4 toc + /sect5 toc + /section toc + set toc,title +</xsl:param> + +<xsl:output method="text" encoding="UTF-8" indent="yes"/> +<xsl:variable name="l10n.gentext.default.language" select="'en'"/> +<xsl:variable name="latex.example.caption.style"></xsl:variable> +<xsl:variable name="latex.hyperref.param.pdftex">hyperfigures,hyperindex,citecolor=black,urlcolor=black,filecolor=black,linkcolor=black,menucolor=red,pagecolor=black</xsl:variable> +<xsl:variable name="latex.use.tabularx">1</xsl:variable> +<xsl:variable name="latex.use.parskip">1</xsl:variable> +<xsl:variable name="latex.hyphenation.tttricks">1</xsl:variable> +<xsl:template name="latex.thead.row.entry"> +<xsl:text>{\bfseries </xsl:text><xsl:apply-templates/><xsl:text>}</xsl:text> +</xsl:template> +<!-- +<xsl:variable name="latex.class.book">sambadoc</xsl:variable> +--> +<xsl:variable name="latex.babel.language">english</xsl:variable> +<xsl:variable name="ulink.footnotes" select="1"/> +<xsl:variable name="ulink.show" select="0"/> + +<!-- The 'imagefile' element, so we can use images without three layers of XML elements --> +<xsl:template match="imagefile"> + <xsl:text>\includegraphics[scale=</xsl:text> + <xsl:choose> + <xsl:when test="@scale != ''"><xsl:value-of select="@scale div 100"/></xsl:when> + + <xsl:otherwise><xsl:text>.50</xsl:text></xsl:otherwise> + </xsl:choose> + <xsl:text>]{</xsl:text> + <xsl:value-of select="text()"/> + <xsl:text>} </xsl:text> +</xsl:template> +</xsl:stylesheet> diff --git a/docs-xml/xslt/latex/samba.sty b/docs-xml/xslt/latex/samba.sty new file mode 100644 index 0000000..a576898 --- /dev/null +++ b/docs-xml/xslt/latex/samba.sty @@ -0,0 +1,25 @@ +% LaTeX class with Samba-specific commands +% Copyright (C) 2004 Jelmer Vernooij <jelmer@samba.org> +% Released under the GNU GPL v3 or later + +\newcommand{\smbconfsection}[1]{\emph{#1}} +\newcommand{\smbconfoption}[1]{\index{#1}\emph{#1}} +% smb.conf syntax highlighting +\RequirePackage{listings} +\RequirePackage{xcolor} + +\lstdefinelanguage{smbconf}{ + morecomment=[l]{\#}, +} + +\lstdefinestyle{smbconfblock} +{ + breaklines=true, + backgroundcolor=\color[gray]{0.93}, + frame=single, + frameround=tttt, + prebreak={\space\linebreaksign}, + basicstyle=\small +} + +\newcommand{\linebreaksign}{\hbox{\ensuremath\hookleftarrow}} diff --git a/docs-xml/xslt/latex/samba.xsl b/docs-xml/xslt/latex/samba.xsl new file mode 100644 index 0000000..9fc27e6 --- /dev/null +++ b/docs-xml/xslt/latex/samba.xsl @@ -0,0 +1,146 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<!-- + Expand Samba-specific XML elements to LaTeX, for use with dblatex + + Copyright (C) 2003,2004,2009 Jelmer Vernooij <jelmer@samba.org> + Published under the GNU GPLv3 or later +--> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version='1.0' + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> + +<!-- FIXME: dblatex should have some way to load additional packages, user.params.set2 + isn't really meant for this sort of thing --> +<xsl:template name="user.params.set2"> + <xsl:text>\usepackage{samba} </xsl:text> +</xsl:template> + +<xsl:template match="smbconfblock/smbconfoption"> + <xsl:text> </xsl:text><xsl:value-of select="@name"/> + <xsl:if test="text() != ''"> + <xsl:text> = </xsl:text> + <xsl:value-of select="text()"/> + </xsl:if> + <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="smbconfblock/smbconfcomment"> + <xsl:text># </xsl:text> + <xsl:apply-templates/> + <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="smbconfblock/smbconfsection"> + <xsl:value-of select="@name"/> + <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="smbconfoption"> + <xsl:text>\smbconfoption{</xsl:text> + <xsl:call-template name="scape"> + <xsl:with-param name="string" select="@name"/> + </xsl:call-template> + <xsl:text>}</xsl:text> + + <xsl:choose> + <xsl:when test="text() != ''"> + <xsl:text> = </xsl:text> + <xsl:call-template name="scape"> + <xsl:with-param name="string" select="text()"/> + </xsl:call-template> + </xsl:when> + </xsl:choose> +</xsl:template> + +<xsl:template match="smbconfblock"> + <xsl:text> \begin{lstlisting}[language=smbconf,style=smbconfblock] </xsl:text> + <xsl:apply-templates/> + <xsl:text>\end{lstlisting} </xsl:text> +</xsl:template> + +<xsl:template match="smbconfsection"> + <xsl:text>\smbconfsection{</xsl:text> + <xsl:call-template name="scape"> + <xsl:with-param name="string" select="@name"/> + </xsl:call-template> + <xsl:text>}</xsl:text> +</xsl:template> + + +<xsl:template match="description"><xsl:apply-templates/></xsl:template> + +<xsl:template match="value"><xsl:apply-templates/></xsl:template> + +<xsl:template match="synonym"><xsl:apply-templates/></xsl:template> + +<xsl:template match="related"><xsl:apply-templates/></xsl:template> + +<xsl:template match="//samba:parameterlist"> + <xsl:text>\begin{description} </xsl:text> + <xsl:apply-templates> + <xsl:sort select="samba:parameter/@name"/> + </xsl:apply-templates> + <xsl:text>\end{description} </xsl:text> +</xsl:template> + +<xsl:template match="value/comment"> + <xsl:text> # </xsl:text> + <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="/"> + <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="refentry"> + <xsl:text>\section{</xsl:text><xsl:value-of select="refmeta/refentrytitle"/><xsl:text>} </xsl:text> + <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="//samba:parameter"> + <xsl:for-each select="synonym"> + <xsl:text>\item[{</xsl:text><xsl:value-of select="."/><xsl:text>}]\null{} </xsl:text> + <xsl:text>\index{</xsl:text><xsl:value-of select="."/><xsl:text>} </xsl:text> + <xsl:text>This parameter is a synonym for \smbconfoption{</xsl:text><xsl:value-of select="../@name"/><xsl:text>}.</xsl:text> + </xsl:for-each> + + <xsl:text>\item[{</xsl:text><xsl:value-of select="@name"/> + <xsl:text> (</xsl:text> + <xsl:value-of select="@context"/> + <xsl:text>)</xsl:text> + <xsl:text>}]\null{} </xsl:text> + <xsl:text>\index{</xsl:text><xsl:value-of select="@name"/><xsl:text>} </xsl:text> + + <!-- Print default value--> + <xsl:text> </xsl:text> + <xsl:text>Default: </xsl:text> + <xsl:text>\emph{</xsl:text> + <xsl:choose> + <xsl:when test="value[@type='default'] != ''"> + <xsl:value-of select="@name"/> + <xsl:text> = </xsl:text> + <xsl:apply-templates select="value"/> + </xsl:when> + <xsl:otherwise> + <xsl:text>No default</xsl:text> + </xsl:otherwise> + </xsl:choose> + <xsl:text>}</xsl:text> + <xsl:text> </xsl:text> + + <!-- Generate list of examples --> + <xsl:text> </xsl:text> + <xsl:for-each select="value[@type='example']"> + <xsl:text> </xsl:text> + <xsl:text>Example: </xsl:text> + <xsl:text>\emph{</xsl:text><xsl:value-of select="../@name"/> + <xsl:text> = </xsl:text> + <xsl:apply-templates select="."/> + <xsl:text>}</xsl:text> + <xsl:text> </xsl:text> + </xsl:for-each> + + <!-- Description --> + <xsl:apply-templates select="description"/> +</xsl:template> + +</xsl:stylesheet> diff --git a/docs-xml/xslt/latex/sambadoc.cls b/docs-xml/xslt/latex/sambadoc.cls new file mode 100644 index 0000000..b7f634f --- /dev/null +++ b/docs-xml/xslt/latex/sambadoc.cls @@ -0,0 +1,324 @@ +% $Id$ +% phstyle.cls -- Macros for formatting Prentice-Hall Books +% -- Compiled by J.K. Shultis, Dec. 1993 +% -- Modified and enhanced for LaTeX2e mdh/rlm 1997/02 +% -- Style Modifications Lori Hughes June 2002 +% -- Modifications for Samba by Jelmer Vernooij 2003-2005 + +\NeedsTeXFormat{LaTeX2e}% +\ProvidesClass{sambadoc}[2005/06/13 Samba Documentation class] +\newif\if@ph +\@phfalse +\DeclareOption{ph}{ \@phtrue } +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{report}} +\ProcessOptions% + +% Base everything on the default class 'report'. +\LoadClass{report}% +%================================================================================ +% 1. Page layout dimensions +% 3. Define new fonts for headings +% 4. Redefines the way "figure" amd "table" are formatted in a \caption +% 5. Defines a \capt macro which defines (1) \captwidth, (2) \captsize +% and \beforetableskip. +% 6. Defines and modifies FANCYHDS.STY for headers and foots +% 7. Change sectioning headings to bold sans serif fonts +% 8. Turn off leader dots in Table of Contents +%====================================================================== + +%====================== Page Layout +% \oddsidemargin 0.750in \evensidemargin 0.750in \textwidth 5.00in +% \topmargin 0.625in \headheight 0.3in \headsep 0.2in +% \textheight 7.3in %\footheight .2in +% \footskip 0.3in +% \parskip 0ex \marginparwidth 1.00in \marginparsep 0.5in +%\setlength\arraycolsep{1pt} + +\if@ph + \RequirePackage{geometry} + \geometry{ + twoside, + openleft, + papersize={7in,9.25in}, + lmargin=.75in, + rmargin=.75in, + bmargin=.625in, + tmargin=.825in, + width=5.5in, + height=7.325in, + marginparwidth=0.35in, + headheight=0.2in, + textwidth=5in, + headsep=.25in, + footskip=.025in} + %\usepackage[letter,cam,cross,center]{crop} +\fi + +%====================== Define special fonts +\newfont{\BIG}{cminch} %--- One-inch font +\newfont{\sfbHuge}{cmssbx10 scaled\magstep5} %-- 25pt sans serif bold +\newfont{\sfblarge}{cmssbx10 scaled\magstep1} %-- 12pt sans serif bold +\newfont{\sfbeleven}{cmssbx10 scaled\magstephalf} %-- 11pt sans serif bold +\newfont{\sfb}{cmssbx10} %-- 10pt sans serif bold +\newfont{\sfeight}{cmss8} %-- 8pt sans serif +\newfont{\sfnine}{cmss8 at 9pt} %-- 9pt sans serif + +\newfont{\defnem}{cmbxti10} %-- 10pt sans serif bold +\def\spacingset#1{\def\baselinestretch{#1}\small\normalsize} + +%-----------Change section heading font sizes here---- +\newfont{\sfbsection}{cmssbx10 at 13pt} +\newfont{\sfbsubsec}{cmssbx10 at 12pt} +\newfont{\sfbsubsub}{cmssbx10 at 11pt} +\newfont{\sfbpara}{cmssbx10} +%--------------------------------------------------- + + +% +% Theorem hack +% + +\def\@begintheorem#1#2{\trivlist + \item[\hskip \labelsep{\bfseries #1\ #2:}]\itshape} + +%===================== Redefine the \@makecaption command + \long\def\@makecaption#1#2{\vskip 10\p@ +%% \setbox\@tempboxa\hbox{#1: #2}% %% original label definition + \setbox\@tempboxa\hbox{\textbf{ \small #1.} \small #2}% %% bold and . instead of : + \ifdim \wd\@tempboxa >\hsize +%% #1: #2\par %% original definition + \textbf{ \small #1.} \small #2\par %% bold and . instead of : + \else + \hbox to\hsize{\hfil\box\@tempboxa\hfil}% %% original +%% \hbox to\hsize{\box\@tempboxa\hfil}% %% no centering + \fi} + +%===================== New caption macro +\newlength{\captsize} \let\captsize=\footnotesize +\newlength{\captwidth} \setlength{\captwidth}{\textwidth} +\newlength{\beforetableskip} \setlength{\beforetableskip}{.5\baselineskip} +\newcommand{\capt}[1]{\begin{minipage}{\captwidth} + \let\normalsize=\captsize + \caption[#1]{#1} + \end{minipage}\\ \vspace{\beforetableskip}} + + +%---------- Change Figure Label +\newcommand{\thefigurename}{Figure} %-- set default: Figure +\def\fnum@figure{\thefigurename\ \thefigure} + +% This is to get the equation numbers in the form (section.equation), +% and to have the equation counter reset every time the section +% counter is incremented. + +\def\theequation{\thechapter.\arabic{equation}} +\@addtoreset{equation}{chapter} + +\RequirePackage{fancyhdr} + +%------------------- Modify Headers for Prentice-Hall Book Style +%---------- Setup headers and footers +\pagestyle{fancyplain} + +%--- Redefine Headers +\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}} +% +\lhead[\fancyplain{}{\bf\thepage}]{\fancyplain{}{\sfnine\rightmark}} +% +%\rhead[\fancyplain{}{\footnotesize\sf\CHHEAD}]{\fancyplain{}{\bf\thepage}} + \rhead[\fancyplain{}{\sfnine \leftmark}]{\fancyplain{}{\bf\thepage}} +%--- Empty footers on every page (except initial chapter page which has +%--- page number) and optionally a small date stamp +\cfoot[\fancyplain{}{}]{\fancyplain{}{}} +\rfoot[\fancyplain{}{}]{\fancyplain{\hspace{\fill}\\ \bf\thepage}{}} +\lfoot[\fancyplain{\hspace{\fill}\\ \bf\thepage}{}]{\fancyplain{}{}} +%-- replace the two lines above with the two below for a date stamp footer +%\rfoot[\fancyplain{\scriptsize \today}{\scriptsize \today}]{\fancyplain{\bf\thepage}{}} +%\lfoot[\fancyplain{\bf\thepage}{}]{\fancyplain{\scriptsize \today}{\scriptsize \today}} +%--- Change format of section header +% +% rlm added chaptermark 10/11/96 +\def\sectionmark#1{\markright{\ifnum \c@secnumdepth >\z@ + {\sfeight Section}~\thesection.\quad \fi #1}} +\def\sectionsmark#1{\markright{#1}{#1}} +% +\def\chaptermark#1{\markboth{#1 \quad \@chapapp{}~\thechapter}{}} +\def\chaptersmark#1{\markboth{#1}{#1}} + + +%===================== Change Section Heads to Bold Sans Serif +% Create bolds sans serif sectioning headings. Also the headings have +% been reduced in size with less space before and after the heading. +% Modified from macros given in BK10.STY +% +%----------------------------- part --------------------------------- +\def\@part[#1]#2{% + \thispagestyle{empty} + \ifodd\c@page\hbox{}\else\clearpage\fi + \addtocounter{page}{-2} + \thispagestyle{empty} + \ifnum \c@secnumdepth >-2\relax + \refstepcounter{part}% + \addcontentsline{toc}{part}{Part \thepart\hspace{1em}#1}% + \else + \addcontentsline{toc}{part}{Part #1}% + \fi + {\centering + \interlinepenalty \@M + \normalfont + \ifnum \c@secnumdepth >-2\relax + \huge\bfseries \partname\nobreakspace\thepart + \par + \vskip 20\p@ + \fi + \Huge \bfseries #2\par}% + \@endpart} + +%------------------------- appendix ----------------------------------- + +\let\oldappendix\appendix +\def\appendix{\oldappendix\def\addchaptertoloe{}} + +%------------------------- chapter ----------------------------------- +\def\addchaptertoloe{% + \addtocontents{loe}{\protect\addvspace{14pt}}% + \addtocontents{loe}{\noindent {\bfseries Chapter~\thechapter}\protect\par}% + \addtocontents{loe}{\protect\addvspace{10pt}}% +} + +\def\chapter{\clearpage \thispagestyle{plain} \global\@topnum\z@ +\@afterindentfalse \secdef\@chapter\@schapter} +\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne + \refstepcounter{chapter} + \typeout{\@chapapp\space\thechapter.} + \addcontentsline{toc}{chapter}{Chapter~\protect + \numberline{\thechapter}\uppercase{#1}}\else + \addcontentsline{toc}{chapter}{Chapter~\uppercase{#1}}\fi + \chaptermark{#1} + \addchaptertoloe + \addtocontents{lof}{\protect\addvspace{10pt}} +\addtocontents{lot}{\protect\addvspace{10pt}} \if@twocolumn +\@topnewpage[\@makechapterhead{#2}] + \else \@makechapterhead{#2} + \@afterheading \fi} +% +\def\@schapter#1{\if@twocolumn \@topnewpage[\@makeschapterhead{#1}] + \else \@makeschapterhead{#1}\chaptersmark{#1} + \@afterheading\fi\addcontentsline{toc}{chapter}{\uppercase{#1}}} + + + +\def\@makechapterhead#1{\vspace*{-20pt}{\parindent0pt\raggedright +\ifnum\c@secnumdepth>\m@ne\LARGE\sf\@chapapp{}~\thechapter\par +\vskip3pt\hrule\vskip3pt\hrule +\vskip30pt\fi\raggedright\Huge\sfbHuge\uppercase{#1}\par +\nobreak\vskip70pt}}%\chaptermark{#1}} + +\def\@makeschapterhead#1{\vspace*{4pt}{\parindent0pt +\vskip3pt\hrule\vskip3pt\hrule +\vskip36pt\raggedright\Huge\sfbHuge\uppercase{#1}\par +\nobreak\vskip70pt}}%\chaptersmark{#1}} +\widowpenalty=1000 +\clubpenalty=1000 + +%------------------------ section ----------------------------------- +\def\section{\@startsection{section}{1}{\z@}{-3.5ex plus-1ex + minus -.2ex}{1.8ex}{\sfbsection}} + +%--------------------- subsection ----------------------------------- +\def\subsection{\@startsection{subsection}{2}{\z@}{-2.75ex plus -1ex + minus -.2ex}{1.2ex}{\sfbsubsec}} + +%-------------------- subsubsection -------------------------------- +\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{-2.75ex + plus -1ex minus -.2ex}{1.2ex}{\sfbsubsub}} + +%----------------------- paragraph ---------------------------------- +\def\paragraph{\@startsection{paragraph}{4}{\z@}{1.25ex plus + 1ex minus .2ex}{-1em}{\sfbpara}} + +%---------------------- subparagraph -------------------------------- +\def\subparagraph{\@startsection{subparagraph}{4}{\parindent}{1.25ex + plus 1ex minus .2ex}{-1em}{\normalsize\sfb}} + + + +%====================== Turn off leader dots in Table of Contents +\renewcommand{\@dotsep}{500} + +\def\tableofcontents{\markboth{}{}\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn + \fi\thispagestyle{plain} \@makeschapterhead{Contents} + \@afterheading + \chaptersmark{Contents} + \sectionsmark{Contents} + \@starttoc{toc}\if@restonecol\twocolumn\fi} + + +\def\thebibliography#1{\chapter*{Bibliography}\list +% \addcontentsline{toc}{chapter}{Bibliography} + {[\arabic{enumi}]}{\settowidth\labelwidth{2em}\leftmargin\labelwidth +% \advance\leftmargin\labelsep + \usecounter{enumi}} + \def\newblock{\hskip .11em plus .33em minus .07em} + \sloppy\clubpenalty4000\widowpenalty4000 + \sfcode`\.=1000\relax} +\let\endthebibliography=\endlist + + +%% BIBLIOGRAPHY +% +%% separate citations with "], [" +\def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi +\def\@citea{}\@cite{\@for\@citeb:=#2\do {\@citea\def\@citea{], +[}\@ifundefined {b@\@citeb}{{\bf ?}\@warning {Citation `\@citeb' on +page \thepage \space undefined}}% +{\csname b@\@citeb\endcsname}}}{#1}} + +\def\@cite#1#2{[{#1\if@tempswa, #2\fi}]} + + +%% index + +\def\theindex{\cleardoublepage\@restonecoltrue\if@twocolumn\@restonecolfalse\fi +\columnseprule \z@ +\columnsep 35pt\twocolumn[\@makeschapterhead{Subject Index}] + \chaptersmark{Subject Index}% + \addcontentsline{toc}{chapter}{SUBJECT INDEX} + \thispagestyle{plain}\parindent\z@ + \parskip\z@ plus .3pt\relax\let\item\@idxitem} + + +\renewcommand{\cleardoublepage}{\clearpage\if@twoside \ifodd\c@page\else +\hbox{}\thispagestyle{empty}\newpage\if@twocolumn\hbox{}\newpage\fi\fi\fi} + +\renewcommand{\numberline}[1]{\sbox\@tempboxa{#1\hspace{2pt}}% + \ifdim\wd\@tempboxa>\@tempdima \else \wd\@tempboxa\@tempdima\fi + \box\@tempboxa} + +% Custom list of examples +\def\listofexamples{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn + \fi\chapter*{List of Examples} + \renewcommand\@pnumwidth{0em} + \@starttoc{loe}\if@restonecol + \twocolumn\fi} + +\def\l@example{\noindent\@dottedtocline{1}{0em}{3.5em}} + +\renewcommand\listfigurename{\uppercase{List Of Figures}} +\renewcommand\listtablename{\uppercase{List Of Tables}} + +\setlength{\emergencystretch}{0cm} + + +\cleardoublepage +\pagenumbering{roman} + +\setcounter{page}{2} +\setcounter{totalnumber}{8} +\setcounter{bottomnumber}{3} +\setcounter{topnumber}{3} +\renewcommand{\textfraction}{0.1} +\renewcommand{\topfraction}{1.0} +\renewcommand{\bottomfraction}{1.0} + +\RequirePackage{samba} diff --git a/docs-xml/xslt/man.xsl b/docs-xml/xslt/man.xsl new file mode 100644 index 0000000..e252b56 --- /dev/null +++ b/docs-xml/xslt/man.xsl @@ -0,0 +1,89 @@ +<?xml version='1.0'?> +<!-- vim:set sts=2 shiftwidth=2 syntax=xml: --> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:xlink='http://www.w3.org/1999/xlink' + version='1.0'> + +<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl"/> + +<xsl:param name="chunk.section.depth" select="0"/> +<xsl:param name="chunk.first.sections" select="1"/> +<xsl:param name="use.id.as.filename" select="1"/> +<xsl:param name="man.endnotes.are.numbered" select="0"/> + +<!-- + Our ulink stylesheet omits @url part if content was specified +--> +<xsl:template match="ulink"> + <xsl:variable name="content"> + <xsl:apply-templates/> + </xsl:variable> + <xsl:if test="$content = ''"> + <xsl:text>: </xsl:text> + </xsl:if> + <xsl:if test="$content != ''"> + <xsl:value-of select="$content" /> + </xsl:if> + <xsl:if test="$content = ''"> + <xsl:apply-templates mode="italic" select="@url" /> + </xsl:if> +</xsl:template> + +<xsl:template match="itemizedlist|orderedlist|procedure"> + <xsl:if test="title"> + <xsl:text>.PP </xsl:text> + <xsl:call-template name="bold"> + <xsl:with-param name="node" select="title"/> + <xsl:with-param name="context" select="."/> + </xsl:call-template> + <xsl:text> </xsl:text> + </xsl:if> + <!-- * DocBook allows just about any block content to appear in --> + <!-- * lists before the actual list items, so we need to get that --> + <!-- * content (if any) before getting the list items --> + <xsl:apply-templates + select="*[not(self::listitem) and not(self::title)]"/> + <xsl:text> .RS </xsl:text> + <xsl:apply-templates select="listitem"/> + <xsl:if test="(parent::para or parent::listitem) or following-sibling::node()"> + <xsl:text>.sp </xsl:text> + <xsl:text>.RE </xsl:text> + </xsl:if> +</xsl:template> + +<xsl:template match="refsect3"> + <xsl:text> .SS "</xsl:text> + <xsl:value-of select="title[1]"/> + <xsl:text>" </xsl:text> + <xsl:apply-templates/> +</xsl:template> + + <!-- ================================================================== --> + <!-- These macros are from Docbook manpages XSLT development tree --> + <!-- help to maintain manpage generation clean when difference between --> + <!-- roff processors is important to note. --> + + <xsl:template name="roff-if-else-start"> + <xsl:param name="condition">n</xsl:param> + <xsl:text>.ie </xsl:text> + <xsl:value-of select="$condition"/> + <xsl:text> \{\ </xsl:text> + </xsl:template> + + <xsl:template name="roff-if-start"> + <xsl:param name="condition">n</xsl:param> + <xsl:text>.if </xsl:text> + <xsl:value-of select="$condition"/> + <xsl:text> \{\ </xsl:text> + </xsl:template> + + <xsl:template name="roff-else"> + <xsl:text>.\} </xsl:text> + <xsl:text>.el \{\ </xsl:text> + </xsl:template> + + <xsl:template name="roff-if-end"> + <xsl:text>.\} </xsl:text> + </xsl:template> + +</xsl:stylesheet> diff --git a/docs-xml/xslt/manpage-summary.xsl b/docs-xml/xslt/manpage-summary.xsl new file mode 100644 index 0000000..59bf6dc --- /dev/null +++ b/docs-xml/xslt/manpage-summary.xsl @@ -0,0 +1,42 @@ +<?xml version='1.0'?> +<!-- + Generate a summary page with a list of links to all manual pages + + Copyright (C) 2004 Jelmer Vernooij <jelmer@samba.org> + Published under the GNU GPLv3 or later +--> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:exsl="http://exslt.org/common" + version="1.1"> + + <xsl:output method="xml" encoding="UTF-8" omit-xml-declaration="yes"/> + + <xsl:template match="refentry"> + <xsl:element name="varlistentry"> + <xsl:apply-templates/> + </xsl:element> + </xsl:template> + + <xsl:template match="refentry/refmeta"> + <xsl:element name="term"> + <xsl:element name="ulink"> + <xsl:attribute name="url"> + <xsl:value-of select="refentrytitle"/><xsl:text>.</xsl:text><xsl:value-of select="manvolnum"/><xsl:text>.html</xsl:text> + </xsl:attribute> + <xsl:value-of select="refentrytitle"/><xsl:text>(</xsl:text><xsl:value-of select="manvolnum"/><xsl:text>)</xsl:text> + </xsl:element> + </xsl:element> + </xsl:template> + + <xsl:template match="refentry/refnamediv"> + <xsl:element name="listitem"> + <xsl:element name="para"> + <xsl:value-of select="refpurpose"/><xsl:text> </xsl:text> + </xsl:element> + </xsl:element> + </xsl:template> + + <xsl:template match="@*|node()"> + <xsl:apply-templates/> + </xsl:template> +</xsl:stylesheet> diff --git a/docs-xml/xslt/sambadoc2pearson.xsl b/docs-xml/xslt/sambadoc2pearson.xsl new file mode 100644 index 0000000..6100889 --- /dev/null +++ b/docs-xml/xslt/sambadoc2pearson.xsl @@ -0,0 +1,82 @@ +<?xml version='1.0'?> +<!-- + Convert DocBook to XML validating against the Pearson DTD + + (C) Jelmer Vernooij <jelmer@samba.org> 2004 + + Released under the GNU GPLv3 or later +--> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" + exclude-result-prefixes="doc" + version="1.1" > + + <xsl:import href="docbook2pearson.xsl"/> + + <xsl:strip-space elements="smbconfoption smbconfsection"/> + + <xsl:template match="smbconfblock/smbconfsection"> + <xsl:text> </xsl:text> + <xsl:value-of select="."/><xsl:text> </xsl:text> + </xsl:template> + + <xsl:template match="smbconfblock/smbconfoption"> + <xsl:text> </xsl:text><xsl:value-of select="@name"/><xsl:text> = </xsl:text><xsl:value-of select="text()"/><xsl:text> </xsl:text> + </xsl:template> + + <xsl:template match="smbconfblock"> + <xsl:call-template name="transform.id.attribute"/> + <listingcode> + <xsl:apply-templates/> + </listingcode> + </xsl:template> + + <xsl:template match="image"> + <figure> + <xsl:call-template name="transform.id.attribute"/> + <description><xsl:value-of select="imagedescription"/></description> + <figureref> + <xsl:attribute name="fileref"> + <xsl:value-of select="imagefile"/> + </xsl:attribute> + <xsl:if test="@scale != ''"> + <xsl:attribute name="scale"> + <xsl:value-of select="@scale"/> + </xsl:attribute> + </xsl:if> + </figureref> + </figure> + </xsl:template> + + <xsl:template match="smbconfblock/smbconfcomment"> + <xsl:text># </xsl:text><xsl:value-of select="text()"/><xsl:text> </xsl:text> + </xsl:template> + + <xsl:template match="smbconfblock/member"> + <xsl:value-of select="text()"/><xsl:text> </xsl:text> + <xsl:message><xsl:text>Encountered <member> element inside of smbconfblock!</xsl:text></xsl:message> + </xsl:template> + + <xsl:template match="filterline"> + <code><xsl:apply-templates/></code> + </xsl:template> + + <xsl:template match="smbconfoption"> + <code><xsl:value-of select="@name"/></code> + <xsl:if test="text() != ''"> + <xsl:text> = </xsl:text> + <xsl:value-of select="text()"/> + </xsl:if> + <xsl:text> </xsl:text> + </xsl:template> + + <xsl:template match="smbconfsection"> + <code><xsl:apply-templates/></code> + </xsl:template> + + <xsl:template match="ntgroup|ntuser"> + <em><xsl:apply-templates/></em> + </xsl:template> + <!-- translator --> + +</xsl:stylesheet> diff --git a/docs-xml/xslt/smb.conf-html.xsl b/docs-xml/xslt/smb.conf-html.xsl new file mode 100644 index 0000000..fe1a1cc --- /dev/null +++ b/docs-xml/xslt/smb.conf-html.xsl @@ -0,0 +1,103 @@ +<?xml version='1.0'?> +<!-- + Samba-documentation specific stylesheets + Published under the GNU GPLv3 or later + + (C) Jelmer Vernooij 2005 +--> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:exsl="http://exslt.org/common" + xmlns:samba="http://www.samba.org/samba/DTD/samba-doc" + version="1.1" + extension-element-prefixes="exsl"> + + <xsl:import href="html-common.xsl"/> + + <xsl:output method="xml" encoding="UTF-8" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" indent="yes" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/> + + <xsl:template match="samba:parameter"> + <xsl:element name="html"> + <xsl:element name="head"> + <xsl:element name="link"> + <xsl:attribute name="href"><xsl:text>smb.conf.xsl</xsl:text></xsl:attribute> + <xsl:attribute name="rel"><xsl:text>stylesheet</xsl:text></xsl:attribute> + <xsl:attribute name="type"><xsl:text>text/css</xsl:text></xsl:attribute> + </xsl:element> + + <xsl:element name="title"> + <xsl:value-of select="@name"/> + </xsl:element> + </xsl:element> + <xsl:element name="body"> + <xsl:element name="h1"> + <xsl:value-of select="@name"/> + </xsl:element> + + <xsl:element name="div"> + <xsl:attribute name="class"><xsl:text>context</xsl:text></xsl:attribute> + <xsl:text>Context: </xsl:text> + <xsl:choose> + <xsl:when test="@context = 'S'"> + <xsl:text>Share-specific</xsl:text> + </xsl:when> + + <xsl:when test="@context = 'G'"> + <xsl:text>Global</xsl:text> + </xsl:when> + + <xsl:otherwise> + <xsl:message><xsl:text>Unknown value for context attribute : </xsl:text><xsl:value-of select="@context"/></xsl:message> + </xsl:otherwise> + </xsl:choose> + + </xsl:element> + + <xsl:element name="div"> + <xsl:attribute name="class"><xsl:text>type</xsl:text></xsl:attribute> + <xsl:text>Type: </xsl:text> + <xsl:value-of select="@type"/> + </xsl:element> + + <xsl:element name="div"> + <xsl:attribute name="class"><xsl:text>synonyms</xsl:text></xsl:attribute> + <xsl:text>Synonyms: </xsl:text> + <xsl:for-each select="synonym"> + <xsl:text>, </xsl:text> + <xsl:value-of select="text()"/> + </xsl:for-each> + </xsl:element> + + <xsl:for-each select="value"> + <xsl:element name="div"> + <xsl:attribute name="class"><xsl:text>value</xsl:text></xsl:attribute> + <xsl:choose> + <xsl:when test="@type = 'default'"> + <xsl:text>Default value</xsl:text> + </xsl:when> + <xsl:when test="@type = 'example'"> + <xsl:text>Example value</xsl:text> + </xsl:when> + </xsl:choose> + + <xsl:text>: </xsl:text> + + <xsl:value-of select="text()"/> + + </xsl:element> + </xsl:for-each> + + <xsl:element name="div"> + <xsl:attribute name="class"><xsl:text>description</xsl:text></xsl:attribute> + + <xsl:for-each select="description"> + <xsl:apply-templates/> + </xsl:for-each> + </xsl:element> + </xsl:element> + </xsl:element> + </xsl:template> + + <xsl:template match="description"> + <xsl:apply-templates/> + </xsl:template> +</xsl:stylesheet> diff --git a/docs-xml/xslt/strip-references.xsl b/docs-xml/xslt/strip-references.xsl new file mode 100644 index 0000000..951d4be --- /dev/null +++ b/docs-xml/xslt/strip-references.xsl @@ -0,0 +1,8 @@ +<?xml version='1.0'?> +<!-- Removes particular (unuseful for the book) elements from references --> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + version="1.1"> + <xsl:template match="reference/refentry/refsect1[title='VERSION' or title='AUTHOR']"/> + <xsl:template match="reference/refentry/refmeta"/> + <xsl:template match="reference/refentry/refnamediv"/> +</xsl:stylesheet> diff --git a/docs-xml/xslt/yodl.xsl b/docs-xml/xslt/yodl.xsl new file mode 100644 index 0000000..d33cdd6 --- /dev/null +++ b/docs-xml/xslt/yodl.xsl @@ -0,0 +1,321 @@ +<?xml version='1.0'?> +<!-- + DocBook to yodl converter + + Lacks support for a few docbook tags, but pretty much all + yodl macros are used + + (C) Jelmer Vernooij 2004 + Published under the GNU GPLv3 or later +--> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:exsl="http://exslt.org/common" + version="1.1"> + + <xsl:output method="text" encoding="iso-8859-1" standalone="yes" indent="no"/> + <xsl:strip-space elements="*"/> + + <xsl:template match="refentry"> + <xsl:text>manpage(</xsl:text> + <xsl:value-of select="refmeta/refentrytitle"/> + <xsl:text>)()(</xsl:text> + <xsl:value-of select="refmeta/manvolnum"/> + <xsl:text>)(package)() </xsl:text> + + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="article"> + <xsl:text>article(</xsl:text> + <xsl:value-of select="title"/> + <xsl:text>)(</xsl:text> + <xsl:text>FIXME</xsl:text> + <xsl:text>)(</xsl:text> + <xsl:value-of select="articleinfo/pubdate"/> + <xsl:text>)</xsl:text> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="report"> + <xsl:text>report(</xsl:text> + <xsl:value-of select="title"/> + <xsl:text>)(</xsl:text> + <xsl:text>FIXME</xsl:text> + <xsl:text>)(</xsl:text> + <xsl:value-of select="articleinfo/pubdate"/> + <xsl:text>)</xsl:text> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="book"> + <xsl:text>book(</xsl:text> + <xsl:value-of select="title"/> + <xsl:text>)(</xsl:text> + <xsl:text>FIXME</xsl:text> + <xsl:text>)(</xsl:text> + <xsl:value-of select="articleinfo/pubdate"/> + <xsl:text>)</xsl:text> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="chapter"> + <xsl:choose> + <xsl:when test="@id = ''"> + <xsl:text>chapter(</xsl:text> + <xsl:value-of select="title"/> + <xsl:text>) </xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>lchapter(</xsl:text> + <xsl:value-of select="@id"/> + <xsl:text>)(</xsl:text> + <xsl:value-of select="title"/> + <xsl:text>) </xsl:text> + </xsl:otherwise> + </xsl:choose> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="citerefentry"> + <xsl:value-of select="refentrytitle"/> + <xsl:text>(</xsl:text> + <xsl:value-of select="manvolnum"/> + <xsl:text>)</xsl:text> + </xsl:template> + + <xsl:template match="para"> + <xsl:apply-templates/> + <xsl:text> </xsl:text> + </xsl:template> + + <xsl:template match="formalpara"> + <xsl:text>paragraph(</xsl:text> + <xsl:value-of select="title"/> + <xsl:text>) </xsl:text> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="part"> + <xsl:text>part(</xsl:text> + <xsl:value-of select="title"/> + <xsl:text>) </xsl:text> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="preface"> + <xsl:text>nchapter(</xsl:text> + <xsl:value-of select="title"/> + <xsl:text>) </xsl:text> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="quote"> + <xsl:text>"</xsl:text> + <xsl:apply-templates/> + <xsl:text>"</xsl:text> + </xsl:template> + + <xsl:template match="parameter|filename"> + <xsl:text>code(</xsl:text> + <xsl:apply-templates/> + <xsl:text>)</xsl:text> + </xsl:template> + + <xsl:template match="emphasis"> + <xsl:text>em(</xsl:text> + <xsl:apply-templates/> + <xsl:text>)</xsl:text> + </xsl:template> + + <xsl:template match="command"> + <xsl:text>bf(</xsl:text> + <xsl:apply-templates/> + <xsl:text>)</xsl:text> + </xsl:template> + + <xsl:template match="refnamediv"> + <xsl:text>manpagename(</xsl:text> + <xsl:value-of select="refname"/> + <xsl:text>)(</xsl:text> + <xsl:value-of select="refpurpose"/> + <xsl:text>) </xsl:text> + </xsl:template> + + <xsl:template match="refsynopsisdiv"> + <xsl:text>manpagesynopsis()</xsl:text> + </xsl:template> + + <xsl:template match="refsect1|refsect2"> + <xsl:choose> + <xsl:when test="title='DESCRIPTION'"> + <xsl:text> manpagedescription() </xsl:text> + </xsl:when> + <xsl:when test="title='OPTIONS'"> + <xsl:text> manpageoptions() </xsl:text> + </xsl:when> + <xsl:when test="title='FILES'"> + <xsl:text> manpagefiles() </xsl:text> + </xsl:when> + <xsl:when test="title='SEE ALSO'"> + <xsl:text> manpageseealso() </xsl:text> + </xsl:when> + <xsl:when test="title='DIAGNOSTICS'"> + <xsl:text> manpagediagnostics() </xsl:text> + </xsl:when> + <xsl:when test="title='BUGS'"> + <xsl:text> manpagebugs() </xsl:text> + </xsl:when> + <xsl:when test="title='AUTHOR'"> + <xsl:text> manpageauthor() </xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text> manpagesection(</xsl:text> + <xsl:value-of select="title"/> + <xsl:text>) </xsl:text> + </xsl:otherwise> + </xsl:choose> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="orderedlist"> + <xsl:text>startdit() </xsl:text> + <xsl:for-each select="listitem"> + <xsl:text>dit() </xsl:text> + <xsl:copy> + <xsl:apply-templates/> + </xsl:copy> + <xsl:text> </xsl:text> + </xsl:for-each> + <xsl:text>enddit() </xsl:text> + </xsl:template> + + <xsl:template match="itemizedlist"> + <xsl:text>startit() </xsl:text> + <xsl:for-each select="listitem"> + <xsl:text>it() </xsl:text> + <xsl:copy> + <xsl:apply-templates/> + </xsl:copy> + <xsl:text> </xsl:text> + </xsl:for-each> + <xsl:text>endit() </xsl:text> + </xsl:template> + + <xsl:template match="variablelist"> + <xsl:text>startdit() </xsl:text> + <xsl:for-each select="varlistentry"> + <xsl:text>dit(</xsl:text> + <xsl:copy-of select="term"> + <xsl:apply-templates/> + </xsl:copy-of> + <xsl:text>) </xsl:text> + <xsl:apply-templates select="listitem/para"/> + <xsl:text> </xsl:text> + </xsl:for-each> + <xsl:text>enddit() </xsl:text> + </xsl:template> + + <xsl:template match="anchor"> + <xsl:text>label(</xsl:text> + <xsl:value-of select="@id"/> + <xsl:text>) </xsl:text> + </xsl:template> + + <xsl:template match="footnote"> + <xsl:text>footnote(</xsl:text> + <xsl:apply-templates/> + <xsl:text>)</xsl:text> + </xsl:template> + + <xsl:template match="toc"> + <xsl:text>gettocstring() </xsl:text> + </xsl:template> + + <xsl:template match="ulink"> + <xsl:text> </xsl:text> + <xsl:text>url(</xsl:text> + <xsl:value-of select="url"/> + <xsl:text>)(</xsl:text> + <xsl:apply-templates/> + <xsl:text>)</xsl:text> + </xsl:template> + + <xsl:template match="link"> + <xsl:text>lref(</xsl:text> + <xsl:apply-templates/> + <xsl:text>)(</xsl:text> + <xsl:value-of select="@linkend"/> + <xsl:text>)</xsl:text> + </xsl:template> + + <xsl:template match="index"> + <xsl:text>printindex() </xsl:text> + </xsl:template> + + <xsl:template match="sect1"> + <xsl:choose> + <xsl:when test="@id = ''"> + <xsl:text>sect(</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>lsect(</xsl:text> + <xsl:value-of select="@id"/> + <xsl:text>)(</xsl:text> + </xsl:otherwise> + </xsl:choose> + <xsl:value-of select="title"/> + <xsl:text>) </xsl:text> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="sect2"> + <xsl:choose> + <xsl:when test="@id = ''"> + <xsl:text>subsect(</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>lsubsect(</xsl:text> + <xsl:value-of select="@id"/> + <xsl:text>)(</xsl:text> + </xsl:otherwise> + </xsl:choose> + <xsl:value-of select="title"/> + <xsl:text>) </xsl:text> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="sect3"> + <xsl:choose> + <xsl:when test="@id = ''"> + <xsl:text>subsubsect(</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>lsubsubsect(</xsl:text> + <xsl:value-of select="@id"/> + <xsl:text>)(</xsl:text> + </xsl:otherwise> + </xsl:choose> + <xsl:value-of select="title"/> + <xsl:text>) </xsl:text> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="sect4"> + <xsl:choose> + <xsl:when test="@id = ''"> + <xsl:text>subsubsubsect(</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>lsubsubsubsect(</xsl:text> + <xsl:value-of select="@id"/> + <xsl:text>)(</xsl:text> + </xsl:otherwise> + </xsl:choose> + <xsl:value-of select="title"/> + <xsl:text>) </xsl:text> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="*"/> + +</xsl:stylesheet> |