用户组

在linux中的每个用户必须属于一个组,不能独立于组外。在linux中每个文件有所有者、所在组、其它组的概念
- 所有者
- 所在组
- 其它组
- 改变用户所在的组

所有者

一般为文件的创建者,谁创建了该文件,就天然的成为该文件的所有者
用ls ‐ahl命令可以看到文件的所有者
也可以使用chown 用户名 文件名来修改文件的所有者

文件所在组

当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组
用ls ‐ahl命令可以看到文件的所有组
也可以使用chgrp 组名 文件名来修改文件所在的组

其它组

除开文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组

文件权限

  1. 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 表示文件名

    改变权限的命令:chmod

    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:给所有用户添加读的权限
    Linux下用户组、文件权限详解(网转) - 图1
    Linux下用户组、文件权限详解(网转) - 图2

    改变所有者(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 目录名 用户名,改变该用户登录的初始目录

    【综合案例】
    【题1.1】建立两个用户组group1和group2,以及三个用户dennis、daniel、abigale,并且将前2个用户分配在group1用户组下,后一个分配在group2用户组下
    Linux下用户组、文件权限详解(网转) - 图3
    【题1.2】以dennis用户登录,创建一个Hello.java文件
    【题1.3】以daniel用户登录,观察是否可以访问/home/dennis目录以及读或写其创建的Hello.java文件
    【题1.4】以dennis用户登录,修改目录/home/dennis及Hello.java文件的读写权限(更正:修改目录权限的时候,应该使用770,而不是760,否则权限不足)
    Linux下用户组、文件权限详解(网转) - 图4
    【题1.5】重复【题1.3】
    【题1.6】改变abigale的用户组由group2变为group1
    Linux下用户组、文件权限详解(网转) - 图5
    然后,可以使用cat /etc/passwd查看并确定
    Linux下用户组、文件权限详解(网转) - 图6
    【参考】
    - groupadd 组名,在linux中添加组
    - vi /etc/group,查看linux中所有组信息,可以看可以编辑
    - cat /etc/group,查看linux中所有组信息,只可以看不可以编辑
    - useradd ‐g 组名 用户名,创建用户的同时指定将该用户分配到哪个组下
    - vi /etc/passwd,查看linux中所有用户信息,可以看可以编辑
    - cat /etc/passwd,查看linux中所有用户信息,只可以看不可以编辑

修改文件用户组: (组名必须在/etc/group文件中)
chgrp [-R] grpname filename|dirname
-R:将目录内文件的所属组都改为指定组名
eg:
修改文件所属用户组
chgrp test /etc/fstab
修改目录及目录下所有文件所属组
chgrp -R test /root/test/

修改文件所有者: (用户名必须在/etc/passwd文件中)
chown [-R] username filename|dirname
-R:将目录下所有文件或子目录的所有者同时更改
eg:
修改文件所有者
chown user /etc/fstab
修改目录下的所有子目录或文件的所有者
chown -R user /etc/init.d/
同时修改文件所有者和所属组
chown user:user /etc/fstab
只修改文件所属组
chown .user /etc/fstab

修改文件权限:
1.利用数字类型修改权限
chmod [-R] xyz filename|dirname -R:表示递归修改

Linux文件的基本权限有9个,分别是owner,group,others三种身份各自的read,write,execute权限,3个一组.可以用数字代表各个权限:
r:4
w:2
x:1
利用2进制表示,1代表有此权限,0表示没有此权限:
—-: 000 => 0
—x: 001 => 1
-w-: 010 => 2
-wx: 011 => 3
r—: 100 => 4
r-x: 101 => 5
rw-: 110 => 6
rwx: 111 => 7

因此:若将文件的权限修改为rwxrwx—-,则对应的数字为 770.
eg: 将/etc/fstab文件的所有权限都启用: chmod 777 /etc/fstab

2.利用符号类型修改文件权限
通过u,g,0代表user,group,others的身份,a表示所有的身份.

+:表示加入某种权限
-:表示去除某种权限
=:表示设置某种权限

r:读
w:写
x:执行

eg:
将/etc/fstab文件权限改为rwx-wx—x: chmod u=rwx,g=wx,o=x /etc/fstab,不写表示没有此权限
将/etc/fstab文件权限改为rwxr-xr-x: chmod u=rwx,go=r-x
将/etc/fstab文件所有用户添加执行权限: chmod a+x /etc/fstab 或 chmod +x /etc/fstab
将/etc/fstab文件对others不可读: chmod o-r /etc/fstab

转自:https://www.cnblogs.com/123-/p/4189072.html
https://blog.csdn.net/qq_36193761/article/details/78817500