Skipping all SetCaps() and SetUser() calls when it is started as 'root' and "-u root" is given

This commit is contained in:
Klaus Schmidinger 2006-01-09 16:54:35 +01:00
parent df65f4a2f1
commit f415169064
2 changed files with 15 additions and 10 deletions

View File

@ -4135,7 +4135,7 @@ Video Disk Recorder Revision History
Schneider).
- Cleaned up some trailing white space.
2006-01-08: Version 1.3.39
2006-01-09: Version 1.3.39
- The SVDRP command LSTT now accepts the new option 'id' to have the channels
of the timers listed with their unique channel ids instead of their numbers
@ -4147,3 +4147,6 @@ Video Disk Recorder Revision History
(thanks to Peter Bieringer). If you are using the PC keyboard as remote control
input you may need to make VDR newly learn the keys by removing the remote.conf
file.
- To avoid problems with access rights when VDR shall run as 'root' it now skips
all SetCaps() and SetUser() calls when it is started as 'root' and "-u root"
is given.

20
vdr.c
View File

@ -22,7 +22,7 @@
*
* The project's page is at http://www.cadsoft.de/vdr
*
* $Id: vdr.c 1.233 2006/01/08 11:49:03 kls Exp $
* $Id: vdr.c 1.234 2006/01/09 16:44:15 kls Exp $
*/
#include <getopt.h>
@ -339,14 +339,16 @@ int main(int argc, char *argv[])
if (getuid() == 0) {
StartedAsRoot = true;
if (!SetKeepCaps(true))
return 2;
if (!SetUser(VdrUser))
return 2;
if (!SetKeepCaps(false))
return 2;
if (!SetCapSysTime())
return 2;
if (strcmp(VdrUser, "root")) {
if (!SetKeepCaps(true))
return 2;
if (!SetUser(VdrUser))
return 2;
if (!SetKeepCaps(false))
return 2;
if (!SetCapSysTime())
return 2;
}
}
// Help and version info: