Linux系统sudo命令的用法及日志管理

本文发布时间: 2019-Mar-22
1:Sudo的作用sudo是linux下常用的允许普通用户使用超级用户或者其它用户权限的工具。sudo 对于控制和审计root用户的访问权限是极其有益的。它使得系统管理员可以将root用户的系统管理任务分配给其他人,而无需给予他们root口令。管理员也可以根据每个用户实际所需的root访问权限来定制系统访问权限,从而达到权限最小化的目标首先我们查看一下这个软件有没有安装,[root@hgj ~]# rpm -q sudosudo-1.6.9p17-3.el5它的主要配置文件是sudoers,linux下通常在/etc目录下[root@hgj ~]# ls /etc/sudoers/etc/sudoers这是一个普通文件,但也是比较特殊的,他的权限是441[root@hgj ~]# ls /etc/sudoers -l-r--r----- 1 root root 3185 2009-01-07 /etc/sudoers我们编辑这个文件的时候不用vi直接编辑而是用visudo况且还不能用多个终端同时编辑这个文件,否则会提示:[root@hgj ~]# visudovisudo: /etc/sudoers busy, try again later也只有管理员才有权限编辑这个文件,在这个文件当中,大部分都是一些例子,大部分都是一些别名记录的例子,别名记录在配置文件当中有四种:Host_AliasCmnd_AliasUser_AliasRunas_Alias&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&2:sudo的使用方法首先我们分析一些字段这句话的意思是说:用户lifeng在mail这台服务器上可以以用户root的身份运行/usr/sbin/useradd这个命令添加这一行 lifeng ALL=/usr/sbin/useradd我们可以测试一下[root@hgj ~]# su - lifeng ------------------------------切换到lifeng这个用户,注意加—[lifeng@hgj ~]$ useradd abc --------------------------添加abc这个用户-bash: useradd: command not found ------------------提示命令没有发现,是环境的原因[lifeng@hgj ~]$ /usr/sbin/useradd abc --------------------这里我们加上绝对路径-bash: /usr/sbin/useradd: 权限不够 --------------------提示权限不够[lifeng@hgj ~]$ sudo /usr/sbin/useradd abc --------------用sudo的方式运行We trust you have received the usual lecture from the local SystemAdministrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility.口令: -----------------------------------------提示输入密码,是用户lifeng的密码[lifeng@hgj ~]$[lifeng@hgj ~]$ tail -1 /etc/passwd -------------------查看用户是不是已经建立好了abc:x:504:504::/home/abc:/bin/bash -------------------显示用户已经建立成功[lifeng@hgj ~]$&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&3:sudo的例子下面通过几个小例子来完成一些说明:a:让用户运行命令的时候不输入密码 lifeng ALL= NOPASSWD:/usr/sbin/useraddb:指定多个用户,或者组lifeng,wangming ALL=/usr/sbin/useraddc:指定多个主机lifeng mail,apache=/usr/sbin/useraddd:指定多个被代替的用户lifeng ALL=(root,database) /usr/sbin/useradde:指定多个命令lifeng ALL= /usr/sbin/useradd,/usr/sbin/usemod指定某个目录下的所有命令lifeng ALL= /usr/sbin/*f:指定排除的命令lifeng ALL= (root) /usr/sbin/* !/usr/sbin/usermod,!/sbin/useradd 不允许的命令前面都要加上叹号定义别名是sudo当中比较常用的一种,说明:在配置文件sudoers中有四种别名记录。1) 配置Host_Alias:就是主机的列表Host_Alias HOST_FLAG = hostname1, hostname2, hostname32) 配置Cmnd_Alias:就是允许执行的命令的列表Cmnd_Alias COMMAND_FLAG = command1, command2, command33) 配置User_Alias:就是具有sudo权限的用户的列表User_Alias USER_FLAG = user1, user2, user34) 配置Runas_Alias:就是用户以什么身份执行(例如root,或者oracle等)的列表Runas_Alias RUNAS_FLAG = operator1, operator2, operator3注意:在定义别名的时候我们一般用大写比较好,下面给出一个综合性的例子:定义别名:Host_Alias SERVER=mail,apache,ftpCmnd_Alias COMMAND=/usr/sbin/*,/sbin/*,!/usr/sbin/passwd,!/usr/sbin/userdelUser_Alias USER=lifeng,zhang3,li4Runas_Alias RUNAS=root,databaseUSER SERVER=(RUNAS) COMMAND这句话的意思就是说用户lifeng ,zhang3和li4可以在mail,apache,ftp这三台服务器上以root和database这两个用户的身份运行/usr/sbin/下的和/sbin/下的除了passwd和userdel这两个命令以外的所有命令。注意:命令一定要使用绝对路径,以避免其他目录的同名命令被执行,从而造成安全隐患&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&4:sudo的日志管理sudo能够记录各用户都运行了哪些命令。但是,这些需要对sudo 和syslogd 进行适当的配置。为此,我们首先要在/var/log目录中创建一个日志文件,还必须对syslog.conf进行相应的配置,让它记录sudo 命令。配置sudo 日志功能的具体步骤如下所示:三个操作A:在/etc/syslog.conf这个文件最后添加一行 local2.debug /var/log/sudo.log B:在sudoers这个文件最后添加一行 Defaults logfile=/var/log/sudo.logC:重新启动内核日志记录器: [root@hgj ~]# /etc/init.d/syslog restart重新启动服务之后系统就会在/var/log目录中建立一个以sudo.log的文件名测试我们再用过sudo之后我们查看日志就能看到某用户在做了哪些操作了[root@hgj ~]# cat /var/log/sudo.log7月 5 01:35:43 : lifeng : TTY=pts/0 ; PWD=/home/lifeng ; USER=root ; COMMAND=/usr/sbin/useradd xiaomao7月 5 01:36:50 : lifeng : command not allowed ; TTY=pts/0 ; PWD=/home/lifeng ; USER=root ; COMMAND=/usr/sbin/userdel zhang3有两条记录:第一条是说lifeng这个用户以root的身份创建了一个用户xiaomao第二条是说lifeng这个用户不允许用删除用户命令删除zhang3本文出自 “红公鸡” 博客


(以上内容不代表本站观点。)
---------------------------------
本网站以及域名有仲裁协议。
本網站以及域名有仲裁協議。

2024-Mar-04 02:11pm
栏目列表