如何检查用户是否对该目录具有写权限,目录名称作为命令行参数传递。
答案1
@SHW 的答案不是一个好主意,在某些情况下它会返回不正确的结果。
请仅使用test
命令(或其[
别名):
if [ -w "$dirname" ]; then
echo "$dirname is writable"
fi
因为test
带有-w
测试的命令不会检查历史记录UNIX permission bits
,而是调用access(2)
来验证可写性。
使用的优点access(2)
是access
还包括ACL
仅检查传统 UNIX 权限位时所缺少的影响。
答案2
简单的脚本来找出写权限
ls -ld directory | cut -c -10 > temp_perm
owner_perm=`cut -c 3 temp_perm`
group_perm=`cut -c 6 temp_perm`
other_perm=`cut -c 9 temp_perm`
[ "$owner_perm" -eq "w" ] && echo "Owner have write permission"
[ "$group_perm" -eq "w" ] && echo "Group have write permission"
[ "$other_perm" -eq "w" ] && echo "Other have write permission"