前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >09-3 更改身份

09-3 更改身份

作者头像
见贤思齊
发布2020-08-05 12:22:22
4340
发布2020-08-05 12:22:22
举报
文章被收录于专栏:初见Linux初见Linux

三、更改身份

在很多时候,会发现如果可以拥有另一个用户的身份是很有必要的。 我们经常会需要得到超级用户的特权来执行一些管理任务,但也可以变成另一个普通用户来执行这些任务,就好像是在测试一个账户。有3 种方法用来转换身份,具体如下:

0.转换身份的 3 种方法

  • 注销系统并以其它用户的身份重新登录系统。
  • 使用 su 命令。
  • 使用 sudo 命令。

第 1 种方法:很常见,大家也都会使用,并且它不如其它两种方法来得方便,所以跳过。 第 2 种方法:在 shell 会话状态下,使用 su 命令将允许你假定为另一个用户的身份,既可以以这个用户的ID来启动一个新的 shell 会话,也可以以这个用户的身份来发布一个命令。 第 3 种方法:使用 sudo 命令将允许管理者创建一个称为 /etc/sudoer 的配置文件,并且定义一些特定的命令,这些命令只有 被赋予为假定身份的特定用户 才允许执行

(1)如何选择?

选择使用哪个命令在很大程度上取决于使用的 Linux 发行版本。有些发行版本可能对两个命令都支持,但是它的系统配置可能只是偏向于其中一个

1.su-以其它用户和组ID的身份来运行shell

su 命令用来以另一个用户的身份来启动 shell

(1)语法格式

su [选项] [user]

su -c 'command'

代码语言:javascript
复制
 功能: 以另一个用户的身份来启动 shell。

 参数:
 ① user : 表示变更为指定 user 用户。
 (也可不指定: 若没有指定用户,那么默认假定为超级用户)

 选项:
 ① -f , --fast:不必读启动文件(如 csh.cshrc 等),仅用于csh或tcsh两种Shell。
​
 ② -l ,--login:加了这个参数之后,就好像是重新登陆一样,大部分环境变量(例如HOME、SHELL和USER等)都是以
该使用者(USER)为主,并且工作目录也会改变。如果没有指定USER,缺省情况是root(超级用户)。
(注意:-l 可以缩写为 - )
​
 ③ -m,-p ,–preserve-environment:执行su时不改变环境变数。
​
 ④ -c,--command: 变更账号为USER的使用者,并执行指令(command)后再**变回原来使用者**。
​
 ⑤ --help:显示说明文件.

 ⑥ --version:显示版本资讯.

 返回值:
'''
① 示例
Ⅰ. -l选项

如果包含“ -l ”选项,那么得到的 shell 会话界面将是 指定用户的登录 shell 界面。 这意味着,该指定用户的运行环境将被加载,而且其工作目录也将更改为该指定用户的主目录。 若是没有指定用户那么默认假定为超级用户。 需要注意的是,-l 可以缩写为 - ,而且这一形式经常被使用。

以下操作是以超级用户的身份来启动 shell:

代码语言:javascript
复制
su -

可以看到,在输入 su 命令后,系统会提示输入该超级用户的密码。 如果密码输入正确,那么将会出现新的 shell 提示符,该提示符表示该 shell 将拥有超级用户的特权(此时,提示符的末尾字符是#,而不是$),而且当前的工作目录现在也是用于超级用户的主目录(通常情况下是 /root)。 一旦进入这个新的 shell 环境,就可以 以超级用户的身份来执行命令。 在使用结束时,输入 exit将会返回到之前的 shell 环境

Ⅱ. 使用 su 执行单个命令

使用 su 命令执行单个命令,而不需要开启一个新的交互式命令界面。 语法格式:su -c 'command' 。 使用这种格式时,单个命令行将被传递到一个新的 shell 环境下进行执行。 这里需要单引号把命令行引起来,这一点非常重要。这是因为: 该命令扩展并不希望在当前 shell 环境下执行,而是希望在新的 shell 环境下执行

代码语言:javascript
复制
su -c 'ls -l /root/*'

2.sudo-以另一个用户的身份执行命令

sudo命令在很多方面都类似于 su 命令,但是它还有一些重要的功能。 管理者可以通过配置 sudo 命令,使系统以一种可控的方式,允许一个普通用户以一个不同的用户身份(通常是超级用户)执行命令。简单的说,sudo 是一种权限管理机制,管理员可以授权于一些普通用户去执行一些 超级用户(root) 执行的操作,而不需要知道 root 的密码。

(1)语法格式

sudo [选项][-u <用户>][指令] 或 sudo [选项(klv 可选)]

代码语言:javascript
复制
 功能: 授予 普通用户 执行一些 超级用户 执行的操作。

 参数:
 ① 

 选项:
 -b  在后台执行指令。

 -h  显示帮助。

 -H  将HOME环境变量设为新身份的HOME环境变量。

 -k  结束密码的有效期限,也就是下次再执行sudo时便需要输入密码。

 -l  列出目前用户可执行与无法执行的指令。

 -p  改变询问密码的提示符号。

 -s  执行指定的shell。

 -u  <用户>  以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份。

 -v  延长密码有效期限5分钟。

 -V  显示版本信息。

 -S  从标准输入流替代终端来获取密码

 返回值:
​
'''
① 示例

系统默认创建了一个名为 sudo 的组。只要把用户加入这个组,用户就具有了 sudo 的权限。 至于如何把用户加入 sudo 组,您可以直接编辑 /etc/group 文件,当然您得使用一个有 sudo 权限的用户来干这件事

代码语言:javascript
复制
sudo /etc/group
(2)sudo 与 su 命令的区别

  • 在特定情况下,用户可能被限制为只能执行一条或几条特定的命令而对其它命令没有执行权限
  • 使用 sudo 命令并不需要输入超级用户的密码。使用sudo 命令时,用户只需要输入自己的密码来进行认证
  • sudo 命令并不需要启动一个新的 shell 环境,而且也不需要加载另一个用户的运行环境,这就意味着,使用 sudo 命令的时候并不需要用单引号把命令行引起来
示例

比如说,配置 sudo 命令来允许普通用户运行一个虚构的备份程序(backup_script),这个程序需要超级用户权限。

代码语言:javascript
复制
sudo backup_script

在输入 sudo 命令后,系统将提示输入自己的密码(注意:不是超级用户的密码),而且一旦认证通过,指定的命令都将被执行。

(3)sudo命令不同选项不同结果

注意:可以通过指定不同的选项来改变命令执行的效果

① -l 选项

可以使用 -l 选项,来知晓 sudo 命令可以授予哪些权限

代码语言:javascript
复制
sudo -l
sudo命令-l选项.png
sudo命令-l选项.png

3.chown-更改文件的所有者和所属群组

更改文件或目录的所有者和所属群组。 使用这个命令需要超级用户权限

(1)语法格式

chown [选项]... [ower] [:[group]] file...

chown 更改的是文件所有者还是所属群组,或二者都更改,取决于该命令的第一个参数。

代码语言:javascript
复制
 功能: 更改文件或目录的所有者和所属群组.

 参数:
 ① ower: 选择它将会更改文件所有者

 ② :[group] : (注意:前面的冒号必须写)选择它将会更改文件所属群组。

 ③ file: 更改的文件或目录

 选项:
 -c 显示更改的部分的信息
​
      -f 忽略错误信息
​
      -h 修复符号链接
​
      -R 处理指定目录以及其子目录下的所有文件
​
      -v 显示详细的处理信息
​
      -deference 作用于符号链接的指向,而不是链接文件本身

 返回值:
'''
① 示例
Ⅰ.命令参数实例

参数

结果

bob

把文件所有者从当前所有者更改为用户bob。

bob:users

把文件所有者从当前所有者更改为用户bob,并把文件所属群组更改为 users 组。

:admins

把文件所属群组更改为 admins 组,文件所有者不变。

bob:

把文件所有者从当前所有者更改为用户bob,并把文件所属群组更改为用户 bob 登录系统时所属的组。

还有需要注意的是,在大多数的配置环境下,sudo 命令会信任用户几分钟(直到计时结束才会提醒你输入自己的密码)。

4.chgrp-更改文件所属群组

在早期 UNIX 版本中,chown 命令只能更改文件的所有者,而不能改变文件所属群组。 为了达到这个目的,可以使用一个独立的命令 chgrp 来实现。该命令除了限制多一点之外,和chown的使用方式几乎相同。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 三、更改身份
    • 0.转换身份的 3 种方法
      • (1)如何选择?
    • 1.su-以其它用户和组ID的身份来运行shell
      • (1)语法格式
    • 2.sudo-以另一个用户的身份执行命令
      • (1)语法格式
      • (2)sudo 与 su 命令的区别
      • (3)sudo命令不同选项不同结果
    • 3.chown-更改文件的所有者和所属群组
      • (1)语法格式
    • 4.chgrp-更改文件所属群组
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档