Anomalous results from access(2)

From: David S. (davids@idiom.com)
Date: Mon Oct 15 2001 - 17:18:09 EST


[1.] Anomalous results from access(2)

[2.] When by root run against files in the ext2 file system, access(2)
        reports non-executable files as executable. For a non-privileged
        user, access(2) reports non-executable files as non-executable.
        Also, stat(2) and the 'test -x' shell facility report non-executable
        files as such for either root or a non-privileged user, and all of
        access(2), stat(2), and 'test -x' give consistent results for root
        and ordinary users when the files in question live in NFS.

[3.] access(2), ext2 file system

[4.] Linux version 2.4.9 (root@blofeld) (gcc version 2.95.3 20010315 (release)) #1 Fri Oct 12 15:50:50 PDT 2001
        (also seen in kernels 2.4.5 and 2.2.16)

[5.] Not applicable

[6.] #include <sys/types.h>
        #include <sys/stat.h>
        #include <stdio.h>
        #include <unistd.h>
        
        int main(int argc, char *argv[])
        {
           struct stat sb;
        
           char *path = argv[1];
        
           if (stat(path, &sb) == 0)
           {
              if (access(path, X_OK) == 0)
                 printf("'access' thinks %s is executable\n", path);
              else
                 printf("'access' thinks %s is not executable\n", path);
        
              if (sb.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))
                 printf("'stat' thinks %s is executable\n", path);
              else
                 printf("'stat' thinks %s is not executable\n", path);
           }
           return 0;
        }

[7.]

[7.1.] Gnu C 2.95.3
        Gnu make 3.79.1
        binutils 2.11.90.0.19
        util-linux 2.11f
        mount 2.11b
        modutils 2.4.6
        e2fsprogs 1.22
        reiserfsprogs 3.x.0j
        Linux C Library 2.2.3
        Dynamic linker (ldd) 2.2.3
        Procps 2.0.7
        Net-tools 1.60
        Kbd 1.06
        Sh-utils 2.0
        Modules Loaded nfs autofs nfsd lockd sunrpc ipv6 eepro100 rtc unix

[7.2.] processor : 0
        vendor_id : AuthenticAMD
        cpu family : 6
        model : 3
        model name : AMD Duron(tm) Processor
        stepping : 1
        cpu MHz : 800.033
        cache size : 64 KB
        fdiv_bug : no
        hlt_bug : no
        f00f_bug : no
        coma_bug : no
        fpu : yes
        fpu_exception : yes
        cpuid level : 1
        wp : yes
        flags : fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca cmov pat p
        se36 mmx fxsr syscall mmxext 3dnowext 3dnow
        bogomips : 1595.80
        
[7.3.] nfs 74992 1 (autoclean)
        autofs 10944 2 (autoclean)
        nfsd 69536 0 (autoclean)
        lockd 50896 1 (autoclean) [nfs nfsd]
        sunrpc 63120 1 (autoclean) [nfs nfsd lockd]
        ipv6 133344 -1 (autoclean)
        eepro100 16016 1
        rtc 5472 0 (autoclean)
        unix 15296 23 (autoclean)

[7.4] 0000-001f : dma1
        0020-003f : pic1
        0040-005f : timer
        0060-006f : keyboard
        0070-007f : rtc
        0080-008f : dma page reg
        00a0-00bf : pic2
        00c0-00df : dma2
        00f0-00ff : fpu
        0170-0177 : ide1
        0376-0376 : ide1
        03c0-03df : vesafb
        0cf8-0cff : PCI conf1
        4000-40ff : VIA Technologies, Inc. VT82C686 [Apollo Super ACPI]
        5000-500f : VIA Technologies, Inc. VT82C686 [Apollo Super ACPI]
        6000-607f : VIA Technologies, Inc. VT82C686 [Apollo Super ACPI]
        9000-900f : VIA Technologies, Inc. Bus Master IDE
          9000-9007 : ide0
          9008-900f : ide1
        9400-941f : VIA Technologies, Inc. UHCI USB
        9800-981f : VIA Technologies, Inc. UHCI USB (#2)
        9c00-9cff : VIA Technologies, Inc. AC97 Audio Controller
        a000-a003 : VIA Technologies, Inc. AC97 Audio Controller
        a400-a403 : VIA Technologies, Inc. AC97 Audio Controller
        ac00-ac07 : Promise Technology, Inc. 20267
          ac00-ac07 : ide2
        b000-b003 : Promise Technology, Inc. 20267
          b002-b002 : ide2
        b400-b407 : Promise Technology, Inc. 20267
        b800-b803 : Promise Technology, Inc. 20267
        bc00-bc3f : Promise Technology, Inc. 20267
          bc00-bc07 : ide2
          bc08-bc0f : ide3
          bc10-bc3f : PDC20267
        c000-c03f : Intel Corporation 82559 InBusiness 10/100
          c000-c03f : eepro100
        c400-c43f : Intel Corporation 82559 InBusiness 10/100 (#2)
          c400-c43f : eepro100

        00000000-0009fbff : System RAM
        0009fc00-0009ffff : reserved
        000a0000-000bffff : Video RAM area
        000c0000-000c7fff : Video ROM
        000d0000-000d1fff : Extension ROM
        000f0000-000fffff : System ROM
        00100000-0ffeffff : System RAM
          00100000-001c1b31 : Kernel code
          001c1b32-0020543f : Kernel data
        0fff0000-0fff2fff : ACPI Non-volatile Storage
        0fff3000-0fffffff : ACPI Tables
        d0000000-d3ffffff : VIA Technologies, Inc. VT8363/8365 [KT133/KM133]
        d4000000-d5ffffff : PCI Bus #01
          d4000000-d4ffffff : nVidia Corporation Vanta [NV6]
        d6000000-d7ffffff : PCI Bus #01
          d6000000-d7ffffff : nVidia Corporation Vanta [NV6]
            d6000000-d63fffff : vesafb
        d9000000-d90fffff : Intel Corporation 82559 InBusiness 10/100
        d9100000-d91fffff : Intel Corporation 82559 InBusiness 10/100 (#2)
        d9200000-d921ffff : Promise Technology, Inc. 20267
        d9220000-d9220fff : Intel Corporation 82559 InBusiness 10/100 (#2)
          d9220000-d9220fff : eepro100
        d9221000-d9221fff : Intel Corporation 82559 InBusiness 10/100
          d9221000-d9221fff : eepro100
        ffff0000-ffffffff : reserved

[7.5.] 00:00.0 Host bridge: VIA Technologies, Inc.: Unknown device 0305 (rev 03)
                Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
                Status: Cap+ 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ >SERR- <PERR+
                Latency: 0
                Region 0: Memory at d0000000 (32-bit, prefetchable) [size=64M]
                Capabilities: [a0] AGP version 2.0
                        Status: RQ=31 SBA+ 64bit- FW+ Rate=x1,x2
                        Command: RQ=0 SBA- AGP- 64bit- FW- Rate=<none>
                Capabilities: [c0] Power Management version 2
                        Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
                        Status: D0 PME-Enable- DSel=0 DScale=0 PME-
        
        00:01.0 PCI bridge: VIA Technologies, Inc.: Unknown device 8305 (prog-if 00 [Normal decode])
                Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
                Status: Cap+ 66Mhz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ >SERR- <PERR-
                Latency: 0
                Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
                I/O behind bridge: 0000f000-00000fff
                Memory behind bridge: d4000000-d5ffffff
                Prefetchable memory behind bridge: d6000000-d7ffffff
                BridgeCtl: Parity- SERR- NoISA+ VGA+ MAbort- >Reset- FastB2B-
        
        00:07.0 ISA bridge: VIA Technologies, Inc. VT82C686 [Apollo Super] (rev 22)
                Subsystem: VIA Technologies, Inc. VT82C686/A PCI to ISA Bridge
                Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping+ SERR- FastB2B-
                Status: Cap+ 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
                Latency: 0
        
        00:07.1 IDE interface: VIA Technologies, Inc. VT82C586 IDE [Apollo] (rev 10) (prog-if 8a [Master SecP PriP])
                Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
                Status: Cap+ 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
                Latency: 32
                Region 4: I/O ports at 9000 [size=16]
                Capabilities: [c0] Power Management version 2
                        Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
                        Status: D0 PME-Enable- DSel=0 DScale=0 PME-
        
        00:07.2 USB Controller: VIA Technologies, Inc. VT82C586B USB (rev 10) (prog-if 00 [UHCI])
                Subsystem: Unknown device 0925:1234
                Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
                Status: Cap+ 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
                Latency: 32, cache line size 08
                Interrupt: pin D routed to IRQ 10
                Region 4: I/O ports at 9400 [size=32]
                Capabilities: [80] Power Management version 2
                        Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
                        Status: D0 PME-Enable- DSel=0 DScale=0 PME-
        
        00:07.3 USB Controller: VIA Technologies, Inc. VT82C586B USB (rev 10) (prog-if 00 [UHCI])
                Subsystem: Unknown device 0925:1234
                Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
                Status: Cap+ 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
                Latency: 32, cache line size 08
                Interrupt: pin D routed to IRQ 10
                Region 4: I/O ports at 9800 [size=32]
                Capabilities: [80] Power Management version 2
                        Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
                        Status: D0 PME-Enable- DSel=0 DScale=0 PME-
        
        00:07.4 Host bridge: VIA Technologies, Inc. VT82C686 [Apollo Super ACPI] (rev 30)
                Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
                Status: Cap+ 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
                Interrupt: pin ? routed to IRQ 9
                Capabilities: [68] Power Management version 2
                        Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
                        Status: D0 PME-Enable- DSel=0 DScale=0 PME-
        
        00:07.5 Multimedia audio controller: VIA Technologies, Inc. VT82C686 [Apollo Super AC97/Audio] (rev 20)
                Subsystem: Micro-star International Co Ltd: Unknown device 3300
                Control: I/O+ Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
                Status: Cap+ 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
                Interrupt: pin C routed to IRQ 5
                Region 0: I/O ports at 9c00 [size=256]
                Region 1: I/O ports at a000 [size=4]
                Region 2: I/O ports at a400 [size=4]
                Capabilities: [c0] Power Management version 2
                        Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
                        Status: D0 PME-Enable- DSel=0 DScale=0 PME-
        
        00:08.0 Unknown mass storage controller: Promise Technology, Inc.: Unknown device 4d30 (rev 02)
                Subsystem: Promise Technology, Inc.: Unknown device 4d33
                Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
                Status: Cap+ 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
                Latency: 32
                Interrupt: pin A routed to IRQ 11
                Region 0: I/O ports at ac00 [size=8]
                Region 1: I/O ports at b000 [size=4]
                Region 2: I/O ports at b400 [size=8]
                Region 3: I/O ports at b800 [size=4]
                Region 4: I/O ports at bc00 [size=64]
                Region 5: Memory at d9200000 (32-bit, non-prefetchable) [size=128K]
                Expansion ROM at <unassigned> [disabled] [size=64K]
                Capabilities: [58] Power Management version 1
                        Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
                        Status: D0 PME-Enable- DSel=0 DScale=0 PME-
        
        00:09.0 Ethernet controller: Intel Corporation 82559 InBusiness 10/100 (rev 08)
                Subsystem: Intel Corporation 82559 InBusiness 10/100
                Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
                Status: Cap+ 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
                Latency: 32 (2000ns min, 14000ns max), cache line size 08
                Interrupt: pin A routed to IRQ 5
                Region 0: Memory at d9221000 (32-bit, non-prefetchable) [size=4K]
                Region 1: I/O ports at c000 [size=64]
                Region 2: Memory at d9000000 (32-bit, non-prefetchable) [size=1M]
                Expansion ROM at <unassigned> [disabled] [size=1M]
                Capabilities: [dc] Power Management version 2
                        Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold+)
                        Status: D0 PME-Enable- DSel=0 DScale=2 PME-
        
        00:0a.0 Ethernet controller: Intel Corporation 82559 InBusiness 10/100 (rev 08)
                Subsystem: Intel Corporation 82559 InBusiness 10/100
                Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
                Status: Cap+ 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
                Latency: 32 (2000ns min, 14000ns max), cache line size 08
                Interrupt: pin A routed to IRQ 10
                Region 0: Memory at d9220000 (32-bit, non-prefetchable) [size=4K]
                Region 1: I/O ports at c400 [size=64]
                Region 2: Memory at d9100000 (32-bit, non-prefetchable) [size=1M]
                Expansion ROM at <unassigned> [disabled] [size=1M]
                Capabilities: [dc] Power Management version 2
                        Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold+)
                        Status: D0 PME-Enable- DSel=0 DScale=2 PME-
        
        01:00.0 VGA compatible controller: nVidia Corporation Vanta [NV6] (rev 15) (prog-if 00 [VGA])
                Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
                Status: Cap+ 66Mhz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
                Latency: 32 (1250ns min, 250ns max)
                Interrupt: pin A routed to IRQ 9
                Region 0: Memory at d4000000 (32-bit, non-prefetchable) [size=16M]
                Region 1: Memory at d6000000 (32-bit, prefetchable) [size=32M]
                Expansion ROM at <unassigned> [disabled] [size=64K]
                Capabilities: [60] Power Management version 1
                        Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
                        Status: D0 PME-Enable- DSel=0 DScale=0 PME-
                Capabilities: [44] AGP version 2.0
                        Status: RQ=31 SBA- 64bit- FW- Rate=x1,x2
                        Command: RQ=0 SBA- AGP- 64bit- FW- Rate=<none>
        
[7.6.] Not applicable

[7.7.] As a point of comparison, access(2) gives consistent results in
        NetBSD 1.5.1 for root and ordinary users, with files in either
        ffs or NFS.

David S.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Mon Oct 15 2001 - 21:00:59 EST