58

I am using Linux. What is the meaning of chmod 666?

4
  • 38
    aka, the Satan command.
    – Moab
    Jun 10, 2011 at 21:29
  • 7
    If that bothers you (or if you can't be bothered to remember those numbers) you can also write it as chmod a=rw.
    – starblue
    Jun 11, 2011 at 6:48
  • 1
    useless command, since the third argument is not given ^^
    – kokbira
    Feb 4, 2019 at 15:15
  • also it can produce security flaws (all users can write the file/folder) or useless file/folder permissions
    – kokbira
    Feb 4, 2019 at 15:17

5 Answers 5

129

chmod command change attributes from a file/folder:

  • chmod 666 file/folder means that all users can read and write but cannot execute the file/folder;
  • chmod 777 file/folder allows all actions for all users;
  • chmod 744 file/folder allows only user (owner) to do all actions; group and other users are allowed only to read.

    permission to:  user(u)   group(g)   other(o)     
                    /¯¯¯\      /¯¯¯\      /¯¯¯\
    octal:            6          6          6
    binary:         1 1 0      1 1 0      1 1 0
    what to permit: r w x      r w x      r w x
    
    binary         - 1: enabled, 0: disabled
    
    what to permit - r: read, w: write, x: execute
    
    permission to  - user: the owner that create the file/folder
                     group: the users from group that owner is member
                     other: all other users
    

Alternatively, you can execute the command with a more intuitive syntax, without needing to think in binary or octal (but the knowledge of numeric syntax is so important): chmod u=rw, g=rw, o=rw file/folder

Remember that the permission changes with chmod command requires at least 3 arguments, so chmod 666 does nothing without explicit file/folder to change permissions.

Also be sure to criticize if it does not produce insecure issues or simply if it is an useless permission change, because chmod 666 will allow file/folder write to all and the execution to none.

8
  • 5
    Only it's "octal", not "decimal". +1 anyway.
    – Ben Voigt
    Jun 11, 2011 at 14:15
  • 2
    The third point mentioned in the first post is incorrect - chmod 711 allows only owner to do all actions, group and other are allowed only to read ![enter image description here][1] This is the table for rwx for octal rwx 000 001 010 011 100 101 110 111 Octal 001, or 1 denotes execute permission Octal 7, 111 denotes read write and execute permission hence 711 denotes, rwx for owner, and x for groups and others.
    – user155250
    Aug 29, 2012 at 16:04
  • 4
    It only goes to 7 anyway, so there's no difference between octal and decimal in this case. :/
    – Rob
    Aug 29, 2012 at 16:49
  • yeah, @Yash, and after 1 year, 2 months and 18 days after the original post someone saw that error :) I'll correct it to 744 on example.
    – kokbira
    Aug 29, 2012 at 20:58
  • 2
    @KyleVassella, owner is the owner of file or folder, generally the one that created it. group is the group of users associated with that file or folder, generally the group that owner is in. So imagine that I am rootbira and my groop is rootusers and you are on that group too, and all other SU forum members are in other group. If I create a file and do a with chmod 750, I would read, write and execute it, you would only read and execute and SU users won't do anything - it is our secret ¬¬
    – kokbira
    Nov 22, 2017 at 19:53
8

As mentioned in other answers, chmod means change mode. It affects the read, write and executable permissions for the owner, group and other categories of users. The numbers that follow the command (in this case 666), indicate how those permissions are modified for the file the command is run on (for 666, it means that owner, group and other have read and write permissions, but no executable permissions).

By changing the numbers to different values you effectively change the permissions for the file. The link I've referenced above has a little tool for figuring out what values you need to put in to get the permissions scheme you're after. It also goes over the switch options available for the command and some examples to help you understand better how it works.

1
  • 1
    That is a great site. It's going in my bookmarks. Thanks!
    – Kirk
    Jun 10, 2011 at 21:12
7

In really plain speak: it makes a file read- and write-able by the file owner, the file owner's group and every one else using the machine (all). Applied against a directory it lets everyone read (get file contents lists) of a directory and write (create, edit files in the directory) but not execute files from the directory.

For more detailed information how chmod works check out this handy tutorial.

3
  • 2
    ...Don't you mean lets everyone read/write files but not execute, and let's everyone read/write files in a directory, but not list all of the files?
    – Earlz
    Jun 10, 2011 at 20:44
  • 2
    what @earlz says, plus write on a dir does not mean you can edit files there (write perms on a file does) but solely means you can create new entries (dirs, files, symlinks, etc.). Also, its nice of you to mention dirs for completeness, but 666 doesn't make sense for a dir; you'd never eliminate x for owner. Jun 10, 2011 at 21:01
  • 1
    @Earlz: thanks for that. I always forget what 666 does for dirs because, well, I never set rw- for a user on a dir. :)
    – Ian C.
    Jun 10, 2011 at 21:04
5

The chmod command (abbreviated from change mode) is a Unix command that lets an operator tell the system how much (or little) access it should permit to a file. Command chmod 666 means that all users will have read and write permissions.

2

If your questions is more about the 666 part than the chmod part, I would refer you to The Linux Documentation Project where is a decent explanation of how file permissions work in Linux.

Not the answer you're looking for? Browse other questions tagged or ask your own question.