分享:给指定用户共享指定目录
Tofloor
poster avatar
zhangn1985
deepin
2020-10-15 00:55
Author
用samba很容易,但是也需要很多配置。比如添加samba用户,设置共享。 而且这在纯Linux环境下用samba总是有些别扭。

那么NFS行吗?

NFS不行,原因有2

1,NFS要配合Kerberos才可以实现认证,配置略复杂,如果共享到一个网段,那么全网段的用户都认证成功均可访问共享,所以不能实现用户和目录一一对应。
2,共享到单个IP+Kerberos,那么IP地址的获得也不是认证的,而且对于动态IP地址获得就不能指定用户了。


那么除samba外,唯一可行的就是sshfs了。


1, sshfs自带认证,2,sshfs可以提供chroot,限制共享。3,sshd可以为用户仅提供sftp功能,而不能登录


下面是实现步骤(仅sftp功能用户)


a,创建sftp用户组,



groupadd sftpusers

b,向这个组添加新用户,并设置密码:
useradd -g sftpusers -d /incoming -s /sbin/nologin guestuserpasswd guestuser

这里说明一下,/incoming为 guestuser的Home目录。
/etc/passwd会加一行类似与:
guestuser:x:500:500::/incoming:/sbin/nologin

c,编辑/etc/ssh/sshd_congfig

修改:
Subsystem       sftp    /usr/libexec/openssh/sftp-server

Subsystem       sftp    internal-sftp
如果没有则要直接添加。

d,在/etc/ssh/sshd_congfig添加配置
Match Group sftpusers        ChrootDirectory /sftp/%u        ForceCommand internal-sftp

e, 创建目录:
mkdir -p /sftp/guestuser/incomingchown guestuser:sftpusers /sftp/guestuser/incoming

说明:
/sftp/%u %u代表登录sftp的用户名,如果xiaoming登录这里就是/sftp/xiaoming

f:使用sshkey登录而不是密码
修改d步骤添加的配置,添加:
AuthorizedKeysFile /etc/ssh/authorized_keys/%u .ssh/authorized_keys

把你的用于登录的公钥记录到 /etc/ssh/authorized_keys/%u如果是用xiaoming登录则记录到 /etc/ssh/authorized_keys/xiaoming (文件不存在则新建,确保文件仅xiaoming能访问)

g:使用不同的sshkey登录sftp
新建sshkey
ssh-keygen (回车)
填写文件名,例如sftp-key
把sftp-key.pub内入填入 /etc/ssh/authorized_keys/%u


h:测试


sftp  guestuser@HOST -i sftp-key
> ls /
incoming


可以看出,只能查到incoming目录,达成目的。





Reply Favorite View the author
All Replies
jingle
deepin
2020-10-16 19:16
#1
谢谢分享
Reply View the author
zxx889
deepin
2021-11-19 00:23
#2

如果能配上图片就好多了

Reply View the author