Create a program illustrating SUID


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Create a program illustrating SUID
# 8  
Old 03-31-2013
suid is for binary executables, not shell scripts. This is for security reasons.
# 9  
Old 03-31-2013
Please google for
sudo examples

---------- Post updated at 12:35 PM ---------- Previous update was at 12:25 PM ----------

Traditional Unix and its commercial derivates allow SUID scripts.
# 10  
Old 03-31-2013
Quote:
Originally Posted by Corona688
suid is for binary executables, not shell scripts. This is for security reasons.
The standards allow implementations to ignore the set-UID bit on executables as long as they document the conditions when they do so. I wasn't aware that Linux always ignored the set-UID bit on shell scripts.

Many systems allow set-UID shell scripts.

Many systems will clear the set-UID bit on a file when it is opened for writing.

Some systems will clear the set-UID bit on a file whenever the contents of the file are changed.
# 11  
Old 03-31-2013
Quote:
Originally Posted by Don Cragun
Many systems allow set-UID shell scripts.
Is his one of them? Many also don't.
# 12  
Old 03-31-2013
Quote:
Originally Posted by Corona688
Is his one of them? Many also don't.
Obviously, not.

Agreed. Before this thread started, I wasn't aware that disallowing set-UID execution of shell scripts was so common.
# 13  
Old 03-31-2013
Code:
Many systems will clear the set-UID bit on a file when it is opened for writing

Per POSIX:

write() system call
Code:
Upon successful completion, where nbyte is greater than 0, 
write() will mark for update the st_ctime and st_mtime fields of the file, 
and if the file is a regular file, the S_ISUID and S_ISGID bits of the file 
mode may be cleared.

I don't see where open() does that - FWIW.
# 14  
Old 03-31-2013
Quote:
Originally Posted by jim mcnamara
Code:
Many systems will clear the set-UID bit on a file when it is opened for writing

Per POSIX:

write() system call
Code:
Upon successful completion, where nbyte is greater than 0, 
write() will mark for update the st_ctime and st_mtime fields of the file, 
and if the file is a regular file, the S_ISUID and S_ISGID bits of the file 
mode may be cleared.

I don't see where open() does that - FWIW.
You're correct in saying that POSIX conforming systems aren't allowed to do this. (Although the standard isn't entirely consistent on this point. The descriptions of ftruncate() and truncate() both say that the S_ISUID and S_ISGID bits may be cleared if they change the size of the file. It is strange that open() with the O_TRUNC flag set doesn't make the same allowance.)

You may have also noticed the RATIONALE in the Base Definitions volume's description of the <sys/stat.h> header:
Quote:
The S_ISUID and S_ISGID bits may be cleared on any write, not just on open( ), as some historical implementations do.
I believe some non-conforming implementations still clear both of these bits on any successful open for writing, although I can't name any examples at this time.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Can you gain root privileges if the suid program does not belong to root?

I had a question in my test which asked where suppose user B has a program with 's' bit set. Can user A run this program and gain root privileges in any way? I suppose not as the suid program run with privileges of owner and this program will run with B's privileges and not root. (1 Reply)
Discussion started by: syncmaster
1 Replies

2. UNIX for Dummies Questions & Answers

Difference between inbuilt suid programs and user defined root suid programs under bash shell?

Hey guys, Suppose i run passwd via bash shell. It is a suid program, which temporarily runs as root(owner) and modifies the user entries. However, when i write a C file and give 4755 permission and root ownership to the 'a.out' file , it doesn't run as root in bash shell. I verified this by... (2 Replies)
Discussion started by: syncmaster
2 Replies

3. Solaris

How to create core through program at the time of crash by handling signals?

I am in process of writing a library which can make any application of my product capable of creating core in the application's log folder with a product friendly core file name programatically. In my library I am registering for certain signals e.g. SIGILL, SIGFPE, SIGBUS, SIGSEGV, SIGSYS, SIGABRT... (5 Replies)
Discussion started by: rajeev_ks
5 Replies

4. AIX

How to create core through program at the time of crash by handling signals?

I am in process of writing a library which can make any application of my product capable of creating core in the application's log folder with a product friendly core file name programatically. In my library I am registering for certain signals e.g. SIGILL, SIGFPE, SIGBUS, SIGSEGV, SIGSYS, SIGABRT... (1 Reply)
Discussion started by: rajeev_ks
1 Replies

5. Homework & Coursework Questions

create a program that runs two processes linked oven

I need help program in C... :create a program that runs two processes linked oven (1 Reply)
Discussion started by: gizmo16
1 Replies

6. Shell Programming and Scripting

Shell Program to create a RPM name

Hi Guru,s/Geek,s I need help to create RPM names from rpms. Example : a2ps-4.14-6.fc10.i386 perl-Email-Find-0.10-2.fc10.noarch directfb-1.2.7-2.fc10.i386 libid3tag-0.15.1b-7.fc10.i386 apr-util-1.3.7-1.fc10.i386 libquicktime-1.0.3-4.fc10.i386 The Desired Output is : a2ps... (2 Replies)
Discussion started by: anand.linux1984
2 Replies

7. Programming

create sound using C program

I could not recall the function in C to generate diff type of sounds. Can somebody help me out. (2 Replies)
Discussion started by: bishweshwar
2 Replies

8. Programming

Create a lib from a c program

I have a function in a c program that I want to to share with other programs. How do I create a lib using the cc compiler ? (9 Replies)
Discussion started by: npires
9 Replies

9. Programming

How to create a new unix user in through a c program

Hi , I want to create a new user using c program not with unix adduser command . is it possible to write a cprogram to create a new user account , it should accept username , grouid , group name and all other privilages . i can use system calls inside c program to do this . i will... (5 Replies)
Discussion started by: naren_chella
5 Replies

10. Programming

Using a C program to create directories in UNIX

Aloha, I'm attempting to use a C program to create directories and then use a system call to have another program write .dat files into that directory. I understand that I could use the "system("mkdir directory_name")" function however, I would like my program to create a new directory each time... (3 Replies)
Discussion started by: aloha_boi
3 Replies
Login or Register to Ask a Question