让上传的文件不能修改, 只需要让上传的文件的权限里不包含写权限即可.
要让文件不能删除, 则涉及到文件父目录的写权限问题, 但是不能直接关闭父目录的写权限, 因为这样就不能在该目录下上传文件了. 解决方法是在父目录上设置 t 标志位, 这用用户就不能删除这个目录下不属于自己的文件, 所以还需要设置文件的所有者不能是上传的用户, 将其设置为 root 即可.
综上, 首先对共享的根目录设置 1777 权限, 所有者为 root, 然后配置文件 /etc/samba/smb.conf 里面的设置:
[共享名]
...
inherit owner = Yes # 上传的文件继承父目录的所有者, 而不是使用登录的账号名, 这样上传的文件的所有者都是 root 了.
writable = Yes # 允许上传操作
create mask = 1774 # 上传的文件没有写权限
directory mask = 1777 # 上传的目录具有所有权限
force directory mode = 1000 # 上传的目录设置 t 标志
稍作修改, 去掉 inherit owner = Yes 即可让用户可以删除自己上传的文件, 不能删除其他用户创建的文件