我正在编写一个简单的程序来将一些文件备份到 Linux 机器上。交易将通过 SSH 进行,程序的每个副本都将在它将连接到的 Linux 机器上拥有自己的帐户。
我担心的是,该软件的用户很可能会找出他们的帐户名和密码(这将是事先随机生成的)并想要连接到盒子并进行游戏。
除了我授权备份软件做的事情之外,我想禁用他们在那个盒子上做任何事情的能力。也就是说,他们只需要创建新文件并读取旧文件(无需更新或删除)。他们不应该需要执行bc或类似的能力who。
我曾考虑尝试让chroot每个用户进入他们的主目录,但我对如何做到这一切有点模糊。
关于如何实现此所需功能的任何建议?
谢谢!
Chrooting apache/mysql/php 是保护包含敏感数据的 Web 服务器的标准做法吗(是否有必要)?
我正在使用 PuTTY 通过 SSH 访问我的 U14.04 LTS 服务器。
当我使用我的主帐户登录时,数字键盘键在 BASH CLI 中工作正常。
当我登录到使用 Jailkit 被监禁的用户时,home/end 键在 CLI 中返回一个“~”字符和响铃(Pgup、PgDn 也这样做)。例如,尽管当我使用 nano 编辑文件时,这些键工作正常。
我的$TERM变量设置为“ xterm”,并且我已将“ .bashrc”从我的主帐户复制到此用户,因此文件夹以其正常颜色显示并且别名有效。
有人可以建议我,我在监狱中缺少什么阻止正确配置键盘的东西吗?也许无法从监狱访问二进制文件,或者用户的配置设置?
我正在执行从 CentOS 7.4 到 CentOS 7.5 的 yum 更新,当 nspr 和 nss soft-softoken 收到更新时,出现以下错误:
yum update nspr
error: Failed to initialize NSS library
There was a problem importing one of the Python modules
required to run yum. The error leading to this problem was:
cannot import name ts
Please install a package which provides this module, or
verify that the module is installed correctly.
It's possible that the above module doesn't match the
current version of Python, which is:
2.7.5 …Run Code Online (Sandbox Code Playgroud) 我有一个被监禁的用户。
sshd_config:
Subsystem sftp internal-sftp
Match user matt
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
Run Code Online (Sandbox Code Playgroud)
密码:
matt:x:1001:5006:Matt Ryan,,,:/home/matt:/home/matt/bin/bash
Run Code Online (Sandbox Code Playgroud)
这对 sftp 非常有效。用户仅限于他的主文件夹,以及那里的任何挂载。
但是,我也想给这个使用 shell 访问权限。这是他们尝试登录时发生的情况:
$ ssh matt@server.com
Linux devnode 2.6.38-linode31 #1 SMP Mon Mar 21 21:22:33 UTC 2011 i686 GNU/Linux
Ubuntu 10.04.2 LTS
Welcome to Ubuntu!
* Documentation: https://help.ubuntu.com/
Last login: Thu Mar 31 13:04:29 2011 from abc.nyc.res.rr.com
/home/matt/bin/bash: No such file or directory
Connection to server.com closed.
Run Code Online (Sandbox Code Playgroud)
通过 fstab,bin 文件夹被挂载到主目录并存在。
为什么我会收到这个错误..我该如何解决这个问题?
谢谢您的帮助!
我发现如何 chroot ssh 连接?还有很多不同的博客文章和类似的文章(http://undeadly.org/cgi?action=article&sid=20080220110039、https://unix.stackexchange.com/q/14398/57364等)。我正在使用内部 sftp 子系统,如文章中所述。
Subsystem sftp internal-sftp
Match Group www-data
ChrootDirectory %h
AllowTcpForwarding no
Run Code Online (Sandbox Code Playgroud)
我可以连接服务器并进行身份验证,但 SSH 会话立即关闭。
这是 auth.log 的一部分:
Feb 18 23:36:21 w sshd[358]: Accepted publickey for network from xxx port 50280 ssh2
Feb 18 23:36:21 w sshd[358]: debug1: monitor_read_log: child log fd closed
Feb 18 23:36:21 w sshd[358]: debug1: monitor_child_preauth: network has been authenticated by privileged process
Feb 18 23:36:21 w sshd[358]: debug1: PAM: establishing credentials
Feb 18 23:36:21 w sshd[358]: …Run Code Online (Sandbox Code Playgroud) 我们公司安装了moodle,由于SCORM 包大+ 连接缓慢+ 代理,我通常用我的root 用户通过SFTP 上传它们。
现在,我想给用户一种方法,让他们自己将文件上传到这个moodle文件夹,我该怎么做?我无法更改目标文件夹的所有权,因为它是 Moodle 的文件夹...
我按照(http://www.thegeekstuff.com/2012/03/chroot-sftp-setup/)中的说明进行操作。我看到当它连接时出现此错误:
fatal: bad ownership or modes for chroot directory component "/home/"
Run Code Online (Sandbox Code Playgroud)
我认为问题在于文件夹所有者(和父母)是“moodlegureak”:
[root@localhost repository]# ls -la
total 940
drwxrws--- 4 apache moodlegureak 4096 abr 10 2013 .
drwxrws--- 13 moodlegureak moodlegureak 4096 abr 28 07:18 ..
drwxr-xr-x 3 root moodlegureak 4096 abr 9 12:15 Archivo
Run Code Online (Sandbox Code Playgroud)
这是我的 /etc/passwd:
ftpmoodle:x:507:507::/home/moodlegureak/moodledata/repository/Archivos:/sbin/nologin
Run Code Online (Sandbox Code Playgroud)
这是我的 /etc/ssh/sshd_config
Subsystem sftp internal-sftp
Match Group sftpusers
ChrootDirectory /home/moodlegureak/moodledata/repository/Archivos
ForceCommand internal-sftp
AllowTCPForwarding no
Run Code Online (Sandbox Code Playgroud)
我按照以下步骤操作:
1. Create a New Group
Create …Run Code Online (Sandbox Code Playgroud) 我想为特定用户提供 SFTP 访问权限,但希望将其设为 jailroot,以便她的视图仅限于她的主目录。对于系统的其他用户,它应该保持正常。
是否可以?
尝试设置 Postfix 以运行 chrooted。只有一点信息来自手册页,它只是说要按照 master.cf 中的说明进行操作。master.cf 是不言自明的,只需在 chroot 列中设置“y”。但不,它仍然不起作用。
# pgrep master
12661
# ls -lh /proc/12661/root
lrwxrwxrwx 1 root root 0 Feb 23 22:03 /proc/12661/root -> /
还是指向我的root!这意味着它仍然从 /etc/passwd 读取用户相关信息(例如 local_recipient_maps),我不想这样做。我想在 chroot 中使用一个单独的 passwd 文件。我尝试设置:
local_recipient_maps = $maps
maps=/var/spool/postfix/etc/passwd
但仍然没有。它仍然从 /etc/passwd 读取。
Chroot env 设置在 /var/spool/postfix 中,所有需要的文件和库都在那里。
master.cf:
smtp inet n - y - - smtpd
smtpd pass - - y - - smtpd
pickup unix n - y 60 1 pickup
cleanup unix n - y - …Run Code Online (Sandbox Code Playgroud) 我安装了 vsftp,然后设置配置文件如下:
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
xferlog_file=/var/log/vsftpd.log
anon_root=/var/ftp
local_root=~
Run Code Online (Sandbox Code Playgroud)
在 /etc/vsftpd.chroot_list 中,我添加了允许登录的用户。
然后重启服务:
service vsftpd restart
然后当我尝试登录时,出现此错误:
ftp> open 127.0.0.1
连接到 127.0.0.1。
500 OOPS:孩子死了
我用谷歌搜索,但未能找到答案。
请帮忙,谢谢!
我一直在努力让它发挥作用,但无济于事。
我有一个在 Arch 上运行的 VSFTPD 服务器。它工作正常,除了用户可以向上导航目录树并查看/下载其他用户主目录中的文件。我认为答案在于 chroot() 但我尝试过的配置的每次迭代都不起作用(是的,我每次都重新启动服务器)。我不确定问题是否出在 VSFTPD conf 或我用来创建新用户的 shell 脚本中。我真的很感激这方面的任何帮助。
所以,这是我的conf:
listen=YES
anonymous_enable=NO
dirmessage_enable=YES
chmod_enable=NO
log_ftp_protocol=YES
pasv_enable=YES
pasv_min_port=xxxxx
pasv_max_port=xxxxx
pasv_address=xxx.xxx.xxx.xxx
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=NO
idle_session_timeout=600
data_connection_timeout=120
ftpd_banner=xxxxx xxxxx
pam_service_name=ftp
local_umask=022
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.userlist
passwd_chroot_enable=YES
local_enable=YES
write_enable=YES
force_dot_files=NO
tcp_wrappers=NO
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd.userlist
Run Code Online (Sandbox Code Playgroud)
这是我运行以创建新用户的 shell 脚本:
#!/bin/sh
mkdir /home/./$1
chmod 775 /home/./$1
useradd -d /home/./$1 -s /bin/false $1
chown -R $1 /home/./$1
passwd $1
echo $1 >> /etc/vsftpd.userlist
echo "FTP user created."
Run Code Online (Sandbox Code Playgroud)