日积月累:Linux上相关su和sudo的命令和技巧

一直以普通用户身份使用Unix/Linux,最近有机会在Microsoft Azure上搭建自己的Linux服务器,需要使用root权限安装软件和修改配置。这篇笔记总结一些相关的命令和技巧。

环境:在Azure的虚拟机中运行Ubuntu 14.04, 在安装Ubuntu过程中,指定的用户名为azureuser。

1. 缺省情况下,Ubuntu禁用root用户,可用sudo临时获取执行root相关命令的权限。为了让azureuser能够执行sudo,该用户要被包含在sudoer列表中(/etc/sudoers 或 /etc/sudoers.d)。
2. 可用“sudo passwd root”设置root的口令并使能root用户。
3. 可用“sudo passwd -l root”和“sudo passwd -u root”锁定(lock)和解锁(unlock)root的口令。
4. 可修改 /etc/pam.d/su 控制用户能否执行su命令。

实例:
azureuser@vmname01:~$ sudo cat /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d
vnc ALL=(ALL)       ALL
 
azureuser@vmname01:~$ sudo ls -lrt /etc/sudoers.d
total 8
-r--r----- 1 root root 958 Feb 10  2014 README
-r--r----- 1 root root 129 Oct  1 16:31 90-cloud-init-users		 

azureuser@vmname01:~$ sudo cat /etc/sudoers.d/90-cloud-init-users
# Created by cloud-init v. 0.7.5 on Wed, 01 Oct 2014 16:31:58 +0000

# User rules for azureuser
azureuser ALL=(ALL) NOPASSWD:ALL				# azureuser可以无须用户口令执行sudo命令
azureuser@vmname01:~$ sudo passwd -l root			# 锁定root的口令,无法切换为root
passwd: password expiry information changed.

azureuser@vmname01:~$ su -
Password: 
su: Authentication failure

azureuser@vmname01:~$ sudo passwd -u root			# 解锁root的口令,可以切换为root	
passwd: password expiry information changed.

azureuser@vmname01:~$ su -					
Password: 
root@vmname01:~# whoami;pwd;echo $HOME
root
/root
/root
root@vmname01:~# exit
logout

azureuser@vmname01:~$ su
Password: 
root@vmname01:/home/azureuser# whoami;pwd;echo $HOME	# 对于su - 和 su,当前目录不同
root
/home/azureuser						
/root
root@vmname01:/home/azureuser# exit
exit

azureuser@vmname01:~$ sudo su -
root@vmname01:~# whoami;pwd;echo $HOME
root
/root
/root
root@vmname01:~# exit
logout
azureuser@vmname01:~$ sudo -i				# sudo -i 等同于 sudo su -
root@vmname01:~# whoami;pwd;echo $HOME
root
/root
/root
root@vmname01:~# exit
logout
azureuser@vmname01:~$ sudo -s
root@vmname01:~# whoami;pwd;echo $HOME			# sudo -s当前目录和$HOME未改变
root
/home/azureuser
/home/azureuser
root@vmname01:~# 

常用命令:
sudo: "superuser do"   需要输入用户口令
su: "switch user"         需要输入root口令

"su":                切换成root用户的shell环境
"su -":              切换成root用户的登陆后shell环境
"sudo su -":     得到root用户的登陆后的shell环境
"sudo -i":         等同“sudo su -”
"sudo -s":        启动一个root用户的shell环境    
注:可以执行whoami,pwd,echo环境变量($PATH, $HOME, #SHELL等)比较上述命令的区别。
在不同的Linux和环境设置下,输出有可能不同。        

参考:
In Unix, what are the sudo and su commands?    https://kb.iu.edu/d/amyi
root Defintion                http://www.linfo.org/root.html
Sudoers                       https://help.ubuntu.com/community/Sudoers
Understanding PAM      http://aplawrence.com/Basics/understandingpam.html 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值