前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >su 与sudo

su 与sudo

作者头像
用户4877748
发布2020-07-22 10:16:20
6340
发布2020-07-22 10:16:20
举报
文章被收录于专栏:LVMLVM

su和sudo

  1.1 su

作用:切换到其他用户账户进行登录。

注意事项:

  (1)root用户切换到普通用户是不需要输入密码确认。普通用户切换至root需要输入root密码确认,普通用户相互切换需要对方的密码

 (2)如果su不带任何选项及参数,默认切换到root账户且不改变shell环境

 (3)使用su时一定要带- 即su – 要不然对于一个运维来说是非常low的表现

   实验 :su和 su -的区别

代码语言:javascript
复制
[root@desperadochn ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@desperadochn ~]# pwd
/root
[root@desperadochn ~]# su desperadochn
[desperadochn@desperadochn root]$ pwd
/root   #还是root的家目录
[desperadochn@desperadochn root]$ echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin  #还是root的环境变量
[desperadochn@desperadochn root]$ su - desperadochn
密码:
上一次登录:五 4月 29 23:28:37 CST 2016pts/1 上
[desperadochn@desperadochn ~]$ pwd
/home/desperadochn   #这时家目录对了
[desperadochn@desperadochn ~]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/desperadochn/.local/bin:/home/desperadochn/bin  #这才是desperadochn的环境变量

 因此我们可以得出结论:

      (1)su不带- 只切换用户不会切换环境变量及家目录等用户独有的设置。这可能会产生问题

      (2)一定要用su –

1.2、sudo

         当我们需要在执行一些不得不执行的命令但是这些命令只有root才能执行时,又不想或者不能切换成root(root权限太高,要慎用)这时我们就需要sudo

        首先sudo需要由root授权,root将那个用户可以使用哪种命令进行授权,即对/etc/sudoers文件进行修改。

        当普通用户需要使用获得授权的只有用root才能使用的命令时,在前面带上sudo,之后输入自己用户的密码,之后就能以root权限使用该命令了,密码有效期5分钟,在5分钟内再次使用sudo将不需要密码。

     许多发行版甚至默认不允许root用户直接登录,但是可以用sudo操作只有root才能完成的操作。

           特点:

              (1)sudo能限制用户只能在某一台主机上执行指定命令。

              (2)sudo提供了丰富的日志

              (3)sudo的配置文件是 /etc/sudoers

实现:

     1、查看sudo软件是否安装

代码语言:javascript
复制
[desperadochn@desperadochn ~]$ rpm -q sudo
sudo-1.8.6p7-16.el7.x86_64

  2、/etc/sudoers 文件详解

代码语言:javascript
复制
## Host Aliases    定义主机别名
## Groups of machines. You may prefer to use hostnames (perhaps using 
## wildcards for entire domains) or IP addresses instead.
# Host_Alias     FILESERVERS = fs1, fs2   #格式类型
# Host_Alias     MAILSERVERS = smtp, smtp2  #格式类型
  
## User Aliases   #用户别名
## These aren't often necessary, as you can use regular groups
## (ie, from files, LDAP, NIS, etc) in this file - just use %groupname 
## rather than USERALIAS
# User_Alias ADMINS = jsmith, mikem   格式类型
  
  
## Command Aliases  定义命令别名
 
##
##     user    MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere 
root    ALL=(ALL)  ALL    #设置sudo部分,这一条表示root用户可以在任何主机运行任意命令
  
## Allows members of the 'sys' group to run networking, software, 
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS 这一条表示sys组成员可以在任何主机运行网络、软件方面的命令
  
## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)   ALL    #%wheel组成员可以在任何主机上运行任何命令
  
## Same thing without a password
# %wheel   ALL=(ALL)   NOPASSWD: ALL    #%wheel组成员可以在任何主机上运行任何命令,且不需要密码
  
## Allows members of the users group to mount and unmount the 
## cdrom as root
# %users  ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom  允许%user组用户运行sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom命令
  
## Allows members of the users group to shutdown this system
# %users  localhost=/sbin/shutdown -h now     允许%user组成员可以在本机运行/sbin/shutdown -h now  命令
  
## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)
#includedir /etc/sudoers.d

虽然我们可以通过vim等工具修改/etc/sudoers文件,有专门的命令设置sudo权限——visudo他的优点是带语法检查。

   命令格式:

            visudo [选项]

            -c:启用check—only 模式,sudoers文件将被检查语法错误、所有者和模式

            -q:不进行语法检查

            -s:启用严格检查sudoers文件

使用visudo编辑/etc/sudoers文件

代码语言:javascript
复制
[root@desperadochn ~]# visudo

检查:

代码语言:javascript
复制
[root@desperadochn ~]# visudo -c
/etc/sudoers:解析正确

sudo命令      命令格式:                sudo [选项] [命令]                    

                 -l:列出用户能执行的命令

实验:

代码语言:javascript
复制
## Next comes the main part: which users can run what software on
## which machines (the sudoers file can be shared between multiple
## systems).
## Syntax:
##
##      user    MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
desperadochn  ALL=(root)        /usr/sbin/useradd

试一下:

代码语言:javascript
复制
[root@desperadochn ~]# su - desperadochn
上一次登录:六 9月 30 03:30:43 CST 2018pts/1 上
[desperadochn@desperadochn ~]$ sudo -l
匹配此主机上 desperadochn 的默认条目:
    requiretty, !visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",
    env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
  
用户 desperadochn 可以在该主机上运行以下命令:
    (root) /usr/sbin/useradd
[desperadochn@desperadochn ~]$ useradd xxx
-bash: /usr/sbin/useradd: 权限不够
[desperadochn@desperadochn ~]$ sudo  /usr/sbin/useradd baibudonghei
[desperadochn@desperadochn ~]$ id baibudonghei
uid=1003(baibudonghei) gid=1003(baibudonghei) 组=1003(baibudonghei)
    • 绝对在任何时候不要将sudo、setUid、setGid权限赋予工具型命令如vim或vi
    • sudu权限设置时最好带上命令详细参数
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-10-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档