例题

同一群组microsoft下的两个账号justmine001justmine002需要共同拥有目录/microsoft/eshop的开发权,以便进行协同工作,但是其他人不允许进入和查阅该目录。

从例题可以分析出:

  1. 同一群组下的账户需要共同拥有目录的使用权,且可以编辑里面的任何文件。
  2. 其他账户不拥有该目录的任何权限。
  3. 需要使用root账户,创建账户、群组,设置目录权限,然后搭建开发环境。

创建账户相关信息

groupadd microsoft ;  新增群组
useradd -G microsoft justmine001; 新增账户,并加入到群组microsoft
useradd -G microsoft justmine002; 新增账户,并加入到群组microsoft

查阅账号属性

id justmine001;
id justmine002;

搭建环境

创建开发目录

mkdir -p /microsoft/eshop

查询

ll -d /microsoft/eshop

设置传统权限

从上图可以看到,开发目录的拥有者和群组都是root,权限为rwxr-xr-x,所以justmine001justmine002可以查阅(ls)和进入(cd)该目录,但是都不能在目录中创建文件。





首先,设置目录群组为microsoft,其次,其他人对该目录没有任何权限,所以应该设置权限为770。如果不理解,请阅读上一篇详解Linux文档属性、拥有者、群组、权限、差异

chgrp microsoft /microsoft/eshop; 分配群组
chmod 770 /microsoft/eshop; 设置权限

首先测试justmine账号(其他人)的权限,如下:



其他人无法访问ls和进入cd该目录,已达到预期效果。

测试同群组下的justmine001justmine002账号,再次创建文件,如下:





为了淋漓尽致的展现,我将文件创建权限从拒绝到许可的整个过程都截取下来了!!!

从上面可以看到,文件testtest1的拥有者和群组分别为justmine001justmine002,虽然用户justmine001可以删除justmine002创建的文件test1(目录权限的控制范围),但是却不能编辑它(文件权限的控制范围)。那该肿么办呢,还是无法完成协作工作啊。第一种方法是我们将文件test1权限设置为777,这样文件对任何人都可读、可写、可编辑,再加上目录权限的控制,其他人访问不了文件test1,没毛病。第二种方法,变更它们创建的文件群组为microsoft,这样也可以实现协作工作,貌似这种方法才是切合现实的。不过,每次都要管理员去做这件事情,那岂不是太麻烦他老人家,多不好意思啊,嘿嘿。正所谓,车道山前必有路,使用Linux特殊权限SGID可以完美实现同一群组下的任何账户创建的文件都拥有相同的群组microsoft(详情请阅读:理解Linux文档的默认安全机制、隐藏属性、特殊权限)。

备注:Linux文档权限是一级一级的往下控制的,所以任何读、写、编辑文件的前提就是要拥有能够进入文件所属目录的权限。

设置特殊权限

为目录/microsoft/eshop设置SGID权限

chmod 2770 /microsoft/eshop

使用justmine002账号创建文件,查询文件权限:



从上图可以看到,justmine002所属的文件群组自动变更成microsoft,而umask默认为002,两人同属一个群组,自然就可以互相修改彼此的文件了!!!

总结

Linux系统管理员的主要任务其实就是如何管理好系统的文件系统,那么对于文档多租户管理,首先新建一个统一的群组,然后将目录权限设置为2770,最后把需要协作工作的用户加入这个群组,就是这么简单。往往,结果很简短,但是思考分析过程就如同西天取经,希望把整个过程分享给大家,不仅要知其然,更要知其所以然,这样才能举一反三,融汇贯通,达到灵活运用的目的。

Linux如何管理文档多租户的更多相关文章

  1. 如何在Linux中复制文档

    在办公室里复印文档过去需要专门的员工与机器.如今,复制是电脑用户无需多加思考的任务.在电脑里复制数据是如此微不足道的事,以致于你还没有意识到复制就发生了,例如当拖动文档到外部硬盘的时候. 数字实体复制 ...

  2. Linux的帮助文档命令

    Linux的帮助文档命令 1.man page man是manual(操作手册)的简写,使用方式: man [指令] man date 在显示的内容中查找内容: / + 搜索你的关键字 上下左右键来查 ...

  3. 后端编写Swagger接口管理文档

    Swagger接口管理文档 访问接口文档的网页:http://localhost:8080/swagger-ui/index.html 导入依赖 <dependency> <grou ...

  4. Asp.Net Core Api 使用Swagger管理文档教程的安装与使用

    这周因为公司的需求需要我做一个Api的程序,这周的三天时间我一直在Core Api和 framework Api之间做纠结.不知道要使用哪一个去做项目,想着想着就决定了.既然两个我都没用过那个何不来使 ...

  5. PHP在linux读取word文档

    几天帮朋友解决一个技术问题,在Linux下,将word文档中的内容读取,然后使用正则匹配,拼成sql入库 查阅了外文资料和google之后,步骤如下: #wget http://www.winfiel ...

  6. linux 获取帮助文档

    在linux中遇到命令不知道如何使用,可以用man或info来查看. man -f 与 whatis命令是相同的. man -k 与apropos命令是相同的. 而这两个命令又很类似,都是去搜索,找到 ...

  7. 数据可视化之PowerQuery篇(九)巧用Power Query,Excel也可以轻松管理文档

    https://zhuanlan.zhihu.com/p/111674088 ​来自知乎一个朋友的问题,如何在Excel中批量插入文件的超链接,以便在Excel中对文档进行有序的目录管理? 这个问题的 ...

  8. 如何使用ABBYY FineReader 手动管理文档区域

    在运用OCR编辑器时,ABBYY FineReader 15(Windows系统)OCR文字识别软件会对扫描仪或数码相机导入的图像进行识别和检测.在识别和检测之前,软件会自动对PDF文档中的文本.图片 ...

  9. 分享一份550多个Linux命令的文档,按照命令首字母索引排序

    输入一个命令,让我给你一个关于它的完美解释! 众所周知,Linux命令是IT人必须掌握的一个技能,有了它,我们可以部署和维护各种各样的服务和应用.但是,大部分的Linux命令我们不一定记得住,而别是各 ...

随机推荐

  1. 【线程系列四】[转]监听器-java同步的基本思想

    转自:http://ifeve.com/think-in-java-monitor/ 如果你在大学学习过操作系统,你可能还记得监听器在操作系统中是很重要的概念.同样监听器在java同步机制中也有使用, ...

  2. RecyclerView android

    RecyclerView是用来替代ListView.GridView的一个牛掰的控件.用起来更灵活,还能实现线性布局(横向.纵向).网格布局.瀑布流等美观的UI. 在使用RecyclerView时候, ...

  3. 在Ubuntu16.04上配置.Net Core 2 环境

    一.安装.Net Core SDK 按照官方文档,执行以下命令安装SDK curl https://packages.microsoft.com/keys/microsoft.asc | gpg -- ...

  4. Python 三级菜单 增强版

    需要实现的功能是:三级菜单1.从文本内读出选项2.查询每一级的选项,并能对选项进行增/删/改功能3.每一级可以退出程序或者返回上一层 2018-5-14 更新内容 思路 实现过程中的BUG及解决方案: ...

  5. 如何解决在ie下,Echarts多次使用setOption更改数据时,数据错乱问题

    一.问题描述 根据用户的操作,通过Ajax请求,获取某段时间内的某数据趋势折线图数据.用户切换数据项或更改时间段时,ie中渲染的折线图包含了上一次获取的数据,导致数据错乱,如下图所示: 二.代码 数据 ...

  6. laravel5.5解决小程序登陆态的问题

    修改一个文件 : vendor\laravel\framework\src\Illuminate\Session\Middleware\StartSession.php 找到getSession()方 ...

  7. Java IO--字符流--InputStreamReader 和 OutputStreamWriter

    今天继续学习字符流的子类!!!! 先来熟悉一下适配器设计模式:(手写的,,嘿嘿) 因为据说InputStreamReader 和OutputStreamWriter采用了适配器模式(现在我还没能理解, ...

  8. Postman----支持markdown可自动生成接口文档

    1.postman支持markdown作为集合中的请求,对集合和文件夹进行文字描述的方式,您可以嵌入屏幕截图和其他图像已获得更多描述性的介绍. 2.已markdown语法为准,填写自己想要展示的内容 ...

  9. 关于throw、throws、try--catch的问题

    首先回顾概念 throws表示出现异常的一种可能性,并不一定会发生这些异常 throw则是抛出了异常,执行throw则一定抛出了某种异常 try--catch try语句用大括号{}指定了一段代码,该 ...

  10. FreeSql.Repository 通用仓储层功能

    前言 好多年前,DAL 作为数据库访问层,其实是非常流行的命名方式. 不知道从什么时候开始,仓储层成了新的时尚名词.目前了解到,许多人只要在项目中看见 DAL 就会觉得很 low,但是比较可笑的一点是 ...