76

I have a couple of machines at home (plus a number of Linux boxes running in VMs) and I am planning to use one of them as a centralized file server.

Since I am more a Linux user rather than a sysadmin, I'd like to know what is the equivalent of, let's say "Active Directory"? My objective is to have my files in any of the machines that I logon in my network.

6 Answers 6

68

You either build your own Active Directory-equivalent from Kerberos and OpenLDAP (Active Directory basically is Kerberos and LDAP, anyway) and use a tool like Puppet (or OpenLDAP itself) for something resembling policies, or you use FreeIPA as an integrated solution.

There's also a wide range of commercially supported LDAP servers for Linux, like Red Hat Directory Server. RHDS (like 389 Server, which is the free version of RHDS) has a nice Java GUI for management of the directory. It does neither Kerberos nor policies though.

Personally, I really like the FreeIPA project and I think it has a lot of potential. A commercially supported version of FreeIPA is included in standard RHEL6 subscriptions, I believe.

That said, what your are asking about is more like a fileserver solution than an authentication solution (which is what AD is). If you want your files on all machines you log into, you have to set up an NFS server and export an NFS share from your fileserver to your network. NFSv3 has IP-range based ACL's, NFSv4 would be able to do proper authentication with Kerberos and combines nicely with the authentication options I described above.

If you have Windows boxes on your network, you will want to setup a Samba server, which can share out your files to Linux and Windows boxes alike. Samba3 can also function as an NT4 style domain controller, whereas Samba4 is able to mimic a Windows 2003 style domain controller.

3
  • 1
    Thanks for the nice answer. Actually I am more interested in centralized authentication.
    – Pablo
    Aug 11, 2010 at 20:47
  • 1
    Kerberos would give you centralized authentication. And it's the core protocol used for authentication in AD anyways :) Aug 12, 2010 at 1:12
  • Samba really shouldn't be relegated to a footnote in this answer. Nowadays Samba is not just able to mimic a DC, it is fully capable of serving as the primary DC and hosting an AD forest standalone, no Windows servers required. And of course this is integrated with the file-server service (though they recommend using a 2nd DC for file-server duty),
    – ghostly_s
    Feb 19, 2022 at 8:47
13

If you just want centralized authentication, look at NIS or NIS+ (formerly known as yellow pages which is why all the commands begin with 'yp').

Configure your main server as the master NIS server, then configure all the other boxes to use NIS to authenticate users.

The wikipedia page for NIS and the Linux NIS Howto.

For a basic home network NIS will be fine. If you need more control over which users can see which servers you'll need to use NIS+.

4
  • 1
    Works well with NFS (for sharing the actual files)
    – pjc50
    Apr 11, 2011 at 13:04
  • Yes, use NFS to make user home directories available on all servers, plus whichever other directories you need to share.
    – dr-jan
    Mar 10, 2014 at 16:48
  • does NIS work with Windows clients?
    – knocte
    Mar 7, 2016 at 11:10
  • NIS doesn't work with Windows clients - you'll need Active Directory for that.
    – dr-jan
    Mar 7, 2016 at 17:01
2

I have tried OpenLDAP and Samba 3.x and both won't give you the centralized authentication that you are looking for. As wzzrd said, Samba 4.x probably will give you that. Samba 3.x domain controller is more like a workgroup option. You still need to create users in Unix/Samba as well as Windows and then map them. In the end I removed OpenLDAP and use only Samba now.

1

If you're really just trying to share files from one server to a few other machines, you may just want to use something simpler like Samba (especially if you're interoperating with some Windows clients) or NFS shares.

1
  • 2
    Ideally I would like to have a centralize user database, hence my question. I don't want to create the same user accounts on all computers.
    – Pablo
    Aug 11, 2010 at 20:46
1

The 2020+ answer to this is to just configure a recent linux distro to act as an Active Directory domain controller.

The official howto spells it out in lots of detail, but it basically boils to running

samba-tool domain provision with some parameters.

Then you could just use the remote domain administration tools from the first domain joined computer to setup OUs, policies, etc like on any Active Directory domain, with e.g. the Windows RSAT tools, or the linux command line.

0

My objective is to have my files in any of the machines that I logon in my network.

This ancient question may be answered in a more simple manner:

  • Designate one machine as a "server" and set up NFS upon it.
  • Or use SyncThing, so there is no centralised server.

With SyncThing, the directories and files you define are automatically synchronised to ALL OTHER machines. It can be as real-time as you define.

The first option is certainly easy. If one is a noobie, use WebMin on the "server" and it has a helpful browser-based GUI to set it up.

NFS is a nice, simple protocol to set up remote shares locally. They can be mapped anywhere and look just as if they exist on the machine you are using.

SyncThing offers the resilience of having a pseudo-replication solution.  If one machine should catch fire, it's not such a trauma.  It also offers "versions" so if another machine should change a file, the old file is kept.  There are options to restrict this (n-versions, n-days/months, etc.)

1
  • (1) NFS was mentioned in a couple of previous answers. (2) Does either of your suggestions offer the centralized user definition capability that Active Directory provides? (3) No need to apologize for adding a new answer to an old question — as long as it is a new answer to the question. Jan 22 at 6:14

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .