标签:sudo
sudo:授权之后,能够让某用户在不知道其他用户密码情况下以另外一个用户的身份(默认为管理员)运行命令;管理员可以指派某些用户可以执行某些特定命令。
它的特性主要有这样几点:
Sudo能够限制用户只在某台主机上运行某些命令。
Sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器。
Sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得了一张存活期为5分钟的票(这个值可以在编译的时候改变)。
Sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoers,属性为0440
配置文件:sudoers
语法 who which_host=(whom) command
root ALL=(ALL) ALL
%wheel ALL=(ALL) ALL
who: 运行命令者的身份,user
where: 通过哪些主机,host
(whom):以哪个用户的身份, runas---默认为root
which: 运行哪些命令,command
配置项:
users hosts=(runas) commands
users定义方式:
username
#uid
user_alias
%group_name
%#gid
host定义方式
ip
hostname
netaddr
command定义方式
command name
directory
sudoedit
以lee的身份使用sudo fdisk -l命令,没有输出,并且告知lee不在sudoerfile中,并且邮件报告此事件给root
执行了usermod -G wheel lee(把lee用户加入到wheel组后):执行命令成功,因为上面配置文件中,我们定义了wheel组里的所有人都可以通过所有主机连接进来执行所有命令:
上面的方式也可通过在配置文件中添加 lee ALL=(ALL) fdisk -l实现
Alias_Type NAME = item1, item2, ...
NAME: 必须使用全大写字母;
Alias_Type:
User_Alias
Host_Alias
Runas_Alias
Cmnd_Alias
示例:
在配置文件中定义了用户别名NETADMIN,定义了命令别名NETADMINCMNDS,然后定义NETADMIN里的用户只能执行NETADMINCMNDS里的命令,所以netuser1和netuser2只可以通过sudo执行ip命令
下面配置定义了USERADMIN定义的用户可以不输入密码执行USERADMINCMNDS里的命令,但是,执行passwd时不能加root参数(就是不能改管理员密码)
# sudo [-u user] COMMAND
选项:
-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 更改为其他人)执行的指令
本文出自 “明天过后” 博客,请务必保留此出处http://leeyan.blog.51cto.com/8379003/1697241
标签:sudo
原文地址:http://leeyan.blog.51cto.com/8379003/1697241