linux su和sudo命令的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux su和sudo命令的区别相关的知识,希望对你有一定的参考价值。

su是切换用户,切换时需要目标用户的密码。sudo是以root身份执行后续的命令,这个用户需要有sudo的权限,通过编辑/etc/sudoers这个文件管理权限,sudo时,需要输入当前用户(而非root用户)的密码进行验证,验证完一次后,五分钟内可以免认证。另外,单从以超级用户身份执行命令来看,su切换完用户可以一直处于root身份,执行多条命令时更为方便。sudo则是执行少数命令,并且需要马上切换回当前用户时更为方便。 参考技术A

su

su的全称并不是super user,而是switch user,是不是就突然明白了?是切换用户的意思。su的一般使用方法是su或者su -,两种方法虽然只差了1个字符,但也是有比较大的差异的。

加入了-参数,就是login-shell的方式,也就是说切换到另一个用户之后,当前的shell会加载对应的环境变量和各种设置;

如果没有加入-参数,就是non-login-shell的方式,也就是说当前的shell还是加载切换之前的那个用户的环境变量以及各种设置。

如果不想因为切换到另一个用户导致自己在当前用户下的设置不可用,那么就可以用non-login-shell的方式;如果切换用户后,需要用到该用户的各种环境变量,那么使用login-shell方式即可。

sudo

全称为super user do,即以超级用户的方式执行命令,这里的超级用户指的就是root用户,我们在Linux中有时会遇到permission
denied的情况,如以ubuntu用户的身份查看/etc/shadow的内容,因为它是只有root用户才能查看的,这个时候就可以使用sudo。

两者的区别在于:

使用su - 提供root账号的密码,可以切换到root用户;

使用sudo su -,提供当前用户的密码,也可以切换到root用户。

如果我们的Linux系统有很多用户需要使用的话,前者要求所有用户都知道root用户的密码,显然是非常危险的;后者是不需要暴露root账户密码的,用户只需要输入自己的账户密码就可以。

Linux 的sudo 和 su

Linux学习笔记之——su、sudo命令使用及区别

 

        摘要:主要对su、sudo命令的功能进行介绍和两者之间的区别。以及使用方式

 

一:两者之间的区别

 

        su用于用户之间的切换。

        sudo用于普通用户可以使用root权限来执行指定命令。

 

二:su、sudo命令介绍

 

        1、su

 

        a) su简介

 

                su用于用户之间的切换。但是前面的用户依然保持在登录状态。这种切换如果超级权限用户root向普通或虚拟用户切换不需要密码,而普通用户切换到其它任何用户都需要密码验证。

 

        b) su用法

                  

                su在不加任何参数,默认为切换到root用户,但没有转到root用户家目录下,也就是说这时虽然是切换为root用户了,但并没有改变root登录环境;用户默认的登录环境,可以在/etc/passwd 中查得到,包括家目录,SHELL定义等;

                su 加参数 - ,表示默认切换到root用户,并且改变到root用户的环境;

 

                具体用法:

 

                命令格式:su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER[ARG]]

 

                命令参数说明:

 

                        -f , –fast:不必读启动文件(如csh.cshrc 等),仅用于csh或tcsh两种Shell。

 

                        -l , –login:加了这个参数之后,就好像是重新登陆一样,大部分环境变量(例如HOME、SHELL和USER等)都是以该使用者(USER)为主,并且工作目录也会改变。如果没有指定USER,缺省情况是root。

 

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

 

                        -c command:变更账号为USER的使用者,并执行指令(command)后再变回原来使用者。

 

                        –help 显示说明文件

 

                        –version 显示版本资讯

 

                        USER:欲变更的使用者账号,

 

                        ARG: 传入新的Shell参数。

 

                c) su不足

 

                        i)不安全su工具在多人参与的系统管理中,并不是最好的选择,su只适用于一两个人参与管理的系统,毕竟su并不能让普通用户受限的使用;超级用户root密码应该掌握在少数用户手中。

                        ii) 如果某个用户需要使用root权限、则必须要把root密码告诉此用户。

 

        2、sudo

 

                a) sudo简介

 

                是为所有想使用root权限的普通用户设计的。可以让普通用户具有临时使用root权限的权利。只需输入自己账户的密码即可。当然这个普通用户必须在/etc/sudoers文件中有配置项、才具有使用sudo的权利

 

                b) sudo用法

 

                        i)        首先要为使用sudo命令的普通用户在/etc/sudoers文件中配置此普通用户的使用权。

                        ii)      具体用法及参数说明:

                        命令格式:sudo[option]

                        普通用户使用sudo执行root权限用法:sudocommand

                        说明:以系统管理者的身份执行指令,也就是说,经由sudo所执行的指令就好像是root亲自执行一样。这种命令貌似不能与下面的参数结合使用!

                        命令参数:

                        -V显示版本编号

                        -h会显示版本编号及指令的使用方式说明

                        -l显示出自己(执行sudo的使用者)的权限

                        -v因为sudo在第一次执行时或是在N分钟内没有执行(N预设为五)会问密码,这个参数是重新做一次确认,如果超过N分钟,也会问密码

                        -k将会强迫使用者在下一次执行sudo时问密码(不论有没有超过N分钟)

                        -b将要执行的指令放在背景执行

                        -pprompt可以更改问密码的提示语,其中%u会代换为使用者的帐号名称,%h会显示主机名称

                        -uusername/#uid不加此参数,代表要以root的身份执行指令,而加了此参数,可以以username的身份执行指令(#uid为该username的使用者号码)

                        -s执行环境变数中的SHELL所指定的shell,或是/etc/passwd里所指定的shell

                        -H将环境变数中的HOME(家目录)指定为要变更身份的使用者家目录(如不加-u参数就是系统管理者root)

                        command要以系统管理者身份(或以-u更改为其他人)执行的指令

以上是关于linux su和sudo命令的区别的主要内容,如果未能解决你的问题,请参考以下文章

linux su和sudo命令的区别

linux su和sudo命令的区别

linux命令su,sudo 使用和区别

linux su和sudo命令的区别

linux su和sudo命令的区别

linux命令sudo,su -和su的区别