linux 判断指定用户对指定目录具有的权限

简介:

脚本名:power.sh

脚本内容:

Shell代码   收藏代码
  1. #!/bin/sh  
  2. username3=$1  
  3. dir_name2=$2  
  4.   
  5. # get existing directory  
  6. file_path=$dir_name2  
  7. while true  
  8. do  
  9.         if [ -d $file_path ];then  
  10.                 break;  
  11.         fi  
  12.         file_path=${file_path%/*}  
  13. done  
  14. dir_name2=$file_path  
  15.   
  16. # Judge whether the user exists  
  17. grep "^$username3:" /etc/passwd >/dev/null  
  18. if [ $? -ne 0 ];then  
  19.     echo "This user \"$username3\" does not exist."  
  20.     exit 4  
  21. fi  
  22. #echo "username : $username3"  
  23. group4=` grep "^$username3:"  /etc/passwd |awk -F : {'print $4'}|xargs  -i  grep {}  /etc/group|cut -d":" -f1`  
  24. #echo "group : $group4"  
  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_str  
  32. $is_exe_str  
  33. $is_write_str  
  34. if [ $is_read -eq 0 ];then  
  35.     is_read_str="r"  
  36. else  
  37.     is_read_str="-"  
  38. fi  
  39.   
  40. if [ $is_exe -eq 0 ];then  
  41.         is_exe_str="x"  
  42. else  
  43.         is_exe_str="-"  
  44. fi  
  45.   
  46. if [ $is_write -eq 0 ];then  
  47.         is_write_str="w"  
  48. else  
  49.         is_write_str="-"  
  50. fi  
  51.   
  52.   
  53. echo "${is_read_str}${is_write_str}${is_exe_str}"  
 

-------------------------------------------

注意:必须以root 身份执行该脚本。

脚本power.sh 需要两个参数,第一个表示指定的用户,第二个表示指定的目录

测试:

[root@ppc40 study]# sh power.sh whuanga4 /tmp/abc/dd

This user "whuanga4" does not exist.

[root@ppc40 study]# sh power.sh whuang4 /tmp/abc/dd

rw-

(说明:表示用户 whuang4 对目录 /tmp/abc/dd 具有读和写权限,没有执行权限)。
相关文章
|
14天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
53 3
|
19天前
|
存储 Linux Windows
linux常用目录
/sbin s就是super User的意思,这里存放的是系统管理员使用的系统管理程序。 /home 存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一版该目录名是以用户的账号命名的。 /root 该目录为系统管理员,也称为超级权限者的用户主目录。 /lib 系统开机所需要最基本的动态连接共享库,其作用类似于windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。 /etc 所有的系统管理所需要的配置文件和子目录。 /usr 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program fies目录。 /bo
32 2
|
2月前
|
Linux Shell
Linux系统文件默认权限
Linux系统文件默认权限
|
23天前
|
Linux 数据安全/隐私保护
linux特殊权限!!
本文介绍了Linux系统中的特殊权限,包括suid、sgid和sbit。suid使普通用户在执行特定命令时获得root权限;sgid使用户在创建文件时继承目录的用户组权限;sbit确保用户只能删除自己在共享目录中创建的文件。此外,文章还讲解了chattr和lsattr命令,用于更改和查看文件的扩展属性,以及umask的概念和计算方法,帮助理解文件和目录的默认权限。
36 1
linux特殊权限!!
|
18天前
|
Linux Python
Linux 中某个目录中的文件数如何查看?这篇教程分分钟教会你!
在 Linux 系统中,了解目录下的文件数量是常见的需求。本文介绍了多种方法,包括使用 `ls` 和 `wc` 命令组合、`find` 命令、`tree` 命令以及编程方式(如 Python)。无论你是新手还是有经验的用户,都能找到适合自己的方法。掌握这些技巧将提高你在 Linux 系统中的操作效率。
26 4
|
23天前
|
网络协议 Linux
linux系统重要文件目录
本文介绍了Linux系统中的重要目录及其历史背景,包括根目录、/usr、/etc、/var/log和/proc等目录的结构和功能。其中,/etc目录下包含了许多关键配置文件,如网卡配置、DNS解析、主机名设置等。文章还详细解释了各目录和文件的作用,帮助读者更好地理解和管理Linux系统。
43 2
|
2月前
|
Linux 开发工具 Perl
Linux命令替换目录下所有文件里有"\n"的字符为""如何操作?
【10月更文挑战第20天】Linux命令替换目录下所有文件里有"\n"的字符为""如何操作?
42 4
|
2月前
|
存储 Linux 编译器
cmake的单目录和多目录的使用(Linux和Windows)
本文介绍了在Windows和Linux平台上使用CMake构建单目录和多目录项目的步骤,包括如何配置CMakeLists.txt文件以及如何生成和使用可执行文件、库文件。
37 2
|
2月前
|
移动开发 Linux
Linux 文件与目录管理
Linux 文件与目录管理
27 3
|
2月前
|
Linux 应用服务中间件 nginx
Linux下权限设置之suid、sgid、sticky
Linux下权限设置之suid、sgid、sticky