如何从bash脚本中删除root拥有的文件?

伊戈尔·波波夫(Igor Popov)

我想从非特权用户拥有的简单脚本中删除root用户拥有的文件(/var/lib/pacman/db.lck):

#!/bin/bash
rm -f /var/lib/pacman/db.lck

但是我不想使用该脚本sudo来避免每次以非特权用户身份执行脚本时都输入密码。为了实现这一点,我将s设置为

-rwsrwsrwx  1 popov  users       41 04.02.2015 10:35 unlock.sh

但是运行脚本后,我得到了

rm: cannot remove ‘/var/lib/pacman/db.lck’: Permission denied

看来我误解了s的目的

因此,问题是:如何设置脚本权限(和/或脚本的所有权),该权限将允许脚本在由非特权用户调用时删除root拥有的文件?

纽豪斯

另一种选择是用一个小的C程序替换shell脚本:

#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <stdio.h>

#define FILENAME "/var/tmp/dummy"

int main() {
    if(unlink(FILENAME) == -1) {
        printf("unlink() of %s failed: %s\n", FILENAME, strerror(errno));
        return 1;
    }
    return 0;
}
  • 改变 FILENAME
  • 将其另存为unlink_it.c
  • 编译使用 gcc -Wall -o unlink_it unlink_it.c
  • 将其复制到合适的位置(也许/usr/local/bin)。
  • 将所有者更改为root
  • 将SUID位添加到程序中
  • 从无特权的shell脚本中调用特殊用途的程序。

注意:系统上的任何用户都可以启动程序,从而删除文件,除非您使用UNIX权限限制文件的使用!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何删除由“ root”创建或拥有的多个文件

如何使用bash脚本删除其他用户拥有的文件?

使用带通配符的sudo从root拥有的目录中删除文件

如何取消保护root拥有的文件?

如何编辑root拥有的.conf文件?

fopen 在 php 中创建 root 拥有的文件

如何在Linux中删除我拥有的只是文件描述符的文件

如何从其他人拥有的文件夹中删除文件

如何成为root拥有的文件/文件夹的所有者?

现有的用于删除旧备份文件的bash脚本-它如何工作?

删除已删除用户拥有的Azure Blob存储中的只读文件

如何为用户授予Linux对root拥有的特定文件的读取权限?

使用`sudo gedit`时如何防止root拥有的文件

Docker maven 映像正在创建 root 拥有的目标文件夹,Jenkins 无法将其从其工作区中删除

我如何在没有sudo的情况下删除根拥有的文件

有什么方法可以防止从用户拥有的目录中删除某些文件?

root拥有的文件的file_get_contents

Linux能够修改root拥有的文件吗?

使用git / root拥有的文件夹

删除我所拥有的目录,其中包含我所不拥有的文件

重命名运行脚本的用户拥有的文件

用户可以无法删除该用户拥有的目录中的文件吗?

从特定目录中删除特定用户拥有的Linux文件的命令是什么?

无法删除我在Linux上拥有的文件

删除特定组拥有的文件夹?

如何从GitHub仪表板中删除我不拥有的存储库

如何制作在目录所有者拥有的目录中创建的文件?

如何删除系统拥有的localdb实例

如何在拥有的Vec中复制或借用对拥有的String的引用?