如何 mkdir -p -m 777 到所有缺少的路径名目录?

如何 mkdir -p -m 777 到所有缺少的路径名目录?

我将一个文件放入 cron.hourly 中,该文件需要在第一次创建文件夹时将其授予用户访问权限,因此如果我想删除文件夹中的所有内容,则无需使用 sudo。并且它还使文件夹可用。-m 777使用时,如果文件夹丢失则不起作用-p

#!/bin/sh 
mkdir -m 777 -p 000Hourly/$(date +"%m-%d-%y_%T")

不起作用:为管理员提供 000Hourly

#!/bin/sh
mkdir -m 777 000Hourly && mkdir -m 777 -p 000Hourly/$(date +"%m-%d-%y_%T")

在下一个小时出现错误mkdir: cannot create directory '000Hourly': File exists并停止执行其余部分。

这就是我想要做的,所以我需要 777,这样当文件夹太满时我就可以删除所有文件夹。

#!/bin/sh
profiledir=/home/kangarooo/.mozilla/firefox/a2t42sie.default/
cd $profiledir;
mkdir -m 777 000Hourly ; mkdir -m 777 -p 000Hourly/$(date +"%m-%d-%y_%T") && cp -p sessionstore.js sessionstore.bak 000Hourly/$(date +"%m-%d-%y_%T")
exit 0

答案1

这是一个更好的方法:

#!/bin/bash

dirname=000Hourly/$(date +"%m-%d-%y_%T") # Save the directory name for later access
user=bob   # Set to the username of the user who should have access.
group=bob  # Set to a group that should have access to the directory

mkdir -p "$dirname"
chown "$user:$group" "$dirname"

如果只有一个用户需要访问权限,那么就完成了。

如果多个用户需要访问权限,请为每个需要访问权限的用户创建一个组:

sudo groupadd mygroup

阅读man groupadd更多详细信息,并更改mygroup为您想要的任何名称(但它应该以小写字母或下划线开头,并且不包含任何空格。

然后,将所有必要的用户添加到您的新组,其中user1user2user3以及要添加的用户名。您可以根据需要添加任意数量。:

for i in user1 user2 user3; do sudo usermod -aG mygroup "$i"; done

新的组成员身份将在用户注销(或机器重新启动)后生效。

现在,修改上面的脚本。设置$group为您的新组,并添加以下行:

chmod 775 "$dirname"

答案2

[ -d 000Hourly ] || mkdir -m 777 000Hourly
mkdir -m 777 000Hourly/$(date +"%m-%d-%y_%T")

相关内容