When I ls -la, it prints many attributes. Something like this:
-rwSrwSr-- 1 www-data www-data 45 2012-01-04 05:17 README
Shamefully, I have to confess I don’t know the exact meaning of each attributes. For example, what’s the meaning of big S in the string -rwSrwSr--? What’s the following 1? I know others roughly.
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
The documentation of the ls command answers these questions. On most unix variants, look up the ls man page (man ls or online). On Linux, look up the Info documentation (info ls) or online.
The letter s denotes that the setuid (or setgid, depending on the column) bit is set. When an executable is setuid, it runs as the user who owns the executable file instead of the user who invoked
the program. The letter s replaces the letter x. It’s possible for a file to be setuid but not executable; this is denoted by S, where the capital S alerts you that this setting is probably wrong because the setuid bit is (almost always) useless if the file is not executable.
When a directory has setuid (or setgid) permissions, any files created in that directory will be owned by the user (or group) matching the owner (or group) of the directory.
The number after the permissions is the hard link count. A hard link is a path to a file (a name, in other words). Most files have a single path, but you can make more with the ln command. (This is different from symbolic links: a symbolic link says “oh, actually, this file is elsewhere, go to <location>”.) Directories have N+2 hard links where N is the number of subdirectories, because they can be accessed from their parent, from themselves (through the . entry), and from each subdirectory (through the .. entry).
Method 2
According to info coreutils ls (which might not be exactly what you have):
`s’
If the setuid or setgid bit and the corresponding executable
bit are both set.`S’
If the setuid or setgid bit is set but the corresponding
executable bit is not set.
The number after the permission part is the number of hard links.
Method 3
In (hopefully simpler) terms, this means.
The directory is setgid. Any files created in there will be owned by that group of the owner of that folder.
However, the folder is not executable by the group, so it’s shown in capital S. This is typically when a directory is being created and the directory will end up as setgid.
Hm.. Not sure if that actually sounded like plain English above..
Method 4
It’s because of Executable is missing
s –> ‘x’ is enabled
S –> ‘x’ is disabled.
see below example
$ ls -l total 0 -rwsrw-r--. 1 bpkmails bpkmails 0 Jun 25 20:18 ca $ chmod u-x ca $ ls -l total 0 -rwSrw-r--. 1 bpkmails bpkmails 0 Jun 25 20:18 ca $
Method 5
consider also umask, shell setting that subtracts that value to full access (666 for files, 777 for dirs) on file creation.
The standard behaviour of setuid/setgid is to propagate from parent to child directories
One can get ‘S’ permission on dirs with this command sequence,
(check umask 077, …):
~/test$ id uid=1004(dsuser) gid=100(users) ~/test$ ~/test$ umask 0002 ~/test$ ~/test$ mkdir aaa ~/test$ ls -l total 4 drwxrwxr-x 2 dsuser users 4096 Nov 5 14:57 aaa ~/test$ chmod g+s aaa ~/test$ ls -l total 4 drwxrwsr-x 2 dsuser users 4096 Nov 5 14:57 aaa ~/test$ cd aaa ~/test/aaa$ ~/test/aaa$ mkdir bbb ~/test/aaa$ ls -l total 4 drwxrwsr-x 2 dsuser users 4096 Nov 5 14:58 bbb ~/test/aaa$ ~/test/aaa$ umask 077 ~/test/aaa$ ~/test/aaa$ mkdir ccc ~/test/aaa$ ~/test/aaa$ ls -l total 8 drwxrwsr-x 2 dsuser users 4096 Nov 5 14:58 bbb drwx--S--- 2 dsuser users 4096 Nov 5 14:59 ccc
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0