Linux用户权限基础知识学习
2021/7/24 7:09:28
本文主要是介绍Linux用户权限基础知识学习,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
用户与用户组相关概念
我们装完虚拟机后会创建一个账号,那个账号我们可以理解为用户,也就是操作系统的人,我们叫做用户。Linux是一个多任务多用户的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统,我们的系统账号一定有唯一的用户名,就比如我们的手机号码对应唯一的身份证号码,那么在我们的Linux系统里,每个用户都有唯一的用户名和各自独有的口令。
用户
我们的用户分为三类:超级用户,普通用户,虚拟用户。
在linux系统中,超级用户就是具有最高的管理权限,就好比安卓手机我们经常说的root一下,就是为了获取最高的管理权限,那么在linux系统里,我们的超级用户的代表符号也是root。
我们的普通用户只能对自己目录下的文件进行访问和修改,具有登录到系统的权限,就比如下图,我们装虚拟机时创建了xiaolang这个用户,这个用户就是普通用户,那么我们在root用户的家目录下就无法创建文本,它提醒我们权限不够。
虚拟用户的话其实也就是在linux系统里那些软件所拥有的用户,他们并不能登陆系统,主要的作用只是方便管理系统,如: bin、adm、nobody用户等等。
用户组
用户组其实就是具有相同权限系统的一组用户,就好像是具有特征用户的一个集合,就好比我们日常的学习小组。
linux将用户进行分组管理,更大程度上简化了工作。
用户与用户组的关系:
1.一对一 : 一个用户可以存在一个组中,是组中的唯一成员
2.一对多∶一个用户可以存在多个用户组中,此用户具有多个组的共同权限
3.多对一∶ 多个用户可以存放在一个组中,这些用户具有和组相同的权限
4.多对多∶多个用户可以存在多个组中,即以上3种关系的扩展
参考链接:http://c.biancheng.net/view/3038.html
主要组和附属组:
用户可以同时属于多个组,其中一个主要组,多个附属组
我们可以这样想,主要组可以看作你面前拥有的电脑,那么附属组,相当于你在网吧租的电脑,只要你有钱想租多少都行,也就是说你的用户(test)可以有很多个附属组,所有的这些都归你本人也就是User用户使用。
linux相关文件配置
/etc/passwd存储当前系统中所有用户的信息(密码除外)
我们在终端输入:vim /etc/passwd(若没有安装vim编辑器先安装,安装教程:https://blog.51cto.com/u_14413105/2434434,或者使用cat命令也可)
我们可以发现这一堆用 “ :” 隔开的东西,这里每个小块就代表一个用户的配置信息,基本信息格式都是一样的
我们由上图可以知道,第一个字段:用户名
第二个字段(×) :加密后的密码
第三个字段(数字1):用户ID
第四个字段(数字0):用户组ID
第五个字段(第二个root ) :用户的描述信息,默认用户的全名或空值
第六个字段(/root ) :用户的主目录
第七个字段(/bin/bash ):登录shell,字段/sbin/nologin表示禁止登录
每个字段的意义如下所示:
我们创建的普通用户格式(下图)也可以通过上图分析出来。
在终端输入bin/bash命令,可以发现下图:
/etc/shadow存储当前系统中所有用户的密码信息
普通用户表示形式:
/etc/group存储当前系统中所有用户组信息
第一个字段( root ) :用户组组名
第二个字段(×):加密后的用户组密码
第三个字段(0)∶用户组ID
第四个字段(空值):用户组的成员列表,多个组成员用逗号分隔
/etc/gshadow储存用户组密码的一类信息
第一个字段:用户组名称
第二个字段:加密后的用户组密码,如果是空或 ! 代表没有密码
第三个字段:用户组管理员,空值代表没有组管理员
第四个字段:用户组的成员列表,空值代表无成员列表
上图显示了他们彼此的关系。
用户命令
useradd 用户名:
创建用户,同时创建与用户名同名的组
useradd -g 组名 用户名:
创建用户并指定用户组
useradd 用户名 -s xxx:
创建用户并指定用户登录后所使用的shell,如果值为/sbin/nologin或者/bin/false时,表示禁止该用户登录
usermod -g 用户组 用户名:
修改用户所在的用户组
usermode -l 新用户名 用户名:
修改用户名
userdel 用户名:
删除用户,不删除用户的家目录( - r 参数同时删除家目录)
比如如下图,当我们创建了一个dog的新用户时,系统会给我们整一个叫dog的用户组,里面创建一个叫dog的用户。
修改密码
普通用户直接输入passwd命令修改自己的密码。
普通用户设置密码必须符合密码原则,root用户可以任意设置
passwd 用户名:
修改用户密码(如果是新创建用户即为设置密码)
gpasswd 用户组:
修改/设置用户组密码
用户管理其他命令
su 用户名:
切换用户身份,如果不带参数,则切换为root身份
id 用户名:
显示指定用户信息,包括用户编号、用户名,组编号、组名
whoami:
显示当前登录用户名
下图显示了,创建了一个dog的用户,然后我们又用 userdel -r dog的命令删除此用户
passwd dog我们给dog的用户创建密码,这里系统可能会提示你的密码强度不够之类的提示,我们可以暂时忽略。
我们注销当前登录账号后,就会发现我们的系统又多了一个我们所创建的新的用户。
id命令
whoami:
显示当前登录用户名
linux权限控制
在生产服务器上,如果要让普通用户登录,就要给他分配合理的权限,在服务器上需要为用户严格定义权限等级,否则如果所有人都是root权限,权限过高容易导致出现误操作、盗取账号等风险,所以要进行权限控制。
Linux文件属性说明
使用指令:ls -lih
使用指令 ls -l、ls -lh
文件权限
我们也可以使用数字来表示权限
注意:
1.root账户不受文件权限的读写限制,执行权限受到限制
2.用户获取文件权限的顺序︰先看是否为所有者,如果是,则后面权限不看;再看是否为所属组,如果是,则后面权限不看
3.缺省创建的文件(系统默认的文件,缺省就是默认的意思)不可授予可执行的权限,基于最基本的安全机制,防止病毒等
我们上述的权限对于文件和目录又有着不同的意义:
针对文件而言:
r∶读取文件内容,如cat、more、tail、head等
w∶修改文件内容,如vim、echo等
x∶执行权限,如命令、脚本等,对除二进制程序以外的文件没什么意义
针对目录而言:
r : 查看目录下的文件列表如ls
w : 删除和创建目录下的文件,如 touch、mkdir、rm
x : 可以cd进入目录,能查看目录中文件的详细属性,能访问目录下文件内容(基础权限)
[root@localhost ~]# chmod[选项]模式文件名
选项:-R表示递归
权限字母表示法:[ugoa][±=][rwx]
(u表示user是使用者的意思,g是group是组的意思,o是other是其他用户的意思,a是all是全部的意思。+ 是增加权限的意思,- 是剔除权限的意思,= 是赋予新的权限的意思)
权限数字表示法:[mode=421]
权限数字: r - 4 , w - 2 , x - 1,无权限 - 0
(我们的权限一定是针对于文件所有者,文件所有组,其他用户三者而言,所以会出现下面的各种数字组合,权限的数字之和其实就是所具有的权限,比如数字 7 是4+2+1,也就是说包括了r、w、x三种权限之和)
常用组合: 777 最高权限, 644 普通文件权限, 755 执行权限
举例:
为文件的所有者附加执行权限∶
[root@localhost ~]# chmod u+x test.txt为所有者赋予所有权限
[root@localhost ~]# chmod u=rwx test.txt为所有人(所有者、所属组、其他人)赋予所有权限
[root@localhost ~]# chmod a=rwx test.txt为文件赋予执行权限:rwxr-xr-x
[root@localhost~]# chmod 755 test.txt
改变文件或者目录所有者
[root@localhost ~]# chown用户名文件名#修改文件所有者
[root@localhost ~]# chown所有者:所属组文件名#同时改变所有者和所属组
选项:-R表示递归,处理指定目录及其子目录下的所有文件
举例:
将test文件的所有者修改为icq
[root@localhost ~]# chown icq test
修改test文件的所有者和所有组修改为: icq、icqtest
[root@localhost ~]# chown icq:icqtest test
改变文件或者目录所有组
[root@localhost ~]# chgrp用户组文件或目录#改变文件或目录的所属组
注意:能更改文件或目录的所有者和所有组的用户是root
举例:
将test.txt文件的所属组由root更改为icqtest
[root@localhost ~]#chgrp icqtest test
显示、设置文件的默认权限
[root@localhost ~]# umask [-S]# 显示、设置文件的默认权限
参数说明:-S以rwx形式显示新建文件的默认权限
命令说明:对于windows而言默认权限是从上级目录继承而来的,而linux则是通过umask权限设定的·对于root用户而言,文件的默认权限为644,目录的默认权限为755
对于普通用户而言,文件的默认权限是666,目录的默认权限是755
举例:
查看默认权限
[root@localhost ~]#umask
将新创建的文件权限设置为rwxr-xr-- ,可以用777减去754,得到203
[root@localhost~]#umask 023
补充:
Linux中chmod -R 递归修改文件权限操作 :https://blog.csdn.net/fly_wt/article/details/82986504
Linux umask详解:令新建文件和目录拥有默认权限 : http://c.biancheng.net/view/764.html
“我是个沉默不语的靠着墙壁晒太阳的过客。”
这篇关于Linux用户权限基础知识学习的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-18git仓库有更新,jenkins 自动触发拉代码怎么配置的?-icode9专业技术文章分享
- 2024-12-18Jenkins webhook 方式怎么配置指定的分支?-icode9专业技术文章分享
- 2024-12-13Linux C++项目实战入门教程
- 2024-12-13Linux C++编程项目实战入门教程
- 2024-12-11Linux部署Scrapy教程:新手入门指南
- 2024-12-11怎么将在本地创建的 Maven 仓库迁移到 Linux 服务器上?-icode9专业技术文章分享
- 2024-12-10Linux常用命令
- 2024-12-06谁看谁服! Linux 创始人对于进程和线程的理解是…
- 2024-12-04操作系统教程:新手入门及初级技巧详解
- 2024-12-04操作系统入门:新手必学指南