su命令
作用是切换用户
su的优缺点;
su 的确为管理带来方便,通过切换到root下,能完成所有系统管理工具,只要把root的密码交给任何一个普通用户,他都能切换到root来完成所有的系统管理工作;但通过su切换到root后,也有不安全因素;比如系统有10个用户,而且都参与管理。如果这10个用户都涉及到超级权限的运用,做为管理员如果想让其它用户通过su来切换到超级权限的root,必须把root权限密码都告诉这10个用户;如果这10个用户都有root权限,通过root权限可以做任何事,这在一定程度上就对系统的安全造成了威协;所以su 工具在多人参与的系统管理中,并不是最好的选择,su只适用于一两个人参与管理的系统,毕竟su并不能让普通用户受限的使用;
- `su - username :从当前用户切换到某用户
[root@xxlinux-02 ~]# su testx [testx@xxlinux-02 root]$ pwd /root [testx@xxlinux-02 root]$ exit [root@xxlinux-02 ~]# su - testx 上一次登录:三 6月 28 22:06:03 CST 2017pts/0 上 [testx@xxlinux-02 ~]$ pwd /home/testx
-
的作用是彻底切换(包括用户配置文件、环境变量等)
su - -c “touch /tmp/xx.123" username
:在不切换到某用户的情况下以某用户身份执行touch命令
[root@xxlinux-02 ~]# su - -c "touch /tmp/test.txt" testx [root@xxlinux-02 ~]# ls -ld /tmp drwxrwxrwt. 8 root root 189 6月 28 22:16 /tmp [root@xxlinux-02 ~]# ls -l /tmp 总用量 0 drwx------. 3 root root 17 6月 28 19:59 systemd-private-32488dfe1eb4462ba166e3a341e81a7a-vmtoolsd.service-y0gMIC -rw-rw-r--. 1 testx testx 0 6月 28 22:16 test.txt
-c
:指定以某用户身份来执行某个命令
su -
:普通用户切换到 root 用户 (需要root用户密码)在某用户没有家目录的情况下使用
su - username
,以user02为例
1.切换到 user02 ,提示没有user02的家目录
[root@xxlinux-02 ~]# su - user02 上一次登录:三 6月 28 22:11:15 CST 2017pts/0 上 su: 警告:无法更改到 /home/user02 目录: 没有那个文件或目录 -bash-4.2$ 登出
- 为user02创建家目录,更改家目录所属主和所属组,这个时候 /home/user02 下没有任何文件
[root@xxlinux-02 ~]# id user02 uid=1004(user02) gid=1004(user02) 组=1004(user02) [root@xxlinux-02 ~]# mkdir /home/user02 [root@xxlinux-02 ~]# chown user02:user02 /home/user02 [root@xxlinux-02 ~]# ls !$ ls /home/user02 [root@xxlinux-02 ~]# ls -la !$ ls -la /home/user02 总用量 0 drwxr-xr-x. 2 user02 user02 6 6月 28 22:22 . drwxr-xr-x. 6 root root 57 6月 28 22:22 ..
- 复制一份配置文件到 /home/user02 下,然后切换到user02 后即可
[root@xxlinux-02 ~]# cp /etc/skel/.bash* /home/user02 [root@xxlinux-02 ~]# ls -la /home/user02 总用量 12 drwxr-xr-x. 2 user02 user02 62 6月 28 22:30 . drwxr-xr-x. 6 root root 57 6月 28 22:22 .. -rw-r--r--. 1 root root 18 6月 28 22:30 .bash_logout -rw-r--r--. 1 root root 193 6月 28 22:30 .bash_profile -rw-r--r--. 1 root root 231 6月 28 22:30 .bashrc [root@xxlinux-02 ~]# su - user02 上一次登录:三 6月 28 22:19:32 CST 2017pts/0 上 [user02@xxlinux-02 ~]$
sudo命令
让普通用户临时使用指定用户(通常为root用户)的身份去执行命令
sudo 的适用条件:
由于su 对切换到超级权限用户root后,权限的无限制性,所以su并不能担任多个管理员所管理的系统。如果用su 来切换到超级用户来管理系统,也不能明确哪些工作是由哪个管理员进行的操作。特别是对于服务器的管理有多人参与管理时,最好是针对每个管理员的技术特长和管理范围,并且有针对性的下放给权限,并且约定其使用哪些工具来完成与其相关的工作,这时我们就有必要用到 sudo。
通过sudo,我们能把某些超级权限有针对性的下放,并且不需要普通用户知道root密码,所以sudo 相对于权限无限制性的su来说,还是比较安全的,所以sudo 也能被称为受限制的su ;另外sudo 是需要授权许可的,所以也被称为授权许可的su;
sudo 执行命令的流程是当前用户切换到root(或其它指定切换到的用户),然后以root(或其它指定的切换到的用户)身份执行命令,执行完成后,直接退回到当前用户;而这些的前提是要通过sudo的配置文件/etc/sudoers来进行授权
例如:
当使用普通用户时:
[user02@xxlinux-02 ~]$ ls /root ls: 无法打开目录/root: 权限不够
可以通过sudo命令来实现,编辑sudo配置文件,如下:
visudo :编辑sudo的配置文件 /etc/sudoers.tmp (这个命令的好处是可以检测语法错误)
:set nu
显示行号
找到
## Allow root to run any commands anywhere (允许root用户在任何地方执行任何命令) root ALL=(ALL) ALL
如果想让 user02 也有 root 同样的权限,需要在下面加上一条规则,保存退出
## Allow root to run any commands anywhere root ALL=(ALL) ALL user02 ALL=(ALL) ALL
1) user02 表示需要拥有权限的用户 2) 第一个 ALL 表示在任何环境下 3) 第二个 ALL 表示user02获得任何用户的权限 4) 第三个 ALL 表示所有命令
如果需要多个命令,命令需要绝对路径,且用“ ,”隔开,“,”后还需要空格,然后使用 ‘ sudo /usr/bin/ls /root ' 就可以了(这里的命令可以不用绝对路径)
第一次使用时需要输入当前用户密码
[user02@xxlinux-02 ~]$ sudo ls /root We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. [sudo] password for user02:
如果不想输入密码,则需要修改如下:
## Allow root to run any commands anywhere root ALL=(ALL) ALL user02 ALL=(ALL) NOPASSWD: /usr/bin/ls, /usr/bin/cat
限制root用户远程登陆
让普通用户拥有切换到root用户的权限
1.给普通用户做一个别名 visudo --> User_Alias ADSL= testx, user01, user02
## User Aliases ## These aren't often necessary, as you can use regular groups ## (ie, from files, LDAP, NIS, etc) in this file - just use %groupname ## rather than USERALIAS # User_Alias ADMINS = jsmith, mikem User_Alias ADSL = testx, user01, user02
2.添加规则,保存退出
## Allow root to run any commands anywhere root ALL=(ALL) ALL ADSL ALL=(ALL) NOPASSWD: /usr/bin/su
3.普通用户切换到root
[root@xxlinux-02 ~]# su - testx 上一次登录:三 6月 28 22:16:40 CST 2017pts/0 上 [testx@xxlinux-02 ~]$ sudo su - root 上一次登录:四 6月 29 23:03:40 CST 2017从 192.168.242.1pts/0 上 [root@xxlinux-02 ~]#
如何限制root远程登录:
vi /etc/ssh/sshd_config
找到 #PermitRootLogin yes 改为 PermitRootLogin no
重启ssh服务 systemctl restart sshd_service 即完成限制
来源:https://www.cnblogs.com/zhouyixuan/p/7555027.html