私有频道+用户组,融云超级群的无限用户「分层管理术」
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了私有频道+用户组,融云超级群的无限用户「分层管理术」相关的知识,希望对你有一定的参考价值。
作为实现类 Discord 实时社区的第一选择,融云超级群已经在欧美、东南亚和国内的多款二次元兴趣社交、游戏社区、地区社群等产品中“履新上任”,成为产品提升用户粘性和拓展社交属性的关键能力。关注【融云全球互联网通信云】了解更多
不同于围绕用户建立的关系,实时社区以频道为中心,用户加入或离开,这个空间一直都在,鼓励用户在一次临时交流后有更多后续沟通。
用户在加入超级群后,不需要申请就能够自由选择进入某一频道进行沟通、获取资讯信息。每个频道共用服务器中的成员关系,频道内沟通时可 @ 服务器中的任何成员。但同时,频道间的消息内容和与自己相关的未读消息数相互独立,互不影响。
这形成了实时社区产品独一无二的产品特性:
普通群组无法实现服务器下多频道共用一份成员关系,同时消息内容又完全隔离的形态;
同样用户无上限的聊天室产品,则不具备区分主题和沉淀内容的能力。
正因如此,“超级群-频道”的二级产品结构成为实时社区的关键要素,把有共同兴趣的用户连接起来,让兴趣成为他们持续分享的驱动力并逐渐形成繁荣生态,也构成了实时社区在支持用户顺畅沟通的同时沉淀内容的产品内核。
同时,摒弃主流社交产品对流量的倾斜模式,实时社区没有“粉丝量”,没有推荐算法,这种相对去中心的用户关系更利于社区认同感的打造。
但当以上产品特性碰到了实时社区的另一个关键识别点——无上限的用户数时,就有点棘手了。
当用户数达到一定量级,基于超级群内所有频道共享一份用户关系这个前提,超级群便会成为一个庞大的公域场所,对用户管理提出一定挑战。
针对于此,融云超级群的“私有频道+用户组”能力实现对实时社区用户的分层管理,开发者调用相关接口即可拥有相应能力,无需自行实现,进一步降低开发难度和成本。
私有频道,区隔公域的小世界
融云超级群的私有频道能力,可以将用户池公域划分出圈层,满足社区场景中只有指定用户可以在频道中沟通的业务需求。
管理员可以在社区中创建私有频道,并通过邀请或拉取指定成员的方式,将社区中的好友用户或社区运营管理团队加入到指定私有频道中。
默认私有频道对应白名单中的用户可以在频道中收发消息,非白名单中的用户则无法在私有频道中接收、发送消息。
私有频道可以随时切换为公有频道,公有频道也可以切换为私有频道。
用户组,批量管理社区成员
融云超级群用户组功能,是超级群业务群成员管理工具,结合超级群私有频道功能,可以帮助 App 实现更高效和精细的超级群成员管理。
用户组创建后,可以与超级群频道,尤其是私有频道进行绑定。
完成绑定后,该用户组即可拥有在社区私有频道中收发消息和通知的沟通权限,开发者亦可通过扩展属性灵活实现其他业务层需求。
单个用户可以存在于多个用户组中,若一个用户组绑定了多个频道,该用户组的所有成员即具有在绑定的私有频道中收发消息、接收通知的能力。
通过调用成熟接口获得这一批量管理能力,可以极大提升应用的集成效率。
详细信息,欢迎点击融云接口文档了解。
面向无上限用户的实时社区构建无疑是一个长线产品,完成大规模用户集聚的第一任务后,其他商业价值探索可能性便会顺其自然而来,且一旦掀起浪花,涟漪将持续向外扩散。
而融云超级群提供的“私有频道+用户组”的能力则可以成为支持社区长期持续运营的有力工具,提升社区产品的用户分层管理能力,实现大规模用户社区的有序运营。
融云超级群核心能力
- 二级结构
超级群-频道二级产品结构,频道间共享成员关系的同时实现消息隔离。
- 无限用户
支持上不封顶的用户加入,打造海量用户实时交互的超大型第三空间。
- 内容沉淀
基于频道连接有共同兴趣的用户,驱动用户持续分享并逐渐形成繁荣生态。
- 多种消息
内置文本、表情、图片、语音、位置、小视频、文件等各种消息类型。
- 消息获取
用户上线后按需获取最新消息,不会因海量离线消息造成卡顿崩溃。
- 专属机制
支持灵活设置通知和推送频率,避免消息过多影响用户体验。
Linux用户和组管理
1.Linux用户管理、用户类型、认证机制、用户相关配置文件
1.1用户和用户组的概念及用户类型
用户:这里的用户是计算机识别个体的专用标识。可以是用户名、密码、或者计算机识别标识的一种机制,而这种机制最终要转换为计算机的唯一使用标志。我们把它称之为用户ID。
用户分为三类:超级用户,普通用户,虚拟用户
超级用户:root uid=0.权利无限大,神一样的存在。
虚拟用户:存在linux中,满足文件或者程序运行的需要,而创 建的。不能登录,不能使用。uid=1-499,1-999(centos7) 。
比如:bin:x:1:1:bin:/bin:/sbin/nologin
普通用户:管理员root创建的用户。uid=500+,1000+(centos7)。
用户组:具有相同特征的用户的集合。一个组可以包含多个用户,每个用户也可以属于不同的组。用户组的目的方便管理员对用户进行集中管理。用户组也分为两类:系统组和普通组。
用户和用户组的关系:
一对一:一个用户存在一个组,也可以是组中唯一成员
一对多:一个用户属于多个组,只有一个主组,其余为附加组
多对一:多个用户存在于一个组
多对多:多个用户可以存在多个组
1.2认证机制
认证(Authentication)通常是通过某种识别技术将其于当前系统上某个用户标识关联起来的过程。认证通过并不意味着结束,我们还需要授权(Authorization),授权是用户身份通过后限制系统上的资源使用操作,包括创建删除等。最后还需要审计(Audition),审计是监督权限来判断用户的授权使用是否合理。故称为3A
Authentication认证:识别资源与用户的关系
Authorization授权:创建删除等
Auditon审计:监督权限关系
因此,对操作系统来讲,安装完操作系统后首先要输入用户名和密码登录进来。
1) 登录后系统能够自动的根据用户名来进行授权,linux的授权机制相对来说还是比较薄弱的,它的层次很简单只有2级分配机制,只有管理员和普通用户两类,管理员能够管理全局权限,普通用户对于系统级的资源只有读取权限和使用权限对于自己的资源有全部权限。
2) 系统还会对每一个文件附加属主、属组和其它访问权限,从而完成用户到资源映射。属主通常意味着用户是这个资源的拥有者,一般会有完全支配的权限。
3) 每一个用户对于系统上的资源使用尤其是登录认证后资源使用过程会记录到日志文件上。对于操作系统它没有对用户的每一步操作作审计,如果想做这种审计可以利用第三方机制来实现,比如在系统安装一个全局审计的系统,任何用户的操作都会记录下来,比如SELINUX。系统所有的日志都在 /var/log
1.3用户相关配置文件
/etc/passwd 用户及其属性信息
我们可以使用cat命令查看配置文件,下图截取了一部分。
第一列(以冒号为分隔符):用户名
第二列:密码位
第三列:UID号 CentOS6 1-499为系统用户,预留
CentOS7 1-999为系统用户,预留
第四列:GID号 主组和辅助组
第五列:用户全名或注释
第六列:用户的家目录
第七列:用户默认的shell类型
/etc/group 组及其属性信息
第一列:组名称
第二列:组密码,通常不需要设定
第三列:GID CentOS6 1-499为系统组,预留
CentOS7 1-999为系统组,预留
第四列:以该组为附加组的用户列表
/etc/shadow 用户密码及其相关属性
第一列:用户名
第二列:密码位 $加密方式$salt$password
!!代表账户被锁定
第三列:更改密码时间(天数计算)—距离1970年1月1号时间
第四列:密码最短口令有效期
第五列:口令过期时间,更改口令往后的时间
第六列:口令到期前提前多少天提醒
第七列:口令过期后多少天账户过期
第八列:帐号的有效期
/etc/gshadow 组密码及其相关属性
第一列:组名
第二列:组密码
第三列:管理员列表,可以更改组密码和成员
第四列:将该组作为辅助组的成员列表
2. 用户管理命令useradd,usermod,userdel及解析库文件/etc/passwd
2.1用户创建:useradd
useradd
-u UID:定义在/etc/login.defs
-g GID:指明用户所属基本组,可为组名,也可为GID
-c 用户的注释信息
-d 以指定的路径为家目录
-s 指明shell
-M 不建家目录
-s 指定用户的默认shell
-e 用户过期时间
-G 为用户指明附加组,组须事先存在
2.2修改用户的基本信息:usermod
usermod
-u UID: 新UID
-g GID: 新主组
-G 新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项
-s 新的默认SHELL
-c 新的注释信息
-d HOME: 新家目录不会自动创建;若要创建新家目录并移动原家数据,同时使用-m选项
-l: login_name: 新的名字
-L: 锁定用户密码,使密码无效;
-U: 解除密码锁定。
2.3删除给定的用户:userdel
userdel
-f:强制删除用户,即使用户当前已登录;
-r:删除用户的同时,删除与用户相关的所有文件。
2.4.1解析库文件/etc/passwd
3./etc/passwd :用户信息库,名称解析库
name:password:UID:GID:GECOS:directory:shell
~]# man 5 passwd
name : 用户名
password : 可是加密密码;占位符x表示密码存在/etc/shadow中;如果是“!”说明此用户不能用密码登录;或者是 *
号; 细节man 5 passwd;man pwconv(密码转换)
UID : 就是用户识别码(ID)
GID : 用户所属的主组的ID号;与/etc/group文件有关;
GECOS : 可选;注释信息
directory : 用户的家目录;
shell:用户的默认shell,登录时默认shell程序;
[[email protected] ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
2.4.2解析库文件/etc/shadow:用户密码相关;包括用户期限信息(密码的真正所在地)
root:$1$HDHf2v4i$LMo.xGHfxQDOf8e043C.g/:16779:0:99999:7:::
~]# man 5 shadow
格式(九段):用户名:加密的密码:最近一次修改密码的时间:最短使用期限:最长使用期限:警告期段:过期宽限时间:账号失效日期:保留字段
username:password:last_change:min_change:max_change:warm:failed_expire:expiration:reserved
用户名:加密的密码:最近一次修改密码的时间:最短使用期限:最长使用期限:警告期段:密码禁用期:过期期限:保留字段
username : 用户名
password : 加密密码;系统用户是不能登录的,密码字段为星号(*);两个感叹号(!!)表示这个用户被锁定了,无法登录;美元符号($)出现在加密格式的密码里,起到分隔作用;由三部分组成的,以$分隔,即:$id$salt$encrypted $数字$随机数$加密后的密码串;第3个 $ 分隔的才是真正的密码串;id表示加密算法,当id为1时,使用md5加密,以此类推,id为6采用SHA512进行加密。
last_change : 最近一次修改密码的时间,相对时间计时法, 1970.01.01;0表示用户下次登录时更改密码;空字段为密码期限禁用; 可以用awk转换,如 echo "17546" | awk ‘{print strftime("%F")}‘
min_change : 最短使用期限;密码更完后使用一段时候后才能改密码;0或空表示没有限制;
max_change : 最长使用期限;从上次更改密码后,最长使用时间;超过后进入密码警告期段;默认99999天
warm : 警告期段;参考最长使用期限,在最长使用期限前警告时段内天警告
failed_expire : 密码禁用期;参考以上,密码过了宽限期,密码锁定;
expiration : 用户过期期限;不同于密码过期;账户过期时,用户将不被允许登录;密码过期时,用户将不被允许使用其密码登录。
reserved : 保留字段
密码存储格式:单向加密,并借助于salt完成
1: md5
sha1
sha224
sha256
sha384
6: sha512
如,查看cetnos用户密码信息
[[email protected] ~]# cat /etc/shadow
centos:$6$lLZBCZMe$.AjEoX0iR.kPWZRIms30tjq3KbAr5vn3Is/d6uBe78Lx9lz4vjKTUJxluFow79dBoqmowXYADjR.X8iomGu6B1:17546:0:99999:7:::
[[email protected] ~]# echo "17546" | awk ‘{print strftime("%F")}‘ #转换最近一次修改密码时间为易读时间
2018-01-16
3. 用户组管理类命令groupadd,groupmod,groupdel及解析库文件/etc/group
3.1 创建一个新的工作组:groupadd
groupadd
-g:指定新建工作组的id;
-r:创建系统工作组,系统工作组的组ID小于500;
-K:覆盖配置文件“/ect/login.defs”;
-o:允许添加组ID号不唯一的工作组。
3.2更改群组识别码或名称:groupmod
-g<群组识别码>:设置欲使用的群组识别码;
-o:重复使用群组识别码;
-n<新群组名称>:设置欲使用的群组名称。d
3.3用于删除指定的工作组:groupdel
groupdel
groupdel 组名 删除组.
4. 用户认证命令passwd、gpasswd及其它相关命令chage、id、su
passwd命令用于设置用户的认证信息
-d:删除密码,仅有系统管理者才能使用;
-f:强制执行;
-k:设置只有在密码过期失效后,方能更新;
-l:锁住密码;
-s:列出密码的相关信息,仅有系统管理者才能使用;
-u:解开已上锁的帐号。
gpasswd
-a:添加用户到组;
-d:从组删除用户;
-A:指定管理员;
-M:指定组成员和-A的用途差不多;
-r:删除密码;
-R:限制用户登入组,只有组中的成员才可以用newgrp加入该组
例如: [[email protected] ~]#gpasswd -a ma -g zhu
Adding user ma to group zhu #将用户ma添加到组zhu中
[[email protected] ~]#gpasswd -d ma -g zhu
Removing user ma from group zhu #将用户ma从组zhu中删除
groupmems[options] [action]
options
-g 更改为指定组
actions
-a 指定用户加入组
-d 从组中删除用户
-p 从组中清除所有成员
-l 显示组成员列表
案例:
[[email protected] ~]#groupmems -g admins -a ma
[[email protected] ~]#groupmems -g admins -a zhu #将ma和zhu用户添加到admins中
[[email protected] ~]#groupmems -g admins -l #查看admins中的用户列表
ma zhu
[[email protected] ~]#groupmems -g admins -d ma #将ma从admins中删除
[[email protected] ~]#groupmems -g admins -l
zhu
[[email protected] ~]#groupmems -g admins -p #清空admins中的所有组成员
[[email protected] ~]#groupmems -g admins -l
groups 查看用户所属组列表
[[email protected] ~]#groups ma
ma : ma
[email protected] ~]#groups zhu
zhu : zhu
chage命令是用来修改帐号和密码的有效期限
-m:密码可更改的最小天数。为零时代表任何时候都可以更改密码。
-M:密码保持有效的最大天数。
-w:用户密码到期前,提前收到警告信息的天数。
-E:帐号到期的日期。过了这天,此帐号将不可用。
-d:上一次更改的日期。
-i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
-l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。
id命令可以显示真实有效的用户ID(UID)和组ID(GID)
id [-gGnru][--help][--version][用户名称]
-g或--group 显示用户所属群组的ID。
-G或--groups 显示用户所属附加群组的ID。
-n或--name 显示用户,所属群组或附加群组的名称。
-r或--real 显示实际ID。
-u或--user 显示用户ID。
-help 显示帮助。
-version 显示版本信息
su命令用于切换当前用户身份到其他用户身份
-c<指令>或--command=<指令>:执行完指定的指令后,即恢复原来的身份;
-f或——fast:适用于csh与tsch,使shell不用去读取启动文件;
-l或——login:改变身份时,也同时变更工作目录,以及HOME,SHELL,USER,logname。此外,也会变更PATH变量;
-m,-p或--preserve-environment:变更身份时,不要变更环境变量;
-s<shell>或--shell=<shell>:指定要执行的shell;
--help:显示帮助;
--version;显示版本信息。
以上是关于私有频道+用户组,融云超级群的无限用户「分层管理术」的主要内容,如果未能解决你的问题,请参考以下文章