Linux基本命令(下)——用户、权限管理

一、Linux用户管理

Linux用户管理

  • 用户是Linux系统工作中重要的一环,用户管理包括用户组账号的管理。
  • 账号管理是指账号的新增、删除和修改、账号规划以及权限的授予等问题。
  • 在Linux系统中,不论是由本机或是远程登录系统,每个系统都必须拥有一个账号,并且对于不同的系统资源拥有不同的使用权限

Linux用户权限

  • Linux下有两种用户:超级用户(root)普通用户
  • Linux系统中的root账号通常用于系统的维护和管理,它对Linux操作系统的所有部分具有不受限制的访问权限。在大多数版本的Linux中,都不推荐直接使用root账号登录系统。
  • Linux普通用户在系统下的操作是受限的。
  • 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”

<1> 查看当前用户:whoami

whoami该命令⽤户查看当前系统当前账号的⽤户名。可通过cat /etc/passwd查看系统⽤户信息。

由于系统管理员通常需要使⽤多种身份登录系统,例如通常使⽤普通⽤户登录系统,然后再以su命令切换到root身份对传统进⾏管理。这时候就可以使⽤whoami来查看当前⽤户的身份。再输入exit命令,就可以退出到原来的用户身份了。
在这里插入图片描述

<2> 查看登录用户:who

who命令用于查看当前所有登录系统的用户信息。
常用选项:

选项 含义
-m或am I 只显示运⾏who命令的⽤户名、登录终端和登录时间
-q或–count 只显示⽤户的登录账号和登录⽤户的数量
-u或–heading 显示列标题

在这里插入图片描述

<3> 添加用户账号:useradd

在Linux中添加用户账号可以使用adduser或useradd命令,因为adduser命令是指向useradd命令的一个链接,因此,这两个命令的使用格式完全一样。

useradd命令的使用格式如下:

useradd [参数] 新建用户账号

扫描二维码关注公众号,回复: 12868014 查看本文章
参数 含义
-d 指定⽤户登录系统时的主⽬录,如果不使⽤该参数,系统⾃动在/home⽬录下建⽴与⽤户名同名⽬录为主⽬录
-m ⾃动建⽴⽬录
-g 指定组名称

在这里插入图片描述

<4> 设置用户密码:passwd

在Unix/Linux中,超级⽤户可以使⽤passwd命令为普通⽤户设置或修改⽤户⼝令。⽤户也可以直接使⽤该命令来修改⾃⼰的⼝令,⽽⽆需在命令后⾯使⽤⽤户名。
在这里插入图片描述

<5> 删除用户:userdel

命令 含义
userdel abc(⽤户名) 删除abc⽤户,但不会⾃动删除⽤户的主⽬录
userdel -r abc(⽤户名) 删除⽤户,同时删除⽤户的主⽬录

在这里插入图片描述

<6> 添加、删除组账号:groupadd、groupdel

groupadd 新建组账号 groupdel 组账号 cat /etc/group 查看⽤户组
在这里插入图片描述

<7> 修改用户所在组:usermod

在这里插入图片描述

<8> 查看用户在哪些组:groups

在这里插入图片描述

二、Linux权限管理

2.1 文件访问者的分类(人)

文件和文件目录的所有者:u—User
文件和文件目录的所有者所在的组的用户:g—Group
其它用户:o—Others
02.文件类型和访问权限(事物属性)

2.2 文件的类型和访问权限

在这里插入图片描述
在这里插入图片描述

  • 文件类型

d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件

  • 基本权限

读(r/4): Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
写(w/2): Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
执行(x/1): execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
“—”表示不具有该项权限

2.3 文件权限值的表示方法

  • 字符表示方法
Linux表示 说明
r- - 只读
-w- 仅可写
- -x 仅可执行
rw- 可读可写
r-x 可读可执行
-wx 可写可执行
rwx 可读可写可执行
- - - 无权限
  • 8进制数值表示方法
权限符号 八进制 二进制
r- - 4 100
-w- 2 010
- -x 1 001
rw- 6 110
r-x 5 101
-wx 3 011
rwx 7 111
- - - 0 000

2.4 文件访问权限的相关设置方法与命令

<1> 修改文件权限:chmod

chmod 修改文件权限的方法有两种: 字母法与数字法。

  • 字母法: chmod u/g/o/a +/-/=rwx 文件名
[ u/g/o/a ] 含义
u user 表示该⽂件的所有者
g group 表示与该⽂件的所有者属于同⼀组( group )者, 即⽤户组
o other 表示其他以外的⼈
a all 表示这三者皆是
[ ±= ] 含义
+ 增加权限
- 撤销权限
= 设定权限
rwx 含义
r read 表示可读取, 对于⼀个目录, 如果没有r权限, 那么就意味着不能通过ls查看这个⽬录的内容。
w write 表示可写入, 对于⼀个目录, 如果没有w权限, 那么就意味着不能在目录下创建新的文件。
x excute 表示可执行, 对于⼀个目录, 如果没有x权限, 那么就意味着不能通过cd进⼊这个目录。

执行该命令时,我们可以仅对用户或用户组等进行权限操作,如下所示:
在这里插入图片描述
也可以同时对用户、用户组等进行权限操作
在这里插入图片描述

  • 数字法:rwx也可以用2.3节中8进制数值表示法
    如执⾏: chmod u=rwx,g=rx,o=r filename 就等同于: chmod u=7,g=5,o=4 filename
    chmod 754 filename
    在这里插入图片描述

<2> 修改文件的拥有者:chown

在这里插入图片描述

<3> 修改文件的所属组:chgrp

在这里插入图片描述

<4> 查看或修改文件掩码: umask

Linux下对于新建的文件和目录的默认权限如下

  • 新建文件默认权限=0666
  • 新建目录默认权限=0777

但实际上我们所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响
这里假设默认权限是default,则实际创建的出来的文件权限是:

default & ~umask

举个栗子:假设我们新建文件test1.txt,则默认权限为default为666,其二进制序列为110 110 110,那么umask为02,二进制序列为000 000 010,取反后为111 111 101。按照公式
    110   110   110 ( d e f a u l t ) &     111   111   101 ( ∼ u m a s k )     110   110   100                  \ \ \ 110 \ 110 \ 110(default) \\ \& \ \ \ 111 \ 111 \ 101(\sim umask) \\ \ \ \ 110 \ 110 \ 100 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \    110 110 110(default)&   111 111 101(umask)   110 110 100                
那么文件test1.txt的权限就是rw- rw- --w,下图证明了上述栗子
在这里插入图片描述
注意:
这里会有一个误区:umask的作用是将现有的权限减去umask的权限,产生最终的权限,如果不能理解可以按照上述栗子的操作。切忌不能与减法混淆,即用666-002=664 ,这种做法是错误的!

2.5 粘滞位:t

为什么有粘滞位?

假设有这样一个目录dir对于所有用户都有rwx权限,用户就可以随意操作目录dir下的文件了,但是问题来了如果目录dir下有一个文件file.c,文件的权限如下
在这里插入图片描述
file.c文件对于普通用户来说只能读取,而不能写和执行,也就意味着不能对file.c进行修改和删除,但事实确不是这样的
在这里插入图片描述
如图所示,我虽然对你的文件只具备读权限,但是我可以删除你的文件,这也就意味着只要用户具有目录的写权限,就可以随意删除目录中的文件而不必担心文件的任何权限和拥有者。对于这种问题是不科学的,Linux操作系统引入了粘滞位的概念

粘滞位的使用

chmod +t 目录
在这里插入图片描述
增加了粘滞位后,我们就不可以删除别人的文件了
在这里插入图片描述
当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由

  • 超级管理员删除
  • 该目录的所有者删除
  • 该文件的所有者删除

三、关于权限的总结

  • 目录的可执行权限是表示你可否在目录下执行命令。
  • 如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
  • 而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限。
  • 所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。

猜你喜欢

转载自blog.csdn.net/qq_40076022/article/details/113808291