Centos7、Redhat7下sftp权限定义

Linux系统 0 1731 张长瑞 收藏

目前此功能仅在centos7及redhat7系统下进行过测试。

执行命令:

/usr/libexec/openssh/sftp-server -Q requests

得到结果:

open 
close
read   #读权限
write   #写权限
lstat   
fstat
setstat
fsetstat
opendir   #打开目录
readdir   #读取目录
remove    #删除
mkdir     #创建文件夹
rmdir     #删除文件夹
realpath  #查看真实路径
stat
rename    #重命名
readlink
symlink
posix-rename
statvfs
fstatvfs
hardlink
fsync

例1:

我们举例禁用掉用户的删除和重命名权限

编辑/etc/ssh/sshd_config文件

# For normal SFTP(Without Chroot) add the following configuration in sshd_config file. 
Subsystem  sftp /usr/libexec/openssh/sftp-server -P remove,rmdir,rename,posix-rename

# For Chroot SFTP  add the following configuration in sshd_config file.
Subsystem sftp internal-sftp -P remove,rmdir,rename,posix-rename

那么sftp-server与internal-sftp有什么区别呢?

sftp-server 和 internal-sftp 都是 OpenSSH 的一部分。 sftp-server 是一个独立的二进制文件。 internal-sftp 只是一个配置参数,它告诉 sshd 使用 sshd 内置的 SFTP 服务器代码,而不是像sftp-server运行另一个进程。

与独立的 sftp-server 二进制文件相比, internal-sftp 的诞生时间要晚得多(2008 年的 OpenSSH 4.9p1)。在新版的redhat8及centos8中internal-sftp已经成为默认,保留sftp-server的目的只是为了更好的兼容。

例2:

通过internal-sftp的ChrootDirectory实现限制sftp_users用户组内的用户目录

# For normal SFTP(Without Chroot) add the following configuration in sshd_config file. 
Subsystem  sftp /usr/libexec/openssh/sftp-server -P remove,rmdir,rename,posix-rename
# For Chroot SFTP  add the following configuration in sshd_config file.
Subsystem sftp internal-sftp 
Match Group sftp_users
        ChrootDirectory %h
        ForceCommand internal-sftp  -P remove,rmdir,rename,posix-rename
        X11Forwarding no
        AllowTcpForwarding no

此处的ChrootDirectory中的 %h代表的是home,即用户的家目录

重启ssh服务使配置生效

service ssh restart


相关推荐:

网友留言:

您需要 登录账户 后才能发表评论

我要评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
验证码