Permissions

從非 Linux 文件系統複製文件時,自動為某些文件類型設置正確的權限

  • March 24, 2015

我想要這個的主要原因是我大量使用dircolors,尤其是對於ls --color=auto. 例如,每當.mp3從 NTFS 複製文件時,它都會設置權限,umask 022這在大多數現代發行版中應該是標準值。但是,對於音頻文件,這是沒有意義的:由於它們的權限設置為755( ),因此它們將獲得與可執行 shell 腳本rwxr-xr-x相同的顏色,而我真的希望為真正的執行檔保留這種顏色。這不是Windows;即使為所有者/組/其他設置了權限,您也不能期望終端中工作,以便嘗試選擇預設控制台播放器。x``./track1.mp3

所以我想為音頻umask文件設置一個ONLY ,即任何文件,如 .mp3、.wav、.ogg 等,都將始終將其模式設置為,而將所有其他文件複製到此位置預設為的。644``umask``022

有沒有辦法做到這一點?

*(注意:cp --preserve也不會保留 NTFS 上的原始權限,因為眾所周知,NTFS 對 NIX 權限系統一無所知。)

我會使用安裝工具從 NTFS 複製。

install -m644 file1 ... fileN destination_directory

您可以為您自己的使用者定義cp命令使用腳本來檢查文件副檔名並chmod適當地使用…

你可以做一些簡單的事情,比如:(使用 install 而不是 cp chmod 根據@fd0。無論如何這更聰明。)

#!/bin/bash

args=("$@")
dest="${args[@]:(-1)}"
unset args[${#args[@]}-1]

if [ ! -d "$dest" ]; then
   echo "Please specify a destination directory as the final argument."
   exit 1
fi

for file in "${args[@]}"; do
   if [ "$file" == *".mp3" ] || [ "$file" == *".wav" ] || [ "$file" == *".ogg" ];  then
       install -m644 "$file" "$dest"
   else
       install -m755 "$file" "$dest"
   fi
done

exit 0

引用自:https://unix.stackexchange.com/questions/192029