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
这个文件的。
参数:
- -c 手动执行语法检查
范例1:执行sudo对普通用户oldbo
y和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:以另一个用户身份执行命令
参数:
- -l列出当前用户可以执行的命令。只有在sudoers文件里的用户才能使用
范例1:查看用户被visudo
授权后拥有的权限
[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
(不推荐)

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
网友评论