无法从 bash 脚本更改 chmod

无法从 bash 脚本更改 chmod

我编写了一个脚本,用于将图像复制到临时目录,将其转换为另一种格式,然后将其移动到最终目录。但我无法让 chmod 命令工作,文件被复制到临时目录,但其 chmod 停留在 -rw-------(文件的原始 chmod)。

如果我在原始文件上应用 777 chmod,则复制的文件将获得 -rwx------ 而不是 -rwxrwxrwx

复制的文件与原始文件具有相同的用户。

TS=$(date +"%Y")/$(date +"%m")/$(date +"%d")/$(date +"%Hh%Ms%S")
PATHTMP="/tmp/faxtiff"

mkdir -p $PATHTMP
chmod 777 $PATHTMP
cp $FILE $PATHTMP
chmod 777 $PATHTMP/$FILE
convert $PATHTMP/$FILE -scale '50%x100%!' $PATHTMP/fax.jpg
chmod 777 $PATHTMP/fax.jpg
mkdir -p /home/argent/faxes-recus/$TS
chmod 777 /home/argent/faxes-recus/$TS
#rm $PATHTMP/$FILE
mv $PATHTMP/*.jpg /home/argent/faxes-recus/$TS

答案1

mdpc 是正确的。我不知道为什么有人对你的问题投了反对票,但是...

如果 root 拥有该文件,您应该能够(当然假设您有访问权限)执行sudo chmod...,并且这应该可以工作。

但是,如果您不想让 root 再拥有该文件,则需要执行操作sudo chown $USER <filename>以使该文件归您登录的用户所有。

我还没有尝试过你的脚本,但请继续尝试以下操作,注意 2 件事:

1) 不要到处更改不该更改的内容。我不知道这个问题的背景,更改相关文件的内容可能是不好的、非常不好的或极其不好的(即滥用权力)。但是,如果您正在创建此内容并且被隐式(或明确)授予修改这些文件的权限,那么这应该不是问题。

2) 我注释掉了几个你不需要的 chown。请记住,你始终可以执行此操作ls -l来查看给定文件的所有权。

TS=$(date +"%Y")/$(date +"%m")/$(date +"%d")/$(date +"%Hh%Ms%S")
PATHTMP="/tmp/faxtiff"

mkdir -p $PATHTMP
#sudo chown -R $USER $PATHTMP 
chmod 777 $PATHTMP
cp $FILE $PATHTMP
sudo chown $PATHTMP/$FILE
chmod 777 $PATHTMP/$FILE
convert $PATHTMP/$FILE -scale '50%x100%!' $PATHTMP/fax.jpg
#shouldn't need to chown here if the script is being run as the logged in user.
chmod 777 $PATHTMP/fax.jpg
mkdir -p /home/argent/faxes-recus/$TS
#chown $USER /home/argent/faxes-recus/$TS
chmod 777 /home/argent/faxes-recus/$TS
#rm $PATHTMP/$FILE
mv $PATHTMP/*.jpg /home/argent/faxes-recus/$TS

答案2

如果您不是该文件的所有者,则您无法chmod对该文件执行操作。

相关内容