3.7 su命令
- su用于切换用户
#命令中有无-的区别;无-切换用户还会在上一个用户的家目录下和上一个用户的配置。加-了会到该目录的家目录下,以及会加载该用户配置文件,这样才能彻底切换用户。 # 没加 - [root@long1 ~]# su longlong01 # 没有- [longlong01@long1 root]$ # 加 - [root@long1 ~]# su - longlong01 # 有 - [longlong01@long1 ~]$ # 临时用另外的用户身份去创建一条命令但是不用切换用户:su - -c "ccc" uuu [root@long1 ~]# su - -c "touch /home/longlong02/susu.txt" longlong02 # 以root身份 [root@long1 ~]# ls -l /home/longlong02 -rw-rw-r--. 1 longlong02 longlong02 0 8月 16 10:36 susu.txt # 文件为longlong02创建
- 切换用户-bash-4.2$ 问题:那是因为该用户没有家目录,用usermod命令设置用户家目录就可以了。
# 情况一:原用户把家目录路径换到别的地方 # 解决办法:把家目录路径切换回来 [longlong01@long1 ~]$ su - longlong02 -bash-4.2$ 登出 [root@long1 ~]# usermod -d /home/longlong02 longlong02 [root@long1 ~]# su - longlong02 [longlong02@long1 ~]$ # 情况二:切换家目录了缺少配置文件 # 找到系统默认配置文件 [root@long1 ~]# ls -la /etc/skel/ drwxr-xr-x. 2 root root 62 6月 28 21:11 . drwxr-xr-x. 76 root root 8192 8月 16 10:34 .. -rw-r--r--. 1 root root 18 8月 3 2016 .bash_logout # -rw-r--r--. 1 root root 193 8月 3 2016 .bash_profile # -rw-r--r--. 1 root root 231 8月 3 2016 .bashrc # [root@long1 ~]# cp /etc/skel/.bash* /home/longlong02 # 拷贝这三个文件 [root@long1 ~]# chown -R longlong02:longlong02 /home/longlong02 # 更改所有组与所有者 [root@long1 ~]# su - longlong02 [longlong02@long1 ~]$
3.8 sudo命令
可以让A用户临时有B用户的身份或者root用户的身份。
- visudo:可以查看sudo配置文件
...... # 找到这一句;用户longlong02,longlong01为自己添加 ## Allow root to run any commands anywhere root ALL=(ALL) ALL #用户 略 获得哪个用户权限 可使用所有命令 longlong02 ALL=(ALL) ALL #用户 略 获得root用户权限 可使指定命令 longlong01 ALL=(root) /bin/ls, /bin/mv, /bin/cat ==LONG_CMD(可以把内容替换成这个,以为下面设置了命令别名包含了这些命令)== VVV LONG_CMD 往下看VVV #用户 略 获得root用户权限 不用输入密码 可使指定命令 longlong03 ALL=(root) NOPASSWD: /bin/ls, /bin/mv, /bin/cat ...... ## Host Aliases # 组库 组名(自己添加) # Host_Alias FILESERVERS = fs1, fs2 ...... ## User Aliases # 用户库 用户名(自己添加) # User_Alias ADMINS = jsmith, mikem ...... ## Networking # 命令别名 命令库 自己添加的命令 # Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool ==Cmnd_Alias LONG_CMD = /bin/ls, /bin/mv, /bin/cat== (==自己添加的==) ...... # ":set nu":可以查看行数 # 编辑完输入":wq"退出
- which ccc:查看命令位置
[root@long1 ~]# which su /bin/su
- sudo用法
[longlong01@long1 ~]$ ls /root ls: 无法打开目录/root/: 权限不够 [longlong01@long1 ~]$ sudo ls /root/ 1.txt 2.txt anaconda-ks.cfg Readme.txt
3.9 限制root远程登录
- visudo:可以查看sudo配置文件
...... ## User Aliases # # User_Alias ADMINS = jsmith, mikem User_Alias LONGS = LONG01, LONG02, LONG03 # 自己添加 ...... ## Allow root to run any commands anywhere root ALL=(ALL) ALL # (执行这个命令不需要输入密码) LONGS ALL=(ALL) NOPASSWD: /usr/bin/su # 自己添加 # 编辑完使用效果如下,登录root不用输入密码 [root@long1 ~]# su - longlong01 上一次登录:三 8月 16 10:32:32 CST 2017pts/0 上 [longlong01@long1 ~]$ sudo su - 上一次登录:三 8月 16 20:52:22 CST 2017从 192.168.227.1pts/1 上 [root@long1 ~]# [root@long1 ~]# vi /etc/ssh/sshd_config # 编辑配置文件,使root用户不能直接登录,只能用普通用户 ...... #LoginGraceTime 2m #PermitRootLogin yes # 改成PermitRootLogin no(不允许root用户登录,记得去掉#) ...... [root@long1 ~]# systemctl restart sshd.service # 重启服务 [longlong01@long1 ~]$ sudo su - root # 这样可以登录root用户