Linux用户权限管理与文件权限设定

news2024/12/24 21:13:42

一、相关概念

1、用户与角色分类

超级用户:拥有对系统的最高管理权限,默认是root用户。

普通用户:只能对自己目录下的文件进行访问和修改,具有登录系统的权限,例如www用户、ftp用户等。

虚拟用户:也叫“伪”用户,这类用户最大的特点是不能登录系统,它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。例如系统默认的bin、adm、nobody用户等。

2、用户和组以及关系

一对一、一对多、多对一、多对多

3、用户和组相关的配置文件

/etc/passwd文件:系统用户配置文件,是用户管理中最重要的一个文件。这个文件记录了Linux系统中每个用户的一些基本属性,并且对所有用户可读。

/etc/shadow文件:用户影子文件,由于/etc/passwd文件是所有用户都可读的,这样就导致了用户的密码容易出现泄露,因此,linux将用户的密码信息从/etc/passwd中分离出来,单独的放到了一个文件中,这个文件就是/etc/shadow,该文件只有root用户拥有读权限

/etc/group文件:用户组配置文件,用户组的所有信息都存放在此文件中。

/etc/login.defs文件:用来定义创建一个用户时的默认设置,比如指定用户的UID和GID的范围,用户的过期时间、是否需要创建用户主目录等等。

/etc/default/useradd文件:定义了新建用户的一些默认属性,比如用户的主目录、使用的shell等等,通过更改此文件,可以改变创建新用户的默认属性值。

/etc/skel文件:目录定义了新建用户在主目录下默认的配置文件,更改/etc/skel目录下的内容就可以改变新建用户默认主目录的配置文件信息。

二、相关命令 

1、添加、切换、删除用户组命令

(1)groupadd命令 用来新建一个用户组。语法格式为:

groupadd -g gid     #groupname -g:指定新建用户组的GID号,该GID号必须唯一,不能和其它用户组的GID号重复。

(2)newgrp命令 如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限,newgrp主要用于在多个用户组之间进行切换

(3)groupdel命令 表示删除用户组,语法格式为:

groupdel [群组名称]     #当需要从系统上删除用户组时,可用groupdel指令来完成这项工作。如果该用户组中仍包括某些用户,则必须先删除这些用户后,然后才能删除用户组。

2、添加、修改和删除用户命令 

(1)useradd的使用语法:

useradd  [-u uid ] [-g group] [-G group,...]  [-d home] [-s shell] name

各个选项具体含义如下:

-u uid:即用户标识号,此标识号必须唯一。

-g group:指定新建用户登录时所属的默认组,或者叫主组。此群组必须已经存在。

-G group:指定新建用户的附加组,此群组必须已经存在。附加组是相对与主组而言的,当一个用户同时是多个组中的成员时,登录时的默认组成为主组,而其它组称为附加组。

-d home:指定新建用户的默认主目录,如果不指定,系统会在/etc/default/useradd文件指定的目录下创建用户主目录。

-s shell:指定新建用户使用的默认shell,如果不指定,系统以/etc/default/useradd文件中定义的shell作为新建用户的默认shell。

(2)usermod用来修改用户的账户属性信息,使用语法如下:

usermod  [-u uid] [-g group] [-G group,...] [-d 主目录 ] [-s shell] [-L|-U] Name

各个选项具体含义如下:

-u uid:指定用户新的UID值,此值必须为唯一的ID值,除非用-o选项。

-g group:修改用户所属的组名为新的用户组名,此用户组名必须已经存在。

-G group:修改用户所属的附加组。

-d 主目录:修改用户登录时的主目录。

-s shell:修改用户登录系统后默认使用的shell

-L:锁定用户密码,使密码无效。

-U:解除密码锁定。 userdel的使用语法 Userdel用来删除一个用户,若指定“-r”参数不但删除用户,同时删除用户的主目录以及目录下的所有文件。语法格式为: userdel [-r][用户帐号]

3、chown改变属主和属组     

chown就是change owner的意思,主要作用就是改变文件或者目录的所有者,而所有者包含用户和用户组,其实chown就是对文件所属的用户和用户组进行的一系列设置。 chown使用的一般语法为:

chown [-R] 用户名称 文件或目录

chown [-R] 用户名称:用户组组名称 文件或目录

参数说明: -R : 进行递归式的权限更改,也就是将目录下的所有文件、子目录都更新成为指定的用户组权限。常常用于变更某一目录的情况。 

4、chmod改变访问权限

chmod用于改变文件或目录的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的字符设定法;另一种是包含数字的数字设定法。

(1)字符设定法 使用语法为:

chmod [who] [+ | - | =] [mode] 文件名

who表示操作对象,可以是下面字母中的任何一个或者它们的组合。

u 表示“用户(user)”,即文件或目录的所有者。

g 表示“用户组(group)”,即文件或目录所属的用户组。

o 表示“其他(others)用户”。

a 表示“所有(all)用户”。它是系统默认值。

操作符号含义如下: “+”表示添加某个权限。“-”表示取消某个权限。“=”表示赋予给定的权限,同时取消文档以前的所有权限。

mode表示可以执行的权限,可以是“r“(只读)、“w”(可写)和“x”(可执行),以及它们的组合。

(2)数字设定法 使用语法为:

chmod [属主权限的数字组合] [用户组权限的数字组合] [其它用户权限的数字组合]  文件名

0表示没有任何权限 1表示有可执行权限,与上面字符表示法中的“x”有相同的含义。

2表示有可写权限,与“w”对应

4表示有可读权限,对应与“r“

三、 Linux用户与环境变量

当一个用户创建完毕,与之相关的环境变量也就创建了起来。

1、常见系统环境变量

PATH、PWD、BASH、LANG、USER、HOSTNAME、HOME、SHELL

我们常用  echo $[环境变量名]  来查看对应的环境变量信息,从下面的图我们也可以看出:PATH作用是指定命令的搜索路径;PWD是用来查看当前目录;SHELL是看当前Shell;HOSTNAME是查看主机名;LANG是默认语言。

2、定义环境变量

ENVIRON-VARIABLE=value      #环境变量赋值

export ENVIRON-VARIABLE      #声明环境变量

注意:环境变量可以在命令行中设置,但用户注销时这些值将丢失,环境变量均为大写,要让系统识别必须用export命令导出。

3、清除环境变量

unset 环境变量名

4、显示环境变量内容

env命令可以列出已经定义的环境变量

echo命令:    echo $环境变量名

5、环境变量与配置文件

/etc/profile属于全局环境变量配置文件

.bash_profile和.bashrc属于用户环境变量文件,此两个文件位于用户根目录下。     

当某Linux用户登录时,Shell会首先执行系统默认的配置文件/etc/profile,然后会自动执行.bash_profile文件,如果.bash_profile文件不存在,接着读取~/.bashrc文件。

Bash的初始化环境变量文件顺序:

环境变量配置文件使用原则:

跟用户相关的环境变量配置均配置到用户目录下面的配置文件中(.bash_profile、.bashrc),需要对全局生效的环境变量配置,都配置到/etc/profile文件中。 

6、演示

(1)怎么在现有路径上去添加一个新的路径,我们配置一个用户的环境变量,vi 进入.bash_profile文件,将定义的环境变量写入其中,保存退出。

(2) 配置文件环境变量文件后,执行source命令马上生效。这样我们就可以在任意路径下去执行JAVA_HOME/bin路径下对应的二进制文件了。

四、sudo命令的使用

1 、用途

类似 su 命令切换用户,但sudo的使用相比su命令更加灵活,试问在一个多人办公的情况下,如果每个人都需要使用root用户去执行管理员操作,那密码还有存在的必要么?在用户权限维护方面sudo使用会更多。

2、sudo相关权限文件配置

1、sudo命令的配置文件为/etc/sudoers,编辑这个文件有个单独的命令visudo(这个文件最好不要使用vim命令来打开),因为一旦语法写错会造成严重的后果,这个工具会替你检查你写的语法,这个文件的语法遵循以下格式:

who where whom command(指定哪个用户,在什么地方,以哪个用户的身份来执行,去执行什么命令)

2、/etc/sudoers文件默认给 root 用户定义了一条规则:

root    ALL=(ALL)       ALL     #root用户可以在任何主机以任何人的身份来执行所有的命令。

root表示 root 用户。

ALL表示从任何的主机上都可以执行,也可以这样 192.168.100.0/24。

(ALL)是以谁的身份来执行,ALL就代表root可以任何人的身份来执行命令。

ALL 表示任何命令。 

3、一些例子:

iivey   192.168.10.0/24=(root) /usr/sbin/useradd

上面的配置只允许iivey在 192.168.10.0/24 网段上连接主机并且以root权限执行useradd 命令。

www  ALL=(root)      NOPASSWD:ALL,!/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root,!/bin/su

允许www用户执行所有命令,除了passwd后加任意字符、passwd root和su这三类操作。

%wheel  ALL=(ALL)       ALL

centos7默认已经开放组%wheel这一行,之前的centos版本没有启用。(批量设定权限,wheel是自带的一个组)。

%wheel        ALL=(ALL)       NOPASSWD: ALL  NOPASSWD: ALL

不输入密码执行任何命令 。

3、演示

(1)我们在root 用户下修改用户huoserver的权限,用 sudo 命令。

(2) 我们给huoserver用户在任何地方都赋予了root用户的任何权限。

(3)接下来我们切到huoserver用户下,在根目录下执行创建目录操作,发现权限不够;但是我们使用sudo命令,并且输入用户的密码,便可以成功执行在root用户下才可以执行的操作。

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1638793.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机408备考-数据结构重要知识点-数据结构的定义

请关注一下B站账号:谭同学很nice!后期更新发布在这个账号上。。【计算机408备考-数据结构重要知识点-数据结构的定义-哔哩哔哩】https://b23.tv/x7shjNf 数据是信息的载体。数据元素是数据的基本单位。一个数据元素可由若干数据项组成,数据项…

cnpm安装

npm install -g cnpm --registryhttps://registry.npmmirror.com # 注册模块镜像 npm set registry https://registry.npmmirror.com // node-gyp 编译依赖的 node 源码镜像 npm set disturl https://npmmirror.com/dist // 清空缓存 npm cache clean --force // 安装c…

【React】Sigma.js框架网络图-入门篇(2)

通过《【React】Sigma.js框架网络图-入门篇》有了基本认识 由于上一篇直接给出了基本代码示例,可能看着比较复杂也不知道是啥意思; 今天从理论入手重新认识下! 一、基本认识 首先,我们先了解下基础术语: 图(Graph)&…

TCP/IP网络模型各层简介

第一张图是OSI参考模型,由国际标准组织ISO定义的理论模型。 第二张则是TCP/IP协议的网络模型,实际互联网所采用的网络协议族的基础架构,工作中也一般都是接触这个。 第三章是学习时一般使用的网络模型,尤其是《计算机网络-自顶向…

在龙梦迷你电脑福珑2.0上试了三款操作系统

最近抽时间在龙梦迷你电脑上试了三款操作系统。 这几款操作系统以前都下载过。试用速度会快很多。 试用第一款:统信操作系统龙芯版。能正常安装。安装好了以后,下载了一个软件:龙芯游览器。修改该游览器的界面,不能实现所有页面…

《数字图像处理-OpenCV/Python》第14章:边缘检测与图像轮廓

《数字图像处理-OpenCV/Python》第14章:边缘检测与图像轮廓 本书京东 优惠购书链接 https://item.jd.com/14098452.html 本书CSDN 独家连载专栏 https://blog.csdn.net/youcans/category_12418787.html 第 14 章 边缘检测与图像轮廓 边缘是图像的基本特征。边缘检测…

vue3中使用animate.css

在vue3中使用animate.css 20240428_093614 引入:npm install animate.css --save main.js注册:import ‘animate.css/animate.min.css’ 注意:import ‘animate.css’ 不适合在vue3项目 使用:class“animate__animated 动画名称”…

FreeRTOS-系统时钟节拍和时间管理

一、前言 任何操作系统都需要提供一个时钟节拍,以供系统处理诸如延时,超时等与时间相关的事件。时钟节拍是特定的周期性中断, 这个中断可以看做是系统心跳。 中断之间的时间间隔取决于不同的应用,一般是 1ms – 100ms。时钟的节拍…

Mac 安装John the Ripper 破解rar(zip)压缩文件

注:仅以此篇记录我满足好奇心所逝去的十几个小时。(自娱自乐) 1、首先利用 brewhome 包管理工具 安装john the ripper : brew install john-jumbo 如果没有安装brewhome 利用如下命令安装: /bin/zsh -c "$(c…

《与 Apollo 共创生态——Apollo7周年大会干货分享》

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” 文章目录 阿波罗X企业自动驾驶解决方案自动驾驶技术提升与挑战自动驾驶系统功能与性能的详细解析<td alig…

【网络基础】深入理解TCP协议:协议段、可靠性、各种机制

文章目录 1. TCP协议段格式1.1. 如何解包 / 向上交付1.1.1. 交付1.1.2. 解包 1.2. 如何理解可靠性1.2.1. 确认应答机制&#xff08;ACK&#xff09;1.2.2. 序号 与 确认序号 2. TCP做到全双工的原因2.1. 16位窗口大小2.2. 6个标记位 3. 如何理解连接3.1 连接管理机制3.1.1. 三次…

Angular基础-搭建Angular运行环境

这篇文章介绍了在Angular项目中进行开发环境搭建的关键步骤。包括node.js安装和配置、安装Angular CLI工具、安装angular-router、创建Angular项目等步骤。这篇文章为读者提供了清晰的指南&#xff0c;帮助他们快速搭建Angular开发环境&#xff0c;为后续的项目开发奠定基础。 …

【系统架构师】-选择题(九)

1、电子政务没有政府对客户(Government To Customer) 四种主要应用模式&#xff1a; G2B&#xff1a;政府对企业 Government to Business G2C&#xff1a;政府对公民 Government to Citizen G2E&#xff1a;政府对公务员 Government to Employee G2G&#xff1a;政府对政府 Go…

商务谈判模拟口才训练方案(3篇)

商务谈判模拟口才训练方案&#xff08;3篇&#xff09; 商务谈判模拟口才训练方案&#xff08;一&#xff09; 一、训练目标 本训练方案旨在提高参与者在商务谈判中的口才表达能力&#xff0c;包括清晰表达、有效倾听、应对挑战和构建信任等能力。 二、训练内容 基础口才训练…

YOLOv8主要命令讲解

YOLOv8主要有三个常用命令&#xff0c;分别是&#xff1a;train&#xff08;训练&#xff09;、predict&#xff08;预测&#xff09;、export&#xff08;转化模型格式&#xff09;&#xff0c;下面我将展开讲讲三个常用命令的常用参数与具体使用方法。 一、训练 通过自己标…

“Transformer挑战者”-Mamba之最全详解图解

-------------------------------------------------------------------------------------------------------------------- 1.AIGC未来发展前景 未完持续… 1.1 人工智能相关科研重要性 拥有一篇人工智能科研论文及专利软著竞赛是保研考研留学深造以及找工作的关键门票&a…

Pandas入门篇(二)-------Dataframe篇5(进阶)(Dataframe的时间序列Dataframe最终篇!!)(机器学习前置技术栈)

目录 概述一、pandas的日期类型&#xff08;一&#xff09;datetime64类型的特点&#xff08;二&#xff09; 时间序列的创建1.从字符串创建datetime64类型2. 整数&#xff08;Unix时间戳&#xff09;创建datetime64类型3.导入数据时直接转换 &#xff08;三&#xff09;dateti…

XY_RE复现(五)

一&#xff0c;给阿姨倒一杯卡布奇诺 是一道魔改TEA加密 给出了一些初始化&#xff0c;然后输入的flag拆分&#xff0c;两两一组&#xff0c;通过for循环放入encrypt加密函数 #include <stdio.h> #define uint32_t unsigned intvoid decrypt(uint32_t *v, uint32_t *ke…

笨蛋学C++之 C++连接数据库

笨蛋学C 之 VS2019使用C连接数据库 创建数据库SQL语句VS2019选择空项目&#xff0c;点击下一步创建输入项目名称&#xff0c;点击创建创建成功点击新建项创建源文件因为mysql是64位&#xff0c;此时的c项目是86位&#xff0c;所以这里需要将项目修改为x64位点击项目 -> 0501…

linux 单机安装consul

sudo yum install -y yum-utils && sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo && sudo yum -y install consul#添加consul配置文件 nano /etc/consul.d/server.json {"server": true,"boots…