SUID/GUID files search !

Paul Howarth paul at city-fan.org
Tue Feb 1 11:18:34 UTC 2005


fly over wrote:
> Hi guys, 
> i'm trying to write a script for following purpose.
> 
> shell program will be used by Linux/Unix sysadmins to search for SUID/SGID files. The default directory to search is the present working directory, however, the user may include a directory name on the command line as an alternative. Also, if the user includes the argument '-R' then the search should include all subdirectories recursively. Also, the '-G' argument will include SGID files which by default are not shown. The output of the script should show the absolute pathname of the file and the owner.
> 
> 
> Please help me in performin such task.

Sounds like a homework assignment to me...

> i'm trying using this line:
> 
> ls -l | awk '{print $1}' | grep s
> it just prints the permissions having s bit.

Yes, that's right. Your awk command is just printing the first field of 
the ls -l output, which is the permissions. What you want to do is to 
search the permissions but output the filename, something more like this:

$ ls -l | awk '/^-..[Ss]/ { print $9 }'

This looks for regular files (1st character of line is "-") that have 
the SUID bit set (fourth character of line is "s" or "S") and then 
prints out the filename (9th field of line).

You probably want to be using the "find" command rather than the "ls" 
command though. Use "-maxdepth 1" by default to turn off its recursive 
checking of directories, and skip the "-maxdepth 1" option when your 
script is passed the -R option.

Paul.




More information about the fedora-list mailing list