前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >三.Linux用户及权限管理

三.Linux用户及权限管理

作者头像
对弈
发布于 2019-09-04 07:46:57
发布于 2019-09-04 07:46:57
2.4K00
代码可运行
举报
运行总次数:0
代码可运行

基本操作

首先我们梳理一下 Linux 下的用户、用户组、文件权限等基本知识,然后后面通过一个案例来实际演示一下权限设置的一些操作。 首先 Linux 系统中,是有用户和用户组的概念的,用户就是身份的象征,我们必须以某一个用户身份来操作一个系统,实际上这就对应着我们登录系统时的账号。而用户组就是一些用户的集合,我们可以通过用户组来划分和统一管理某些用户。 比如我要在微信发一条朋友圈,我只想给我的亲人们看,难道我发的时候还要一个个去勾选所有的人?这未免太麻烦了。为了解决这问题,微信里面就有了标签的概念,我们可以提前给好友以标签的方式分类,发的时候直接勾选某个标签就好了,简单高效。实际上这就是用户组的概念,我们可以将某些人进行分组和归类,到时候只需要指定类别或组别就可以了,而不用一个个人去对号入座,从而节省了大量时间。 在 Linux 中,一个用户是可以属于多个组的,一个组也是可以包含多个用户的,下面我以一台 Ubuntu Linux 为例来演示一下相关的命令和操作。

用户和用户组

​ 首先查看所有用户,命令如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cut -d':' -f 1 /etc/passwd

结果:

​ 这里一行就是一个用户名,由于太多,部分就省略了,实际上这个命令就是从密码文件中把用户名单独列出来了。

​ 然后查看所有用户组,命令也是类似的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cut -d':' -f 1 /etc/group

结果:

​ 结果基本是类似的,因为每个用户在被创建的时候都会自动创建一个同名的组作为其默认的用户组。

这里我是使用 ubuntu 这个账号来登录的,下面我来看下 ubuntu 这个账号是属于哪些组。

功能

​ 在Linux中 useradd 命令用来创建或更新用户信息。

​ useradd 命令属于比较难用的命令 (low level utility for adding users),所以 Debian 系的发行版中建议管理员使用 adduser 命令。其实 adduser 命令只是一个调用了 useradd 命令的脚本文件。

​ 本文将详细分析群组和家目录相关的选项。并且以实例的方式介绍常用的 useradd 命令写法。

语法和基本选项

注意:本文并不是一个完整的文档,所以仅列出部分常用的选项进行说明。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
useradd [option] username

[option]:

-d<登入目录> 指定用户登入时的目录。

-g<群组> 初始群组。

-G<群组> 非初始群组。

-m 自动创建用户的家目录。

-M 不要创建用户的家目录。

-N 不要创建以用户名称为名的群组。

-s 指定用户登入后所使用的shell。

​ 查看一个用户所属组的命令格式如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
groups <username>

​ 这里就是 groups 命令加上用户名就能查看该用户名所属的组了,如果不加用户名的话就默认是当前用户。

例如查看 ubuntu 这个用户所属于的组,命令如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
groups ubuntu

结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ubuntu : ubuntu adm cdrom sudo dip plugdev lxd lpadmin sambashare

​ 还不少,这个用户被分配到了很多组下,比如同名的组 ubuntu,还有 sudo 组,另外还有一些其他的组。

其中 sudo 组比较特殊,如果被分到了这个组里面就代表该账号拥有 root 权限,可以使用 sudo 命令。

了解了怎样查看用户所属的组,我们也应该反过来了解如何查看一个用户组里面包含哪些用户啊。

​ 查看某个用户组下所有用户命令如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
members <group>

​ 不过这个命令不是自带的,需要额外安装 members 包,命令如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt-get install members

​ 例如查看 sudo 用户组下的所有用户,即拥有 root 权限的用户:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
members sudo

​ 结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ubuntu hadoop

​ 可以看到拥有 root 权限的用户有两个,ubuntu 和 hadoop,当然不同的机器结果肯定是不一样的。

接下来介绍一个比较有用的命令,就是 id 命令,它可以用来查看用户的所属组别,格式如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
id <username>

​ 例如查看 ubuntu 用户的信息,就是这样:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
id ubuntu

结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
uid=500(ubuntu) gid=500(ubuntu) groups=500(ubuntu),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),110(lxd),115(lpadmin),116(sambashare)

​ 这里有一个 gid,作为主工作组,后面还有个 groups,它列出了用户所在的所有组。主工作组只有一个,而后者的数量则不限。可以看到用户组的结果和使用 groups 命令看到的结果是一致的。

​ 接下来我们再来了解一下如何创建一个用户和怎样为用户分配组别。

​ 添加一个用户命令格式如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo useradd <username>

​ 比如我要添加一个用户 cqc,命令就可以这么写:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo useradd cqc

​ 这里使用的命令前面都带有 sudo,因为毕竟是系统级别的操作。

​ 添加一个组的命令格式如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo groupadd <group>

​ 格式是类似的,后面跟一个组的名称就可以了,例如我要为我的实验室创建一个用户组,那么就可以使用如下命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo groupadd lab

​ 创建完了用户和组,那得把它们关联起来吧,关联的意思就是把某个用户加入到某个组里面,命令格式如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo useradd <username> <group>

​ 或者使用 usermod 命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo usermod -G <group> <username>

​ 如果要添加多个组的话,可以通过 -a 选项指定多个名称:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo usermod -aG <group1,group2,group3..> <username>

​ 例如我要将 cqc 用户添加到 sudo 用户组中,命令就是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo useradd cqc sudo

​ 或:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo useradd -G sudo cqc

​ 这样就为用户和用户组做好关联了。

细说用户组

​ 首先我们要搞清楚,什么是初始群组?简单来说在 /etc/passwd 文件中,每行的第四个字段指定的就是用户的初始群组。用户登录后立即就拥有了初始群组中的权限。

​ 下面我们通过不同的命令来查看群组选项的用法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo useradd tester1

​ 没有使用任何群组相关的参数,默认在创建用户 tester1 的同时会创建一个同名的群组。用户 tester1 的初始群组就是这个新建的群组。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo useradd tester2 -N

​ 这次我们使用了 -N 选项,即不要生成与用户同名的群组。查看下 /etc/passwd 文件,发现 tester2 用户的初始群组ID是100。这个100是哪来的?有ID为100的群组吗?其实100作为 -N 的默认值是写在配置文件中的。不管有没有ID为100的群组,都是这个值。当然我们也可以通过修改配置文件来改变这个默认值!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo useradd tester3 -g sudo

​ sudo 是一个非常有权势的群组,我决定把 tester3 加入到这个群组。好,现在去查看一下 /etc/passwd 和 /etc/group 文件,看看有没有新的群组被创建? tester3 的初始群组又是谁?这次没有创建与 tester3 同名的群组。用户 tester3 的初始群组变成了 sudo。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo useradd tester4 -G sudo

​ 和上一条命令相比我们只是把小写的g替换成了大写的G。但结果可相差太多了,请您一定要好好的检查 /etc/passwd 和 /etc/group 文件。因为这次不仅创建了群组 tester4,它还是用户 tester4 的初始群组。和tester1 的唯一不同是 tester4 被加入了 sudo 群组。

​ 在实际的使用中,tester3 和 tester4 的场景都是比较常见的,需要根据实际情况进行区分。

细说家目录

​ Useradd 命令对用户家目录的处理让人困惑,下面我们将通过实验来了解家目录相关的不同选项的使用方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo useradd tester1

​ 让我们重新看看创建用户 tester1 这条命令。它不会为用户 tester1 创建名为 tester1 的目录作为家目录,但是我们打开 /etc/passwd 文件,发现 tester1 的记录中居然包含了家目录 /home/tester1。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tester1:x:1005:1005::/home/tester1:

​ 这让人不可思议,但这条命令确实是这么实现的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo useradd -m tester5

​ 若要在创建用户的同时创建用户的家目录,必须指定 -m 选项。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo useradd -d /home/abc tester6

​ 我们希望自己指定家目录,此时不生成目录 abc

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo useradd -d /home/abcd -m tester7

​ 此时生成目录 abcd,并且目录下默认存在文件

常见用例

Case 1: 创建一个带有家目录并且可以登录 bash 的用户

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo useradd -m -s /bin/bash tester1

Case 2: 指定创建用户家目录的路径

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo useradd -m -d /home/xxx tester2

​ /home/xxx目录会被创建。

Case 3: 创建用户家目录且能登录bash的用户,所属组,同时填写用户密码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
useradd  -m  -s /bin/bash  -d /home/test/ -G root  -p xxxxxx tester3

Case 4: 创建一个没有家目录且不能登录的用户

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo useradd -s /sbin/nologin tester3

Case 5: 创建时把用户加入不同的用户组

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo useradd -m -G xxx,sudo tester4

注意过个组名使用逗号分隔,不能有空格。

声明:本文为原创,作者为 对弈,转载时请保留本声明及附带文章链接:http://www.duiyi.xyz/linux%e7%94%a8%e6%88%b7%e5%8f%8a%e6%9d%83%e9%99%90%e7%ae%a1%e7%90%86/

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-08-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
物联网继续呈增长势头
本文讨论了物联网(IoT)设备在日常生活中的增长,以及随之而来的安全问题。随着物联网设备数量的激增,人们需要集中精力提高所有新设备和支持应用的安全性,以保护自己免受网络安全威胁。物联网设备的新用途正在网络上开辟了新端点,从而转化为潜在的安全问题。在某些情况下,这些设备正在传播信息,这为网络犯罪分子寻找漏洞提供了主要目标。为了保持这些平台的安全性,制造商和基础设施必须采取各种保护和控制措施,将安全性“最强”的数据中心与较弱或更加脆弱的数据中心设施和系统分开。
企鹅号小编
2017/12/27
5160
物联网继续呈增长势头
网络攻击升级,企业急需这7大IT安全技能
根据 ISC2 最近对 IT 安全经理进行的一项调查,不断发展的 IT 战略以及新兴技术和威胁使组织重新调整其网络技能需求清单。
星尘安全
2024/12/13
890
网络攻击升级,企业急需这7大IT安全技能
安全性对于物联网在云端的应用至关重要
对于物联网(IoT)使用云服务的企业来说,尽可能采用更多的安全措施至关重要。专家对最好的方法进行了权衡。 物联网(IoT)在云端的应用为云安全带来了一个棘手的问题。大多数组织只考虑设备本身的安全问题
静一
2018/03/28
8310
安全性对于物联网在云端的应用至关重要
物联网目前的安全问题有哪些?
根据中国信通院出版的《物联网白皮书(2020)》的内容,目前物联网安全问题有如下几种:
涂小航说智能
2021/05/27
1.4K0
美国国土安全部发布《物联网安全指导原则》
物联网在内的网络互联服务为社会发展创造了机会和利益,而物联网自身的安全却跟不上创新和部署的快速步伐。如今,网络连接设备无处不在,物联网的增长和普及大大方便了人们的生活,而随着国家关键基础设施更多的网络物联应用,个人和国家面临的安全威胁越来越严重,而物联网的安全问题也接踵而来,恶意攻击、信息泄露、业务中断、大规模网络攻击……网络驱动生活,物联网安全事关国家安全。 本报告向物联网设备和系统相关开发商、生产商、管理者及个人提供了一组安全规则建议,以供参考。 1 在设计开发阶段考虑安全问题 任何网络连接设备都应
FB客服
2018/02/09
9360
美国国土安全部发布《物联网安全指导原则》
2016年RSA会议和物联网
世界领先的信息安全会议和展览会2016年RSA大会今天在旧金山的Moscone中心揭幕。会议结束了第25年,会议聚集了顶尖的信息安全专业人员和商业领袖,讨论新兴的网络安全趋势,制定应对当前和未来威胁的最佳策略。 据RSA会议的Britta Glade介绍,在今年的审查过程中,他们共同审视了“森林”,发现物联网是第一大趋势。 去年,他们看到物联网提交量大幅上升,但今年却向前移动和中转。她指出:“虽然去年的呈件往往是”观察性的“,但今年似乎已经进入了成熟度曲线的”解决“阶段,这证明了一批新的提交公司 -
架构师研究会
2018/04/09
6090
2016年RSA会议和物联网
关于物联网(IoT)的5个常见误解
物联网在最近一直是一个流行词。随着即将到来的5G互联网技术的到来,预计到2021年将有225亿个设备连接到互联网,这在很大程度上要归功于它提供的5G网络更快的速度和更低的延迟。如今,有许多现实生活中广泛使用的物联网示例,包括智能安全系统,智能健康监控等等。然而,人们对物联网的误解仍然困扰着许多人,这阻碍了物联网在大众中的应用。
用户2605137
2022/04/12
4510
物联网安全最佳实践方法
虽然新冠肺炎导致多数行业需求下降,但却提高了网络安全行业的需求。在2020年5月21日,某些网络安全供应商,提出了2020年第4季度:“新冠病毒加速了整合、整合和云转型的[安全]趋势。”
用户2605137
2022/04/12
5940
物联网安全最佳实践方法
5件关于物联网安全你必须知道的事情
原文地址:https://dzone.com/articles/5-things-to-know-about-iot-security
Steve Wang
2018/05/10
6870
三个重要的有关物联网安全性和隐私的问题
原文地址:https://internetofthingsagenda.techtarget.com/blog/IoT-Agenda/Three-questions-you-need-to-ask-about-IoT-security-and-privacy
未来守护者
2018/05/02
8120
三个重要的有关物联网安全性和隐私的问题
物联网安全威胁及应对措施
https-_specials-images.forbesimg.com_dam_imageserve_642112401_960x0.jpg-fitscale.jpg
用户4122690
2020/07/19
7340
物联网安全威胁及应对措施
十大业务步骤确保物联网生态系统的安全
在物联网环境中,设备、应用程序和人类通过巨大而又迥然不同的生态系统相互关联,安全是物联网部署中必不可少的一部分,这一点非常重要。
未来守护者
2018/04/26
8330
FreeBuf Insight | 2016上半年国外最具“钱景”的安全创业公司
CB Insights报告统计显示:在过去五年里,已经有1208家网络安全创业公司获得约73亿美元的风险投资。仅2014年,全球安全企业就获得了19亿美元的风险投资,且近年来投资规模和数额不断呈现增长趋势。 这些得到融资的公司和相关技术可以看作是投资者看好的安全行业未来领域的一个缩影。那么这些巨额增长的风险资金究竟都投给了哪些公司呢?哪些细分行业最受追捧? 1.网络安全公司 ForeScout获 7600 万美元融资 2016年1月,互联网安全公司 ForeScout获得7600 万美元的融资,此轮融资
FB客服
2018/02/08
9260
FreeBuf Insight | 2016上半年国外最具“钱景”的安全创业公司
物联网安全领域的“研究点”与“切入点”
物联网漏洞挖掘主要关注两个方面,一个是网络协议的漏洞挖掘,一个是嵌入式操作系统的漏洞挖掘。分别对应网络层和感知层,应用层大多采用云平台,属于云安全的范畴,可应用已有的云安全防护措施。 物联网安全的六个研究点 (1)物联网安全网关 物联网设备缺乏认证和授权标准,有些甚至没有相关设计,对于连接到公网的设备,这将导致可通过公网直接对其进行访问。另外,也很难保证设备的认证和授权实现没有问题,所有设备都进行完备的认证未必现实(设备的功耗等),可考虑额外加一层认证环节,只有认证通过,才能够对其进行访问。结合大数据分
企鹅号小编
2018/02/09
1.3K2
物联网安全领域的“研究点”与“切入点”
确保数字经济的企业
在数字业务中,连接技术和物联网等集成设备是推动公司走向新的商业模式和更好的结果的燃料。数据对这些公司的进攻和防守都起到了作用,使它们能够领先于竞争对手。然而,高价值,大容量的数据和漏洞商的数据剖却得到了黑客前所未有的关注。根据高德纳咨询公司(Gartner)的数据显示,2017年预计将有84亿台联网设备,为2020年之前部署的204亿物联网设备铺平了道路。这一数据的艰巨性是压倒性的,并且(毫无疑问)导致了组织安全策略的复杂性。
lixiao
2018/04/26
5500
为什么API网关不足以保证API安全?API安全之路指向何处
云计算架构的出现使企业重新思考应用程序的扩展方式,从而推动了企业摆脱通过虚拟机等基础设施部署全栈应用程序,而是通过创建由多个互操作服务组成的 API,采用微服务方法。 根据Gartner的预测,到2023年,超过50% 的B2B交易将摆脱传统方式,转而通过实时API进行。 值得警惕的是,虽然 API 的市场规模增长迅速,但是安全威胁也在增长。目前,虽然API 网关为 API 安全提供了各种核心功能,在 API 管理和 API 交付中发挥了重要作用,但是解决 API 的新兴风险需要传统 API 网关范围之外
FB客服
2023/03/30
3960
为什么API网关不足以保证API安全?API安全之路指向何处
20大新兴物联网趋势
在详细介绍物联网趋势之前,我们想谈谈物联网技术本身。您如何看待物联网?物联网(IoT)是指计算设备或其他数字机器相互关联并且可以通过网络在它们之间传输数据的系统(它不需要任何人与计算机或人与人之间的交互)。以下所讨论的物联网趋势将会让你感到惊讶,因为在技术领域将会发生翻天覆地的变化。
用户4122690
2020/07/14
6910
20大新兴物联网趋势
2020年最值得关注的20家物联网初创公司
1)仅仅一年时间,Crunchbase上的物联网初创企业和相关企业就增长了27%,从2019年的26792家增长到现在的34120家。
用户4122690
2020/07/15
2K0
2020年最值得关注的20家物联网初创公司
为什么76%的物联网项目失败以及如何获得成功
为什么76%的物联网项目失败?缺乏跨学科合作是一个核心因素,导致系统性问题,如网络安全漏洞。如果物联网行业不辜负围绕它的大肆宣传,行业领袖需要重新思考他们的方法。
用户4122690
2020/04/26
3810
为什么76%的物联网项目失败以及如何获得成功
边缘计算为物联网安全带来的机遇
物联网在给人们的生活带来便利的同时,也会将个人隐私暴露在网络环境中。隐私保护对物联网的推广具有重要的意义。首先,对个体而言,无论是物联网哪种类型的隐私泄露,都可能涉及用户位置、个人兴趣爱好,甚至社会关系等敏感信息,一旦此类数据被恶意监听或篡改,使用户个人隐私暴露于公众,都可能造成无法挽回的损失。其次,对于物联网业务的发展,隐私保护问题的解决与否直接影响物联网业务的推广和民众是否愿意使用物联网业务,如果能够有效地保护网络通信中数据的安全性,将更好地推动技术的发展,有利于更好地实现数据的价值。
边缘计算
2019/07/03
2.4K0
边缘计算为物联网安全带来的机遇
相关推荐
物联网继续呈增长势头
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档