我有一个运行Centos 6.4的服务器,我需要允许一个自由职业者访问服务器上的一个文件夹上传一些代码并做一些testing – 我已经在/ etc / passwd中设置了他们的主目录:
username:x:505:505::/home/virtual_server/directory/home_directory/:/bin/bash
当他们尝试和SSH在他们得到:
Could not chdir to home directory /home/virtual_server/directory/home_directory/: Permission denied -bash: /home/virtual_server/directory/home_directory//.bash_profile: Permission denied
如果他们尝试通过FTP(我启用了chroot的VSFTP)login,他们会得到一个错误:
Response: 500 OOPS: cannot change directory:/home/virtual_server/directory/home_directory Error: Critical error: Could not connect to server
我发现几年前的一个类似的问题,对于这个问题,接受的答案是需要更改主目录上的所有目录,以便读取和执行https://serverfault.com/a/435430/142823
有没有其他的方式做到这一点,而不需要改变其他目录的权限或less一些“永久性”?
如果你的系统使用openssh
那么这可以帮助:
将sftp-server更改为可以执行ls
, cd
和其他命令的内部服务器
# /path/to/the/sshd_config . . . . . Subsystem sftp internal-sftp . . . . .
然后为用户添加规则:
. . . . . Match User username X11Forwarding no AllowTcpForwarding no ChrootDirectory /home/virtual_server/directory/ . . . . .
然后将用户的shell更改为/bin/nologin
。 请记住, /home/virtual_server/directory/
/home/virtual_server/directory/home_directory/
应该由该用户拥有时, /home/virtual_server/directory/
应该是root拥有的。
现在用户可以通过chroot访问/home/virtual_server/directory/
通过SFTP。 他不能在该目录中执行任何操作, home_directory
在home_directory
中进行下载,删除和重命名文件。
如果你需要这个用户有能力启动一些命令/脚本 – 然后创build另一个login,并授予他与sudo
所有需要的。