3.7 su命令
- su用于切换用户
#命令中有无-的区别;无-切换用户还会在上一个用户的家目录下和上一个用户的配置。加-了会到该目录的家目录下,以及会加载该用户配置文件,这样才能彻底切换用户。 # 没加 - [[email protected] ~]# su longlong01 # 没有- [[email protected] root]$ # 加 - [[email protected] ~]# su - longlong01 # 有 - [[email protected] ~]$ # 临时用另外的用户身份去创建一条命令但是不用切换用户:su - -c "ccc" uuu [[email protected] ~]# su - -c "touch /home/longlong02/susu.txt" longlong02 # 以root身份 [[email protected] ~]# ls -l /home/longlong02 -rw-rw-r--. 1 longlong02 longlong02 0 8月 16 10:36 susu.txt # 文件为longlong02创建
- 切换用户-bash-4.2$ 问题:那是因为该用户没有家目录,用usermod命令设置用户家目录就可以了。
# 情况一:原用户把家目录路径换到别的地方 # 解决办法:把家目录路径切换回来 [[email protected] ~]$ su - longlong02 -bash-4.2$ 登出 [[email protected] ~]# usermod -d /home/longlong02 longlong02 [[email protected] ~]# su - longlong02 [longlo[email protected] ~]$ # 情况二:切换家目录了缺少配置文件 # 找到系统默认配置文件 [[email protected] ~]# 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 # [[email protected] ~]# cp /etc/skel/.bash* /home/longlong02 # 拷贝这三个文件 [[email protected] ~]# chown -R longlong02:longlong02 /home/longlong02 # 更改所有组与所有者 [[email protected] ~]# su - longlong02 [[email protected] ~]$
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:查看命令位置
[[email protected] ~]# which su /bin/su
- sudo用法
[[email protected] ~]$ ls /root ls: 无法打开目录/root/: 权限不够 [[email protected] ~]$ 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不用输入密码 [[email protected] ~]# su - longlong01 上一次登录:三 8月 16 10:32:32 CST 2017pts/0 上 [[email protected] ~]$ sudo su - 上一次登录:三 8月 16 20:52:22 CST 2017从 192.168.227.1pts/1 上 [[email protected] ~]# [[email protected] ~]# vi /etc/ssh/sshd_config # 编辑配置文件,使root用户不能直接登录,只能用普通用户 ...... #LoginGraceTime 2m #PermitRootLogin yes # 改成PermitRootLogin no(不允许root用户登录,记得去掉#) ...... [[email protected] ~]# systemctl restart sshd.service # 重启服务 [[email protected] ~]$ sudo su - root # 这样可以登录root用户