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
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.
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.
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)
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)
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)
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)
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)
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)
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)
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)
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)