第四章_用户身份与文件权限

第四章:用户身份与文件权限

Linux和Windows系统最大的区别在于Linux是一个多用户,多任务(Windows也支持多任务)的操作系统

我们最直观的感受是不同的人具有不同的账号都可以登录同一台设备的Linux(类似于Windows上的QQ),而且每个用户都可以使用自己的文件而其他用户不能(除非是root或者被文件所有者赋予权限)以及Linux命令行模式下的各种命令(虽然Windows也有,不过很不常用)

Linux具有很好的稳定性与安全性,在幕后保障Linux系统安全,多账户之前的文件互不侵犯的,就是Linux系统中最基本的用户身份和文件权限

别忘了,Linux中一切皆文件,我们配置用户身份和文件权限本质上还是修改配置文件

本章将详细讲解文件的所有者,所属组以及其他人可对文件进行的读(r,read),写(w,write),执行(x,execute)等操作,以及如何在Linux中添加,删除,修改用户账户信息.

除了读写执行三个一般权限,我们还可以用SUID,SGID,SBIT等特殊权限更加灵活的设置系统权限功能,来弥补读写执行这三个一般权限的不足.

我们还可以使用隐藏权限来为文件添加保护,让黑客最多只能查看日志而无法修改文件.

而稳健的访问控制了列表(Access Control List,ACL)可以进一步让单一用户,用户组对单一文件或目录进行特殊的权限设置,让文件具有满足工作需求的最小权限

本章最后还将讲解su和sudo命令,来让普通用户具有管理员权限,不仅可以满足日常工作需求还可以确保系统安全

本章内容如下:

  • 用户身份和能力
  • 文件权限和归属
  • 文件的特殊权限
  • 文件的隐藏权限
  • 文件访问控制列表
  • su命令和sudo命令

用户身份与能力

Linux系统设计的初衷就是能够满足多个用户同时在线工作的需求,因此Linux系统必须具有很好的安全性

这个安全性不仅仅针对外部的恶意破坏(黑客入侵,恶意病毒,软件等等),还有内部用户之间的破坏(例如用户A无意间删除了用户B的重要文件)

对此Linux系统设计了用户身份和对应的能力来满足内外的安全需求

在安装RHEL 7操作系统时,特别要求创建了root管理员密码.root管理员也是Unix/Linux系操作系统中的用户,只不过是超级用户

它拥有最高的系统权限,可以管理系统功能,任意的修改,增加用户及用户信息,甚至可以删除系统文件(只不过这样系统就没有办法正常运行)

对此,我们使用root用户来管理系统时一定要小心

不过问题往往出现在我们知识的未知领域,所以如果因为害怕出问题而不用root来管理系统导致不熟悉root账户反而会导致我们真正使用root账户时出问题,并且由于我们是学习Linux操作系统,而且是在虚拟机上运行的系统,出了问题就可以直接恢复(几分钟内就可以完成恢复),所以我们直接使用root账户

在Linux系统中,每一个用户都具有一个UID(User ID),类似于身份证,是一个系统中唯一的,用于区别用户的号码

Linux中的用户身份及对应UID如下:

  • 管理员UID为0: 系统的管理员用户
  • 系统用户UID为1~999: Linux系统为了避免某个系统服务程序出现漏洞而导致被黑客入侵,提权至整台服务器,系统服务程序某人会有独立的系统用户负责运行,从而有效地控制被破坏的范围
  • 普通用户为1000及1000后的数字:普通用户是由管理员创建的用于日常工作的用户.

需要注意的是,即使有的系统服务程序没有运行,前1000号有空余的UID,系统也不会为新用户分配前1000号UID

此外类似于学校课堂上会分组,每个小组进行各自统一的任务.Linux也可以将用户分为不同的用户组,每个用户组中的用户对于某些文件具有相同的权限,从而实现协同工作

每当创建一个用户时,系统会为这个用户创建一个只包含该用户的与用户同名的用户组,称为基本用户组

用户也可以被加入其它新建的用户组,称为扩展用户组

一个用户只能有一个基本用户组而能偶有多个扩展用户组

用户身份相关命令

下面将讲些用户身份与能力的相关命令

id命令

查看当前登录用户UID的命令是id,类似于ls命令,可以直接输入,也可以加用户名

id 用户名

例如查看当前登录用户的id

[root@JackWang Desktop]# id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

useradd命令

useradd命令用于创建新的用户,语法如下

useradd [选项] 用户名

我们使用useradd命令添加的用户,默认家目录会被存放在/home目录中,默认的Shell解释器脚本为/bin/bash,而且默认会创建一个与该用户同名的的基本用户组,这些默认设置可以用如下参数修改

参数作用
-d指定用户家目录
-e指定账户到期时间,格式为YYYY-MM-DD
-u指定用户的默认UID
-g制定一个初始的用户及本组
-G指定一个或多个扩展用户组
-N不创建与用户同名的基本用户组
-s指定该用户默认的Shell解释器

下面我们将创建一个用户,并且指定家目录的路径,用户的UID及Shell解释器

我们将用户的家目录指定为/home/linux,用户的Shell解释设置为/sbin/nologin,UID随意

注意,一旦Shell解释器被设置为/sbin/nologin后,该用户将不能登陆

/sbin/nolongin是终端解释器中的一员,但是与Bash解释器有着天壤之别

[root@JackWang Desktop]# useradd -d /home/liunx -u 8888 -s /sbin/nologin linux
[root@JackWang Desktop]# id linux
uid=8888(linux) gid=8888(linux) groups=8888(linux)

groupadd命令

groupadd命令主要用于创建用户组,语法如下

groupadd [选项] 组群名

由于不常用,选项就暂时不写了,想要知道man即可

给出一个创建group_1的组群名

[root@JackWang Desktop]# groupadd group_1

usermode命令

usermode命令用于修改用户的属性,语法为

usermode [选项] 用户名

前面说过,Linux中万物皆文件,所有用户的有关配置都存储在/etc/passwd中,所以可以直接修改这个文件来完成配置用户的属性

也可以使用usermode命令

参数及用法如下:

参数作用
-c填写用户的备注信息
-d -m参数-m与-d连用,可以重新指定用户的家目录并自动把旧的数据转移过去
-e设置账户到期时间,格式为YYYY-MM-DD
-g变更所属用户组
-G变更扩展用户组
-L锁定账户禁止登陆
-U解锁用户允许登陆
-s变更默认终端
-u修改用的UID

下面我们将修改上面创建的linux用户的属性

首先查看其属性

[root@JackWang Desktop]# id linux
uid=8888(linux) gid=8888(linux) groups=8888(linux)

然后将其加入root用户组,再查看其用户属性

[root@JackWang Desktop]# usermod -G root linux
[root@JackWang Desktop]# id linux
uid=8888(linux) gid=8888(linux) groups=8888(linux),0(root)

可以发现用户linux的基本用户组没有改变,但是其多了一个root扩展用户组

然后我们使用-u来修改用户的UID

[root@JackWang Desktop]# id linux
uid=8888(linux) gid=8888(linux) groups=8888(linux),0(root)
[root@JackWang Desktop]# usermod -u 2000 linux
[root@JackWang Desktop]# id linux
uid=2000(linux) gid=8888(linux) groups=8888(linux),0(root)

再说一次,UID可以任意修改为不重复的数字,但是用户基本组和扩展组都必须要是已存在的,否则就会报错

passwd命令

passwd命令用于修改用户的密码,过期时间,认证信息等,语法如下

passwd [选项] 用户名

注意,普通用户只能修改自己的密码,而root用户能够修改所有人的密码,而且root用户修改密码时不需要输入原密码验证

因为保存用户配置的文件属于root用户.那么我们不仅要问为什么别的用户可以修改属于root用户的文件呢?

原因就在后面的文件特殊权限,后面将会讲解.

选项和作用如下:

选项作用
-l锁定用户,禁止登陆
-u解除锁定,允许登陆
–stdin允许通过标准输入修改用户密码,例如 echo “NewPasswd” | pass --stdin jwang
-d使该用户可以使用空密码登陆
-e强制用户在下次登陆时修改密码
-S显示用户的密码是否被锁定,以及用户的密码采用的加密算法

例如

修改自己的密码

Last login: Wed Jul  1 02:49:35 EDT 2020 on pts/0
[jwang@JackWang ~]$ pwd
/home/jwang
[jwang@JackWang Desktop]$ passwd 
Changing password for user jwang.
Changing password for jwang.
(current) UNIX password: 
New password: 
BAD PASSWORD: The password is the same as the old one
New password: 
BAD PASSWORD: The password is a palindrome
New password: 
BAD PASSWORD: The password is a palindrome
passwd: Have exhausted maximum number of retries for service 

修改他人密码(只有root用户才行)

[root@JackWang ~]# passwd jwang 
Changing password for user jwang.
New password: 
BAD PASSWORD: The password is a palindrome
Retype new password: 
passwd: all authentication tokens updated successfully.

然后我们设置刚才创建的linux用户的密码并且修改其登陆模式

首先添加密码

[root@JackWang ~]# passwd linux 
Changing password for user linux.
New password: 
BAD PASSWORD: The password is a palindrome
Retype new password: 
passwd: all authentication tokens updated successfully.

然后修改其登陆模式

[root@JackWang ~]# passwd -u linux 
Unlocking password for user linux.
passwd: Success

注意,如果先修改登陆模式就会报错,这个时候需要用-f参数强制解锁

[root@JackWang ~]# passwd -u linux 
Unlocking password for user linux.
passwd: Warning: unlocked password would be empty.
passwd: Unsafe operation (use -f to force)

接下来我们切换到linux用户来看看他的家目录

[root@JackWang ~]# su - linux 
Last login: Fri Jul  3 03:27:16 EDT 2020 on pts/0
[linux@JackWang ~]$ pwd
/home/liunx
[linux@JackWang ~]$ ls

不用命令行去注销现在的GUI看看

在这里插入图片描述

会发现多了一个linux用户,进入之后发现什么都没有

在这里插入图片描述

userdel命令

userdel命令用于确认用户不会再登录后,用该命令删除用户的所有信息,语法如下

userdel [选项] 用户名

选项及参数说明如下:

参数作用
-f强制删除用户
-r删除用户及用户的家目录

需要注意的是,如果只删除用户而不删除他的家目录的话,那么下次新增用户将名字设置为一样的,并且指定家目录为原目录的话,相当于原用户没有删除

下面我们删除刚刚添加的linux用户

[root@JackWang Desktop]# id linux
uid=2000(linux) gid=8888(linux) groups=8888(linux),0(root)
[root@JackWang Desktop]# userdel linux 
[root@JackWang Desktop]# id linux
id: linux: no such user

文件权限与归属

Linux中一切都是文件,但是由于文件的类型不同,因此Linux系统是用来不同的字符来区分不同类型的文件

常见的文件类型如下:

  • -:普通文件
  • d:目录文件
  • l:链接文件
  • b:块设备文件
  • c:字符设备文件
  • p:管道文件

对于一般文件来说,可读表示能够读取文件的实际内容,可写表示可以编辑,新增,修改,删除文件的实际内容,可执行表示可以运行某个脚本文件;但是对于目录文件来说,可读表示可以读取文件内的文件列表,可写表示可以在目录内新增,删除,重命名文件,可执行表示能够进入该目录

文件的读写执行权限可以简写为rwx,也可以用数字4,2,1表示

例如用户A对文件A具有读写权限,那么可以简写为rw-,数字表示为6(4+2)

由于一个文件都有所属的所有者,所有组,以及非所有组非所有者的其他人,因此一个文件通常具有9个表示单独的权限

通常按照如下顺序排列

再在前面加上用于表示文件类型的字符,就构成了文件的权限属性

例如我们有一个普通文件A,它的所有者具有可读可写可执行权限,所有组具有可读可执行权限,其他人不具有任何权限,那么对应的表示为

-rwxr-x---

另外一个文件B,三种对象都具有可读可写可执行权限,那么表示为

drwxrwxrwx

我们使用ls -l命令查询文件的信息时通常会得到如下的表示

jackwang@jwang:~/桌面$ ls -l cache 
-rw-r--r-- 1 root root 17212420 5月  31 18:44 cache

其中第一列的字符就表示该文件的三种权限,第二列表示文件所有者,第三列表示文件所有组,后面分别是文件大小,创始时间和最后修改时间以及文件名

额外加一句,文件对于所有者是具有全部权限的.

文件的特殊权限

尽管文件对于三种不同的对象分别有rwx三种权限,但是却依旧难以满足我们复杂多变的日常应用.因此就有了SUID,SGID,SBIT三种特殊的权限

这三种特殊权限可以与一般权限同时使用,来弥补一般权限不能实现的功能,下面将分别讲解这三种特殊权限的功能和用法

SUID

SUID是对二进制程序进行设置的特殊权限,可以让二进制文件的执行者暂时拥有所有者的权限(仅对拥有执行权限的二进制程序有效)

更加具体地说,就是程序运行时以拥有者的权限来进行任务

举一个例子,所有用户的密码保存在/etc/shadow文件夹中(保存的是经过加密的密码)

我们首先查看这个文件的权限

root@jwang:/home/jackwang/桌面# ls -l /etc/shadow
-rw-r----- 1 root shadow 1371 5月   9 21:29 /etc/shadow

发现除了root用户以外的所有用户都不具有写的权限

但是当我们使用passwd命令时却可以修改用户自己的密码,新的密码会代替原有密码

也就是说,用户执行的passwd命令具备对/etc/shadow文件进行修改的权限

这就是因为passwd命令被赋予了SUID权限,我们可以使用ls -l命令去查看

[root@linuxprobe Desktop]# ls -l /bin/passwd 
-rwsr-xr-x. 1 root root 27832 Jan 29  2014 /bin/passwd

注意,上面的路径是Ubuntu系统中passwd命令所在的位置,RedHat系统中在/bin/passwd

我们可以发现passwd这个可执行二进制文件所有者的权限不是rwx,而是rws,这就意味着这个文件被赋予了SUID权限,

如果一开始没有x执行权限,那么被赋予特殊权限后将变成大写的S

SGID

SGID主要实现了如下的功能:

  • 让执行者临时拥有属组的权限(对于拥有执行权限的二进制程序进行设置)
  • 在某个目录中穿件的文件自动继承该目录的用户组(只可以对目录进行设置)

SGID的第一种功能是参考SUID设计的,不同是执行程序的用户获取的不再是文件所有者的临时权限,而是获取到文件所属组的权限

举个例子,我们可以使用locate命令来查找文件,使用locate命令实际上实在/var/lib/molocate/mlocate.db数据库中进行查找

我们首先查看这个数据库的权限

-l /var/lib/mlocate/mlocate.db 
-rw-r-----. 1 root slocate 2261568 Jul  3 07:27 /var/lib/mlocate/mlocate.db

可以发现这个数据只有root用户具有读写能力,slocate用户组具有读取的能力

我们普通用户是显然不在slocate用户组中的,但是我们却依旧可以使用locate命令查找文件,我们再看看locate文件的权限

[root@linuxprobe Desktop]# ls -l /usr/bin/locate 
-rwx--s--x. 1 root slocate 40504 Jan 26  2014 /usr/bin/locate

我们发现locate命令属组为slocate,并且具有SGID权限,这也就意味着当任何用户执行locate命令时,都会暂时拥有slocate用户组的权限,进而能够进入数据库进行查找

SGID的第二个功能是在某个目录中创建的文件自动继承该用户组

例如我们用root用户创创建一个文件夹,并且为其设置SGID权限,然后切换至普通用户在其中创建文件

首先切换至/tmp文件夹下,创建一个测试目录,然后使用ls -ald来查看目录的属性

[root@linuxprobe Desktop]# cd /tmp/
[root@linuxprobe tmp]# mkdir testdir
[root@linuxprobe tmp]# ls -ald testdir
drwxr-xr-x. 2 root root 6 Jul  4 01:38 testdir

然后将其设置为所有用户都能够编辑(便于普通用户编辑),并且为其添加SGID权限

[root@linuxprobe tmp]# chmod -Rf 777 testdir/
[root@linuxprobe tmp]# chmod -Rf g+s testdir/
[root@linuxprobe tmp]# ls -ald testdir/
drwxrwsrwx. 2 root root 6 Jul  4 01:38 testdir/

发现该目录已经被设置SGID权限

[root@linuxprobe tmp]# su - jwang 
Last login: Fri Jul  3 06:17:52 EDT 2020 on :0
[jwang@linuxprobe ~]$ cd /tmp/testdir/
[jwang@linuxprobe testdir]$ echo "SGID Testing" >> test.txt
[jwang@linuxprobe testdir]$ ls -al test.txt 
-rw-rw-r--.  1 jwang root   13 Jul  4 01:46 test.txt

可以发现我们用普通用户在该文件夹下创建的文件都具有文件属组的权限

SBIT

SBIT特殊权限用于保护用户的文件,当我们对某个目录设置了SBIT后,该目录中的文件只能够被文件所有者或者目录所有者删除

当目录被设置SBIT权限后,其他人的权限中x执行权限会被替换成t,和前两者一样,让修改前其他人不具备执行权时,将会被修改为T

Linux系统中,/tmp文件夹作为一个共享文件的目录,已经被设置为SBIT特殊权限位,我们可以查看

[root@linuxprobe tmp]# ls -ald /tmp/
drwxrwxrwt. 16 root root 4096 Jul  4 01:55 /tmp/

为了试验SBIT权限以及复习前面的用户相关命令,我们首先切换到一个普通用户,在/tmp文件夹中创建一个文件,然后创建新的用户来尝试删除这个文件

首先切换普通用户创建文件

[root@linuxprobe tmp]# su - jwang 
Last login: Sat Jul  4 01:45:11 EDT 2020 on pts/0
[jwang@linuxprobe ~]$ cd /tmp/
[jwang@linuxprobe tmp]$ touch JwangFile.txt
[jwang@linuxprobe tmp]$ ls -al JwangFile.txt 
-rw-rw-r--. 1 jwang jwang 0 Jul  4 01:56 JwangFile.txt

然后新建一个名为jackwang的用户,为其设置密码后登陆,然后尝试删除创建的JwangFile.txt

[jwang@linuxprobe tmp]$ exit 
logout
[root@linuxprobe tmp]# useradd jackwang
[root@linuxprobe tmp]# echo "666" | passwd jackwang 
Changing password for user jackwang.
New password: BAD PASSWORD: The password is a palindrome
Retype new password: Password change aborted.
New password: Password change aborted.
New password: Password change aborted.
passwd: Have exhausted maximum number of retries for service
[root@linuxprobe tmp]# su - jackwang 
[jackwang@linuxprobe ~]$ pwd
/home/jackwang
[jackwang@linuxprobe ~]$ cd /tmp/
[jackwang@linuxprobe tmp]$ rm JwangFile.txt 
rm: remove write-protected regular empty file ‘JwangFile.txt’? y
rm: cannot remove ‘JwangFile.txt’: Operation not permitted

发现删除失败,也就是SBIT对文件起到了保护作用,避免用户的文件被他人删除(当然root是可以删除任意文件的

然后我们再切换回root用户,删除jackwang这个用户

[root@linuxprobe Desktop]# cat /etc/passwd | grep jackwang
jackwang:x:1001:1001::/home/jackwang:/bin/bash
[root@linuxprobe Desktop]# userdel -rf jackwang 
[root@linuxprobe Desktop]# cat /etc/passwd | grep jackwang

文件权限相关命令

上面讲解了文件的各种权限,下面就将讲解文件权限的的相关命令

chmod命令

chmod命令用于设置文件或者目录权限,语法如下

chmod [参数] 权限 文件或者目录名称

例如我们先创建文件A,然后设置其权限为760

[root@linuxprobe Desktop]# touch FileA.txt
[root@linuxprobe Desktop]# chmod 760 FileA.txt 

如果我们给一个文本文件添加了执行权限,那么系统默认会使用Shell终端解释器来执行文件

换而言之,就是把文本文件当做Shell脚本执行,遇到无法解释的命令就会报错.

chown命令

chmon命令设置的是文件或者目录的所有组,语法如下

chown 所有者:所属组 文件或者目录名称

两个命令都可以加上-R命令,表示对目录内部所有文件进行操作(递归)

文件的隐藏属性

Linux系统中的文件除了一般权限和特殊权限之外,还有一种隐藏权限.

隐藏权限是被隐藏起来的权限,默认情况下不能直接被用户发觉,我们如果给文件赋予禁止删除的隐藏权限,那么即便权限足够也无法删除或者只能追加内容而不能修改或者删除内容.

通过添加隐藏权限,能够在一定程度上阻止非法篡改,因此隐藏权限在一定程度上保护了Linux系统的安全性

chattr命令

chattr命令用于设置文件的隐藏权限,语法为

chatter [参数] 文件

如果需要为文件添加权限,则是+参数,如果要去掉隐藏权限,就是-参数

参数和作用如下:

参数作用
i不能对文件进行修改,如果对目录设置,则不能新建或者删除子文件,只能子文件内容进行修改
a仅允许追加内容而不能删除修改内容(覆盖内容),Append Only
S文件内容在修改后立即同步到硬盘sync
s彻底将文件删除,不可恢复(用0来填充原文件所在硬盘区域)
A不再修改文件或者目录的最后访问时间(atime)
b不再修改文件或者目录的存取时间
D检查压缩文件中的错误
d使用dump命令备份文件时忽略本文件/目录
c默认将文件或者目录进行压缩
u删除该文件之后依旧保留文件在硬盘中的数据,方便以后恢复
t支持文件尾部合并(tail-merging)
X可以直接访问压缩文件中的内容

下面我们创建一个文件,然后将其设置不可修改的内容并立即同步到磁盘,接下来尝试删除

[root@JackWang Desktop]# touch try
[root@JackWang Desktop]# echo "try" >> try 
[root@JackWang Desktop]# cat try
try
[root@JackWang Desktop]# chattr +iS try 
[root@JackWang Desktop]# rm try 
rm: remove regular file ‘try’? y
rm: cannot remove ‘try’: Operation not permitted

即便我们对使用rm命令的强制删除参数-f也不能删除

[root@JackWang Desktop]# rm -f try 
rm: cannot remove ‘try’: Operation not permitted

然后我们去除掉隐藏权限再删除

[root@JackWang Desktop]# rm try 
rm: remove regular file ‘try’? y

发现成功地删除

lsattr命令

lsattr命令用于显示文件的隐藏权限,语法如下

lsattr [参数] 文件

我们依旧使用上面的例子,创建文件之后赋予隐藏权限然后使用lsattr命令来查看

[root@JackWang Desktop]# touch try
[root@JackWang Desktop]# echo "try" >> try 
[root@JackWang Desktop]# cat try 
try
[root@JackWang Desktop]# chattr +i try 
[root@JackWang Desktop]# lsattr try 
----i----------- try

文件访问控制列表(ACL)

我们前面所讲的一般权限,特殊权限和隐藏权限都是针对某一类用户所设定的,但是有的时候我们却想要针对某个特定的用户进行单独的权限设置,这个时候就需要用到文件访问权限列表了

文件访问控制列表是用于控制用户对文件进行访问的列表

我们针对某个文件或者目录设置文件访问控制列表就可以实现对单独的某个用户或者用户组设定操作权限.

如果我们对某个目录设定了ACL,那么目录中的文件会继承目录的ACL,如果我们针对已设置ACL的目录中的文件再设置ACL,文件就不会继承目录的ACL

setfacl命令

setfacl命令用于为文件添加ACL规则,语法如下

setfacl [参数] 文件名称

参数及作用如下:

参数作用
R针对目录设置
m针对普通文件
b删除文件的ACL

下面我们将针对自己创建的文件来设置ACL

[root@JackWang Desktop]# touch try
[root@JackWang Desktop]# ls -l try 
-rw-r--r--. 1 root root 0 Jul  6 02:26 try
[root@JackWang Desktop]# setfacl -m u:jwang:rwx try 
[root@JackWang Desktop]# ls -l try 
-rw-rwxr--+ 1 root root 0 Jul  6 02:26 try

我们可以发现添加了ACL的文件最后从.变成了+

然后我们切换到普通用户来查看root用户创建的文件

getfacl命令

getfacl命令用于查看文件的acl信息

语法如下

getfacl 文件名

例如查看上面创建的文件的acl信息

[root@JackWang Desktop]# getfacl try 
# file: try
# owner: root
# group: root
user::rw-
user:jwang:rwx
group::r--
mask::rwx
other::r--

su与sudo

由于root管理员权限过大,因此如果我们使用root权限进行操作时候发生了失误,那么可能会产生不可逆的系统崩溃

对此我们希望在正常工作时候都以普通用户进行,当需要使用管理员权限的时候,让普通用户以管理员权限来执行

这样不仅能够保证系统安全,也能够让普通用户具有足够的权限来完成工作

su命令

su命令用于切换用户身份,可以在当前用户不退出登录的情况下切换到新的用户

例如从root用户切换到普通用户

[root@JackWang Desktop]# su - jwang 
Last login: Mon Jul  6 02:32:32 EDT 2020 on pts/0
[jwang@JackWang ~]$ id
uid=1000(jwang) gid=1000(jwang) groups=1000(jwang) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

在用户名和su命令之间的-表示切换到新用户身份的同时把环境变量信息也同时变更为新用户信息

sudo命令

我们使用su命令时从普通用户切换到管理员用户时,需要输入管理员用户的密码,这样会增加暴露密码的奉献

而且使用su命令切换用户身份之后,执行的所有命令都是以管理员权限执行的,这样还是有很大的风险

因此我们可以使用sudo命令来以root用户身份来执行命令

语法如下

sudo [参数] 命令

参数和作用:

参数作用
-h列出帮助信息
-l列出当前用户可执行的命令
-u 用户名 / UID以指定用户身份运行
-k清空密码有效时间,每次都要问询密码
-b在后台执行命令
-p更改询问密码的提示语

sudo命令具有以下功能:

  • 限制用户执行指定的命令
  • 记录用户执行的每一条命令
  • 配置文件(/etc/sudoers)提供集中的用户管理,权限和主机信息
  • 验证密码后5分钟内,无需让用户再次验证密码
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值