Unix permissions, read vs. execute (PHP context)

后端 未结 2 1966
借酒劲吻你
借酒劲吻你 2020-12-09 17:37

I have a php script which needs to connect to a database. The credentials for the database are stored in another php script.

If I set the permissions for the credent

相关标签:
2条回答
  • 2020-12-09 17:46

    As far as files are concerned, execute permission is irrelevant to you - the user account your web server is running under needs permission to access and read the files in question. In order to traverse into a directory, the user will also require execute permission on that directory.

    If you are trying to make your scripts readable by the web server (let's say you're running as the account "www" which belongs to group "www"), and not by other users on the system, here's what I would do (assumes your account is "myuser"):

    # Change owner to "myuser" and group to "www" for file(s) in question
    chown myuser:www config.php
    
    # 640: myuser has rw-, www has r--, world has ---
    chmod 640 config.php
    

    If you want to prevent the world from reading any file in a "secrets" directory, just disable the execute bit:

    # 750: myuser has rwx, www has r-x, world has ---
    chmod 750 secrets
    

    If you set all your scripts to have execute permission but not read permission, nobody can do anything useful with them (including the webserver) ;-)

    0 讨论(0)
  • 2020-12-09 18:12

    Scripts are read, not executed. Execute permission for scripts tells the loader or kernel to read the shebang line and pass the script to the named interpreter.

    0 讨论(0)
提交回复
热议问题