-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

On 07/15/2016 09:45 AM, Fernando Rodriguez wrote:
> On 07/14/2016 09:36 PM, Jonathan Callen wrote:
>> On 07/14/2016 05:19 PM, Fernando Rodriguez wrote:
>>> On 07/13/2016 01:41 PM, wabe wrote:
>>>> Fernando Rodriguez <[email protected]> wrote:
>>>
>>>>> -----BEGIN PGP SIGNED MESSAGE-----
>>>>> Hash: SHA256
>>>>>
>>>>> On 07/13/2016 07:10 AM, Alan McKinnon wrote:
>>>>>> On 12/07/2016 03:47, jens w wrote:  
>>>>>>> .procmailrc
>>>>>>> :0 c
>>>>>>> * !^X-Loop: [email protected]  
>>>>>>> | formail -X "From:" | $HOME/bin/script.sh  
>>>>>>>
>>>>>>> procmail.log
>>>>>>> procmail: Executing " formail -X "From:" | $HOME/bin/script.sh
>>>>>>>
>>>>>>> for incoming mail, a script is executed. logfile has the same
>>>>>>> entry as it is in other users. but the script do nothing.
>>>>>>>
>>>>>>> How executing a command as a nologin user?
>>>>>>>  
>>>>>>
>>>>>>
>>>>>> You can't, not the way you are doing it.
>>>>>> You want to launch a shell script for the user, but the user's
>>>>>> shell is /sbin/nologin. This exits immediately without launching
>>>>>> the script.
>>>>>>
>>>>>> Give the user a real shell.
>>>>>>
>>>>>> Alan
>>>>>>   
>>>>>
>>>>> I've been following this thread and thinking the same thing but
>>>>> wasn't sure.
>>>>>
>>>>> What if you invoke the shell directly instead of the script, either:
>>>>> /bin/sh -c "<path to script>" or /bin/sh -c "$(cat <script>)"?
>>>>>
>>>>> If procmail uses the system() call to launch the script it won't work
>>>>> but if it uses fork()/exec() or similar I think that it should work.
>>>
>>>> I don't know how procmail is launching scripts so I don't know if
>>>> that what I say now makes sense. :-)
>>>
>>>> I tested if another regular user (lets call him user1) can execute 
>>>> scripts that are owned by nologinuser. It works as long as the path 
>>>> and the script itself are readable and executable by user1.
>>>> If the script is writing stuff into /home/nologinuser then it is
>>>> also necessary that the home directory is writable by user1.
>>>
>>>> Of course user1 hasn't executed the script as nologinuser. I don't
>>>> know if procmail is doing so.
>>>
>>>> --
>>>> Regards
>>>> wabe
>>>
>>>
>>> Yes, you can execute any scripts as long as you have permissions. A program
>>> can use the exec() family of functions to do that. But if the program calls
>>> the system() function or similar it will try to use the user shell to 
>>> execute
>>> the command. If the shell is nologin it will refuse to do so.
>>>
>>>
> 
>> That's not actually true either.  The system(3) function is defined to
>> create a child process using fork(2), then execute the specified command
>> using execl(3) as follows:
> 
>>     execl("/bin/sh", "sh", "-c", command, (char *) 0);
> 
>> Note that this is not dependent on the user's normal shell, the shell
>> /bin/sh is *always* used.
> 
> 
> You're right thanks.
> And I checked procmail and it tries execvp() first and if that fails it 
> execv()s 
> /bin/sh with the command as arguments so we're probably barking at the wrong 
> tree.

Ah, procmail does the shell lookup.



-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQIcBAEBCAAGBQJXiPEYAAoJEPbOFX/5UlwcVdkP/3niV4rI6o1Eas+VklF3l8ai
lRab+/2Y0auPofSYYwYiVeKtB+bB4YsYObgSBy9bsLUEJR5vKLaOoGJG1xEHUhXR
BJh/CBOcT8/YcvewjfBwCIagBRPlFk9tniIqzmJXQ611ABGHrXokwQ08znLNylsO
rEJShDWEXshQedrUah6Im0dwkiWRTieCttmYBsOQdrPFlRohtA1tdD43AmxYkjV0
2+Z2iN4y7nPJ3zgD0sIDT9AqdoMuZRGBYwHGsrQw8Z1SnWuqUD2jO34uzJVfy3O5
0YfnB/xCa9h+0kSfOSbqoAwQaJTCQp0Pp13/Ltt9yug7gwa1dHUqVkZDrA0KPcAF
GouibkkpxvLSF3bgabHnox6FDgcn5bv7zOUf3gkVlb01gKO+DHqWXybD7WwS+O2w
TFInvY2RaYcCnzdL5rRj3arrPC4aYle3EruRSef6RoMt3SHcOm1Fk4lt6MN8bwya
5romAct/HIVrRrCdMs11SjhkjRe/fxckOvyiGb0em24qapFSt5x3+UeARcFP/Rsz
zkN5b5j2ouCQ4TJ+7wdW6ZnXBuidUZNCqgQyN8uCq8z+GTMD1X1PPmXPhJcmH5Qc
mXM5YrQZOgE1IYJgnHW12YlIngWteHQYrIuoUjfYpjuG0tgBq+VrOTwIeVj2Ggbu
fkPFWbp9/8/o3vo0nTmW
=N2X8
-----END PGP SIGNATURE-----

Reply via email to