原文地址:http://www.cnblogs.com/123-/p/4189072.htmlhtml
在linux中的每一个用户必须属于一个组,不能独立于组外。在linux中每一个文件有全部者、所在组、其它组的概念java
- 全部者linux
- 所在组安全
- 其它组post
- 改变用户所在的组url
全部者spa
通常为文件的建立者,谁建立了该文件,就自然的成为该文件的全部者htm
用ls ‐ahl命令能够看到文件的全部者blog
也可使用chown 用户名 文件名来修改文件的全部者继承
文件所在组
当某个用户建立了一个文件后,这个文件的所在组就是该用户所在的组
用ls ‐ahl命令能够看到文件的全部组
也可使用chgrp 组名 文件名来修改文件所在的组
其它组
除开文件的全部者和所在组的用户外,系统的其它用户都是文件的其它组
ls
-l中显示的内容以下:
-rwxrw-r‐-1 root root 1213 Feb 2 09:39 abc |
- 10个字符肯定不一样用户能对文件干什么
- 第一个字符表明文件(-)、目录(d),连接(l)
- 其他字符每3个一组(rwx),读(r)、写(w)、执行(x)
- 第一组rwx:文件全部者的权限是读、写和执行
- 第二组rw-:与文件全部者同一组的用户的权限是读、写但不能执行
- 第三组r--:不与文件全部者同组的其余用户的权限是读不能写和执行
也可用数字表示为:r=4,w=2,x=1 所以rwx=4+2+1=7
- 1 表示链接的文件数
- root 表示用户
- root表示用户所在的组
- 1213 表示文件大小(字节)
- Feb 2 09:39 表示最后修改日期
- abc 表示文件名
除了符号,也可使用八进制数字来指定具体权限,以下表所示:
数字 | 说明 | 权限 |
---|---|---|
0 | 没有任何权限 | --- |
1 | 执行权限 | --x |
2 | 写入权限 | -w- |
3 | 执行权限和写入权限:1 (执行) + 2 (写入) = 3 | -wx |
4 | 读取权限 | r-- |
5 | 读取和执行权限:4 (读取) + 1 (执行) = 5 | r-x |
6 | 读取和写入权限:4 (读取) + 2 (写入) = 6 | rw- |
7 | 全部权限: 4 (读取) + 2 (写入) + 1 (执行) = 7 | rwx |
改变权限的命令
chmod 改变文件或目录的权限
chmod 755 abc:赋予abc权限rwxr-xr-x
chmod u=rwx,g=rx,o=rx abc:同上u=用户权限,g=组权限,o=不一样组其余用户权限
chmod u-x,g+w abc:给abc去除用户执行的权限,增长组写的权限
chmod a+r abc:给全部用户添加读的权限
改变全部者(chown)和用户组(chgrp)命令
chown xiaoming abc:改变abc的全部者为xiaoming
chgrp root abc:改变abc所属的组为root
chown root ./abc:改变abc这个目录的全部者是root
chown ‐R root ./abc:改变abc这个目录及其下面全部的文件和目录的全部者是root
改变用户所在组
在添加用户时,能够指定将该用户添加到哪一个组中,一样用root的管理权限能够改变某个用户所在的组
- usermod ‐g 组名 用户名
你能够用
- usermod ‐d 目录名 用户名,改变该用户登陆的初始目录
在Linux中,一些程序须要特殊权限才能完成用户指定的操做。
例如,用户的密码保存在 /etc/shadow 文件中,出于安全考虑,通常用户没有读取和写入的权限。可是当咱们使用passwd 命令来更改密码时,须要对 /etc/shadow 文件有写入权限。这就意味着,passwd 程序必需要给咱们一些特殊权限,才能够向 /etc/shadow 文件写入内容。
Linux 经过给程序设置SUID(Set User ID)和SGID(Set Group ID)位来赋予普通用户特殊权限。当咱们运行一个带有SUID位的程序时,就会继承该程序全部者的权限;若是程序不带SUID位,则会根据程序使用者的权限来运行。
SGID也是同样。通常状况下程序会根据你的组权限来运行,可是给程序设置SGID后,就会根据程序所在组的组权限运行。
若是程序设置了SUID位,就会在表示文件全部者可执行权限的位置上出现's'字母;一样,若是设置了SGID,就会在表示文件群组可执行权限的位置上出现's'字母。以下所示:
$ ls -l /usr/bin/passwd -r-sr-xr-x 1 root bin 19031 Feb 7 13:47 /usr/bin/passwd* $
上面第一列第四个字符不是'x'或'-',而是's',说明 /usr/bin/passwd 文件设置了SUID位,这时普通用户会以root用户的权限来执行passwd程序。
注意:小写字母's'说明文件全部者有执行权限(x),大写字母'S'说明程序全部者没有执行权限(x)。
若是在表示群组权限的位置上出现SGID位,那么也仅有三类用户能够删除该目录下的文件:目录全部者、文件全部者、超级用户 root。
为一个目录设置SUID和SGID位可使用下面的命令:
$ chmod ug+s dirname $ ls -l drwsr-sr-x 2 root root 4096 Jun 19 06:45 dirname $
【综合案例】
【题1.1】创建两个用户组group1和group2,以及三个用户dennis、daniel、abigale,而且将前2个用户分配在group1用户组下,后一个分配在group2用户组下
【题1.2】以dennis用户登陆,建立一个Hello.java文件
【题1.3】以daniel用户登陆,观察是否能够访问/home/dennis目录以及读或写其建立的Hello.java文件
【题1.4】以dennis用户登陆,修改目录/home/dennis及Hello.java文件的读写权限(更正:修改目录权限的时候,应该使用770,而不是760,不然权限不足)
【题1.5】重复【题1.3】
【题1.6】改变abigale的用户组由group2变为group1
而后,可使用cat /etc/passwd查看并肯定
【参考】
- groupadd 组名,在linux中添加组
- vi /etc/group,查看linux中全部组信息,能够看能够编辑
- cat /etc/group,查看linux中全部组信息,只能够看不能够编辑
- useradd ‐g 组名 用户名,建立用户的同时指定将该用户分配到哪一个组下
- vi /etc/passwd,查看linux中全部用户信息,能够看能够编辑
- cat /etc/passwd,查看linux中全部用户信息,只能够看不能够编辑