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中指定的目录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/288464

相关文章

mysqld_multi在Linux服务器上运行多个MySQL实例

《mysqld_multi在Linux服务器上运行多个MySQL实例》在Linux系统上使用mysqld_multi来启动和管理多个MySQL实例是一种常见的做法,这种方式允许你在同一台机器上运行多个... 目录1. 安装mysql2. 配置文件示例配置文件3. 创建数据目录4. 启动和管理实例启动所有实例

Linux内存泄露的原因排查和解决方案(内存管理方法)

《Linux内存泄露的原因排查和解决方案(内存管理方法)》文章主要介绍了运维团队在Linux处理LB服务内存暴涨、内存报警问题的过程,从发现问题、排查原因到制定解决方案,并从中学习了Linux内存管理... 目录一、问题二、排查过程三、解决方案四、内存管理方法1)linux内存寻址2)Linux分页机制3)

解读静态资源访问static-locations和static-path-pattern

《解读静态资源访问static-locations和static-path-pattern》本文主要介绍了SpringBoot中静态资源的配置和访问方式,包括静态资源的默认前缀、默认地址、目录结构、访... 目录静态资源访问static-locations和static-path-pattern静态资源配置

VScode连接远程Linux服务器环境配置图文教程

《VScode连接远程Linux服务器环境配置图文教程》:本文主要介绍如何安装和配置VSCode,包括安装步骤、环境配置(如汉化包、远程SSH连接)、语言包安装(如C/C++插件)等,文中给出了详... 目录一、安装vscode二、环境配置1.中文汉化包2.安装remote-ssh,用于远程连接2.1安装2

使用Python合并 Excel单元格指定行列或单元格范围

《使用Python合并Excel单元格指定行列或单元格范围》合并Excel单元格是Excel数据处理和表格设计中的一项常用操作,本文将介绍如何通过Python合并Excel中的指定行列或单... 目录python Excel库安装Python合并Excel 中的指定行Python合并Excel 中的指定列P

Linux中shell解析脚本的通配符、元字符、转义符说明

《Linux中shell解析脚本的通配符、元字符、转义符说明》:本文主要介绍shell通配符、元字符、转义符以及shell解析脚本的过程,通配符用于路径扩展,元字符用于多命令分割,转义符用于将特殊... 目录一、linux shell通配符(wildcard)二、shell元字符(特殊字符 Meta)三、s

Linux之软件包管理器yum详解

《Linux之软件包管理器yum详解》文章介绍了现代类Unix操作系统中软件包管理和包存储库的工作原理,以及如何使用包管理器如yum来安装、更新和卸载软件,文章还介绍了如何配置yum源,更新系统软件包... 目录软件包yumyum语法yum常用命令yum源配置文件介绍更新yum源查看已经安装软件的方法总结软

linux报错INFO:task xxxxxx:634 blocked for more than 120 seconds.三种解决方式

《linux报错INFO:taskxxxxxx:634blockedformorethan120seconds.三种解决方式》文章描述了一个Linux最小系统运行时出现的“hung_ta... 目录1.问题描述2.解决办法2.1 缩小文件系统缓存大小2.2 修改系统IO调度策略2.3 取消120秒时间限制3

Linux alias的三种使用场景方式

《Linuxalias的三种使用场景方式》文章介绍了Linux中`alias`命令的三种使用场景:临时别名、用户级别别名和系统级别别名,临时别名仅在当前终端有效,用户级别别名在当前用户下所有终端有效... 目录linux alias三种使用场景一次性适用于当前用户全局生效,所有用户都可调用删除总结Linux

Linux:alias如何设置永久生效

《Linux:alias如何设置永久生效》在Linux中设置别名永久生效的步骤包括:在/root/.bashrc文件中配置别名,保存并退出,然后使用source命令(或点命令)使配置立即生效,这样,别... 目录linux:alias设置永久生效步骤保存退出后功能总结Linux:alias设置永久生效步骤