X-Git-Url: http://git.samba.org/samba.git/?p=jelmer%2Fsamba4-debian.git;a=blobdiff_plain;f=howto.txt;h=654ad658c8b795c3116840b0f4774a9eaa90b2bd;hp=bc3978964e3e28ba94bc2fe02fa771b42b940e50;hb=92c1c0e9137f0845cac6cc96bf78711b6aaffe21;hpb=4e7d723dacc0d6d526721ee037502c02ffd3fdec diff --git a/howto.txt b/howto.txt index bc3978964..654ad658c 100644 --- a/howto.txt +++ b/howto.txt @@ -1,48 +1,59 @@ Samba4 developer howto ----------------------- +====================== tridge@samba.org, December 2004 +A more up to date version of this howto can be found in the wiki +at http://wiki.samba.org/index.php/Samba4/HOWTO. This is a very basic document on how to setup a simple Samba4 server. This is aimed at developers who are already familiar with Samba3 and wish to participate in Samba4 development. This is not aimed at production use of Samba4. +.. contents:: Step 1: download Samba4 ----------------------- There are 2 methods of doing this: - method 1: "rsync -avz samba.org::ftp/unpacked/samba4 ." + method 1: "rsync -avz samba.org::ftp/unpacked/samba_4_0_test/ samba4" - method 2: "svn co svn://svnanon.samba.org/samba/branches/SAMBA_4_0 samba4" + method 2: "git clone git://git.samba.org/samba.git samba4; cd samba4; git checkout v4-0-test; cd .." both methods will create a directory called "samba4" in the current -directory. If you don't have rsync or svn then install one of them. +directory. If you don't have rsync or git then install one of them. + +Since only released versions of Samba contain a pregenerated configure script, +you will have to generate it by hand:: -Note that the above rsync command will give you a checked out svn -repository. So if you also have svn you can update it to the latest -version at some future date using: + $ cd samba4/source + $ ./autogen.sh - cd samba4 - svn up +Note that the above rsync command will give you a checked out git +repository. So if you also have git you can update it to the latest +version at some future date using:: + $ cd samba4 + $ git pull origin v4-0-test Step 2: compile Samba4 ---------------------- -Run this: +Recommended optional development libraries: +- acl and xattr development libraries +- gnutls +- readline - cd samba4/source - ./autogen.sh - ./configure.developer -C - make +Run this:: -If you have gcc 3.4 or newer, then run "make pch" before "make" to -greatly speed up the compile process (about 5x faster). + $ cd samba4/source + $ ./configure + $ make proto all +If you have gcc 3.4 or newer, then substitute "pch" for "proto" to +greatly speed up the compile process (about 5x faster). Step 3: install Samba4 ---------------------- @@ -50,51 +61,60 @@ Step 3: install Samba4 Run this as a user who have permission to write to the install directory (defaults to /usr/local/samba). Use --prefix option to configure above to change this. + +:: - make install + # make install Step 4: provision Samba4 ------------------------ -The "provision" step sets up a basic user database. +The "provision" step sets up a basic user database. Make sure your smbscript +binary is installed in a directory listed in your PATH environment variable. +It is presumed it's available just like any other commands from your shell. +Must be run as a user with permission to write to the install directory. - cd source - ./script/provision.pl --realm=YOUR.REALM --domain=YOURDOM --adminpass=SOMEPASSWORD +:: -This will create a file called newsam.ldb. You need to copy this to -sam.ldb in the "private" subdirectory of your install. For example: + # cd source + # ./setup/provision --realm=YOUR.REALM --domain=YOURDOM \ + # --adminpass=SOMEPASSWORD --server-role='domain controller' - cp newsam.ldb /usr/local/samba/private/sam.ldb +REMINDER: Add the "bin" directory of the path you installed to + (e.g. /usr/local/samba/bin) to your path, or the provision command + will not work. +'YOURDOM' is the NT4 style domain name. 'YOUR.REALM' is your kerberos +realm, which is typically your DNS domain name. Step 5: Create a simple smb.conf -------------------------------- -You need to create a smb.conf file in the lib/ directory of your -install. The default is /usr/local/samba/lib/smb.conf. A minimal -smb.conf would be: - - workgroup = YOURDOM +The provisioning will create a very simple smb.conf with no shares by +default. You will need to update it to add at least one share. For +example:: [test] path = /data/test read only = no -The workgroup must exactly match the --domain argument you gave to provision.pl - Step 6: starting Samba4 ----------------------- The simplest is to just run "smbd", but as a developer you may find -the following more useful: +the following more useful:: - smbd -i -M single -d3 + # smbd -i -M single that means "start smbd without messages in stdout, and running a -single process, with level 3 debugging". That mode of operation makes -debugging smbd with gdb particularly easy. +single process. That mode of operation makes debugging smbd with gdb +particularly easy. + +Note that now it is no longer necessary to have an instance of nmbd +from Samba 3 running. If you are running any smbd or nmbd processes +they need to be stopped before starting smbd from Samba 4. Make sure you put the bin and sbin directories from your new install in your $PATH. Make sure you run the right version! @@ -103,16 +123,72 @@ in your $PATH. Make sure you run the right version! Step 7: testing Samba4 ---------------------- -try these commands: +try these commands:: + + $ smbclient //localhost/test -Uadministrator%SOMEPASSWORD + +or:: + + $ ./script/tests/test_posix.sh //localhost/test administrator SOMEPASSWORD + + +NOTE about filesystem support +----------------------------- + +To use the advanced features of Samba4 you need a filesystem that +supports both the "user" and "system" xattr namespaces. + +If you run Linux with a 2.6 kernel and ext3 this means you need to +include the option "user_xattr" in your /etc/fstab. For example:: + + /dev/hda3 /home ext3 user_xattr 1 1 + +You also need to compile your kernel with the XATTR and SECURITY +options for your filesystem. For ext3 that means you need:: + + CONFIG_EXT3_FS_XATTR=y + CONFIG_EXT3_FS_SECURITY=y + +If you are running a Linux 2.6 kernel with CONFIG_IKCONFIG_PROC +defined you can check this with the following command:: + + $ zgrep CONFIG_EXT3_FS /proc/config.gz + +If you don't have a filesystem with xattr support, then you can +simulate it by using the option:: + + posix:eadb = /usr/local/samba/eadb.tdb + +that will place all extra file attributes (NT ACLs, DOS EAs, streams +etc), in that tdb. It is not efficient, and doesn't scale well, but at +least it gives you a choice when you don't have a modern filesystem. + +Testing your filesystem +----------------------- + +To test your filesystem support, install the 'attr' package and run +the following 4 commands as root:: + + # touch test.txt + # setfattr -n user.test -v test test.txt + # setfattr -n security.test -v test2 test.txt + # getfattr -d test.txt + # getfattr -n security.test -d test.txt + +You should see output like this:: - smbclient //localhost/test -Uadministrator%SOMEPASSWORD - or - ./script/tests/test_posix.sh //localhost/test administrator - SOMEPASSWORD + # file: test.txt + user.test="test" + + # file: test.txt + security.test="test2" -Note that to pass all the tests you would need to be using a -filesystem with user_xattr support. On many Linux systems with an ext3 -filesystem this means mounting with the "-o user_xattr" -option. Consult your filesystem and kernel docs for more details. +If you get any "Operation not supported" errors then it means your +kernel is not configured correctly, or your filesystem is not mounted +with the right options. +If you get any "Operation not permitted" errors then it probably means +you didn't try the test as root. +.. + vim: ft=rest