首页 > 系统相关 >centos创建用户并仅授权访问某目录

centos创建用户并仅授权访问某目录

时间:2024-10-17 14:34:04浏览次数:7  
标签:TARGET centos 用户 echo USER 授权 SFTP 目录 DIR

#!/bin/bash

# 检查是否以 root 用户运行
if [ "$(id -u)" -ne 0 ]; then
    echo "请使用 root 用户或 sudo 权限运行此脚本。"
    exit 1
fi

# 检查输入参数
if [ "$#" -ne 3 ]; then
    echo "用法: $0 <用户名> <密码> <授权目录>"
    exit 1
fi

# 用户输入部分
SFTP_USER="$1"
SFTP_PASSWORD="$2"
TARGET_DIR="$3"

# 创建新用户,并设置默认 shell 为 bash
echo "创建用户: $SFTP_USER"
useradd -m -s /bin/bash "$SFTP_USER"

# 设置用户密码
echo "设置用户密码..."
echo "$SFTP_USER:$SFTP_PASSWORD" | chpasswd

# 确保目标目录存在
if [ ! -d "$TARGET_DIR" ]; then
    echo "创建目录: $TARGET_DIR"
    mkdir -p "$TARGET_DIR"
fi

# 设置用户对目标目录的权限
echo "设置目标目录权限: $TARGET_DIR"
chown "$SFTP_USER:$SFTP_USER" "$TARGET_DIR"
chmod 755 "$TARGET_DIR"

# 限制用户仅能访问目标目录(通过更改用户的 home 目录)
echo "限制用户只读写指定目录..."
usermod -d "$TARGET_DIR" "$SFTP_USER"

# 配置文件权限,确保用户只能访问该目录及其子目录
echo "为用户设置写权限的上传目录..."
UPLOAD_DIR="$TARGET_DIR"
if [ ! -d "$UPLOAD_DIR" ]; then
    mkdir -p "$UPLOAD_DIR"
fi
chown "$SFTP_USER:$SFTP_USER" "$UPLOAD_DIR"
chmod 755 "$UPLOAD_DIR"

# 使用 ACL(访问控制列表)进一步限制对其他目录的访问
echo "通过 ACL 限制用户对其他目录的访问..."
setfacl -m u:"$SFTP_USER":rwx "$UPLOAD_DIR"
setfacl -R -m u:"$SFTP_USER":r-- "$TARGET_DIR"  # 限制对父目录的访问,但允许对子目录的读写

# 输出完成信息
echo "用户 $SFTP_USER 创建完成,限制其只能对 $UPLOAD_DIR 目录进行读写。"
echo "请记住更改密码为更安全的密码。"

exit 0

标签:TARGET,centos,用户,echo,USER,授权,SFTP,目录,DIR
From: https://www.cnblogs.com/guowenrui/p/18472261

相关文章

  • YOLO11有效改进专栏目录
    |试读篇|使用YOLO11训练自己的数据集【下载模型】-【导入数据集】-【训练模型】-【评估模型】-【导出模型】YOLO11关键改进与网络结构图YOLO11改进|注意力机制篇|添加GAM、CBAM、CA、ECA等注意力机制YOLO11改进|卷积篇|引入可变核卷积AKConv|注意力机制篇|YOLO11改进|注意......
  • jeecgboot 3.7.1 一键将生成好的代码复制到前后端项目目录,并执行SQL插入菜单的python
    importshutilimportosimportmysql.connectorfrommysql.connectorimportErrorbase_dir="D:/pro/JeecgBoot-v3.7.1"code_dir="/gendcode"package_name="meetrice"#MySQL连接配置config={'user':'root......
  • CentOS 7环境下DM8数据库的安装与配置
    一、环境准备首先,确保你的系统已经安装了CentOS7,并且具有足够的磁盘空间和内存来支持DM8数据库的运行。此外,你还需要具备管理员权限,以便进行后续的安装和配置操作。二、下载DM8安装包访问达梦数据库官方网站,下载适用于CentOS7的DM8安装包。你可以根据自己的需求选择合适的版......
  • 【Shiro】9.前端页面授权控制
     shiro可以与前端Thymeleaf结合,进行前端授权认证。由于,“吾生而有涯,而知而无涯”。所以,有限的生命不能照单全收无限的知识。而,前后端分离,必定是大趋势。所以,我就不额外写代码。截图记账理解一下。1.pom.xml页面引入Thymeleaf依赖。 2.配置类添加新配置 3.前端页面引入Sh......
  • shell脚本自动选择空间最大的目录安装docker
    #!/bin/bash#二进制包安装docker-xy.xy.x-ce#变量unamer=`uname-r|cut-d'.'-f1-2`Max_Space=$(df|grep"^/dev"|sort-rn-k2|head-1|awk'{print$6}')Registry="mirror.eastraycloud.com:8665"#判断当前系统类型Unamer=$(uname-v|......
  • Parallels Desktop 20(Mac虚拟机) v20.1.0 for Mac 2024最新破解版免费下载附带PD 20
    ParallelsDesktop20 是一款目前功能最强大灵活度最高的虚拟机软件,可运行数千种Windows应用程序,如MicrosoftOffice、InternetExplorer、Access、Quicken、QuickBooks、VisualStudio,甚至支持对图像要求较高的游戏和CAD项目,而不影响任何性能且无需重启。ParallelsDes......
  • Jboss未授权访问-8080
    Jboss未授权访问√基础了解JBOSS是一个基于J2EE的开放源代码的应用服务器。JBoss是一个管理EJB的容器和服务器。一般与Tomcat与Jetty绑定使用Jboss未授权漏洞是指未授权访问管理控制台,通过该漏洞,可以后台管理服务,可以通过脚本命令执行系统命令,如反弹shell环境部署vulhub:vu......
  • rsync未授权-873
    环境搭建https://www.freebuf.com/articles/web/278245.htmlrsync:/vulhub/rsync/common/-https://blog.csdn.net/weixin_45006525/article/details/123873166vulfocusdockerpullvulfocus/vulfocus:latestdockerrun-d-p80:80-v/var/run/docker.sock:/var/run/docke......
  • Redis未授权-6379
    原理分析Redis默认情况下,会绑定在0.0.0.0:6379,这样将会将Redis服务暴露到公网上如果在没有开启认证的情况下,可以导致任意用户在可以访问目标服务器的情况下未授权访问Redis以及读取Redis的数据。攻击者在未授权访问Redis的情况下可以利用Redis的相关方法,可以成功在......
  • CentOS高可用运维案例之---配置bond0
    案例说明:在CentOS7系统下,两个Server之间网卡部署bond0连接测试。系统版本:[root@node201~]#cat/etc/os-releaseNAME="CentOSLinux"VERSION="7(Core)"ID="centos"ID_LIKE="rhelfedora"VERSION_ID="7"PRETTY_NAME="CentOSLinu......