Syntax when using the 'exec' command


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users Syntax when using the 'exec' command
# 8  
Old 11-09-2016
@Hungryd, should the ACL way doesn't suit your needs, here is an alternative:
Code:
mkfifo /tmp/fifo$$
sudo dd if=/tmp/fifo$$ of=$logFile &
pid=$!
exec >/tmp/fifo$$ 2>&1
...
run whatever commands you like as the regular user here 
...
rm /tmp/fifo$$
exec >/dev/tty 2>&1
sudo kill $pid


Last edited by jlliagre; 11-09-2016 at 04:04 AM..
# 9  
Old 11-09-2016
Quote:
Originally Posted by hungryd
I'm guessing that either:
  1. my syntax is wrong or
  2. I can't use sudo in a redirect
It is actually number 2.

I hopefully won't distract too much from the focus of the thread by providing a few words on how sudo works. Here it goes:

sudo works by providing rules to run processes under different user-privileges than the current one. Basically

Code:
sudo /some/command -opt arg1 arg2

is the same as su-ing to another user (usually root, but it could be any other either), then executing said command - that is: creating a process - and then switching back immediately.

Code:
su - otheruser
/some/command -opt arg1 arg2
exit

The keyword here is process. If you enter a command (via commandline or from a script, it doesn't matter) a process is created which does something for you.

exec creates no process, it is just a shell keyword. Therefore sudo cannot work with it, like it cannot work with if, while or any other keyword the shell uses.

The solution is to either not use sudo but other means (like ACLs, FIFOs, better suited filemodes for log files, group rights, ... like you have been told already) or create a process which sudo can work with. As perhaps you will want to not only redirect your own messages generated with print or similar shell commands but also the output from arbitrary executables this is not possible at all.

Personally i would suggest to make such logfiles writable for a certain group, do the same for the scripts in question and then either put everybody who should be able to execute these scripts into this group or use sudo-rules to let select groups (UNIX groups or select users) use these scripts. Instead of fiddling around with Rube-Goldberg-methods just use the classical UNIX toolbox like it is meant to be used: groups were actually invented for exactly that purpose of allowing a group of users and their processes to do what other users (and their processes) can't.

I hope this helps.

bakunin

Last edited by rbatte1; 11-10-2016 at 05:34 AM.. Reason: Edited the quoted text numbered list to be a formatted numbered list as I'd edited it in the initial post.
This User Gave Thanks to bakunin For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Linux find command seems to not transmit all the result to the '-exec command'

Hello. From a script, a command for a test is use : find /home/user_install -maxdepth 1 -type f -newer /tmp/000_skel_file_deb ! -newer /tmp/000_skel_file_end -name '.bashrc' -o -name '.profile' -o -name '.gtkrc-2.0' -o -name '.i18n' -o -name '.inputrc' Tha command... (3 Replies)
Discussion started by: jcdole
3 Replies

2. Shell Programming and Scripting

Exec command - what is it doing here?

Hi all, Forgive me for asking for help with my first post, but I am struggling here. I've been asked to translate a bash script into a Windows script (probably batch or powershell, not sure yet), so the first step is obviously understand what the bash script is doing. But I have no experience in... (5 Replies)
Discussion started by: el_foz
5 Replies

3. Shell Programming and Scripting

exec command help

Hi, I have the following lines in a script : . . exec < some_file . . . I have very little idea about exec command. I would like to know what this does and what will happen if the file some_file does not exist. Specifically, I would like to know whether the lines following this... (5 Replies)
Discussion started by: elixir_sinari
5 Replies

4. UNIX for Dummies Questions & Answers

Exec command

Hi can some one explain the following command , It would really help if some can really elloborate on what is happening out here export PATH | exec /bin/sh ./auto_approve :q P.S: This is the first time i am using exec ,so an elloboration what does it do and what is the use of the :q will be... (1 Reply)
Discussion started by: Sri3001
1 Replies

5. Shell Programming and Scripting

exec command

How can I use the exec command to log my korn shell session to the screen and the log file? Currently I have this command: $exec 1> ${LOG} 2>&1 This logs the output to the log file only. I want it to go to the screen also. Is this possible with this command? thanks. (10 Replies)
Discussion started by: djehresmann
10 Replies

6. Shell Programming and Scripting

exec command help

All, I am using below shell script to output the content to outputfile.txt. What I am looking for is in addition to outputfile.txt, I want the output to be on standard output too. exec > outputfile.txt echo "Starting " echo "ending" (5 Replies)
Discussion started by: basic_shell
5 Replies

7. Shell Programming and Scripting

exec command

can any one pls explain the meaning of exec 1<&5 ?? its urgent (2 Replies)
Discussion started by: santosh1234
2 Replies

8. UNIX for Dummies Questions & Answers

Need help with -exec cp command.

I have a ksh script that contains the following: find /dir1/dir2 -type f -name "FILE.*" -newer /dir1/dir2/afterme.txt -exec cp /dir1/dir2/dir3 {} \; When I run it from the cli, it runs fine. When I run it from the ksh script I get find: missing argument to `-exec' I also tried -exec cp... (40 Replies)
Discussion started by: bbbngowc
40 Replies

9. Shell Programming and Scripting

exec command

hai i want know the difference between two shell scripts those are 1) a=2004 echo $a #output------2004 exec < inputfile while read line do echo $a #output-------2004 a=2005 echo $line echo $a ... (1 Reply)
Discussion started by: g_s_r_c
1 Replies

10. UNIX for Dummies Questions & Answers

using the -exec command

linux redhat 8.0 I am getting accustomed to using the -exec command to get around my databse.. and use it to edit and update files..! is this more apllicable than jumping from one directory to the other.. I have set up the databse so that the inode #'s are accessable and can get me from one... (0 Replies)
Discussion started by: moxxx68
0 Replies
Login or Register to Ask a Question