我需要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但这是行不通的,因为:
我不是在linux中创build用户,他们login后,所以我没有在其他地方使用添加用户/机器脚本。
所以我想强制Samba为用户创build目录,当这个用户尝试连接。 我从几个小时search谷歌,并没有find一种方法来做到这一点,将为我工作。
我需要为每个人保留/服务器/备份位置,但在服务器端,需要将文件保存在每个用户分离的目录中,因此创build新共享也不是解决scheme。
您可以使用preexec或root 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语句添加到脚本中。