su命令、sudo命令、限制root远程登录

[TOC]

37 su命令

切换用户 –

[root@localhost ~]# su - wsl (切换到wsl用户下去,加 - 是为了彻底切换)
[wsl@localhost ~]$ 
[root@localhost ~]# su wsl 
[wsl@localhost root]$ pwd (这里我们不加 - 就不会彻底切换,我们的家目录还是在/root下)
/root

以某用户身份执行 – -c

[root@localhost ~]# su - -c "touch /tmp/wsl.txt" wsl (以wsl用户的身份去创建一个wsl.txt文件)
[root@localhost ~]# ls -lt /tmp/ |head (查看文件)
总用量 4
-rw-r--r--. 1 wsl  root   0 12月 27 20:39 wsl.txt (所有者和所属组都与wsl匹配)
drwx------. 3 root root  17 12月 26 16:47 systemd-private-d4f6a6b7b5004808a2ab7c327ba9ec8d-chronyd.service-13a8A3
drwx------. 3 root root  17 12月 26 16:47 systemd-private-d4f6a6b7b5004808a2ab7c327ba9ec8d-vmtoolsd.service-rhpVMT
drwx------. 3 root root  17 12月 26 16:47 systemd-private-d4f6a6b7b5004808a2ab7c327ba9ec8d-vgauthd.service-Rjj43J
-rwx------. 1 root root 836 12月 26 08:11 ks-script-mfGojP
-rw-------. 1 root root   0 12月 26 08:07 yum.log
[root@localhost ~]# id wsl
uid=1000(wsl) gid=0(root) 组=0(root),1000(wsl) (查看wsl的id)

切换后未指定家目录

[root@localhost home]# su - wsl (切换到普通用户时没有家目录且为-bash-4.2$)
上一次登录:三 12月 27 20:39:42 CST 2017pts/0 上
-bash-4.2$ 登出
[root@localhost home]# mkdir /home/wsl (创建家目录)
[root@localhost home]# chown -R wsl:wsl /home/wsl (更改所有者和所属组)
[root@localhost home]# su - wsl (还不行)
上一次登录:三 12月 27 20:39:42 CST 2017pts/0 上
-bash-4.2$ 登出
[root@localhost home]# cp /etc/skel/.bash* /home/wsl (复制模板配置文件到家目录)
[root@localhost home]# chown -R wsl:wsl /home/wsl 更改所有者和所属组)
[root@localhost home]# su - wsl (更换成功)
上一次登录:三 12月 27 20:46:13 CST 2017pts/0 上
[wsl@localhost ~]$ 登出

38 sudo命令

sudo可以临时以某身份去执行一条命令

[root@localhost home]# visudo (编辑sudo)

《su命令、sudo命令、限制root远程登录》 显示行号

在文件93行添加,表示可以用sudo操作ls
wsl1     ALL=(ALL)       /usr/bin/ls,/usr/bin/mv,/usr/bin/cat (用sudo命令可以让wsl用户暂时让ls命令拥有root权限)

《su命令、sudo命令、限制root远程登录》 在93行添加

[root@localhost ~]# su - wsl1
上一次登录:三 12月 27 21:41:04 CST 2017pts/0 上
[wsl1@localhost ~]$ ls /root/
ls: 无法打开目录/root/: 权限不够
[root@localhost ~]# su - wsl1
上一次登录:三 12月 27 21:42:15 CST 2017pts/0 上
[wsl1@localhost ~]$ sudo ls /root/

我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:

    #1) 尊重别人的隐私。
    #2) 输入前要先考虑(后果和风险)。
    #3) 权力越大,责任越大。

[sudo] wsl1 的密码:
anaconda-ks.cfg
[wsl1@localhost ~]$ sudo ls /root/
anaconda-ks.cfg
[wsl1@localhost ~]$ ls /root/
ls: 无法打开目录/root/: 权限不够
[wsl1@localhost ~]$ cat /root/anaconda-ks.cfg
cat: /root/anaconda-ks.cfg: 权限不够
[wsl1@localhost ~]$ sudo cat /root/anaconda-ks.cfg
[root@localhost ~]# visudo
wsl1     ALL=(ALL)      NOPASSWD: /usr/bin/ls,/usr/bin/mv,/usr/bin/cat
(这里加上了 NOPASSWD: ,表示在使用sudo时不用输入密码)

《su命令、sudo命令、限制root远程登录》 sudo不用输入用户密码

[root@localhost ~]# su - wsl1
上一次登录:三 12月 27 21:43:32 CST 2017pts/0 上
[wsl1@localhost ~]$ sudo ls /root/
anaconda-ks.cfg
Cmnd_Alias WSL_CMD = /usr/bin/ls,/usr/bin/cat,/usr/bin/mv

《su命令、sudo命令、限制root远程登录》 添加命令别名

wsl1     ALL=(ALL)      WSL_CMD

《su命令、sudo命令、限制root远程登录》 使用命令别名

[root@localhost ~]# su - wsl1 (用别名同样可以,使用用户组也可以一次性包含多个用户)
上一次登录:三 12月 27 22:27:15 CST 2017pts/0 上
[wsl1@localhost ~]$ sudo ls /root/
[sudo] wsl1 的密码:
anaconda-ks.cfg
[wsl1@localhost ~]$ 

[root@localhost ~]# su - wsl
上一次登录:三 12月 27 22:51:07 CST 2017pts/0 上
最后一次失败的登录:三 12月 27 23:04:01 CST 2017从 172.16.79.1ssh:notty 上
最有一次成功登录后有 2 次失败的登录尝试。
[wsl@localhost ~]$ sudo -l  (查看该用户可以执行哪些命令)
匹配 %2$s 上 %1$s 的默认条目:
    !visiblepw, always_set_home, match_group_by_gid, 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

用户 wsl 可以在 localhost 上运行以下命令:
    (ALL) NOPASSWD: /usr/bin/su
[wsl@localhost ~]$

39 限制root远程登录

[root@localhost home]# visudo (编辑sudo)

《su命令、sudo命令、限制root远程登录》 设置用户别名

WSLS    ALL=(ALL)       NOPASSWD:/usr/bin/su

《su命令、sudo命令、限制root远程登录》 使用用户组别名

[root@localhost ~]# su - wsl (切换到wsl普通用户)
上一次登录:三 12月 27 22:50:55 CST 2017pts/0 上
[wsl@localhost ~]$ sudo su - (这里可以省略掉root,这里省略掉用户,其实是回到我们第一次登录的用户那里)
上一次登录:三 12月 27 22:01:40 CST 2017从 172.16.79.1pts/0 上
[root@localhost ~]# whoami
root

限制root登录

[root@localhost ~]# vi /etc/ssh/sshd_config 

《su命令、sudo命令、限制root远程登录》 vi中的搜索方法

# Authentication:

#LoginGraceTime 2m
PermitRootLogin no (修改这一行)
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

《su命令、sudo命令、限制root远程登录》 修改不允许root登录

[root@localhost ~]# systemctl restart sshd.service(改完后重启服务)


JHXSdeMacBook-Pro:~ Martin.Wang$ ssh -p 22 root@172.16.79.146
root@172.16.79.146's password: 
Permission denied, please try again. (拒绝密码显示已经不能登录)
root@172.16.79.146's password: 
Permission denied, please try again.


JHXSdeMacBook-Pro:~ Martin.Wang$ ssh -p 22  wsl1@172.16.79.146 
(登录普通用户wsl1是可以的)
wsl1@172.16.79.146's password: 
Last login: Wed Dec 27 23:04:16 2017 from 172.16.79.1
[wsl1@localhost ~]$ w (查看同时在线的有哪些)
 23:05:19 up  7:56,  3 users,  load average: 0.08, 0.03, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1                      二16   26:22m  0.03s  0.03s -bash
root     pts/0    172.16.79.1      22:53    2:47   0.04s  0.04s -bash
wsl1     pts/1    172.16.79.1      23:04    7.00s  0.03s  0.02s w

[wsl1@localhost ~]$ sudo su - root
上一次登录:三 12月 27 22:53:24 CST 2017从 172.16.79.1pts/0 上
最后一次失败的登录:三 12月 27 23:02:26 CST 2017从 172.16.79.1ssh:notty 上
最有一次成功登录后有 2 次失败的登录尝试。
[root@localhost ~]# 

扩展
sudo与su比较
http://www.apelearn.com/bbs/thread-7467-1-1.html
sudo配置文件样例 http://www.opensource.apple.com/source/sudo/sudo-16/sudo/sample.sudoers
sudo不错的教程
http://www.jianshu.com/p/51338e41abb7
sudo -i 也可以登录到root吗? http://www.apelearn.com/bbs/thread-6899-1-1.html

    原文作者:强出头
    原文地址: https://www.jianshu.com/p/353bd73c34ad
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞