您的位置:首页 > 运维架构 > Linux

Sudo 用户权限管理

2014-02-15 23:08 405 查看
工具介绍:

Sudo是一个允许系统管理员授权让普通用户执行部分或全部root命令的工具。这样可以减少root登录提高系统安全性。

主要功能:

可以限制特定的用户在特定的主机上运行指定的命令

有非常详细的日志记录

Sudo使用时间戳文件来执行类似检票系统。当用户使用sudo并输入密码后,用户默认获得了一张存活期为5分钟的票(这个数值可以在编译的时候更改),超过5分钟不用的话,就需要重新输入密码才可以使用

配置文件:/etc/sudoers

1.配置格式:

用户/组 主机=(以何种身份来执行命令) 命令

2.主机别名

格式:Host_Alias SERVER=192.168.1.1/255.255.255.0

例:Host_Alias SERVER=192.168.1.22

3.用户别名

格式:User_Alias ADMIN = test,jack,tom

例:User_Alias TEST = user1

4.命令别名

格式:Cmnd_Alias CAT = /bin/cat /etc/sudoers

例:Cmnd_Alias Ls = /bin/ls /root

5.增加日志记录功能

例:Defaults@SERVER log_host, logfile=/var/log/sudo.log

{为host alise 里的主机增加一个附加日志,如果这个日志需要保存多年,则可使用log_year,这样在日志记录的时候将记录详细的年份}

案例分析:

1.用户分类

A. 数据库用户[zabbix,mysql,discuz,appn]

B. Web服务器用户[nginx,apache,zabbix,discuz]

C. ftp服务器用户[ftp]

D. 系统管理员[baby,zhen]

2.命令

A. 所有用户拥有基本的操作命令(ls,cd,cat,pwd,history)

B. 数据库用户拥有基本的数据库操作命令

Mysql,mysqldump,。。。。。。

C. WEB服务器用户拥有对WEB目录进行操作的权限

不同的web操作不同的目录,及用户所属组。

3.服务类型

A. Web服务(nginx,apache)

B. ftp服务

C. 系统管理

D. 数据库服务

4.功能:

  A. (配置zhen可以执行所有的root命令,且使用sudo时不需要输入密码)

Zhen ALL=(ALL) NOPASSWD:ALL

  B. (配置test用户可以在SERVER执行cat /etc/sudoers,/cat /etc/shadow,ls

/root 命令)

Cmnd_Alias CT = /bin/cat /etc/sudoers,/bin/cat /etc/shadow

Cmnd_Alias CA = /bin/ls /root

test SERVER=CT,CA

  C.   (配置admin组用户可以在所有机器上执行所有命令)

%admin ALL=(ALL) ALL

  D. 增加日志记录功能

Defaults@SERVER log_host, logfile=/var/log/sudo.log

日志文件:

截取/var/log/sudo.log的一段纪录如下:

Mar 3 15:13:14 : test : HOST=redflag : command not allowed ; TTY=pts/0 ;

PWD=/home/test ; USER=root ; COMMAND=/bin/ls /root

Mar 3 15:13:18 : test : HOST=redflag : command not allowed ; TTY=pts/0 ;

PWD=/home/test ; USER=root ; COMMAND=/bin/su -

Mar 3 15:13:56 : test : HOST=redflag : TTY=pts/0 ; PWD=/home/test ; USER=root ;

COMMAND=/bin/cat /etc/sudoers

Sudo 命令的用法

sudo -h Help 列出使用方法,退出。

sudo -V Version 显示版本信息,并退出。

sudo -l List 列出当前用户可以执行的命令。只有在sudoers里的用户才能使用该选项。

sudo -u username|#uid User 以指定用户的身份执行命令。后面的用户是除root以外的,可以是用户名,也可以是#uid。

sudo -k Kill 清除“入场卷”上的时间,下次再使用sudo时要再输入密码。

sudo -K Sure kill 与-k类似,但是它还要撕毁“入场卷”,也就是删除时间戳文件。

sudo -b command Background 在后台执行指定的命令。

sudo -p prompt command Prompt 可以更改询问密码的提示语,其中%u会代换为使用者帐号名称,%h会显示主机名称。非常人性化的设计。

sudo -e file Edit 不是执行命令,而是修改文件,相当于命令sudoedit。

sudo <command>:用root权限执行命令<command>。

/etc/sudoers文件的使用。(不会上传图) :-(

可以修改此文件以适用自己个性化的需求。

配置中碰到的问题:

1、主机名配置错误导致sudo不能执行和日志纪录。

错误提示:Sorry, user test is not allowed to execute '/bin/cat /etc/sudoers' as root on

localhost.localdomain.

解决:将其中的localhost改为真实主机名字或IP即可

test localhost=/sbin/cat /etc/sudoers

Defaults@localhost log_host /var/log/sudo.log

2、命令别名列表中命令错误导致sudo不能执行

错误提示:[jackyu@localhost jackyu]$ sudo cat /etc/sudoers

Sorry, user jackyu is not allowed to execute '/bin/cat /etc/sudoers' as root on

localhost.localdomain.

解决:由于在Cmnd alias里定义的时候命令书写有误(Cmnd_Alias CAT = /bin/cat -n /etc/sudoers).

执行:sudo cat -n /etc/sudoers

[注]:不管在Cmnd alias里还是在# User privilege specification中指定命令,使用sudo运行时必须一摸一样,否则将出错。比如在Cmnd alias里指定某用户职能运行 /bin/cat /etc/sudoers,如果该用户登录后运行 sudo /cat -n /etc/sudoers将会出错!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux sudo 用户权限