su命令
su - user1 //彻底切换用户,如果没有加“-”,切换用户不彻底。
su -c "touch /tmp/1.txt" user1 //在不登录用户user1的情况下,以user1的身份在tmp目录下创建文件1.txt
PS:当切换到一个没有家目录的用户时,可以在root用户下
1. mkdir /home/username //创建用户家目录
2. chown username:username /home/username //修改username目录的所有者以及所属组
3. cp /etc/skel/.bash* /home/username //skel是系统模板目录,将skel目录下的.bash配置文件拷贝到username目录下
4. chown -R username:username /home/username/ //将目录下的子目录和文件批量的更改所有者和所有组为username
5. su - username 再次切换到该用户后就可正常使用。
sudo命令
sudo命令:可以让普通用户临时去执行一条命令,以指定用户的身份去执行,通常情况下是给普通用户授权root用户的身份。
visudo命令:可以查看sudo的配置文件。实际上打开的也是/etc/sudoers配置文件。PS:用vi去修改,如果有语法错误是不会检测到,用visudo有语法错误会检测到,建议使用visudo修改。
限制root远程登录
无需root用户密码,在普通用户下直接登录root用户(但是权限有点大,直接跳到root用户下,可以改用户root密码,改了密码就可以直接远程登录root)
使用命令visudo修改配置文件
把root用户远程登录的功能限制
1. vi /etc/ssh/sshd_config
2. 在配置文件里打 /Root 搜索
3.如下图中修改
4. 修改完配置文件需重启服务,命令:systemctl restart sshd.service
5. 弄完之后只能远程登录普通用户,不能远程直接登录root用户。
6. 但是可以在普通用户下,根据上面visudo的配置后,使用命令:sudo su - 登录root用户。
su和sudo的区别:
su 的确为管理带来方便,通过切换到root下,能完成所有系统管理工具,只要把root的密码交给任何一个普通用户,他都能切换到root来完成所有的系统管理工作,普通用户可以通过root权限可以做任何事,这在一定程度上就对系统的安全造成了威协。
由于su 对切换到超级权限用户root后,权限的无限制性,所以su并不能担任多个管理员所管理的系统。如果用su 来切换到超级用户来管理系统,也不能明确哪些工作是由哪个管理员进行的操作。特别是对于服务器的管理有多人参与管理时,最好是针对每个管理员的技术特长和管理范围,并且有针对性的下放给权限,并且约定其使用哪些工具来完成与其相关的工作,这时我们就有必要用到 sudo。
通过sudo,我们能把某些超级权限有针对性的下放,并且不需要普通用户知道root密码,所以sudo 相对于权限无限制性的su来说,还是比较安全的,所以sudo 也能被称为受限制的su 。
扩展:
sudo -i 也可以登录到root吗? http://www.apelearn.com/bbs/thread-6899-1-1.html