如何以用户身份创建文件,然后以其他用户身份修改文件?


2

我有一个执行“ su-oracle”然后运行exp的脚本。我需要将该文件存储到目录“ / app / dumps”中,用户“备份”有权读取和写入该文件。

设置/ app / dumps目录的正确方法是什么,以便“备份”拥有修改目录中任何文件的所有权,但是“ oracle”仍然可以将数据写入该目录?

Answers:


0

解决此问题的最简单方法是将目录粘性位与适当的组权限一起使用。

  1. 创建一个新组: groupadd orabak
  2. 将两个用户都添加到组中: usermod -G orabak oracle; usermod -G orabak backups
  3. 在目录上设置组粘性位: chmod g+s /app/dumps
  4. 确保当oracle和备份用户写入文件时,他们使用组写入位进行设置(您可以为此使用umask)

0

您应该能够使用以下两个命令完成您想要做的事情:

chown oracle:backups /app/dumps
chmod 2370 /app/dumps

chown将目录的所有者设置为oracle用户,将组的所有者设置为备份用户。

chmod执行以下操作:

  • 设置setgid位
  • 赋予所有者(oracle)写/执行访问权限
  • 授予组(备份)读/写/执行访问权限

在目录上设置setgid意味着在目录中创建的文件将继承目录的组,而不继承创建者的组。在您的实例中,这意味着由oracle写入其中的所有文件都将备份作为一个组。

Oracle可以写入该目录,但不能读取该目录。如果需要这样做,请将权限更改为2770。

这还假定您的脚本正在/ app / dumps目录中创建具有读/写访问权限的文件。如果不是这种情况,则可以运行setfacl -d -m g::rw /app/dumps以将在/ app / dumps中创建的文件的默认组权限设置为可读写。


0

如果你这样做,ls -alh /somedir你会得到这样的东西

ls -alh /somedir 
drwxrwxrwx 1 owner   group  [size and date]  .
drwxrwxrwx 1 powner  pgroup [size and date]  ..
-rwxrwxrwx 1 owner   owner  [size and date]  somefile

只要您能理解这一点,就可以弄清楚必须设置文件的权限和所有者。此Ubuntu Wiki条目将启发您。

这给您一些选择:

  1. 创建一个名称为croup backup的用户backups,并将用户添加oracle到其中。现在,由backups-group拥有的文件将与用户backups和共享访问权限oracle
  2. 创建一个组backupsbackups然后为其添加用户。将所有权授予用户oracle,将组所有权授予group backups。这为用户oracle和组的所有组成员提供了单独的权限backup
  3. 像2中一样做,但是 oracle

可以使用的工具是groupadd,chown,chmod和usermod。手册页将为您提供更多详细信息。我知道这有点RTFM的答案。但是,我敢肯定,如果您进行阅读,将来您将能够处理Linux文件权限。=)祝你好运

paradoxon

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.