su和sudo命令的使用及日志追踪
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了su和sudo命令的使用及日志追踪相关的知识,希望对你有一定的参考价值。
su是英文“s‘witch user”的缩写,即切换用户之意。
su和su 指令加上“-”参数的区别:
su指令不加任何参数,默认切换到root,但没有转到root用户家目录,这时虽然切换为root用户了,但并没有切换到root的登陆环境(shell,环境变量),不能获取环境变量。su加上参数“-”是切换到用户root的登陆环境,获取root的环境变量及执行权限(切换到用户的变量)
su是转换到终极权限root后对权限没有限制行(su默认切换到root用户),sudo能把某些终极权限有针对性的下放,并且用户不用知道root密码,执行历程是当前用户切换到root,然后以root身份执行命令,执行完后直接退回当前用户。通过sudo配置文件“/etc/sudoers”进行授权。
sudo能够限制用户只在某台主机上运行某些命令。
sudo提供了丰富的日志,详细记录了每个用户做了什么,能够转到中心主机或日志服务器
sudo使用时间戳来文件来执行类似的“”检票“系统。当用户调用sudo并输入它的密码时,用户获得一张存活期为5分钟的票(此值可在编译时指定)
sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用主机。位置/etc/sudoers,它的属性必须为0411。
sudo命令用来以其他身份来执行的命令,预设的身份为root
sudo与su的不同之处在于sudo仅在需要时授予用户权限,减少了用户因为错误执行损坏系统的可能性,sudo也可以用来以其他用户身份执行命令。此外sudo可以记录用户执行的命令,以及失败的特权获取
sudo的配置文件:
sudo的配置文件是”/etc/sudoers“,不强烈建议直接编辑这个文件,而是通过visudo来编辑,因为使用visudo编辑后保存会进行语法检测,有问题会提示,避免出错。
别名记录在配置文件当中有四种:
Host_Alias
Cmnd_Alias
User_Alias
Runas_Alias
2:sudo的使用方法
首先我们分析一些字段
这句话的意思是说:
用户lifeng在mail这台服务器上可以以用户root的身份运行/usr/sbin/useradd这个命令
添加这一行 lifeng ALL=/usr/sbin/useradd
4.语法:
sudo [ -Vhl LvkKsHPSb ] │ [ -p prompt ] [ -c class│- ] [ -a auth_type ] [-u username│#uid ] command
5.参数:
-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 更改为其他人)执行的指令
- sudo -i 切换用户身份到root
日志追踪:
2.1.创建sudo.log文件
touch /var/log/sudo.log
2./etc/rsyslog.conf配置文件最后面添加一行
local2.debug /var/log/sudo.log #空白处不能用空格键,必需用tab键
3./etc/ sudoers配置文件最后添加如下
Defaults logfile=/var/log/sudo.log
Defaults loglinelen=0
Defaults !syslog
4.重启syslog服务
[root@localhost .ssh]# service rsyslog restart
或者 /etc/init.d/rsyslog restart
5.确定进程
[root@localhost .ssh]# ps -aux |grep rsyslog
6.测试
测试账户使用sudo命令,在root用户查看是否有记录
[root@localhost .ssh]# tail -f /var/log/sudo.log
以上是关于su和sudo命令的使用及日志追踪的主要内容,如果未能解决你的问题,请参考以下文章