一、su命令
su命令用于切换当前用户身份到其他用户身份。有点像windows下的注销再登陆。
命令语法:
su -选项 - 用户名
选项:
-c<指令>或--command=<指令>:执行完指定的指令后,即恢复原来的身份;
-f:适用于csh与tsch,使shell不用去读取启动文件;
-l:改变身份时,也同时变更工作目录,以及HOME,SHELL,USER,logname。此外,也会变更PATH变量;
-m,-p或--preserve-environment:变更身份时,不要变更环境变量;
-s<shell>或--shell=<shell>:指定要执行的shell;
示例:
1、切换到其他用户身份,包括更改至其家目录,shell。
注意圈内的横杠不能少,否侧切换后仍然在root的家目录下。
2、以其他用户身份执行一条命令
注意我们以用户xuexi1的身份新建了一个txt,他与其他root用户建立的文件的属主的区别。
3、切换到一个没有家目录的用户及解决无shell配置文件的问题
先新建一个无家目录的用户
切换后发现没有shell
首先切换回root给这个用户新建家目录
然后把相关的文件拷贝过来
更改下文件属组
ok!
su命令总结:
a、普通用户切换到root用户,可使用su -或su - root。必须输入root密码才能完成切换。
b、root用户切换到普通用户,可使用“su - 普通用户名”的写法。不需要输入任何密码就能完成切换。切换到普通用户后,在执行一些命令如ifconfig时,可能会遭遇到环境变量PATH路径问题而找不到某些系统命令(一般是/sbin,/usr/sbin等下面的命令),这时就需要将普通用户的PATH,配置成root的PATH内容。
c、如果仅希望在某用户下执行命令,而不直接切换到该用户下操作,可以使用 su - 用户名 -c "命令"的方式。
二、sudo命令
sudo命令用来以其他身份来执行命令,预设的身份为root。在/etc/sudoers中设置了可执行sudo指令的用户。若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码。
使用该命令必须首先运行visudo命令配置sudo文件。
使用visudo命令进入系统的配置文件,找到root ALL(ALL)行,
其中第一个是你要授权的目标,可以是用户,也可以是用户组,中间这个不要动(具体含义待深入研究),第三列中的ALL改成你想要这个用户可以执行的命令,比如(此处与教材有出入!)
注意命令之间用","隔开,逗号前要有一个空格,命令要用绝对路径。
然后可以:wq保存了,visudo还会帮你校验语法。
示例:
1、使用user2用户使用sudo命令
没权限
sudo
2、如果给用户授权了su命令 ,那么可以用sudo su -命令切换到root
你直接用这条命令会提示输入root用户密码。
sudo su -,只用user2的密码就能切换到root了。
三、限制root远程登录
注意,只能限制sshd远程登陆,本地无法限制root登陆
1、更改sshd的config文件
2、找到permitrootlogin项把他改成no并删掉前面的#号使他生效。
3、重启sshd服务
这时你就不能再用远程直接登陆root账户了。
本文转自 whytl 51CTO博客,原文链接:http://blog.51cto.com/11934539/2055339