linux限制用户ssh登陆_限制SSH远程登录用户仅能只读访问Linux中指定的目录

本文主要是介绍linux限制用户ssh登陆_限制SSH远程登录用户仅能只读访问Linux中指定的目录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

背景需求:

在TOMCAT服务器上建立一个普通帐号log_user,只能查看TOMCAT日志,不能删改任何文件,不能执行fdisk、df、dd、mkdir、yum等命令,不能访问日志目录以外的路径。

系统:centos6.6

tomcat安装路径:/opt/apache-tomcat

tomcat日志路径:/opt/apache-tomcat/logs

操作过程:

一、使用mknod命令在/opt建立/dev下的文件:

mkdir /opt/dev   //该步骤可省略。/opt被设定为log_user的“根目录”

cd /opt/dev

mknod -m 666 null c 1 3

mknod -m 666 tty c 5 0

mknod -m 666 zero c 1 5

mknod -m 666 random c 1 8

b7147aab9130170e50b26b90eb97822d.png

二、设置log_user用户的根目录权限:

chown root:root /opt

chmod 0755 /opt

三、为远程SSH设置交互式shell:

mkdir /opt/bin

mkdir /opt/lib64   //用于调用shell命令的共享库

cp -v /bin/bash /opt/bin   //复制bash文件到log_user目录

ldd /bin/bash   //查询bash所需的共享库文件名及路径

cde97b4145c814b81c1b01bf41f911f9.png

cp -v /lib64/{linux-vdso.so.1 libtinfo.so.5 libdl.so.2 libc.so.6 ld-linux-x86-64.so.2} /opt/lib64/

//将共享库文件复制到log_user的lib库中

四、创建log_user用户:

useradd log_user && echo 'log_user' | passwd --stdin log_user

五、创建log_user用户的配置目录:

mkdir /opt/etc

cp -vf /etc/{passwd,group} /opt/etc    //当新增类似用户时,要及时更新这两个文件

六、编辑passwd和group文件,只保留log_user相关的那行,如下图所示:

bebe561ed347e647d10295bd109e0a66.png

843a7fba8c695cb61366939ddfb68e9d.png

七、配置ssh与chroot关联起来:

将下面两行追加到/etc/ssh/sshd_config文件:

Match User log_user   //添加要被chroot的用户

ChrootDirectory /opt   //指定log_user的根路径,它将被限制在该路径下

保存退出,restart或reload SSH服务

八、创建用户log_user的家目录,添加LINUX命令:

mkdir -p /opt/home/log_user   //建立log_user的家目录

chown -R log_user:log_user /opt/home/log_user   //家目录属主和属组必须是log_user自己

chmod -R 0700 /opt/home/log_user   //家目录读写权限通常是0700

cp -v /bin/{ls,date,cat,grep} /opt/bin   //让log_user用户能使用常用命令

通过ldd /bin/ls查找该的共享库文件路径,并复制到/opt/lib64中:

ldd /bin/ls

cp -v /lib64/{linux-vdso.so.1,libselinux.so.1,librt.so.1,libcap.so.2,libacl.so.1,libc.so.6,libdl.so.2,libpthread.so.0.libattr.so.1} /opt/lib64/

//遇到提示是否overwrite,选‘yes’(如果不复制这些文件,则log_user用户在执行命令时可能会报错,提示缺少xxxx文件)

九、用ACL重新设置下tomcat帐号的权限:

yum install acl //安装ACL

vi /etc/fstab,给根分区添加,acl,如下图所示:

4c7f52b36cda21741eb39f1bbdb499f1.png

mount -o remount,rw /

setfacl -R -m u:log_user:rx /opt   //设置log_user帐号的权限

setfacl -R -m u:tomcat:rwx /opt/apache-tomcat   //设置tomcat帐号的权限。

十、登录方式:

只能通过SSH@服务器方式登录,限制才会生效。如果是在本地直接登录log_user,则无效!

在本机或其它机器上:ssh log_user@服务器IP

8951d94aafca0dcf29c981372ca2e2d1.png

输入:ls pwd cd /

9004c4637c628041d22ccbafb024d3eb.png

输入:mkdir df -h fdisk -l

81894268b259834702d655a908266800.png

操作成功!!!可以看到,用户已经被限制在/opt目录下,输入:cd /看到的其实是/opt目录的内容。

不再需要该用户,并使系统回退到之前的状态:

cd /opt

rmdir dev/ lib64/ etc/ home/ bin/ usr/

setfacl -b -R ./

userdel log_user

chown tomcat:tomcat /opt/apache-tomcat

如果在ssh时报错:

Write failed: Broken pipe

这个问题的原因是ChrootDirectory的权限问题,你设定的目录必须是root用户所有,否则就会出现问题。所以请确保sftp用户根目录的所有人是root, 权限是 750 或者 755。可通过查看/var/log/secure日志来准确判断是哪个路径的权限出错。

执行以下命令排错试试:

chown -Rroot:root /opt/   //opt为log_user用户的根路径

setfacl -R -m u:log_user:rx /opt

注:将/opt/apache-tomcat/logs目录设置为log_user的“根”应该更符合要求。

限制SSH用户访问Linux中指定的目录

限制SSH用户访问Linux中指定的目录 http://os.51cto.com/art/201703/534895.htm#topx http://www.cnblogs.com/lykyl/arc ...

如何通过ssh远程登录内网的Mac和Linux系统?

神器:ngrok 用法很简单,安装后 验证授权: ./ngrok authtoken 3WWujp1TEtHRo6rphEi5Y_7MBqGWm9yThCSFyqEHgip 在内网开启tcp服务 ng ...

ubuntu拒绝root用户ssh远程登录解决办法

ubuntu拒绝root ssh远程登录通常情况是ssh设置了禁止root远程登录,解决办法就是:修改ssh配置,然后重启ssh服务即可. vi /etc/ssh/sshd_config 找到并用#注 ...

[转帖]SSH远程登录配置文件sshd_config详解

SSH远程登录配置文件sshd_config详解 2016年06月02日 17:42:25 Field_Yang 阅读数 61386   版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权 ...

SSH远程登录、.sh文件后缀运行、l l命令结果说明、VIM模式切换

目录 SSH远程登录..sh文件后缀运行.l l命令结果说明.VIM模式切换 SSH远程安全登录 .sh文件后缀运行 l l命令结果说明 VIM模式切换 SSH远程登录..sh文件后缀运行.l l命令 ...

ssh远程登录linux live系统

要想ssh远程登录,须要准备两件事:配置同网段IP和开启SSH服务. 因为live系统没有IP,所以首先须要配置IP. 我的live系统是在虚拟机上启动的,宿主IP为192.168.230.1,liv ...

ssh远程登录命令简单实例

ssh远程登录命令简单实例 ssh命令用于远程登录上Linux主机. 常用格式:ssh [-l login_name] [-p port] [user@]hostname 更详细的可以用ssh -h查 ...

SSH(远程登录)原理

最近在研究hadoop,因为是分布式的,会涉及很多机器协作工作,但所有的操作都是需要进行权限验证的,namenode主机会尝试启动datanode主机上的进程等等.下面就用一张图来解释SSH登录验证的 ...

SSH远程登录CentOS服务器

1.把ssh默认远程连接端口修改为2200编辑防火墙配置:vi /etc/sysconfig/iptables防火墙增加新端口2222 -A INPUT -m state --state NEW -m ...

随机推荐

2016HDU校赛

A: 真正的粉丝,就算不写题解也知道怎么做 B: 最基础的数位dp C: 贪心 易得要洗衣服的地位比要脱干衣服的地位高,于是先尽可能的按10件洗衣服,最后剩下要洗的衣服数量就是0~9. 再分成0~3, ...

生产排产表DL-ZPPR002

*&---------------------------------------------------------------------* *& Report ZPPR002 * ...

WCF初体验(C#操作Exchange)

最近再做一个Exchange的客户端维护工具,遇到了很多问题. 由于刚接触C#和Exchange,所以还需要继续学习.在此记录一下,只是一个新手的记录. 环境:         服务器:Exchang ...

拼sql条件时判断 是不是当前时间是不是周五,如果今天不是周五,就选上周五

if (Request.QueryString["start"] == null) { for (int i = 0; i < 6; i++) { if (DateTime. ...

R----tidyr包介绍学习

tidyr包:reshape2的替代者,功能更纯粹 tidyr包的应用 tidyr主要提供了一个类似Excel中数据透视表(pivot table)的功能;gather和spread函数将数据在长格式 ...

说不尽的MVVM&lpar;1&rpar; – Why MVVM

最近学的一篇课文竟让我有了写这一想法,事非亵渎,实出无奈.我在刚学WPF不久时听说有MVVM这种东西,做了下尝试,发现他能给程序的设计带来很大 ...

JSP之session

index.jsp:

安装XCode导致mac无法正常开机怎么办

作为一个IOS编程菜鸟,之前在网上买的IOS教程都坑爹的是xcode4以前的版本的,由于3和4界面变化较大,所以看着书往往不知所云,所以就迫不及待地从网上下载了XCode 3.2.5+iOS SDK ...

apache服务器php程序

1.全是.php结尾的.如何首页是index 2.安装完apache,如果输入 http://localhost:50/ 若出现 it works ,代表apache运作正常

Android Canvas&period;drawText方法中的坐标参数的正确解释

摘要 canvas.drawText(www.jcodecraeer.com, x, y, paint); x和y参数是指定字符串中心的坐标吗?还是左上角的坐标?这个问题的直观印象应该是左上角的坐标, ...

这篇关于linux限制用户ssh登陆_限制SSH远程登录用户仅能只读访问Linux中指定的目录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/weixin_39633171/article/details/113031331
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/288464

相关文章

Ubuntu 24.04启用root图形登录的操作流程

《Ubuntu24.04启用root图形登录的操作流程》Ubuntu默认禁用root账户的图形与SSH登录,这是为了安全,但在某些场景你可能需要直接用root登录GNOME桌面,本文以Ubuntu2... 目录一、前言二、准备工作三、设置 root 密码四、启用图形界面 root 登录1. 修改 GDM 配

Linux进程CPU绑定优化与实践过程

《Linux进程CPU绑定优化与实践过程》Linux支持进程绑定至特定CPU核心,通过sched_setaffinity系统调用和taskset工具实现,优化缓存效率与上下文切换,提升多核计算性能,适... 目录1. 多核处理器及并行计算概念1.1 多核处理器架构概述1.2 并行计算的含义及重要性1.3 并

nginx 负载均衡配置及如何解决重复登录问题

《nginx负载均衡配置及如何解决重复登录问题》文章详解Nginx源码安装与Docker部署,介绍四层/七层代理区别及负载均衡策略,通过ip_hash解决重复登录问题,对nginx负载均衡配置及如何... 目录一:源码安装:1.配置编译参数2.编译3.编译安装 二,四层代理和七层代理区别1.二者混合使用举例

Linux线程之线程的创建、属性、回收、退出、取消方式

《Linux线程之线程的创建、属性、回收、退出、取消方式》文章总结了线程管理核心知识:线程号唯一、创建方式、属性设置(如分离状态与栈大小)、回收机制(join/detach)、退出方法(返回/pthr... 目录1. 线程号2. 线程的创建3. 线程属性4. 线程的回收5. 线程的退出6. 线程的取消7.

Linux下进程的CPU配置与线程绑定过程

《Linux下进程的CPU配置与线程绑定过程》本文介绍Linux系统中基于进程和线程的CPU配置方法,通过taskset命令和pthread库调整亲和力,将进程/线程绑定到特定CPU核心以优化资源分配... 目录1 基于进程的CPU配置1.1 对CPU亲和力的配置1.2 绑定进程到指定CPU核上运行2 基于

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

Linux下删除乱码文件和目录的实现方式

《Linux下删除乱码文件和目录的实现方式》:本文主要介绍Linux下删除乱码文件和目录的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下删除乱码文件和目录方法1方法2总结Linux下删除乱码文件和目录方法1使用ls -i命令找到文件或目录

Linux在线解压jar包的实现方式

《Linux在线解压jar包的实现方式》:本文主要介绍Linux在线解压jar包的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux在线解压jar包解压 jar包的步骤总结Linux在线解压jar包在 Centos 中解压 jar 包可以使用 u

linux解压缩 xxx.jar文件进行内部操作过程

《linux解压缩xxx.jar文件进行内部操作过程》:本文主要介绍linux解压缩xxx.jar文件进行内部操作,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、解压文件二、压缩文件总结一、解压文件1、把 xxx.jar 文件放在服务器上,并进入当前目录#

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon