首页 > 其他分享 >实时监控目录及子目录并修改子目录及文件的属组及权限

实时监控目录及子目录并修改子目录及文件的属组及权限

时间:2024-09-27 15:45:39浏览次数:6  
标签:文件 组及 imagegroup 子目录 FILE NEW 权限 目录

背景

图片上传后到服务器的磁盘上,落盘后的文件,归属用户和属组为应用程序a权限,比如aaa:aaa,且权限是600。这个时候应用程序b也想访问这些图片,该如何授权。
!!!研发要求,不改动代码,运维来实现!!!(无奈表情)(代码不想判断linux还是windows)

思路

1.本人非正规军,但也遵循用户权限最小原则。root先排除。
2.想办法提高落盘图片文件权限
图片权限600改成660
3.修改文件所属组
应该要有个图片专门的属组,比如imagegroup
只要文件目录下的子目录或者文件属组都是imagegroup,属于这个组的用户就可以对该图片进行读写

usermod -aG  用户名
-a (append):这个选项告诉 usermod 不要替换用户的现有附加组,而是将指定的组追加到现有的附加组列表中。
-G (groups):这个选项后面跟着一个逗号分隔的组名列表,用来指定用户应该属于哪些附加组。

通过inotifywait实现

脚本如下:

#!/bin/bash

# 监控的目录
MONITORED_DIR="/path/to/directory"

sudo groupadd imagegroup
sudo usermod -aG imagegroup aaa
sudo usermod -aG imagegroup bbb

# 打印调试信息
echo "开始监控目录: $MONITORED_DIR"

# 使用 inotifywait 监控目录,-m 表示保持运行,-r 表示递归监控子目录
inotifywait -m -r -e create,moved_to,close_write --format '%w%f' "$MONITORED_DIR" | while read NEW_FILE
do
#  echo "检测到新文件或目录: $NEW_FILE"

  # 检查是否为新文件或目录
  if [[ -e $NEW_FILE ]]; then
    # 修改文件或目录的所有者和组为 aaa:imagegroup
    chown aaa:imagegroup "$NEW_FILE"
#    echo "已修改所有者和组为 aaa:imagegroup: $NEW_FILE"

    # 如果是文件,则设置权限为 660
    if [[ -f $NEW_FILE ]]; then
      chmod 660 "$NEW_FILE"
#      echo "已设置文件权限为 660: $NEW_FILE"
    # 如果是目录,则设置权限为 770
    elif [[ -d $NEW_FILE ]]; then
      chmod 770 "$NEW_FILE"
#      echo "已设置目录权限为 770: $NEW_FILE"
    fi
  else
    echo "无法找到文件或目录: $NEW_FILE"
  fi
done

建议与意见

有错误请批评指正
有更好的办法还请指点迷津

标签:文件,组及,imagegroup,子目录,FILE,NEW,权限,目录
From: https://www.cnblogs.com/haiyoyo/p/18435905

相关文章

  • 【Linux】权限管理——专治不会设置权限而头疼
    ......
  • cobaltstrike权限维持
    1.注册表启动注意:优先用这种方式来进行权限维持task.exe是CS生成的后门文件,这里后门文件可以对其做免杀隐藏文件shellattribC:\Windows\task.exe  +s+h注册表启动后门文件shellregaddHKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run/vWindowsUpdate/tREG_SZ/d......
  • LDAP学习笔记之八:openLDAP sudo权限
    一、openLDAPsudo权限常见属性sudoCommand:可执行的二进制命令,如useradd、userdel、mount、umount等。sudoHost:可在哪些机器上执行sudoCommand定义的BASH命令。sudoNotAfter:起始时间sudo规则匹配。sudoNotBefore:结束时间sudo规则匹配。sudoOption:定义超过自身权限及切换至......
  • windows hosts 你没有权限在此位置中保存文件 请与管理员联系
    一、问题现象administrator管理管理员打开hosts没有权限,修改hosts内容后没有权限保存,提示C:\Windows\System32\drivers\etc\hosts你没有去权限在此位置中保存文件。二、解决问题右键点击hosts---属性---安全---高级---更改权限点击添加进行新增权限设置选则主体---检查名称框输入用......
  • linux常见指令与权限【第四课】
    19.tar指令(重要):打包/解包,不打开它,直接看内容         tar[-cxtzjvf] :-c :建立一个压缩文件的参数指令(create 的意思);-x :解开一个压缩文件的参数指令!-t :查看 tarfile 里面的文件!-z :是否同时具有 gzip 的属性?亦即是否需要......
  • java实现角色及菜单权限
    在Java中实现角色及菜单权限通常涉及几个关键组件:用户(User)、角色(Role)、权限(Permission)以及它们之间的关系。下面我将概述一个基本的实现方案,包括数据库设计和代码层面的处理。1.数据库设计表设计用户表(users)user_id(主键)usernamepassword...角色表(roles)role_id(主键)role_name.......
  • 【Linux】指令和权限的这些细节,你确定都清楚吗?
    ......
  • Vue3路由权限控制
    Vue3路由权限控制设置路由:静态路由与动态路由静态路由:这些是在应用启动时就已经定义好的路由,通常包括一些不需要权限验证的公共页面,如登录页、404页面等。动态路由:这些路由是根据用户的权限决定的,通常包括需要权限验证的页面。登录获取token/sessionId等数据,利用pi......
  • 如何在 CentOS 中进入 root 权限
    作为一名服务器管理员,有时您需要以root用户身份执行任务以进行管理操作。以下是两种在CentOS中执行此操作的方法:方法1:使用sudosudo命令允许您以root用户的身份执行特定命令,而无需更改用户会话。要使用此方法:在终端中键入以下命令:1sudo-i系统会提......
  • MySQL深度探索:掌握触发器自动化与精细用户权限管理,提升数据库效能与安全
     作者简介:我是团团儿,是一名专注于云计算领域的专业创作者,感谢大家的关注 座右铭:   云端筑梦,数据为翼,探索无限可能,引领云计算新纪元 个人主页:团儿.-CSDN博客目录前言:触发器(Triggers):用户权限(UserPermissions):一.触发器1.MySQL触发器简介2.引发触发器执行的事件,......