首页 > 其他分享 >su和sudo的用法

su和sudo的用法

时间:2023-07-18 15:25:03浏览次数:32  
标签:-- sudo 用户 su 用法 命令 root

一、su

1.命令详解

通过该命令可以实现任何身份的切换,普通用户之间切换、普通用户切换至 root 用户,都需要知晓对方的密码,只有正确输入密码,才能实现切换。
从 root用户切换至其他用户,无需知晓对方密码,直接可切换成功。

2.语法格式
su [选项] - [用户]

3.选项描述

-m, -p, --preserve-environment         #执行 su 时不改变环境变数

-g, --group <group>                          #指定主组,此选项仅对 root 用户可用

-G, --supp-group <group>                #指定一个附加组,此选项仅对 root 用户可用

-, -l, --login                                        #将shell作为登录 shell 启动

-c, --command <command>             #仅切换用户执行一次命令,执行后自动切换回来,该选项后通常会带有要执行的命令

-f, --fast                                             #适用于csh与tsch,使shell不用去读取启动文件

-s, --shell <shell>                              #适用于csh与tsch,使shell不用去读取启动文件

4.总结

su和su - 不加用户,默认直接切到root,普通用户切换需要输入root密码

su : 切换用户,环境变量不变,路径不变。

su - : 切换用户,环境变量随切换用户发生改变,回到家目录。

总结:-代表连带环境变量一起切换,不能省略。环境变量是用来定义操作系统环境的,因此如果系统环境没有随用户身份切换,很多命令无法正确执行


二、sudo

1.命令详解

su 切换到超级权限用户root后,超级权限的无限制,增加了系统安全性问题。这时我们就有必要用到 sudo。

通过sudo,把某些超级权限有针对性的下放,并且不需要普通用户知道root密码,所以sudo 相对于权限无限制性的su来说,还是比较安全。
而这些的前提是要通过sudo的配置文件/etc/sudoers来进行授权。

sudo执行命令的流程:
当前用户切换到root(或其它指定切换到的用户),需要输入当前用户的密码,然后以root(或其它指定的切换到的用户)身份执行命令,执行完成后,直接退回到当前用户。

2.语法格式

sudo [选项] - [用户]

3.选项描述

-A, --askpass                                     #使用辅助程序读取用户的密码并将密码输出到标准输出

-b, --background                                #把sudo所要运行的命令放到后台运行

-E, --preserve-env                             #向安全策略指示用户希望保存他们现有的环境变量
--preserve-env=list

-e, --edit                                             #编辑文件,而不是运行命令

-g, --group=group                              #使用指定的组名或ID执行命令

-H, --set-home                                   #设置HOME变量为目标用户的HOME目录

-i, --login                                            #以目标用户运行login shell;还可以指定命令

-K, --remove-timestamp                    #完全删除时间戳文件

-k, --reset-timestamp                         #失效时间戳文件

-l, --list                                               #列出用户的特权或检查特定命令;使用两次是较长的格式

-n, --non-interactive                           #非交互模式,不使用提示

-p, --prompt=prompt                          #使用指定的密码提示符

-r, --role=role                                     #创建SELinux安全上下文规则

-S, --stdin                                          #从标准输入读取密码

-s, --shell                                          #以目标用户运行shell;命令还可以被指定

-u, --user=user                                 #按指定的用户名或ID运行命令

4.命令示例

1)指定用户执行命令 sudo -u root
以root身份使用useradd命令创建cat用户;

前提条件,当前用户需要加入/etc/sudoers中,否则会报错

5.将用户加至配置文件

vim /etc/sudoers


...省略...
## user MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
cyan ALL=(ALL) ALL '添加用户'
## Allows members of the 'sys' group to run

...省略....

只有添加后,才能正确的使用sudo 命令。


三、su和sudo的区别

1.用法不同

su:用来切换用户。
sudo:使用超级用户来执行命令,一般是指root用户。

2.密码

两个命令的最大区别是:
su 命令需要输入 root 用户的密码。
sudo 命令需要输入当前用户的密码。
鉴于sudo命令要求输入的是其他用户自己的密码,所以,不需要共享root密码。同时,想要阻止特定用户访问root权限,只需要调整sudoers文件中的相应配置即可。

3.执行命令

su可以不带参数执行。
sudo需要带参数和命令执行。

4.默认行为

另外一个区别是其默认行为:
sudo 命令只允许使用提升的权限运行单个命令。
su命令会启动一个新的 shell,同时允许使用root 权限运行尽可能多的命令,直到明确退出登录。
因此,su 命令的默认行为是有风险的。

5.日志记录

sudo 命令是以目标用户(默认情况下是 root 用户)的身份执行命令,但是它们会使用 sudoer所配置的用户名来记录是谁执行命令。
而 su 命令是无法直接跟踪记录用户切换到 root 用户之后执行了什么操作。


6.灵活性

sudo 命令比 su 命令灵活很多,因为甚至可以限制 sudo 用户可以访问哪些命令。换句话说,用户通过 sudo 命令只能访问他们工作需要的命令。而 su 命令让用户有权限做任何事情。

标签:--,sudo,用户,su,用法,命令,root
From: https://www.cnblogs.com/Linux-guowen/p/17563087.html

相关文章

  • 红帽报错:This system is not registered to Red Hat Subscription Management. You ca
    原因:RedHatSubscriptionManager订阅管理器未订阅注册解决:禁用 配置文件:1./etc/yum/pluginconf.d/subscription-manager.conf;2./etc/yum/pluginconf.d/product-id.conf;#vim/etc/yum/pluginconf.d/subscription-manager.conf#vim/etc/yum/pluginconf.d/product-id.co......
  • jfinal 框架学习笔记-第三天 Model相关学习--record+Model增删改查的用法(震惊之今日刷
    1.了解了数据库连接池。其中使用最多也是最广泛的是druid数据库连接池也就是阿里云研发的数据库连接池2.ActiveRecord(jFinal的核心技术)+DruidPlugin(数据库连接词,如何与数据库打交道)ActiveRecord:1.Record(记录,相当于一个通用的Model),2.Model(提供日常CRUD的封装)Model示例......
  • SQL Server中数据类型之char、nchar、varchar、nvarchar的用法
    char数据类型char数据类型是固定长度的非unicode字符数据,如果是英文字符,占用1个字节,如果是汉字,占用2个字节。列如:char(10),可以存10个英文字母,5个汉字。char数据类型存储固定长度数据很方便,char字段上的索引效率极高,比如定义char(10),那么不论你存储的数据是否达到了10个字节......
  • 函数用法
    //SkipWhile:找与第一个连续相同值的后面数据int[]list={5,5,6,5,8,43};varr=list.SkipWhile(i=>i==5).ToList();//result:6,6,6,42//TakeWhile:获取符合当前条件数值之前的valueint[]list1={1,10,4......
  • NET7中sqlsugar的使用
    NET7中sqlsugar的使用仿《深入浅出ASP.NETCORE》这书里的IRepository和RepositoryBase usingSqlSugar;usingSystem.Linq.Expressions;namespaceWebApplication1.DAL{///<summary>///所有仓储的约定,此接口仅作为约定,用于标识他们///</summary>......
  • Proj. CMI Paper Reading: R-U-SURE? Uncertainty-Aware Code Suggestions By Maximiz
    AbstractTask:buildinguncertainty-awaresuggestionsbasedonadecision-theoreticmodelofgoal-conditionalutility,推理LLM用户的未观测到的意图方法:adecision-theoreticmodelofgoal-conditionedutility,使用生成式模型生成的randomsamples来做proxy,minimumBa......
  • [论文研读]空天地一体化(SAGIN)的网络安全_A_Survey_on_Space-Air-Ground-Sea_Integra
    ------------恢复内容开始------------空天地一体化(SAGIN)的网络安全目前关注的方面:集中在安全通信、入侵检测、侧通道攻击、GPS欺骗攻击、网络窃听、消息修改/注入等方面,有些侧重于分析现有的安全威胁[20]、[21],有些提出了他们的攻击方法[14]、[22],还有一些则更多地侧重于SAG......
  • SMU Summer 2023 Contest Round 4
    SMUSummer2023ContestRound4A-TelephoneNumber思路:满足有8,且8后有大于等于11个数#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongtypedefpair<int,int>PII;typedefpair<string,int>PSI;typedefpair<char,int>PCI;type......
  • LAL v0.36.7发布,Customize Sub,我有的都给你
    Go语言流媒体开源项目LAL今天发布了v0.36.7版本。LAL项目地址:https://github.com/q191201771/lal老规矩,简单介绍一下:▦CustomizeSub,我有的都给你这是提供给用lalserver做二次开发的小伙伴们的一个重要的功能,业务方可以通过设置回调函数的方式获取lalserver内部的流。......
  • Pycharm安装CodeWhisper插件后登录仍然不显示“Pause Auto-Suggestions”选项的解决办
    一、检查PyCharm版本建议升级到最新,AWS不支持2022.03以前的版本。二、设置插件存储库FromtheJetBrainsmainmenu,openyour Preferences menu(expand File choose Settings,forWindowsusers).Fromthe Preferences/Settings menu,choose Plugins toope......