比较来自世界各地的卖家的域名和 IT 服务价格

目录权限管理 Linux 和 SFTP

早上好; 我有一个web服务器 RHEL 5.7, 定制允许 SSH / SFTP 只针对某些群体。 我希望内容管理者将内容上传到他们的各自目录,并且此内容继承了用户的所有权 / 无论启动或应用程序方法如何,都会在目录上进行组。 例如:

约翰在集团

"网页"

对于权利 SSH / SFTP 和

"金融"

对于目录权限和下载到目录

"网页材料"

穿过 SFTP.

目录

"网页材料"

有访问权限 "2760" (rwxrws ---) 和所有权

"apache: 金融"

.

如果约翰下载更新到现有文件

"网页材料"

, 文件的所有权仍然存在

"apache: 金融"

. 如果约翰将下载一个新文件

"网页材料"

, 文件的所有权

"约翰:金融"

.

我想要约翰的任何文件要加载到

"网页材料"

更改目录的所有者。 我尝试过。 setuid 和 setgid, 但没有接受所有权。 我见过一提 ServerFault 关于我们 ACL 或者 chrooted jail 为了 SFTP, 但我仍然必须配置它们并测试,我不知道它们是否是可行的解决方案 (他们可能是,我只是不知道,因为我从未做过). 我们将不胜感激任何想法和帮助。
已邀请:

奔跑吧少年

赞同来自:

问题是 sftp 作为用户ID启动 - 第一个SSH客户端 sftp 代表此用户连接到目标主机,然后启动 sftp-server. 由于SFTP服务器正在常规用户的名称上运行,因此他没有能够“给出”文件。 (更改文件所有者).

但是,如果可以使用 scp 并为每个用户分配一对键,可以绕过它。 这包括向文件添加自定义密钥。 ~ / .ssh / authorized_keys root 有参数 command =, 强制启动清除并更改服务器程序的参数的脚本 scp. 我之前使用这种技术来设置匿名 scp dropbox, 允许任何人发送文件并确保没有人可以发送文件,并且还可以防止覆盖。

如果您对此技术开放,请告诉我,我会将这篇文章添加到快速食谱。

更改:根据评论的基础是我的食谱,我最初用于配置匿名 Dropbox. 但他应该为此目的工作。

如果你想要约翰写入文件

/var/www/webstuff

, 它中记录的所有文件都属于用户ID

apache

, 然后:

1) 创建一对键 ssh:

ssh-keygen -t rsa -f john-scp-key  

2) 编辑打开的键文件 "john-scp-key.pub" 并插入操作员 "command =" 通过以下方式:

command="/usr/local/bin/strictscp ^/var/www/webstuff" ssh-rsa AAAA..... (reset
of key follows)

3) 添加内容

john-scp-key.pub



~apache/.ssh/authorized_keys

file (创建文件如果不存在,请确保目录 .ssh, 和 authorized_keys 拥有

apache

, 而不适用于进入,也没有一个团体和世界)

4) 创建脚本

/usr/local/bin/strictscp

通过以下方式:

#!/bin/sh
read cmd arg1 arg2 <<eot "$1"="" "$arg1"="-t" "$arg2"="" "$cmd"="scp" $ssh_original_command="" &&="" -a="" [="" ]="" echo="" eot="" if="" |grep="">/dev/null 2&gt;&amp;1
then
eval $cmd $arg1 $arg2
fi

5) 现在提供封闭的密钥文件

john-scp-key

约翰并要求他按如下方式将文件复制到Web服务器:

scp -i john-scp-key some_file.html apache@yourserver:/var/www/webstuff/

它的工作方式如下:当您使用时 scp 要将文件复制到服务器,客户端 scp 用途 ssh 执行 «scp -t / path / name» 在服务器上。 使用一对键时,可以覆盖执行命令并在使用此键时强制启动特定命令。 原始请求的命令与其参数一起在环境变量中 «$ SSH_ORIGINAL_COMMAND». 所以我们指定

COMMAND=

在检查允许参数的脚本中 (在这种情况下,他检查了第三个论点 - 这是我们想要录制数据的特定目录), 因此,此密钥仅适用于其预期目的,并且不能用于在服务器上运行任意命令。

你可以阻止

strictscp

通过检查是否存在目标文件,脚本还进一步进一步,并且您也可以添加

chgrp

到最后设置属于该组的文件 (提供了

apache

是这个群体的成员).

我希望这个能帮上忙 - 如果您有问题,请告诉我,我会看看我是否可以提高这个答案。
</eot>

要回复问题请先登录注册