[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)
在文件93行添加,表示可以用sudo操作ls
wsl1 ALL=(ALL) /usr/bin/ls,/usr/bin/mv,/usr/bin/cat (用sudo命令可以让wsl用户暂时让ls命令拥有root权限)
[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时不用输入密码)
[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
wsl1 ALL=(ALL) WSL_CMD
[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)
WSLS ALL=(ALL) NOPASSWD:/usr/bin/su
[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
# Authentication:
#LoginGraceTime 2m
PermitRootLogin no (修改这一行)
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
[root@localhost ~]# systemctl restart sshd.service(改完后重启服务)
JHXSdeMacBook-Pro:~ Martin.Wang$ ssh -p 22 [email protected]
[email protected]'s password:
Permission denied, please try again. (拒绝密码显示已经不能登录)
[email protected]'s password:
Permission denied, please try again.
JHXSdeMacBook-Pro:~ Martin.Wang$ ssh -p 22 [email protected]
(登录普通用户wsl1是可以的)
[email protected]'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