Lis*_*sek 4 active-directory samba share
我需要Samba
配置方面的帮助。
我想要实现的是配置,共享的 Windows 用户只能看到他的文件。这只是通过这样的配置实现的:
用户由 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"
Run Code Online (Sandbox Code Playgroud)
它工作正常,但是...在服务器端,目录中的所有内容都/storage/BACKUP
保存每个用户的文件。
所以我想在这里为每个用户创建目录(我不能使用 [home],因为它已经被使用了)
所以我想保持这样:
/storage/BACKUP/username/
Run Code Online (Sandbox Code Playgroud)
因此,当我更改路径并%U
在最后添加时,一切都差不多了。
问题是我需要手动创建目录/storage/BACKUP/username
。
所以我需要的是Samba
在用户访问此共享之前以某种方式强制创建此目录。
我试过添加add user script = /path/to/mkdir /storage/BACKUP/%U
但这不起作用,因为:
登录后,我不会在 linux 中创建用户,因此我不会在其他任何地方使用添加用户/机器脚本。
所以我想强制Samba
为用户创建目录,当该用户尝试连接时。我从几个小时开始搜索谷歌,但没有找到适合我的方法。
我需要为每个人保留 /server/BACKUP 位置,但在服务器端,需要将文件保存在每个用户的单独目录中,因此创建新共享也不是解决方案。
您可以为此使用preexec
或root preexec
选项。它们指定在连接到共享时运行的脚本。如果preexec
共享以连接用户身份运行,并以 root 身份运行root preexec
。
在您的分享中:
[BACKUP]
root preexec = /etc/samba/gendir.sh %u
Run Code Online (Sandbox Code Playgroud)
where/etc/samba/gendir.sh
看起来有点像这样:
#!/bin/bash
DIRECTORY=/storage/BACKUP/$1
if [ ! -d "$DIRECTORY" ]; then
mkdir $DIRECTORY
fi
Run Code Online (Sandbox Code Playgroud)
根据您的要求,向脚本添加chown
和/或chmod
语句。
归档时间: |
|
查看次数: |
7434 次 |
最近记录: |