Re: Running DOSEMU as user

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Just to recap - on OpenSuSE 11.2 (and reportedly earlier versions too)
one has to disable apparmor completely using 'apparmor=0' kernel boot
parameter. Otherwise the 'sysctl' setting is ignored.

Now DOSEMU runs as expected - users can run it with SUID bit and without
'-s' parameter.

If I use '-s', I see two 'dosemu' processes for each user. Without it,
there is only one process per user, which is what I like best.


 Best regards, Danilo


On 02. 02. 2010 12:35, Danilo Godec wrote:
> Hi,
>
> I administer an old system (dated back to 2002) running DOSEMU (1.0.0).
> Multiple users connect to the machine with SSH / Telnet (over modem /
> ISDN dial-in) and run DOS / Novell IPX based applications. The system
> has worked so well that despite initial intentions to replace the system
> with something more up-to-date, they're still using it and the number of
> users increased. So much, that the old server is not coping anymore.
>
> So now it's finally time to get new hardware and I intended to also use
> a more up-to-date distribution and DOSEMU. I decided to use OpenSuSE
> 11.2, as I grown most comfortable with OpenSuSE. It comes with DOSEMU
> 1.4.0.1.
>
> I have the system up and running on a test machine (which is a humble
> desktop machine, but still more powerfull then the old server). I also
> managed to get DOSEMU running with IPX (using 'direct' networking) and
> those old Novell applications run too - but only if I run DOSEMU as
> 'root' (either directly or via 'sudo'). Now that is a bit of a problem,
> because sometimes, people forget to logout or their connection is
> interrupted - on the old system a login script would check whether
> DOSEMU is already running for the user and it would terminate the
> process. Of course, if I run all DOSEMU's as root, this is no longer
> possible, so I'm trying to find a way to run DOSEMU as users, but with
> all features.
>
> I set the 'suid' bit to 'dosemu.bin':
>
>   # ll /usr/bin/dosemu.bin
>   -rwsr-xr-x 1 root root 1816368 Oct 24 10:19 /usr/bin/dosemu.bin
>
> If I try to run DOSEMU as a user, I get this:
>
>   > dosemu
>   LOWRAM mmap: Invalid argument
>   Segmentation fault
>
> Actuaclly, this output is the same whether dosemu.bin has the suid bit
> or not.
>
> My 'dosemu.users':
>
>   
>> log_level= 1
>> root c_all unrestricted
>> all c_all unrestricted
>>     
> I found several references to the 'LOWRAM mmap' error and changed my
> '/proc/sys/vm/mmap_min_addr' to '0' - but it's still the same.
>
> Running dosemu with 'strace', I get this (the last part of the output):
>
>   
>> mprotect(0xb6d40000, 7405568, PROT_READ|PROT_WRITE) = 0
>> mprotect(0xb6d40000, 1114112, PROT_READ|PROT_WRITE) = 0
>> mmap2(NULL, 1114112, PROT_READ|PROT_WRITE|PROT_EXEC,
>> MAP_SHARED|MAP_FIXED, 5, 0) = -1 EACCES (Permission denied)
>> mmap2(NULL, 1114112, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 5, 0)
>> = -1 EACCES (Permission denied)
>> mprotect(0xffffffff, 1114112, PROT_READ|PROT_WRITE|PROT_EXEC) = -1
>> EINVAL (Invalid argument)
>> munmap(0, 655360)                       = 0
>> dup(2)                                  = 6
>> fcntl64(6, F_GETFL)                     = 0x8002 (flags
>> O_RDWR|O_LARGEFILE)
>> fstat64(6, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 1), ...}) = 0
>> mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
>> 0) = 0xb753e000
>> _llseek(6, 0, 0xbf913b00, SEEK_CUR)     = -1 ESPIPE (Illegal seek)
>> ---- removed some probably harmles 'locale' messages' ----
>> write(6, "LOWRAM mmap: Invalid argument\n", 30LOWRAM mmap: Invalid
>> argument
>> ) = 30
>> close(6)                                = 0
>> munmap(0xb753e000, 4096)                = 0
>> stat64("/home/danci/.dosemu/disclaimer", {st_mode=S_IFREG|0644,
>> st_size=402, ...}) = 0
>> munmap(0x100000, 65536)                 = 0
>> mmap2(0x100000, 65536, PROT_READ|PROT_WRITE|PROT_EXEC,
>> MAP_SHARED|MAP_FIXED, 5, 0) = 0x100000
>> mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
>> -1, 0) = 0xb6c40000
>> write(4, "CONF: reserving 1088Kb at 0x1000"..., 71) = 71
>> --- SIGSEGV (Segmentation fault) @ 0 (0) ---
>> +++ killed by SIGSEGV +++
>>     
> So... What am I doing wrong? What do I need to do to be able to run
> DOSEMU as non-root user?
>
>  Thanks, Danilo
>
> PS: I sure hope this list is still 'alive'.
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-msdos" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>   

--
To unsubscribe from this list: send the line "unsubscribe linux-msdos" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Console]     [Linux Audio]     [Linux for Hams]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite Camping]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Samba]     [Linux Media]     [Fedora Users]

  Powered by Linux