分类: LINUX
2010-02-25 11:55:42
su&sudo
su 用户间的切换工具
用法
su 【potion】username
su 不加任何参数默认是切换到root用户但并不更改当前的环境变量
su – 默认切换到root用户但改变环境变量。
su – username 切换到某个用户如果是root用户切换到其他用户则不需要密码反之则需要。
su –c username 暂时以某个用户的身份执行命,令执行完后自动退出。
su 的确为管理带来方便,通过切换到root下,能完成所有系统管理工具,只要把root的密码交给任何一个普通用户,他都能切换到root来完成所有的系统管理工作;但通过su切换到root后,也有不安全因素。由于su 对切换到超级权限用户root后,权限的无限制性,如果用su 来切换到超级用户来管理系统,也不能明确哪些工作是由哪个管理员进行的操作。特别是对于服务器的管理有多人参与管理时,最好是针对每个管理员的技术特长和管理范围,并且有针对性的下放给权限,并且约定其使用哪些工具来完成与其相关的工作,这时我们就有必要用到 sudo。
sudo 用其他用户的身份执行命令execute a command as another user
别名规则定义格式如下:
别名类型(Alias_Type):别名类型包括如下四种
• There are four kinds of aliases: User_Alias, Runas_Alias, Host_Alias and Cmnd_Alias.
Host_Alias 定义主机别名;
User_Alias 用户别名,别名成员可以是用户,用户组(前面要加%号)
Runas_Alias 用来定义runas别名, sudo 允许切换至的用户;
Cmnd_Alias 定义命令别名;
• Alias_Type NAME = item1, item2, …
1Alias_Type is one of User_Alias, Runas_Alias, Host_Alias, or Cmnd_Alias
3It is possible to put several alias definitions of the same type on a single line, joined by a colon (’:’).
-Alias_Type NAME = item1, item2, item3 : NAME = item4, item5
NAME 就是别名了,NMAE的命名是包含大写字母、下划线以及数字,但必须以一个大写字母开头。
user_alias NAME=user_list
• 1one or more usernames直接跟多个人名
• 2system groups (prefixed with ’%’)直接系统组前边加个%
• 3netgroups (prefixed with ’+’) 网络组前边加个+
• 4other aliases
Each list item may be prefixed with one or more ’!’ operators.
User_Alias DBA=natasha,mary,%dba人名和组一起
User_Alias SA=windy,peter,DBA
runas_alias
• 和用户别名一样跟uid是加个#号,当两个用户名有相同的uid是只匹配定义的那个要想让两个都匹配则用uid代替,组也一样,eg:Runas_Alias OPER=root,%wheel,#555
host_alias
有多个用户名,ip地址或网段 +网络组 ,组成
Netmask
CIDR or 192.168.0.0/24
standard IP address notation 192.168.0.0/255.255.255.0
192.168.0.0不加掩码是自动匹配
eg :Host_Alias SERVERS=192.168.1.2, 192.168.1.32/27
cmnd_alias
命令别名下的成员必须是文件或目录的绝对路径;命令别名有点长,可以通过 \ 号断行
eg Cmnd_Alias SHELLS = /usr/bin/sh, /usr/bin/csh, /usr/bin/ksh, \
/usr/local/bin/tcsh, /usr/bin/rsh, \
/usr/local/bin/zsh
但在动作之前也可以指定切换到特定用户下,在这里指定切换的用户要用( )号括起来,如果不需要密码直接运行命令的,应该加NOPASSWD:参数,
说了这么多规则在哪添加呢?
在这儿 /etc/sudoers 但是你不要试图用vi编辑器来直接打开编辑它,有一个专用命令visudo,visudo默认的是在vi里打开配置文件,用vi来修改文件。我们可以在编译时修改这个默认项。visudo不会擅自保存带有语法错误的配置文件,它会提示你出现的问题,并询问该如何处理,就像:
>>> sudoers file: syntax error, line13 <<< FONT>
此时我们有三种选择:键入“e”是重新编辑,键入“x”是不保存退出,键入“Q”是退出并保存。如果真选择Q,那么sudo将不会再运行,直到错误被纠正。
sudo命令用法
-V 显示版本编号
-h 会显示版本编号及指令的使用方式说明
-l 显示出自己(执行 sudo 的使用者)的权限
-v 因为 sudo 在第一次执行时或是在 N 分钟内没有执行(N 预设为五)会问密码,这个参数是重新做一次确认,如果超过 N 分钟,也会问密码
-k 将会强迫使用者在下一次执行 sudo 时问密码(不论有没有超过 N 分钟)
-b 将要执行的指令放在背景执行
-p prompt 可以更改问密码的提示语,其中 %u 会代换为使用者的帐号名称, %h 会显示主机名称
-u username/#uid 不加此参数,代表要以 root 的身份执行指令,而加了此参数,可以以 username 的身份执行指令(#uid 为该 username 的使用者号码)
-s 执行环境变数中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell
-H 将环境变数中的 HOME (家目录)指定为要变更身份的使用者家目录(如不加 -u 参数就是系统管理者 root )
command 要以系统管理者身份(或以 -u 更改为其他人)执行的指令