目标
在Ubuntu系统上开通sftp文件服务,允许某些用户上传及下载文件。
但是这些用户只能使用sftp传输文件,不能使用SSH终端访问服务器,并且sftp不能访问系统文件。
系统管理员则既能使用sftp传输文件,也能使用SSH远程管理服务器。
操作步骤
sftp用户、用户组的创建
- 添加sftp用户,创建 sftp 用户组
sudo adduser alice
sudo addgroup sftp-users
将alice从所有其他用户组中移除并加入到sftp-users组,并且关闭其Shell访问
#/bin/false也可以替换为/sbin/nologin,目的是不允许该用户登录到系统中
sudo usermod -G sftp-users -s /bin/false alice
- 创建sftp服务器的管理员身份,并且加入 ssh用户组(不限制他的shell操作权限)
sudo adduser admin
sudo addgroup ssh-users
-a 表示以追加形式将 admin 加入 ssh-users
sudo usermod -a -G ssh-users admin
创建文件服务器目录
- 创建服务器文件目录
创建监狱目录
sudo mkdir /home/sftp_root
普通用户能够写入的共享文件目录
sudo mkdir /home/sftp_root/shared
设置共享文件夹的拥有者为管理员、用户组为 sftp-users
sudo chown admin:sftp-users /home/sftp_root/shared
拥有者、sftp用户组的成员具有一切权限
sudo chmod 770 /home/sftp_root/shared
默认允许所有用户或者用户组登录,若仅允许指定用户或者用户组访问,按照以下格式配置。
以空格间隔
AllowUsers user1 user2
AllowGroups group1 group2
权限配置
sudo vim /etc/ssh/sshd_config
在sshd_config文件的最后,添加以下内容:
AllowGroups ssh-users sftp-users
Match Group sftp-users
ChrootDirectory /home/sftp_root
AllowTcpForwarding no
X11Forwarding no
ForceCommand internal-sftp
这样配置的目的是:
- 只允许ssh-uers及sftp-users通过SSH访问系统,其中ssh-uers用户组可以使用ssh,并且不受其他限制。
而SFTP用户组仅能使用SFTP进行访问,且不能使用shell
-
针对sftp-users用户,额外增加一些设置:将“/home/sftp_root”设置为该组用户的系统根目录(因此它们将不能访问该目录之外的其他系统文件;
-
禁止TCP Forwarding和X11 Forwarding
另外需要注意的是:ChrootDirectory的权限问题,你设定的目录必须是root用户所有,否则就会出现问题。所以请确保sftp用户根目录的所有人是root, 权限是 750 或者 755。
需要注意的一点的是,现在所有需要远程连接的用户都必须加入 ssh-users 才行。
如将用户 songyangji 加入 ,这样ta就可以使用ssh连接本机。
sudo usermod -a -G ssh-users songyangji
- 限制ssh连接的访问IP
仍然是
sudo vim /etc/ssh/sshd_config
Authentication:
AllowUsers root@10.10.10.* #限制root用户只能通过10.10.10.*网段登录访问
AllowUsers charles@10.10.10.* #限制charles用户只能通过10.10.10.*网段登录访问
AllowUsers john@10.10.10.*
重启SSH
亦可
/etc/init.d/ssh restart
service ssh restart
Ubuntu
下载
先更新一下资源。
sudo apt update
由于rabbitMq需要erlang语言的支持,在安装rabbitMq之前需要安装erlang。
sudo apt install -y erlang-nox
安装rabbitmq
sudo apt install -y rabbitmq-server
默认下载的地址
songyangji@SongyangJi-Ubuntu-DeskStop:/etc/rabbitmq$ whereis rabbitmq
rabbitmq: /usr/lib/rabbitmq /etc/rabbitmq /usr/share/rabbitmq
开启、关闭
start
sudo service rabbitmq-server start
stop
sudo service rabbitmq-server stop
直接到/sbin目录下执行也是可以的。
启动 start
sudo /sbin/service rabbitmq-server start
停止 stop
sudo /sbin/service rabbitmq-server stop
启动Web管理端
安装了Rabbitmq后,默认也安装了该管理工具,执行命令即可启动
cd /etc/rabbitmq
sudo rabbitmq-plugins enable rabbitmq_management
访问 localhost:15672
出现一下即可。
MacOS
下载
brew update
brew install rabbitmq
用户及权限管理
- 添加用户
sudo rabbitmqctl add_user jsy-mac0 8888
- 设置用户身份
sudo rabbitmqctl set_user_tags jsy-mac0 administrator
- 添加权限
rabbitmqctl set_permissions -p / jsy-mac0 “." ".” “.*”
配置环境变量
export RABBITMQ_HOME=/opt/homebrew/Cellar/rabbitmq/3.8.13
export PATH= P A T H : PATH: PATH:RABBITMQ_HOME/sbin
启动、关闭
rabbitmq start
rabbitmq stop
访问Web端是一样的。
====================================================================
Argtable
学习使用、源码分析
如何构建符合 POSIX 实用程序约定的Shell-CLI。
- sandbox 日志模块的构建与分析
记录sandbox程序的核心日志,方便debug。
- linux读写文件相关CLib函数、系统调用分析
sandbox程序的基础使用。
- linux使用进程、线程原语的分析
sandbox程序的基础使用。
- linux用户权限的动态设置的分析
如何在程序中动态控制用户的使用权限, 防止外来的代码对系统产生破坏。
- linux
<sys/resource.h>
的代码分析
如何限制用户使用代码的资源使用。
- linux
<seccomp.h>
的使用分析
如何使用户进程在一个安全的计算模式下运行,也就是 secure computing mode的实现。
- 进程的处理器核心亲缘性控制
如何避免用户进程在多个处理器核心上切换。
- Slf4j、Log4j2
评测机的异常抛出多,调用链长,合理的日志构建对于debug的是必须的。
最后
光给面试题不给答案不是我的风格。这里面的面试题也只是凤毛麟角,还有答案的话会极大的增加文章的篇幅,减少文章的可读性
Java面试宝典2021版
最常见Java面试题解析(2021最新版)
2021企业Java面试题精选
)SduOJ-Jduge-Server
- Slf4j、Log4j2
评测机的异常抛出多,调用链长,合理的日志构建对于debug的是必须的。
最后
光给面试题不给答案不是我的风格。这里面的面试题也只是凤毛麟角,还有答案的话会极大的增加文章的篇幅,减少文章的可读性
Java面试宝典2021版
[外链图片转存中…(img-e5D0bdh7-1714690315363)]
[外链图片转存中…(img-9bVLajlA-1714690315363)]
最常见Java面试题解析(2021最新版)
[外链图片转存中…(img-3ITZMfrg-1714690315363)]
[外链图片转存中…(img-RYu21W8F-1714690315364)]
2021企业Java面试题精选
[外链图片转存中…(img-aN9VtJfY-1714690315364)]
[外链图片转存中…(img-JWtbPAxK-1714690315364)]