根据我以往的知识,通常如果您想为某些命令授予用户sudo访问权限,您可以编辑/ etc / sudoers文件并添加该行
username ALL=(ALL) listofcommands
根据我的理解,这为用户提供了访问这些命令的权限,而不是其他任何命令。但是,在我的计算机安全类中,其中一个问题是关于以这种方式授予用户sudo访问权限是否安全,解释为什么它是或不是,以及是否有另一种方式来授予用户访问权限具体地
larry ALL=(ALL) /usr/bin/vim /etc/httpd/confs/httpd.conf
所以vim和网站配置。我一直认为它是安全的,但这个问题暗示它不是,在做了一些研究之后,大多数人似乎都是这样做的。所有的不安全感似乎源于滥用sudo本身。在这种情况下,唯一的变化是修改/ etc / sudoers。用户不知道密码,也没有sudo访问其他任何东西(例如,调用shell)。
我能想到的唯一一件事就是让他sudo访问vim是一个坏主意,因为据我所知,vim有能力在命令行上执行命令吗?
但主要的问题是,如果我想给一个特定的用户sudo访问只有某些命令,除了将它们添加到sudoers之外,我不知道任何其他方式(除了强迫他问一个管理员每次进行sudo访问)。我无法在网上找到任何东西,因为我认为几乎每个人都这样做。
答案 0 :(得分:1)
问题不仅仅是vim
可以运行外部命令。
vim
是一个编辑器,因此如果它以root
运行,您可以直接修改/etc/passwd
和/etc/shadow
等系统文件,这样可以重置密码在您想要的任何帐户上,包括root帐户。
更具体地说,我可以使用vim
命令启动/usr/bin/vim /etc/httpd/confs/httpd.conf
,然后立即键入:e /etc/passwd
,现在我可以写信给您/etc/passwd
。
如果您只是想保护一个文件/etc/httpd/confs/httpd.conf
,可以使用Access Control Lists
并将用户添加到该文件的ACL中。
您还可以使用chmod g+w
的非根组使该文件可写,并将用户添加到该组。
答案 1 :(得分:0)
由于Vim确实能够运行外部命令(:!
命令和:call system()
),因此具有对Vim的root访问权限与对系统的完全访问权限一样好; sudo保护无济于事。
要授予用户对受保护文件的编辑权限,您需要编写一个脚本,让用户自己编辑临时副本(因此从Vim启动的任何命令只有用户的权限,另一个好处是用户的Vim也考虑了设置,然后仅使用提升的 copy 命令将临时副本移回原始的受保护位置。 sudo -e
/ sudoedit
就是这样;查看手册页了解详情。