Linux-sudo详解

晚上没事干,翻看自己以前的笔记,将关于sudo的笔记稍作整理,记录下来。

sudo可以以另外一个用户的身份通过某个主机执行某些命令,但是不需要切换到该用户(有点类似于suid),仅仅可以执行指定的命令(一般来讲都是以root身份来执行一些管理类的命令)。

sudo的配置文件/etc/sudoers,该文件只有root用户和root组可查看:

wKiom1Wf40HwVYi4AABg1B8RI_M147.jpg

该文件可以直接vim编辑,但不建议这么做,因为vim不会检查该文件的语法错误,若语法有错,则有可能造成系统级别的问题。推荐是visudo命令进行编辑。

语法格式:谁可以通过哪些主机连接进来以谁的身份执行哪些命令

who   which_host=(runas)     command

who:可以使用用户别名,将某些用户定义到一个组中统一管理

which_host:可以使用主机别名,将某些主机定义到一个组中统一管理

runas:runas_alias

commad: cmnd_alis,可以使用命令别名,将某些命令定义到一个组中统一管理


sudo的别名机制,别名的名字全部且只能使用大写字母,man sudoers查看关于别名的定义。

用户别名,可以包含用户的用户名,组名(%组名),还可以包含其他已经定义好的用户别名(!可以取反 !test  除了test用户之外)

wKioL1Wf5abS-iqvAACrZAlhxAI415.jpg


主机别名:可以包含主机名,IP地址,网络地址或者是其他定义好的主机别名

wKiom1Wf4_bweSsdAAGHEE7RcIo783.jpg

命令别名:命令要使用绝对路径,此目录内的所有命令,或者其他定义好的命令别名

wKioL1Wf5erDgk7pAAIO4sZeEHc920.jpg

runas别名:用户名,%组名,其他定义好的runas别名

wKioL1Wf5g6w2n2NAACKL4C1tmE083.jpg


sudo具体设置:

如:管理员可以通过任何主机以任何用户的身份执行所有命令

wKioL1Wf5kSSYtWbAABAdcuef6w538.jpg

定义jack2用户可以通过所有主机以root用户执行useradd,usermod命令

wKiom1Wf5IyBzToqAABHVyZU-Ro025.jpg

sudo默认情况在用户第一次输入密码后,5分钟之内不需要再次输入密码,sudo -k命令可以清除密码缓存,让此前输入的认证信息失效:

sudo -l 列出当前用户可以试用的所有的sudo命令

sudo -k 让认证信息失效

sudo也可以定义用户不需要输入密码,即可执行命令,在命令之前加入NOPASSWD即可

wKioL1Wf5q7jt4yfAAA8ga2Ps2s339.jpg

上面方式表名执行useraddusermod都不需要密码,如果现在需要执行useradd不需要密码但执行usermod需要输入密码,则需要以下定义

wKiom1Wf5PjC_FaiAABH-H9xcc0494.jpg

使用别名:

wKiom1Wf5UmD3nG5AAClAy-E_MQ554.jpg


/var/log/secure记录所有sudo 相关操作的所有日志

wKioL1Wf5zfhYuRIAAHgKNfliEI445.jpg


你可能感兴趣的:(linux,alias,sudo)