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

字体大小: 中小 标准 ->行高大小: 标准

脚本名:power.sh
 
脚本内容

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

应用:
 
sh power.sh user1 /opt/abc
 
若返回值为111,则表示用户user1 对目录  /opt/abc具有读写执行权限;
 
若返回值为101,则表示用户user1 对目录  /opt/abc具有读执行权限;
 
若返回值为10,则表示用户user1 对目录  /opt/abc具有写权限;
 
注意:必须以 root 执行 power.sh

此文章由 http://www.ositren.com 收集整理 ,地址为: http://www.ositren.com/htmls/64766.html