确定当前用户是否在目录中具有写权限


9

我知道您可以通过执行以下操作来确定目录的所有者:

ls -ld ~/foo | awk '{ print $3 }'

然后,您可以通过执行以下操作将其与当前用户进行比较:

if [[ $(ls -ld ~/foo | awk '{ print $3 }') == "$USER" ]] # or $(id -u -n ) instead of $USER
then
    echo "You are the owner"
else
    echo "You are NOT the owner"
fi

但是您可以拥有所有者的写权限。您如何确定?

Answers:


20

我想

if [ -w ~/foo ]; then ....

应该做你想做的。

另外,stat -c %U ~/foo与解析ls输出相比,这是获取所有者的更好方法。


1
请注意,这stat是特定于现代Linux系统的,其他unice可能有所不同stat或根本没有。解析ls通常是麻烦的秘诀,但是解析所有者(因为第三个单词)最有效(事后便会分解)。它仍然不是完美的(某些系统在用户名中允许使用空格)。
吉尔(Gilles)'所以
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.