Shell Script to find out whether file has read, write and execute permission
Posted in File-management
There are three specific permissions on Unix-like (including Linux / Mac OS x) systems that apply to each user or class:
=> The read permission (r), which grants the ability to read a file. When set for a directory, this permission grants the ability to read the names of files in the directory
=> The write permission (w), which grants the ability to modify a file. When set for a directory, this permission grants the ability to modify entries in the directory. This includes creating files, deleting files, and renaming files.
=> The execute permission (x), which grants the ability to execute a file. This permission must be set for executable binaries in order to allow the operating system to run them. When set for a directory, this permission grants the ability to traverse its tree in order to access files or subdirectories, but not see files inside the directory (unless read is set).
SHELL CONDITIONAL EXPRESSIONS
You can use conditional expressions to find out file permissions. These are used by the [[ compound command and the test and [ builtin commands to test file attributes and perform string and arithmetic comparisons.
| Conditional Expression | Meaning |
| -a file | True if file exists. |
| -b file | True if file exists and is a block special file. |
| -c file | True if file exists and is a character special file. |
| -d file | True if file exists and is a directory. |
| -e file | True if file exists. |
| -f file | True if file exists and is a regular file. |
| -g file | True if file exists and is set-group-id. |
| -h file | True if file exists and is a symbolic link. |
| -k file | True if file exists and its "sticky" bit is set. |
| -p file | True if file exists and is a named pipe (FIFO). |
| -r file | True if file exists and is readable. |
| -s file | True if file exists and has a size greater than zero. |
| -t fd | True if file descriptor fd is open and refers to a terminal. |
| -u file | True if file exists and its set-user-id bit is set. |
| -w file | True if file exists and is writable. |
| -x file | True if file exists and is executable. |
| -O file | True if file exists and is owned by the effective user id. |
| -G file | True if file exists and is owned by the effective group id. |
| -L file | True if file exists and is a symbolic link. |
| -S file | True if file exists and is a socket. |
| -N file | True if file exists and has been modified since it was last read. |
Sample Shell Script
#!/bin/bash # Shell script to find out whether file has read, write and execute # permission # ------------------------------------------------------------------------- # Copyright (c) 2005 nixCraft project <http://cyberciti.biz/fb/> # This script is licensed under GNU GPL version 2.0 or above # ------------------------------------------------------------------------- # This script is part of nixCraft shell script collection (NSSC) # Visit http://bash.cyberciti.biz/ for more information. # ------------------------------------------------------------------------- echo -n "Enter file name : " read file # find out if file has write permission or not [ -w $file ] && W="Write = yes" || W="Write = No" # find out if file has excute permission or not [ -x $file ] && X="Execute = yes" || X="Execute = No" # find out if file has read permission or not [ -r $file ] && R="Read = yes" || R="Read = No" echo "$file permissions" echo "$W" echo "$R" echo "$X"
Download - Email this to a friend - Printable version
Is your site working? Monitor Your Web Site 24/7. Get SMS alerts on server downtime! Free 30-day trial including 20 SMS!
Related Other Helpful Shell Scripts:
- Shell script to Finding Accounts with No Password ( null password account )
- Script to logoff KDE/Gnome desktop user session; you can use it from command line or from desktop via Lanucher
- Apache FastCGI / mod_fastcgi PHP Script
- Shell script to find all world-writable files and directories on Linux / UNIX system
- Shell script to find all programs and scripts with setuid bit set on
Discussion on This Shell Script:
Leave a Reply
We encourage your comments, and suggestions. But please stay on topic, be polite, and avoid spam. Thank you very much for stopping by our site!
Tags: arithmetic, binaries, builtin commands, conditional expression, conditional expressions, deleting files, file attributes, file permissions, group id, linux, linux mac, mac os x, operating system, renaming files, sticky bit, subdirectories, symbolic link, unix ~ Last updated on: April 5, 2008


[...] echo “$R” echo “$X” The script source is originally taken from cybercity, I’ve changed it a little bit. Here is a sample report [...]
Good work