AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 639042
Accepted
drkmkzs
drkmkzs
Asked: 2014-10-24 01:05:45 +0800 CST2014-10-24 01:05:45 +0800 CST 2014-10-24 01:05:45 +0800 CST

OpenSSH SFTP 服务器是否在 put 命令(chroot 环境)后使用 umask 或保留客户端权限?

  • 772

我知道这个问题已经讨论过了,但是通过阅读帖子我无法找到答案,因为有人说“是的 umask 可以工作”,而其他人说“OpenSSH put 命令总是保留权限”

首先要准确地说:

  • 我在 RHEL 6.2 上使用 OpenSSH 5.9
  • 我已经配置了一个 chrooted SFTP 服务器,使用internal-sftp子系统,-u 0002用于 umask
  • 我精确我不使用-por-P选项

从我一方面阅读的内容来看:有很多方法可以为 SFTP 传输定义 umask:

  • (or ) 的选项-u,从 OpenSSH 5.4 开始internal-sftpsftp-server
  • 创建一个包装器sftp-server(我们在其中明确设置了 umask - 这不适合 chrooted 环境顺便说一句)
  • pam.d/sshd在文件中添加特定配置

另一方面,我读过:

OpenSSH SFTP 客户端和服务器确实传输权限(作为扩展)并在本地创建具有权限的远程文件。AFAICT,没有办法禁用此行为。

所以我做了以下测试:

在我的客户端上,我创建了权限为 600 和 700 的文件MYFILE和目录。MYDIR

然后使用sftp命令:

mkdir => the new directory has permissions following the umask (OK)
put MYFILE => MYFILE has same permissions as on client (KO)
put -r MYDIR => MYDIR has same permissions as on client (KO)

如果我在客户端更改和的权限MYFILE,MYDIR然后再次上传,我会在服务器端获得新的权限。

我也尝试了pam.d解决方案,但没有任何改变。

所以现在我很困惑:

根据我的测试和阅读的部分内容,我会说 OpenSSH 始终保留权限。但是由于有很多帖子说可以定义 umask,我可以想象我在测试配置中做错了事。

我会很感激一些有经验的反馈。

谢谢你。

ssh
  • 1 1 个回答
  • 20969 Views

1 个回答

  • Voted
  1. Best Answer
    Martin Prikryl
    2014-10-24T01:56:07+08:002014-10-24T01:56:07+08:00

    首先,umask 是关于服务器而不是客户端的。所以询问putOpenSSH 客户端的命令是否使用 umask 是错误的。由于 SFTP 上传而创建文件时,您应该询问 OpenSSH 服务器是否使用 umask。

    无论如何,OpenSSH SFTP 客户端的作用是:

    • put没有-P标志,它要求服务器创建一个与本地文件具有相同权限的文件。然后 OpenSSH 服务器(通过 *nix 规则隐式)应用 umask。

    • put使用该-P标志,它以相同的方式启动,但在上传完成后,客户端要求服务器明确(重新)将权限设置为与本地文件具有相同的权限(“chmod”请求)。对于“chmod”,umask 不适用。

    • mkdir,它要求服务器创建一个权限为 0777 的目录。umask 隐式应用。

    无论如何,我相信 umask 0002 对权限为 0600 的文件没有影响,因为它们是互斥的。您应该针对具有 0644 等权限的文件尝试使用 umask。

    所以实际上,如果您按照描述的方式配置系统,它应该可以工作。从我的盒子中查看证据(带有 OpenSSH 6.2p2 的 Ubuntu)

    Match user user2
      ChrootDirectory /home/user2/chroot
      ForceCommand internal-sftp -u 0077
      AllowTcpForwarding no
      PermitTunnel no
      X11Forwarding no
    

    put查看vs.之后的权限差异put -P:

    user1:~$ touch file.txt
    user1:~$ ls -l
    total 0
    -rw-r--r-- 1 user1 ftpuser    0 Oct 23 15:34 file.txt
    user1:~$ sftp user2@localhost
    user2@localhost's password: 
    Connected to localhost.
    sftp> cd somefolder 
    sftp> put file.txt
    Uploading file.txt to /somefolder/file.txt
    file.txt                                         100%     0    0.0KB/s    0:00
    sftp> ls -l
    -rw-------    1 1003 1001    0 Oct 23 15:35 file.txt
    sftp> put -P file.txt
    Uploading file.txt to /somefolder/file.txt
    file.txt                                         100%     0    0.0KB/s    0:00
    sftp> ls -l
    -rw-r--r--    1 1003 1001    0 Oct 23 15:34 file.txt
    

    顺便说一句,最新的 SFTP 规范定义了客户端和服务器关于 umask 的行为。如您所见,OpenSSH 实际上违反了这一点,尽管 OpenSSH 实现了 SFTP 版本 3,但尚未提及 umask。

    7.6. 权限

    ...

    服务器不应该对模式位应用“umask”;但应设置客户端指定的模式位。客户端必须在发送模式位之前应用适当的“umask”。

    • 12

相关问题

  • 如何最好地设置 ssh 隧道以访问远程网络 (Linux)

  • SSH 和重定向

  • 通过 SSH 会话使用 NET USER 命令拒绝访问

  • SSH 服务器零日漏洞利用 - 保护自己的建议

  • ubuntu apt-get upgrade - 如何在 shell 中单击确定?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve