分类: LINUX
2011-04-15 13:35:12
1、su(这个指令有个前提,必须是知道root的密码才可以切换)
(1)、用root来初始登录时
[root@localhost ~]# su - ethnicity(切换到普通用户无需输入密码)
[ethnicity@localhost ~]$ exit(直接exit就能返回root用户的模式)
logout
[root@localhost ~]#
(2)、以普通用户登录时
[ethnicity@localhost ~]$ su -(-后什么都不跟,代表切入到root用户模式,如下例需要输入root的密码的)
Password:
[root@localhost ~]# exit(返回的话直接exit即可返回)
logout
[ethnicity@localhost ~]$
[ethnicity@localhost ~]$ su - wanyan(切换到其他的普通用户时,也许输入其他用户的密码)
Password:
[wanyan@localhost ~]$ exit(这个是退出)
logout
[ethnicity@localhost ~]$
2、sudo(这个指令在授权之后无需即时输入root的密码)
[root@localhost ~]# ll /etc/sudoers (sudo的控制档,通过设置这个文档就可以实现对普通用户的授权,但是系统不主张直接修改这个十分敏感的档案,所以系统提供指令sudo来完成相关的设置)
-r--r----- 1 root root 3332 Mar 17 14:45 /etc/sudoers
(1)、在不切换模式的情况下实现某些用户的操作
[root@localhost ~]# sudo -u wanyan mkdir wanyan(用户wanyan试图在root的家目录下建立名为wanyan的目录)
mkdir: cannot create directory `wanyan': Permission denied(由于权限,这个目录的拥有者是root,自然不能建立)
[root@localhost ~]# cd /tmp(但是跑到这里就可以了,因为/tmp的权限是777,即other也可以在下边进行相关的操作)
[root@localhost tmp]# sudo -u wanyan mkdir wanyan
[root@localhost tmp]# ll(看下边目录的拥有者就是wanyan)
drwxr-xr-x 2 wanyan wanyan 4096 Mar 17 17:48 wanyan
[wanyan@localhost ~]$ cat /etc/shadow(普通用户无权查看/etc下的shadow这个用户的密码档)
cat: /etc/shadow: Permission denied
[wanyan@localhost ~]$ sudo -u root cat /etc/shadow(这样就可以查看了,通过sudo获得root的权限)
(2)、通过附加组的设置(wheel这个用户组)
[wanyan@localhost ~]$ passwd (普通用户修改自己的密码,因为suid的原因是可以操作的)
下边介绍实现wanyan这个普通用户可以passwd,ethnicity这个普通用户
[wanyan@localhost ~]$ passwd ethnicity(这里显示是不能操作的,只有root可以)
passwd: Only root can specify a user name.
[root@localhost ~]# visuo(编辑设置档)
%wheel ALL=(ALL) NOPASSWD: ALL(把此两行前的注释拿掉)
%wheel ALL=(ALL) ALL
[root@localhost ~]# usermod -a -G wheel wanyan (把wanyan这个用户加入到那个用户组中去)
[wanyan@localhost ~]$ sudo passwd ethnicity(这样wanyan这个用户就可以修改其他人的密码了,修改root的密码也是可以实现的)
Changing password for user ethnicity.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[wanyan@localhost ~]$ sudo passwd(看下边连root的密码都能修改,这么一来岂不是很不安全)
Changing password for user root.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
(3)、使用户不加入组wheel的设置
[root@localhost ~]# visudo(通过下边的设置用户ethnicity就可以获得root的一切权限)
ethnicity ALL=(root) ALL
[ethnicity@localhost ~]$ sudo cat /etc/shadow(通过加上sudo就相当于获得root的权限)
[ethnicity@localhost ~]$ sudo passwd(当然也可以修改root的密码,自然也可以修改其他用户的密码)
[sudo] password for ethnicity:
Changing password for user root.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
由于可以修改root的密码是一件很危险的事情,所以下边的操作是阻止这个动作
[root@localhost ~]# visuo(修改以上的那个动作,把用于root的操作给它拿掉,即不能#passwd root)
ethnicity ALL=(root) !/usr/bin/passwd, /usr/bin/passwd[A-Za-z]*, \
!/usr/bin/passwd root
[ethnicity@localhost ~]$ sudo passwd(看,这么就不可以了,但是修改普通用户的密码的操作还是可以的)
Sorry, user ethnicity is not allowed to execute '/usr/bin/passwd' as root on localhost.localdomain.
(4)、通过别名来设置visudo,适合授权给多个用户时使用
这里先介绍相关指令(一下的别名中字符一定要大写)
Host_Alias:设置主机群列表(Host_Alias 主机群别名=主机1,主机2,主机3.......)
User_Alias:设置用户群列表(User_Alias 用户群别名=用户1,用户2,用户3.........)
Cmnd_Alias:使用命令群列表(Cmnd_Alias 命令群别名=命令1.,命令2,命令3.........)
[root@localhost ~]# visudo(添加以下的内容)
User_Alias USERLIST =wanyan1,wanyan2,wanyan,wanyan4
Cmnd_Alias CMDLIST = !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, \
!/usr/bin/passwd root
USERLIST ALL=(root) CMDLIST