作业-第05周--课堂-Day19-su、sudo、及visud

2019-03-31  本文已影响0人  MineG

Day19 课堂笔记

1. su:linux用户身份切换命令

su参数选项 注释说明
- 使用一个shell成为登录的shell
-c 切换到一个shell下,执行一个命令,然后退出所切换的用户环境
-m 切换用户时,不重置用户环境变量
-s 如果/etc/shells允许,则运行指定的shell

范例1:由普通用户oldboy切换到root用户

[oldboy@oldboyedu  ~]$ whoami 
oldboy                              <-->当前为普通用户oldboy
[oldboy@oldboyedu  ~]$ su root
Password: 
[root@oldboyedu  /home/oldboy]# env
MAIL=/var/spool/mail/oldboy
PWD=/home/oldboy                     <-->家目录没有变  
LANG=en_US.UTF-8
HISTCONTROL=ignoredups
HOME=/root
SHLVL=2
LOGNAME=oldboy

退到普通用户重新测试一下:

[root@oldboyedu  /home/oldboy]# exit
[oldboy@oldboyedu  ~]$ su - root          <-->加 - 的作用
Password: 
Last login: Sun Mar 31 09:42:18 CST 2019 on pts/0
[root@oldboyedu  ~]# env |egrep "USER|MAIL|PWD|LOGNAME"
USER=root
MAIL=/var/spool/mail/root
PWD=/root
LOGNAME=root

范例2:oldboy用户使用root身份执行命令

[oldboy@oldboyedu  ~]$ ls -l /root
ls: cannot open directory /root: Permission denied
[oldboy@oldboyedu  ~]$ su - -c "ls -l /root"
Password: 
total 72
-rw-r--r--  1 root root  1860 Mar 30 18:36 1.txt
-rw-------. 1 root root  1647 Mar  4 11:24 anaconda-ks.cfg
drwxr-xr-x  6 root root   153 Feb 11 09:18 lolcat-master
-rw-r--r--  1 root root 57827 Mar 18 10:13 master.zip
-rw-r--r--  1 root root    34 Mar 30 18:09 user.txt

范例3:让系统开机时自动以普通用户启动指定的服务脚本

[root@oldboyedu  ~]# tail -1 /etc/rc.local
su - oldboy -c '/bin/sh /server/scripts/deploy.sh'

小结:怎么用su

1、先登录普通用户,没事不允许登录root
只有执行的任务需要root权限的时候才允许你登录root
系统维护通道。
用su管理,必须知道root密码,安全隐患。
10个运维,都得知道root密码,安全隐患。

需求:
1、不用知道root密码还能管理服务器。
2、最小化管理服务器,想关机,就只给你halt权限。

2. visudo:编辑sudoers文件工具

visudo命令专门用来编辑/etc/sudoers这个文件的。

参数:

范例1:执行sudo对普通用户oldboy和oldgirl授权

[root@oldboyedu  ~]# visudo
100 root    ALL=(ALL)       ALL
101 oldboy  ALL=(ALL)      NOPASSWD: ALL      
102 oldgirl ALL=(ALL)      NOPASSWD: /usr/bin/useradd,/usr/bin/userdel
待授权的用户或组 机器=(授权角色) 可以执行的命令
user MACHINE= COMMANDS
oldboy ALL=(ALL) ALL

提示:每次执行visudo并修改内容后,需要语法检查:

[root@oldboyedu  ~]# visudo -c
/etc/sudoers: parsed OK

3. sudo:以另一个用户身份执行命令

参数:

[oldboy@oldboyedu  ~]$ whoami 
oldboy
[oldboy@oldboyedu  ~]$ ls /root
ls: cannot open directory /root: Permission denied
[oldboy@oldboyedu  ~]$ sudo ls /root
1.txt  anaconda-ks.cfg  lolcat-master  master.zip  user.txt

查看oldboy用户授权的结果情况:

[oldboy@oldboyedu  ~]$ sudo -l
Matching Defaults entries for oldboy on oldboyedu:
    !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY
    HOSTNAME HISTSIZE 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

User oldboy may run the following commands on oldboyedu:
    (ALL) NOPASSWD: ALL

小结:sudo命令:

可以以最小化的权限(单个命令),执行命令时拥有root用户的权限

SUID 针对命令,任何用户执行命令都有root身份。 任何用户执行某个命令:模糊
SUDO 针对用户,给某个用户以root身份执行某个命令。指定用户执行某个命令:具体。

如何编辑配置sudo

sudo是一个提权的命令(对应权限通过读取/etc/sudoers(严格语法)文件实现的)

配置/etc/sudoers可以使用visudo命令,或vim /etc/sudoers(不推荐)

sudo的工作原理流程图

CentOS7 时间戳文件位置:

[root@oldboyedu  ~]# ll /var/run/sudo/
total 0
drwx------ 2 root root 40 Mar 31 09:22 ts
[root@oldboyedu  ~]# ll /etc/sudoers
-r--r----- 1 root root 4408 Mar 26 11:41 /etc/sudoers
上一篇 下一篇

猜你喜欢

热点阅读