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

成员之声

我有一个bash脚本,应该从中删除文件/tmp问题:文件是mysqlSELECT INTO OUTFILE导出期间由我的用户创建的因此,运行脚本的用户不拥有该文件。

不过,如何在不添加脚本的情况下删除该文件sudo crontab呢?

myuser-crontab:

/opt/my_routine.sh

my_routine.sh:

!#/bin/bash
rm -f "/tmp/mysql_export.csv" #FAILS
mysql --user=user --password=rootpw --database=mydb < /opt/export.sql

export.sql:

SELECT some, fields INTO OUTFILE '/tmp/mysql_export.csv' FROM mytable FIELDS TERMINATED BY ';' ESCAPED BY '' LINES TERMINATED BY '\n';
卡米尔·马乔洛夫斯基(Kamil Maciorowski)

问题

重定向标准输出,因此该文件是由正确的用户(如在创建这个其他的答案)是一个不错的主意,但我认为你需要TERMINATED BYESCAPED BYLINES TERMINATED BY这些需要INTO OUTFILE重定向stdout的直接解决方案只是忽略INTO OUTFILE,因此无法使用TERMINATED BYetc。

INTO OUTFILE用于写入标准输出的尝试不起作用:

SELECT some, fields INTO OUTFILE '/proc/self/fd/1' FROM mytable FIELDS TERMINATED BY ';' ESCAPED BY '' LINES TERMINATED BY '\n';

这是行不通的,因为文件之前一定不能存在。MySQL必须自己创建它。为此有充分的安全原因(示例)。特殊文件/proc/self/fd/1由内核提供,因此MySQL拒绝了它。

有问题的路径是/tmp/mysql_export.csv当您尝试从中删除mysql_export.csv/tmp/,目录的权限很重要。这是怎么/tmp/看起来平常喜欢:

$ ls -ld /tmp/
drwxrwxrwt 1 root root 1772 Nov  1 19:39 /tmp/
$

小写tdrwxrwxrwt表示为“其他”和粘性位设置执行权限。关于粘性位:

粘性位最常见的用法是在类Unix操作系统的文件系统中的目录上。设置目录的粘性位后,文件系统会以特殊方式处理此类目录中的文件,因此只有文件的所有者,目录的所有者或根目录才能重命名或删除文件。没有设置sticky位,任何具有目录写和执行权限的用户都可以重命名或删除包含的文件,而不管文件的所有者。

(来源:Wikipedia

您不能删除文件,因为您既不是root用户也不是文件的所有者。


解决方案

以上引用只是给我们一个线索。如果您既不是文件的所有者,也不是根用户,那么您需要:

  • (目录上带有粘性位)目录的所有者,或
  • (没有粘性位)具有目录写和执行权限的任何用户。

因此,在某个位置创建一个目录,允许其他用户在其中创建文件(chmodsetfacl),并调整在mysql_export.csv此处创建的过程文件出现后,即使它属于另一个用户,也可以将其删除。使用rm -f如果没有-f您,则可能会提示您,因为该文件不属于您。


笔记

  • 该解决方案没有超出普通用户的能力范围。您不需要sudo,也不需要在系统中设置任何其他组。
  • 允许其他用户在您的目录中创建文件可能会失败。您将能够删除“外部”非目录和空子目录。但是要删除一个非空子目录,您需要首先删除其中的所有内容。通常,是否可以从其他人的目录中删除文件并不取决于您,即使它是该目录的子目录也是如此在您的情况下,如果其他用户只是您控制下的正式用户,则不必担心。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何以编程方式删除其他用户拥有的触发器?

删除其他用户拥有的POSIX共享内存

如何使用Terraform破坏RDS中其他用户拥有的Postgres数据库?

杀死VB6中其他用户拥有的进程

Django表单下拉字段显示其他用户拥有的数据

IAM 用户能否向其他用户授予他不拥有的资源的权限?

在EMR作业流程中指定其他用户拥有的S3存储桶

无法删除其他用户目录上的文件

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

如何使用 VBA 从共享工作簿中删除所有其他用户的访问权限?

如何以没有密码的其他用户身份运行脚本?

如何防止用户更改对其他用户具有写权限的文件?

如何查看其他用户的文件?Ubuntu 16.04

如何从共享工作簿、Excel VBA 中删除所有其他用户?

如何在python中创建具有其他用户可以写入的权限的文件

选择我与其他用户共有的页面喜欢的总数

如果您以所有者身份登录,如何更新其他用户的用户配置文件?

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

如何授予Dropbox权限,但删除Windows上其他用户的所有权限

在Python2.7中,如何使用主脚本和其他用户定义函数中的变量

sudo su给其他用户运行脚本

来自其他用户的运行脚本

禁止用户从/ mnt访问其他用户的文件

如何防止用户编辑或删除其他用户帖子?姜戈

Rails应用程序:仅拥有管理员用户,无其他用户的最佳方法

如何通过Shell脚本发送邮件/写给其他用户?如何发送EOF?

Microsoft Teams 删除其他用户的评论

设置Linux权限以防止其他用户删除/修改文件

在Perforce中,如何将文件添加到其他用户的现有存储架中?