用户:

用户ID为0的用户为超级用户,0-500之间为系统级用户,为服务保留,通常情况新建的用户UID>500。
用户文件保存在/etc/passwd文件中。

组:

每个用户有一个私有组(默认组),一个用户可以属于多个组,在一个组中的所有用户可以共享文件。
组文件并保存在/etc/group中。

权限:

Linux权限分配基于三种角色:文件归属者、文件归属者的组、第三人。

一个文件权限由文件开头的10个字符表示,通过“ll”命令可以查看。

第1个字符:文件类型。第2-4个字符:属主权限。第5-7个字符:属组权限。第8-10个字符:第三人权限。

centos 查看权限文件所属组怎么变了 centos文件权限详解_用户名


如上图所示该文件的属主权限:rw-,属组权限:r–,第三人权限:r–,文件属主:root,文件属组:root。

进程访问一个文件时系统会判断进程的发起者是不是属主,如果是则分配属主权限,如果不是则检查发起者的GID是不是属组,如果是分配属组权限,如果都不是则分配第三人权限。

文件权限:

r:读取、w:写入、x:执行。

目录权限:

r:列出目录(ls)、w:增加删除修改目录中的文件,x:可以查看目录中文件的详细信息(ls -l)

权限管理常用命令:
更改属主/属组:chown、chgrp
chown  用户  文件/目录         //修改文件或目录的属主
chgrp  组  文件/目录              //修改文件或目录的属组
chown  用户:组  文件/目录     //同时修改文件或目录的属主和属组
-R选项:修改目录时,将权限应用于目录中所有文件和目录。
更改权限:chmod
  • 文字法:
    文字法适合用来调整特定角色的权限。
chmod u/g/o[+/-]r/w/x 文件/目录
增加或删除某种权限
u:属主、g:属组、o:第三人、a:包含ugo。
+:添加权限、-:删除权限。
r:读取、w:写入、x:执行
-R 修改目录时,用于递归目录中所有文件
例如:chmod u+x test       //为test文件的属主增加执行权限
  • 数字法:
    数字法简单快捷,一条命令可以调节所有角色的权限。
    r=4,w=2,x=1

权限

二进制

数字


000

0

–x

001

1

-w-

010

2

-wx

011

3

r–

100

4

r-x

101

5

rw-

110

6

rwx

111

7

例如:
需要将test文件的权限调整为:属主:rwx、属组:r-x、第三人:---,只需执行一条命令。
chmod 750 test

系统中有关用户的关键配置文件:

/etc/passwd:存放用户信息:

centos 查看权限文件所属组怎么变了 centos文件权限详解_用户名_02


第一列:用户名

第二列:占位符(之前用于存放用户密码)

第三列:用户ID

第四列:属组ID

第五列:自定义信息

第六列:用户家目录

第七列:shell程序(默认:/bin/bash,不允许登陆:/sbin/nologin)

/etc/shadow:存放用户密码:

centos 查看权限文件所属组怎么变了 centos文件权限详解_用户名_03


第一列:用户名

第二列:加密密码

第三列:最后一次密码修改时间(修改密码时间减去1970.1.1过了多少天)

第四列:密码两次修改的最短时间

第五列:用户密码过期时间

第六列:密码过期的前多少天通知用户

第七列:密码过期后的几天账号锁定

第八列:账号什么时候失效(从1970.1.1算起)

第九列:保留

/etc/group:存放用户组信息:

centos 查看权限文件所属组怎么变了 centos文件权限详解_用户名_04


第一列:组名称

第二列:保留

第三列:组ID

第四列:组用户列表

用户默认配置:

/etc/skel/
默认情况下新建一个用户的同时,系统会将/skel/文件夹内的所有文件拷贝到该用户的家目录下。

每个用户的家目录都会有三个隐藏文件:

~/bash_profile:用户登录时会执行
~/bashrc:用户登录时会执行
~/bash_logout:用户登出时会执行

  • 通常会把定义命令别名命令写入文件,登陆时执行:
alias 别名="命令"
source 文件名:使文件中定义的命令直接生效(source可用.代替)
新建用户时的默认参数:

/etc/login.defs
也可以使用chage命令修改参数

UMASK值:

用户默认新建文件时权限的反掩码。

普通用户:002

目录(减去反掩码):775
文件(再减去可执行权限):664

root:022

目录(减去反掩码):755
文件(再减去可执行权限):644

特殊权限:

文件:
  • 属主:suid:任何用户执行此命令时身份都能变成该命令文件的属主。
    如:su,执行su后能切换到root,但是需要认证。
  • 属组:sgid:任何用户执行此命令时属组都能变成该命令文件的属组。

    cdmod u/g+s 文件
目录:
  • 其他人:sticky bit:每个人都可以使用该目录,但是只能使用自己创建的文件。
    777的缺点:每个人都可以修改删除其他人的文件。
    chmod o+t 目录
  • 属组:sgid:组内多用户协同工作
    frodo、pippin、sam三个用户都属于IT组。
    770的缺点:每个用户创建文件的权限默认都为664,不能实现协同工作

    chmod g+s 目录:用户创建的文件属组都为IT,可共同读写文件

ACLs:

首先使用chmod分配大权限,然后使用acl微调。不要使用acl分配所有权限。

chmod后acl会失效,需要先设置chmod,再设置acl。

setfacl -m u:用户:rw- 123      //修改用户对123的权限为rw-
setfacl -m u:用户:--- 123        //修改用户对123的权限为---

当一个文件权限后有+的时候说明该文件有acl附加权限:

centos 查看权限文件所属组怎么变了 centos文件权限详解_文件权限_05

getfacl 文件                               //查看文件的acl附加权限
setfacl -x u:用户 123                //删除针对用户的特殊权限
  • 判断权限过程:
  1. 判断属主权限
  2. 判断属主ACL
  3. 判断属组权限
  4. 判断属组ACL
  5. 应用other权限

其他命令:

alias 别名="命令"
source 文件名:是文件中定义的命令直接生效(source可用.代替)
useradd 用户名 新建用户
passwd 用户名 修改密码
userdel 用户名 删除账户
-r 删除家目录和电子邮件
usermod 用户名 修改用户
-d 修改家目录
-g 修改默认组
-G 修改第三方组
-s 修改shell位置
getent passwd 用户名 查看用户的家目录位置