su和sudo命令简介

一、su命令简介及用法

1、su命令简介

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

2、常用用法说明

普通用户在使用su命令时不加参数及使用参数-所带来的结果是有区别的:

  • su在不加任何参数,默认为切换到root用户,这里需要输入root用户的密码,但没有转到root用户家目录下,也就是说这时虽然是切换为root用户了,但并没有改变为root登录环境;
  • su 加参数 - ,表示默认切换到root用户,并且改变到root用户的环境;

3、不足之处

  • 很不安全,su工具在多人参与的系统管理中,并不是最好的选择,su只适用于一两个人参与管理的系统,毕竟su并不能让普通用户受限的使用;超级用户root密码应该掌握在少数用户手中。
  • 如果某个用户需要使用root权限、则必须要把root密码告诉此用户。

二、sudo命令介绍

1、简介

sudo命令是一种权限管理机制,管理员可以授权于一些普通用户去执行一些root才能执行的操作,而不需要知道root的密码,它依赖于/etc/sudoers这个文件,这个文件可以授权于那个用户在那台主机上能够以管理员的身份执行什么样的管理命令,而且是有限的。这个文件相当于就是一个授权表。

2、主要特点

  • 能够限制指定用户在指定主机上运行某些命令。
  • 可以提供日志,忠实地记录每个用户使用sudo做了些什么,并且能将日志传到中心主机或者日志服务器。
  • 为系统管理员提供配置文件,允许系统管理员集中地管理用户的使用权限和使用的主机。它默认的存放位置是/etc/sudoers。
  • 使用时间戳文件来完成类似“检票”的系统。当用户执行sudo并且输入密码后,用户获得了一张默认存活期为5分钟的“入场券”(默认值可以在编译的时候改变)。超时以后,用户必须重新输入密码。

3、常用参数

-b 在后台执行指令。

-H 将 HOME 变量设为目标用户的主目录。

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

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

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

-s 执行指定的shell。

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

4、/etc/sudoers文件说明

在编辑这个文件前我们先查看下这个文件的权限:

[[email protected] ~]# ll /etc/sudoers
-r--r-----. 1 root root 4002 3月   2 2012 /etc/sudoers

通过查看文件权限我们发现默认这个文件root没有写权限,但是还是可以使用vim编辑器来编辑此文件,为避免出现语法错误这里不建议使用vim编辑器来修改此文件。系统在安装sudo命令时默认还装了专门用来编辑此文件的命令visudo,使用这个命令编辑有这个好处一旦你的语法写错会造成严重的后果,这个工具会替你检查你写的语法正确性。

使用visudo命令编辑配置文件时默认文件会有下面一条语句,此语句的意思为:

root    ALL=(ALL)       ALL

root root用户

ALL  所有的主机上都可以

(ALL) 是以谁的身份来执行,ALL就代表root可以任何人的身份来执行命令

ALL  所有的命令

那么整个一条规则就是root用户可以在任何主机以任何人的身份来执行所有的命令,也就是不限定。

通过上面的说明我们可以简单的授权一个用户以root身份执行一些命令,多个命令之间要用逗号加空格隔开:

简单应用举例:

定义用户bols可以以root身份执行useradd、usermod、userdel三个命令:

bols  AAL=(root)  /usr/sbin/useradd,  /usr/sbin/usermod,  /usr/sbin/userdel

定义用户bols可以以root身份执行useradd、usermod、userdel三个命令,同时可以不用输入密码:

bols  ALL=(root) NOPASSWD:/usr/sbin/useradd,  /usr/sbin/usermod,  /usr/sbin/userdel

在上面可执行命令中增加了passwd更改密码的命令,未避免出现更改root密码的现象,故设置了禁止更改root密码:

bols  ALL=(root) NOPASSWD:/usr/sbin/useradd, /usr/sbin/usermod, /usr/sbin/userdel, /usr/bin/passwd, !/usr/bin/passwd root

5、通过别名方式定义普通用户可以执行的命令

1) 配置Host_Alias:就是主机的列表

Host_Alias    HOSTS = hostname1, hostname2, hostname3

2) 配置Cmnd_Alias:就是允许执行的命令的列表

Cmnd_Alias    USERCMD = command1, command2, command3

3) 配置User_Alias:就是具有sudo权限的用户的列表

User_Alias  USERADMIN = user1, user2, user3

4) 配置Runas_Alias:就是用户以什么身份执行(例如root,或者oracle等)的列表

Runas_Alias  ADMIN = operator1, operator2, operator3

注意:在定义别名的时候我们一般用大写。

通过别名定义的应用举例:

Host_Alias    HOSTS = 192.168.0.0/16
Cmnd_Alias    USERCMD = /usr/sbin/*, /sbin/*, !/usr/sbin/passwd, !/usr/sbin/userdel 
User_Alias  USERADMIN = bols, cangls
Runas_Alias  ADMIN = root

USERADMIN  HOSTS=(ADMIN) USERCMD

这个定义的意思就是说用户bols,cangls可以在192.168.0.0/16这网段上以root用户的身份运行/usr/sbin/下的和/sbin/下的除了passwd和userdel这两个命令以外的所有命令。

注意:命令一定要使用绝对路径,以避免其他目录的同名命令被执行,从而造成安全隐患。

6、sudo的日志管理

sudo能够记录各用户都运行了哪些命令。但是这些需要对/etc/sudoers和/etc/rsyslog.conf文件进行适当的配置。具体操作如下:

首先日志系统配置文件最后增加如下:

[[email protected] ~]# vim /etc/rsyslog.conf 
local2.debug /var/log/sudo.log

然后使用visudo名令在/etc/sudoers文件最后增加如下:

Defaults     logfile=/var/log/sudo.log

最后重启日志系统:

[[email protected] ~]# /etc/init.d/rsyslog restart

在普通用户使用sudo命令执行几条语句后查看sudo日志文件得到如下日志信息:

[[email protected] ~]# cat /var/log/sudo.log 
Aug  6 22:40:05 : bols : TTY=pts/2 ; PWD=/home/bols ; USER=root ;
    COMMAND=/usr/sbin/useradd longls
Aug  6 22:40:41 : bols : TTY=pts/2 ; PWD=/home/bols ; USER=root ;
    COMMAND=/usr/sbin/useradd longls
Aug  6 22:41:15 : bols : TTY=pts/2 ; PWD=/home/bols ; USER=root ;
    COMMAND=/usr/sbin/useradd xiaozels
时间: 2024-10-22 09:39:39

su和sudo命令简介的相关文章

Linux su和sudo命令的区别,并获得root权限

su(superuser) su表示切换用户,如: 输入:su命令后回车表示切换当前的用户到root用户,或者: 输入:su - root(或者其他用户名)这里加了"-"后表示也切换的当前的环境变量到新用户的环境变量. su root(或者其他用户名)表示不切换环境变量到当前用户下. sudo 表示获取临时的root权限命令,如: sudo gedit /etc/shadow,表示临时使用root权限来编辑/etc/shadow密码文件,因为/etc/shadow密码文件需要使用roo

Linux 中su和sudo命令的几个注意点

1 su与su - 的区别 1.1命令说明 su对应是是no-login shell的方式进行账号登陆,命令行的变量配置还是切换账号前的变量. su-对应的是login shell的方式进行账号登陆,这时候相当于完全登陆新的账号获取新的账号的变量信息 因此在写脚本的过程中,根据里面变量的配置,要合理选用“su” 或者“su -”.附上鸟哥书中关于no-login shell与login shell的讲解 login shell:取得 bash 时需要完整的登陆流程的,就称为 login shel

Linux通过su、sudo命令实现用户切换、提权

概述 大多数Linux服务器并不建议用户直接以root用户进行登录.一方面可以大大减少因误操作而导致的破坏,另一方面也降低了特权密码在不安全的网络中被泄露的风险.鉴于这些原因,需要为普通用户提供一种身份切换或权限或权限提升机制,以便在必要的时候执行管理任务.此时就需要借助Linux为我们提供的su.sudo两种命令来提升执行权限. 提权配置的三种方式 1.针对用户 2.针对组 3.针对用户.组.命令的别名 实验目标 1.熟悉su.sudo的用法,熟练使用sudoers相关的配置 2.体验用户切换

su和sudo命令的用法

为了安全起见,尽量不要用root用户去做所有事情,因为一旦执行了错误的命令,可能会直接导致系统崩溃. 一.su命令 su 命令可以解决切换用户身份的需求,使得当前用户在不退出登录的情况下,切换到其他用户,比如从 root 管理员切换至普通用户.需要注意的是,su 命令与用户名之间有一个减号(-),这意味着完全切换到新的用户,即把环境变量信息也变更为新用户的相应信息,而不是保留原始的信息,建议在切换用户身份时添加这个减号(-).下图是su命令的例子: 二.sudo命令 使用 su 命令,普通用户可

linux su和sudo命令的区别

一. 使用 su 命令临时切换用户身份 1.su 的适用条件和威力 su命令就是切换用户的工具,怎么理解呢?比如我们以普通用户beinan登录的,但要添加用户任务,执行useradd ,beinan用户没有这个权限,而这个权限恰恰由root所拥有.解决办法无法有两个,一是退出beinan用户,重新以root用户登录,但这种办法并不是最好的:二是我们没有必要退出beinan用户,可以用su来切换到root下进行添加用户的工作,等任务完成后再退出root.我们可以看到当然通过su 切换是一种比较好的

su和sudo命令的区别

一. 使用 su 命令临时切换用户身份 参考 1.su 的适用条件和威力 su命令就是切换用户的工具,怎么理解呢?比如我们以普通用户beinan登录的,但要添加用户任务,执行useradd ,beinan用户没有这个权限,而这个权限恰恰由root所拥有.解决办法无法有两个,一是退出beinan用户,重新以root用户登录,但这种办法并不是最好的:二是我们没有必要退出beinan用户,可以用su来切换到root下进行添加用户的工作,等任务完成后再退出root.我们可以看到当然通过su 切换是一种比

su和sudo命令

su  -  用户名    不加减号环境变量不切换 whoami查看当前用户 su - -c "mkdir /tmp/file" 用户名 使用 -c选项,不用切换用户也可以执行命令 sudo    临时拥有一些权限 使用sudo可以使普通账户不用知道root的密码而临时拥有root的权限,这是为了提高安全性,不可登录. visudo sudo -l 查看普通用户在sudo下有哪些权限 visudo 命令去编辑相关的配置文件/etc/sudoers. 如果没有visudo这个命令,请使用

sudo命令简介

1.sudo介绍 sudo是linux下常用的允许普通用户使用超级用户权限的工具,允许系统管理员让普通用户执行一些或者全部的root命令,如halt,reboot,su等等.这样不仅减少了root用户的登陆 和管理时间,同样也提高了安全性.Sudo不是对shell的一个代替,它是面向每个命令的.它的特性主要有这样几点: § sudo能够限制用户只在某台主机上运行某些命令. § sudo提供了丰富的日志,详细地记录了每个用户干了什么.它能够将日志传到中心主机或者日志服务器. § sudo使用时间戳

linux su和sudo命令的区别(转)

一. 使用 su 命令临时切换用户身份 1.su 的适用条件和威力 su命令就是切换用户的工具,怎么理解呢?比如我们以普通用户beinan登录的,但要添加用户任务,执行useradd ,beinan用户没有这个权限,而这个权限恰恰由root所拥有.解决办法无法有两个,一是退出beinan用户 一. 使用 su 命令临时切换用户身份 1.su 的适用条件和威力 su命令就是切换用户的工具,怎么理解呢?比如我们以普通用户beinan登录的,但要添加用户任务,执行useradd ,beinan用户没有