linux 中判断指定用户对指定目录的访问权限

脚本名:power.sh

脚本内容

 

  
  
  
  
  1. #!/bin/sh  
  2. username3=$1  
  3. file_path=$2  
  4. if [ `id -u` -ne 0 ]; then 
  5.     echo "Please re-run `basename $0` as root." 
  6.     exit 1  
  7. fi  
  8. # Get existing directory  
  9. while true 
  10. do  
  11.     if [ -d $file_path ];then 
  12.         break;  
  13.     fi  
  14.     file_path=${file_path%/*}  
  15. done  
  16. dir_name2=$file_path  
  17.  
  18. # Judge whether the user exists  
  19. grep "^$username3:" /etc/passwd >/dev/null 
  20. if [ $? -ne 0 ];then 
  21.     echo "This user \"$username3\" does not exist." 
  22.     exit 4  
  23. fi  
  24.  
  25. su -l $username3 -c "test -r $dir_name2" 
  26. is_read=$?  
  27. su -l $username3 -c "test -x $dir_name2" 
  28. is_exe=$?  
  29. su -l $username3 -c "test -w $dir_name2" 
  30. is_write=$?  
  31. is_read_int=0  
  32. is_exe_int=0  
  33. is_write_int=0  
  34. if [ $is_read -eq 0 ];then 
  35.     is_read_int=100  
  36. fi  
  37.  
  38. if [ $is_exe -eq 0 ];then 
  39.      is_exe_int=1  
  40. fi  
  41.  
  42. if [ $is_write -eq 0 ];then 
  43.      is_write_int=10  
  44. fi  
  45. $result_and  
  46. type let > /dev/null 2>&1  
  47. if [ $? -eq 0 ];then 
  48.     let result_and=is_read_int+is_exe_int  
  49.     let result_and=result_and+is_write_int  
  50. else 
  51.     result_and=`expr $is_read_int + $is_exe_int`  
  52.     result_and=`expr $result_and + $is_write_int`  
  53. fi  
  54.  
  55. exit $result_and  

应用:

sh power.sh user1 /opt/abc

若返回值为111,则表示用户user1 对目录  /opt/abc具有读写执行权限;

若返回值为101,则表示用户user1 对目录  /opt/abc具有读执行权限;

若返回值为10,则表示用户user1 对目录  /opt/abc具有权限;

注意:必须以 root 执行 power.sh

你可能感兴趣的:(linux,权限,访问权限,power,目录权限)