IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Linux用户与权限管理 -> 正文阅读

[系统运维]Linux用户与权限管理

Linux用户介绍

超级管理员用户(root用户):UID为 0,具有一切权限,可以操作系统中的所有资源。Root用户可以进行基础的文件操作及特殊的系统管理,可以修改系统中的任何文件。

系统用户:UID为1~999;Linux 系统为了避免因某个服务程序出现漏洞而被黑客提权至整台服务
器,默认服务程序会有独立的系统用户负责运行,进而有效控制被破坏围。

普通用户:? UID从1000开始:由管理员创建的用于维护日常工作的用户,可使用Linux的大部分资源,一些特定的权限受到控制。为了保证安全性,用户只对自己创建的目录有写权限,读写权限受到一定控制

用户及其组相关文件

/etc/passwd????? # ? 用户配置文件;存储用户基本信息;所有用户都可以读取此文件的内容

格式:

用户名:密码:UID(用户ID):GID(组ID):描述性信息:主目录:默认Shell

x: 用户密码:并非真正密码。真实密码保存在/etc/shadow文件中

/etc/shadow?????? #?? 存储Linux系统中用户的密码信息,又称影子文件;此文件只有root用户才能访问,其他用户没有权限,以此保证用户密码的安全性。

格式:

用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过期后的宽限时间:账号失效时间:保留字段

/etc/group?????????????? # 存放用户组的信息

格式:

组名:口令:组标识号:组内用户列表

?用户和组相关命令

[root@ggbond ~]# whoami?????????????????????????? #? 查看当前登录用户

?[root@ggbond ~]# id ggbond????????????????? #? 查看用户ID,组ID,群组ID

sudo 以管理员身份执行命令,普通用户默认无法使用sudo命令,需要将用户添加到wheel组当中

切换用户时需要用su -? 命令;普通用户到root用户需要输入密码;然而root用户切到其他用户时候不需输入密码

?[ggbond@ggbond ~]$ su - root???

useradd

创建用户

参数使用

[root@ggbond ~]# useradd -u 66 tt????????????? # 创建一个UID为66的用户tt

[root@ggbond ~]# id tt??????????????????????????????????? # 查看UID信息

[root@ggbond ~]# useradd -g tt gg?????????? # 添加一个用户gg将它放到tt组中

[root@ggbond ~]# id gg????????????????????????????? #查看gg用户

passwd

修改用户密码、过期时间等

参数使用

[root@ggbond ~]# passwd -l gg????????????????????? # 锁定gg用户,禁止其登陆

?[root@ggbond ~]# passwd -uf gg?????????? # 解锁gg用户?? ; 如实没设置密码则解锁需要加f

?[root@ggbond ~]# passwd -e gg?????? # 强制用户gg在下次登录时修改密码

?

userdel??????????

删除用户

参数使用

[root@ggbond ~]# userdel -r gg??????????????????????????????? #? 同时删除用户及其用户家目录

?usermod

修改用户属性

参数使用

[root@ggbond ~]# usermod -g tt ww ? ? ???????? #? 修改ww的基本组为tt组 ?

[root@ggbond ~]# usermod -G ww ww???????? # 为用户ww加一个附加组ww

[root@ggbond ~]# usermod -u 1314 tt???????? # 修改用户tt的uid为1314

chage

修改账号和密码的有效期限

参数使用

[root@ggbond ~]# chage -M 66 tt??????????????????? # 修改密码保持有效的最大天数为66

[root@ggbond ~]# vim /etc/shadow?????????????? #? 进入配置文件查看是否变更时间

[root@ggbond ~]# chage -W 77 tt?????????????????? # 密码到期前77天开始提醒

?groupadd

创建组

参数使用

[root@ggbond ~]# groupadd -g 333 dd???? # 创建dd组且组ID为333

[root@ggbond ~]# grep dd /etc/group????????? # 查看dd组信息

?groupmod

修改用户组属性

参数使用

[root@ggbond ~]# groupmod -g 123 tt????????????????????? #修改用户tt的GID为123

[root@ggbond ~]# groupmod -n tq tt????????? #修改tt的组名为tq

?

?gpasswd

将用户加入到某个组或者从某个组中删除

参数使用

[root@ggbond ~]# gpasswd -a ww tt????????????????? #? 将用户ww加入到tt组

?[root@ggbond ~]# gpasswd -d ww tt????????????????????? # 将用户ww从tt组中移除

?groupdel

删除用户组

参数使用

[root@ggbond ~]# groupdel ww????????????? # 删除ww组

?groups

查看用户属于哪些组

参数使用

[root@ggbond ~]# groups tt???????????????????????? #??? 查看用户tt属于哪些组

Linxu权限管理

权限对于普通文件和目录文件作用是不一样的

权限对普通文本文件的作用

9列权限;

前三列(Owner-拥有者):文件的拥有者对该文件具有的权限

中间三列(group-所属组): 文件所属组对该文件具有的权限

后三列(others-其他人):?? 其他人(既不是拥有者也不是所属组就是其他人)对该文件具有的权限

注意:

一般来说(并不强行规定),owner的权限>group的权限>others的权限,注意一点,文件的owner不一定属于该文件的所属组。

每个文件的权限针对三类对象进行定义

所有者(由u表示)

所属组(由g表示)

其他(由o表示,除所有者和所属组的用户)

所有用户(用a表示)

每个文件针对每类访问者定义了三种主要权限

读:read(r)

写:write(w)

执行:execute(x)

对普通文件来说,r,w,x权限表达的意义如下:

如果一个普通文件有r权限,就表示该文件的内容可以被查看到。
如果一个普通文件有w权限,就表示该文件的内容可以被修改(加内容,删内容,修改内容)
如果一个普通文件有x权限,就表示该文件可以当做脚本一样执行

对目录文件来说,r,w,x权限表达的意义如下:

如果一个目录文件有r权限,就表示该目录下的文件可以被查看属性(查看文件属性的命令ls)
如果一个目录文件有r权限,能否查看这个目录下的普通文件的内容(不一定)
一个普通文件能否查看它的内容和它所在的目录没有任何关系,而是和它自己是否具备r权限有关系。

如果一个目录文件有w权限,就表示可以在该目录下创建或删除或修改文件属性

注意:一个普通文件能否修改它的内容和它自己是否具备w权限有关系,而和它是否在具备w权限的目录没有任何关系。

如果一个目录文件有x权限,就表示可以进入该目录,如果一个目录连x权限都没有,这个目录是无法进入的。

一个目录没有x权限,也可以在该目录下创建删除文件,或者我查看文件属性

如果一个目录没有执行权限,那么即使有r权限或者w权限,也表示该目录是一个问题目录。

chmod

更改文件的权限

参数使用

[root@ggbond ~]# chmod u-w test.txt/????????????????????? # 去掉文件拥有者的写权限(其他所属组和其他人同理)

[root@ggbond ~]# chmod g+w test.txt/??????????????????????? # 为文件所属组加一个写权限

[root@ggbond ~]# chmod g-w,u-r test.txt/????????? # 也可以进行连写

?[root@ggbond ~]# chmod 757 test.txt/????????? #为文件的其他人赋予一个写权限? 我们可以通过对应数字来实现

?chown

更改文件和目录所有者

参数使用

[root@ggbond ~]# chown -R tt test.txt/???????? # 将test.txt文件所有者的用户改为用户tt

?chgrp????????

更改文件和目录的所属组

参数使用

[root@ggbond ~]# chgrp -R tt test.txt/????????????????????????? # 将test的文件所属组改为tt用户

?Linux的三种特殊权限

1、set UID

应用于可执行的普通文件,当一个文件被设置成SUID特殊权限时,任何人一旦执行该文件,都会被临时获得文件拥有人的权限

?在文件拥有者的权限列的执行权限位置,如果有s或者S,则代表该文件被设置了set UID的特殊权限

[root@ggbond ~]# chmod u-s /bin/passwd???????????????? # 去除该文件的SUID特殊权限

?[root@ggbond ~]# chmod u+s /bin/passwd????? # 为其赋予SUID权限

?2、set GID

应用于目录文件,当一个目录被设置SET GID特殊权限时,任何用户在该目录下创建文件,文件的所属组都会变成被设置SET GID那个目录的所属组。

[root@ggbond ~]# chmod g+s ggbond?????????????????????? 为目录ggbond赋予一个SGID的特殊权限

?3、Sticky(粘置位)

对于有写权限的目录设置的特殊权限位,当一个有写权限的目录被设置了sticky特殊权限;那么任何人在该目录下创建的文件就只有自己和root可以删除,该特殊权限位,限制了目录的写权限。

对于目录的写权限来说,该权限有点太大了,sticky就是限制目录写权限的。

[root@ggbond ~]# chmod o-t /tmp/?????????????????????? # 去除sticky特殊权限

?[root@ggbond ~]# chmod o+t /tmp/?????????????????????? # 赋予sticky特殊权限

[root@ggbond ~]# touch /tmp/ggbond2??????? 通过root用户在tmp文件下创建一个ggbond2文本

?[root@ggbond ~]# su - tt
[tt@ggbond ~]$ rm -rf /tmp/ggbond2???????

我们发现无法删除文件

chattr和lsattr

改变属性

查看属性

参数使用

? i:不能更改
? a:不能删除和修改,只能追加

[root@ggbond ~]# chattr +i test.txt/

[root@ggbond ~]# lsattr -d test.txt/

?[root@ggbond ~]# chattr +a test.txt/

[root@ggbond ~]# lsattr -d test.txt/
[root@ggbond ~]# rm -rf test.txt/

改变属性后我们发现无法删除

umask

umask值用于设置用户在创建文件时的默认权限,当我们在系统中创建目录或文件时,目录或文件所具有的默认权限就是由umask值决定的。

对于root用户,系统默认的umask值是0022;对于普通用户,系统默认的umask值是0002。执行

?umask命令可以查看当前用户的umask值。

[root@ggbond ~]# umask???????????????? #? root用户umask默认值

? [gg@ggbond ~]$ umask????????????????????? # 普通用户默认umask值

一般来说umask只看后3位

创建目录的缺省权限是777

创建普通文件的权限是666

正常来说任何用户创建目录后,该目录的权限是rwxrwxrwx
任何用户创建普通文本文件,该文件的权限是rw-rw-rw(因为普通文件加上执行权限是不安全的

umask能帮助用户修改创建文件的默认权限。
创建目录的最终权限,就是目录777减去umask的后3位
创建普通文件的最终权限,就是666减去umask的后3位

root创建的目录权限应该是777-022=755
root创建的普通文件权限应该是666-022=644

普通用户创建的目录权限应该是777-002=775
普通用户创建的文件权限应该是666-002=664

修改umask方法

命令行的修改是临时的只有在当前shell有效
[root@ggbond ~]# umask 0033???????????????? # 临时修改

此时在临时修改的umask值shell窗口我们创建一个目录看看权限

创建目录权限:??????? 777-033=744=rwxr--r--

永久设置umask值:

编辑/etc/profile和/etc/bashrc的内容,然后执行 source /etc/profile /etc/bashrc 重新读取bash配置

权限细化

ACL主要的目的是在提供传统的 owner,group,others 的 read,write,execute 权限之外的细部权限划
分。ACL 可以针对单一使用者,单一文件或目录来进行 r,w,x 的权限规范,对于需要特殊权限的设定非常有帮助。

ACL 主要可以针对下列几个方面来控制权限

使用者 (user):可以针对使用者来设定权限;
群组 (group):针对群组为对象来设定其权限;
默认属性 (mask):还可以针对在该目录下在建立新文件/目录时,规范新数据的默认权限;

ACL设定方法

setfacl:设定某个目录/文件的 ACL
格式:setfacl [-bkRd] [{-m|-x} acl 参数] 目标文件名
选项与参数:
-m :设定后续的 acl 参数给文件使用,不可与 -x 合用;
-x :删除后续的 acl 参数,不可与 -m 合用;
-b :移除『所有的』 ACL 设定参数;
-k :移除『预设的』 ACL 参数,关于所谓的『预设』参数于后续范例中介绍;
-R :递归设定 acl ,即包括子目录都会被设定;
-d :设定『预设 acl 参数』的意思!只对目录有效,在该目录新建的数据会引用此默认值

?[root@ggbond ~]# setfacl -m u:tt:r haha????????? # 设置tt用户对haha文件可读

我们看到权限部分多了+

[root@ggbond ~]# setfacl -m g::r haha?? 表示默认给该文本的所属组用户root一个读权限

注:如果一个文件设定了 ACL 参数后,他的权限部分就会多出一个 + 号,但是此时你看到的权限与实际权限可能就会有点误差,可以通过 getfacl 来查看

getfacl

查看某个目录或者文件的ACL

参数使用

[root@ggbond ~]# getfacl haha??????? #? 查看haha文件的真实权限使用getfacl

前三列之后全部是acl表格内容

表格内容主要有两类,一类是user开头,一类是group开头

user开头:? 该行是针对用户设置的权限

group开头: 该行是针对用户组设置的权限

有效权限的设定,用户或群组所设定的权限必须要存在于 mask 的权限设定范围内才会生效,此即有效权限 [m:权限]

root@ggbond ~]# setfacl -m m:r haha

[root@ggbond ~]# setfacl -m u:tt:rw haha

tt用户的权限与 mask 的集合仅有 r 的存在,所以 tt用户仅具有 r 的权限,并不存在 w 权限,这就是 mask 的功能。我们可以通过 mask 来规定允许的最大权限,这样就可以避免不小心开放某些权限给其他用户或组了。

?使用默认权限设定目录中新建文件的 ACL 权限继承 [d:[u|g]:[user|group]:权限]
例如:创建 haha.txt目录,为该目录设置默认 ACL 后在该目录下新建的目录与文件均会继承该目录的ACL

[root@ggbond ~]# setfacl -m d:u:tt:rx haha.txt/??????

多了一个default开头的行,default开头的所有字段,表示该目录下创建文件会继承ACL权限

mask表示该文件acl的最大权限,在default的acl权限存在情况下,创建文件的acl权限不能超过mask指定的权限

?[root@ggbond ~]# ll -d haha.txt/??????? # 加号即为已经设置了ACL权限

?在已经设置acl权限的目录内创建的文本和目录都已经继承了其属性如下图+号

取消ACL

[root@ggbond ~]# setfacl -b filename?????? # 取消所有acl
[root@ggbond ~]# setfacl -x u:tt haha.txt/??? # 取消haha.txt目录的tt用户的
[root@ggbond ~]# setfacl -k haha.txt/?????????????? # 取消默认ACL

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-08-19 19:40:14  更:2022-08-19 19:40:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 16:42:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码