如何强制Samba创build目录

我需要Sambaconfiguration的帮助。

我想实现的是configuration,共享的Windows用户只能看到他的文件。 这是简单的使用像这样的configuration:

用户由Windows AD Server授权

 [BACKUP] comment = BACKUP STORAGE LOCATION path = /storage/BACKUP read only = no browseable = yes writable = yes create mode = 0600 directory mode = 0700 force directory mode = 0700 force create mode = 0600 access based share enum = yes hide unreadable = yes valid users = "@DOMAINNAME+SOMEUSERGROUP" 

它工作正常,但…在服务器端,目录/storage/BACKUP一切保持每个用户的文件。

所以我想在这里为每个用户创build目录(我不能使用[home],因为它已经被使用了)

所以我想保持这样的:

 /storage/BACKUP/username/ 

所以,当我改变path,并在最后添加%U ,一切都几乎没问题。

问题是,我需要手动创build目录/storage/BACKUP/username

所以我需要的是强制Samba在用户访问这个共享之前创build这个目录。

我已经尝试添加add user script = /path/to/mkdir /storage/BACKUP/%U但这是行不通的,因为:

  1. 我不知道为什么;)
  2. 我已经有用户login之前
  3. 它应该开始为新创build的用户,这对我来说是好的,但它不起作用。

我不是在linux中创build用户,他们login后,所以我没有在其他地方使用添加用户/机器脚本。

所以我想强制Samba为用户创build目录,当这个用户尝试连接。 我从几个小时search谷歌,并没有find一种方法来做到这一点,将为我工作。

我需要为每个人保留/服务器/备份位置,但在服务器端,需要将文件保存在每个用户分离的目录中,因此创build新共享也不是解决scheme。

您可以使用preexecroot preexec选项。 他们指定一个连接到共享时运行的脚本。 在preexec的情况下,共享作为连接用户运行,并以root root preexec

在你的份额:

 [BACKUP] root preexec = /etc/samba/gendir.sh %u 

/etc/samba/gendir.sh看起来有点像这样:

 #!/bin/bash DIRECTORY=/storage/BACKUP/$1 if [ ! -d "$DIRECTORY" ]; then mkdir $DIRECTORY fi 

根据您的要求,将chown和/或chmod语句添加到脚本中。