如何限制一般使用者只能以一般使用者和普通群組身分執行 sudo 指令

如何限制一般使用者只能以一般使用者和普通群組身分執行 sudo 指令

foobar作為群組中的普通用戶,users我希望能夠sudo像任何其他非管理用戶(例如raboof:users)一樣運行命令,前提是該用戶foobar知道運行用戶的密碼。例如,以下應該是可能的:

$ sudo -u raboof echo Hello World!
[sudo] Password for raboof:
$ sudo -g users echo Hello World!
$ sudo -u raboof -g users Hello World!

但否認在上述第二和第三個變體的情況下sudo運行。echo Hello World!

我配置的sudo標準插件sudoers如下:

User_Alias USER_ADMIN = #0, %#0, %wheel
Runas_Alias RUNAS_ADMIN = #0, %#0, %wheel

User_Alias USER_USER = ALL, !USER_ADMIN
Runas_Alias RUNAS_USER = ALL, !RUNAS_ADMIN

Defaults:USER_USER targetpw

USER_ADMIN ALL = (ALL:ALL) ALL

USER_USER ALL = (RUNAS_USER:RUNAS_USER) ALL

我必須如何配置sudo插件sudoers才能使其按照我想要的方式工作?

答案1

經過大量摸索上述Runas_Alias定義的表達式後,我想出了以下配置,該配置實際上適用於sudo作為非管理用戶調用的所有三種組合(例如raboof:users):

User_Alias USER_USER = ALL, !#0, !%#0, !%wheel
Runas_Alias RUNAS_USER_USER = ALL, !#0, !%#0, !%wheel
Runas_Alias RUNAS_USER_GROUP = ALL, !#0, !wheel

Defaults:USER_USER targetpw

USER_USER ALL = (RUNAS_USER_USER:RUNAS_USER_GROUP) ALL

foobar $ sudo -u raboof id
uid=1000(raboof) gid=100(users) groups=100(users)
foobar $ sudo -g users id
uid=1000(foobar) gid=100(users) groups=100(users)
foobar $ sudo -u raboof -g users id
uid=1000(raboof) gid=100(users) groups=100(users)

由於某些未知的原因,如下嵌套和否定先前定義的Runas_Alias定義不起作用:

Runas_Alias RUNAS_ADMIN_USER = #0, %#0, %wheel
Runas_Alias RUNAS_ADMIN_GROUP = #0, wheel
Runas_Alias RUNAS_USER_USER = ALL, !RUNAS_ADMIN_USER
Runas_Alias RUNAS_USER_GROUP = ALL, !RUNAS_ADMIN_GROUP

相關內容