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

脚本名:power.sh

脚本内容:

Shell代码  


#!/bin/sh
username3=$1
dir_name2=$2

# get existing directory
file_path=$dir_name2
while true
do
if [ -d $file_path ];then
break;
fi
file_path=${file_path%/*}
done
dir_name2=$file_path

# Judge whether the user exists
grep "^$username3:" /etc/passwd >/dev/null
if [ $? -ne 0 ];then
echo "This user \"$username3\" does not exist."
exit 4
fi
#echo "username : $username3"
group4=` grep "^$username3:" /etc/passwd |awk -F : {‘print $4‘}|xargs -i grep {} /etc/group|cut -d":" -f1`
#echo "group : $group4"
su -l $username3 -c "test -r $dir_name2"
is_read=$?
su -l $username3 -c "test -x $dir_name2"
is_exe=$?
su -l $username3 -c "test -w $dir_name2"
is_write=$?
$is_read_str
$is_exe_str
$is_write_str
if [ $is_read -eq 0 ];then
is_read_str="r"
else
is_read_str="-"
fi

if [ $is_exe -eq 0 ];then
is_exe_str="x"
else
is_exe_str="-"
fi

if [ $is_write -eq 0 ];then
is_write_str="w"
else
is_write_str="-"
fi

echo "${is_read_str}${is_write_str}${is_exe_str}"

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

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

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

测试:

[[email protected] study]# sh power.sh whuanga4 /tmp/abc/dd

This user "whuanga4" does not
exist.

[[email protected] study]# sh power.sh whuang4 /tmp/abc/dd

rw-

(说明:表示用户whuang4 对目录/tmp/abc/dd 具有读和写权限,没有执行权限)。

时间: 2024-10-05 16:34:42

linux 判断指定用户对指定目录具有的权限的相关文章

Linux创建指定用户特定指定目录权限

指定用户特定指定目录权限 需要注意要指定好文件夹的权限,不然会导致nginx不能访问,最好是在root下建立目录,然后 # useradd -d /usr/www -m tempuser# passwd tempuser   回车输入密码 注意一定要带用户名,不然就是修改root!!!# chown tempuser -R /usr/www 这样不能上传到其他目录,但是可以下载可以看,只读. # chmod 755 /usr/www  如果要给特定 但是需要注意 在linux shell中不显示

setfacl 给指定用户设置指定目录,其他目录无法访问

setfacl 给指定用户设置指定目录,其他目录无法访问 新建一个yja用户,这个用户只能访问 /datadisk1/aa目录,不能访问/datadisk1 下的其他目录 1.修改/datadisk1 根目录 chmod -R 0700 /datadisk1 2.设置用户可以访问的目录 setfacl -m u:yja:r-x /datadisk1 setfacl -m u:yja:rwx /datadisk1/aa 3.设置组可以访问的目录 setfacl -m g:dev:r-x /data

C#修改文件或文件夹的权限,为指定用户、用户组添加完全控制权限

题目链接:11645 - Bits 题意:给定一个数字n,要求0-n的二进制形式下,连续11的个数. 思路:和 UVA 11038 这题类似,枚举中间,然后处理两边的情况. 不过本题最大的答案会超过longlong,要用高精度,不过借鉴http://www.cnblogs.com/TO-Asia/p/3214706.html这个人的方法,直接用两个数字来保存一个数字,这样能保存到2个longlong的长度,就足够存放这题的答案了. 代码: #include <stdio.h> #include

Exchange 限制指定用户往指定通讯组发送邮件

同学有个需要,要限制指定用户往指定通讯组发送邮件** 经过测试后,可使用设置通讯组的 RejectMessagesFrom项来设置,后来接邮箱账号即可! 下图对 TestGroup 通讯组来做演示:按下图设置完成后,使用限制的用户往该通讯组发送邮件,收到一封没有权限的邮件 查看该项值 原文地址:http://blog.51cto.com/zhaodongwei/2136094

Linux sftp限制用户访问指定目录

一.创建新用户: [root@controller ~]# useradd test[root@controller ~]# passwd testNew password: BAD PASSWORD: The password is a palindromeRetype new password: passwd: all authentication tokens updated successfully. 二.修改sshd配置文件: [root@controller ~]# vi /etc/

vsftpd添加用户并限制目录(指定用户访问指定目录)

开发那边更新速度如果比较快,每天会有无数的文件或者目录交给运维更新上线,这样比较麻烦,干脆给他们搭FTP让他们自己上传修改,但有一问题,就是权限问题,公司五个站点有五个目录,每个人负责不同的站点,如何让各自都不干扰别人,或者说不到别人的目录搞“破坏”!下面解决这个问题! 一.检查Linux中vsftpd的安装情况. 就不啰嗦了 二.将系统中的SELinux关闭,然后重新启动电脑(不关闭的话修改好标签也可以) 关闭SELinux的方法: 修改/etc/selinux/config文件中的SELIN

postfix 指定用户限制指定域名收发

main.cf 配置示例: smtpd_restriction_classes = local_in_only, local_out_only local_in_only = check_recipient_access hash:/etc/postfix/local_domains, reject local_out_only = check_sender_access hash:/etc/postfix/local_domains, reject smtpd_recipient_restri

使用Linux strace命令来跟踪 bdump目录的x权限丢失时sqlplus / as sysdba 的输出

在上一篇文章中,说到bdump目录的x权限丢失,导致oracle数据库异常. 下面就来用linux 的strace命令来跟踪一下,当bdump目录的x权限丢失时,sqlplus / as sysdba会有什么样的输出: strace命令如下,该命令来源于:Using Strace in Linux to Debug Hang Type Problems (Doc ID 1391746.1) strace -fe verbose=all -e write=all -e read=all -o /u

Oracle&gt;&gt;通过PL/SQL程序块判断,指定用户的指定数据表和序列是否存在,如果存在则删除,否则新创建。并且为表添加含有字符串数据,execute immediate执行insert语句中有字符串解决办法

--变量声明 declare num0 number; num1 number; begin --判断用户为:SYSTEM的数据库中是否存在相关数据表和序列,存在则删除,不存在则新创建,DBMS_OUTPUT.put_line等同java中的System.out.println输出语句 DBMS_OUTPUT.put_line('正在初始化数据库信息,请稍后......'); --以下参数说明: --所涉及到的参数值必须为大写 --sequence_owner:指定哪个数据库用户的序列: seq