Backgound:
   Developer have 2 account: edw_xtr,ts. They want to aovid input password when they switch account between edw_xtr and ts.
Procedure:
   1. Download sudo software from below address and select the latest one.
http://www.courtesan.com/sudo/download.html
sudo-1.7.10-8.aix53.pam.rpm
   2. Install sudo software.
bash-3.2# rpm -ivh sudo-1.7.10-8.aix53.pam.rpm
sudo                        ##################################################
bash-3.2#
   3. vi /etc/sudoers and add below items.
edw_xtr ALL=(root) NOPASSWD:/bin/su - ts
ts ALL=(root) NOPASSWD:/bin/su - edw_xtr

   4. Test
ts@suzdrprd007:>> sudo su - edw_xtr
ORACLE_BASE environment variable is not being set since this
information is not available for the current user ID edw_xtr.
You can set ORACLE_BASE manually if it is required.
edw_xtr@suzdrprd007:>> id
uid=1015(edw_xtr) gid=101(softdev) groups=1(staff)
edw_xtr@suzdrprd007:>>
edw_xtr@suzdrprd007:>> sudo su - ts

SIDS on this machine are:           pic
ORACLE_BASE environment variable is not being set since this
information is not available for the current user ID ts.
You can set ORACLE_BASE manually if it is required.
ts@suzdrprd007:>> id
uid=1014(ts) gid=101(softdev) groups=1(staff)
ts@suzdrprd007:>>
 


#########

NOPASSWORD是不输入密码,如果没有这个,那么要输入自己的密码。还是要输入密码。 加上NOPASSWORD就不用输入密码了。



######################网上查找的资料###########



######################网上查找的资料###########


2. 真正的sudo entry
这个就是真正配置哪些用户可以使用哪些命令了(你甚至可以不使用别名设置那部分)。
格式为:用户名(用户别名) 主机名(主机别名)=[(运行用户或是Runas_Alias)可选] [tag可选]  可以执行的命令(或Cmmd_Alias)  这样描述语法很生硬,不易理解,举例子
user1  host1 = /bin/kill                                                                              #user1 可以在host1上使用命令/bin/kill
user1  host1 = NOPASSWD: /bin/kill                                                     # user1可以在host1上使用命令/bin/kill 同时可以不必输入密码(这里就是使用了NOPASSWD
                                                                                                                      # 这个tag,默认是PASSWD)
user1  host1 = NOPASSWD: /bin/kill , PASSWORD: /bin/ls              # user1 可以在host1上使用命令/bin/kill无需输入密码,但是使用/bin/ls则需要输入密码
user1  host1 = (opterator)/bin/kill                                                          #user1 可以在host1上使用命令/bin/kill但是必须是以operator用户运行这个命令,等价于
                                                                                                                      # su -u opertor /bin/kill
user1  host1 = (:group_name)/bin/kill                                                 # user1可以在host1上使用命令/bin/kill,且必须以group_name这个用户群组里面的用户来运行。

%group_name host1 = /bin/kill                                                              #所有group_name里面的用户都可以在host1上执行/bin/kill(linux中一般代表整个用户群组用

                                                                                                                     # %group_name)


再举个实际例子,我之前对sudo su这个命令不理解,为什么我可以直接就su到root用户了呢,连密码都不需要?查看了一下sudoers文件才知道原来里面有这么一行:
xxx     ALL=NOPASSWD: /bin/su


















10-10 00:05