一、用户和组账号的概述
1.概念:
- 用户:包含一个名和密码,在计算机中的提现方式,包含root、普通用户、程序用户;
- 组:用户的集合,批量管理用户群权限,包含基本组、附加组(一个用户只能属于一个基本组,但是可以属于多个附加组);
- 权限:限制用户访问资源(文件、app、进程、硬件等);
- UID: 每个用户账号都有一个数字标识(身份证),root(0)、普通用户(500-60000)、程序用户(1-499)
- GID:没个组账号的唯一身份标识,root(0)、普通组账号(500-60000)、程序组账号(1-499);
2.用户和组的文件
/bash/passwd #账号文件
/bash/shadow #密码文件
/bash/group #组账号文件
/etc/gshadow #组密码文件,很少使用
二、用户及组账号的管理
- 用户的管理
添加:
useradd [选项] 用户名
选项:
-d #指定家目录
-M #不指定家目录
-s #指定用户的登录shell
-g #指定用户的基本组
-G #指定用户的附加组(可指定GID)
删除:
userdel -r 用户名
删除用户的同事也将家目录一并删除
改:
usermod [选项] 用户名
选项:
包含创建用户的所有选项
passwd 用户名 #为用户设置密码
passwd [选项] 用户名
选项:
-d #清空用户的密码(不用密码登录)
-l #锁定用户
-u #解锁用户
-S #查看用户锁定状态
chsh -s 解释器目录 用户名 #更改用户的shell解释器
查:
grep 用户名 /etc/passwd #查看账号信息
id 用户名 #显示用户UID和所属组
w #查看当前主机的登录情况
- 组的管理
添加: groupadd 组名 选项-g可指定GID 删除: groupdel 组名 改: gpasswd [选项] 用户名 组名 选项: -a #将单个用户添加到某个组 -M #将多个用户添加到某个组,用户之间用逗号隔开 -d #将某个用户在某个组中删除 查: groups 用户名 #查看用户属组 grep 组名 /etc/group #查看组信息
三、文件的属性
- 查看文件或目录的属性
ls -ld 目录或文件位置
格式:文件类型、权限、inode数量、属主、属组、大小、日期、文件名
权限列表:
第一个字符:文件类型,d目录、b块设备文件、c字符设备文件、l链接文件、-普通文件;
第2-4个字符:属主对文件的权限;
第5-7个字符:属组对文件的权限;
第8-10个字符:任何用户对文件的权限;
权限的表示:
r:读取,查看内容,也可以用4表示;
w:写入,写入(删除、更改、移动等)内容,也可用2表示;
x:执行,执行此文件或cd到此目录,也可用1表示;
- 设置文件或目录的权限
语法:chmod [ugoa] [+-=] [rwx] 文件或目录
举例:chmod g-x, o-r 文件或目录
选项:-R 表示递归权限,目录下的子目录子文件继承父级目录的权限;
语法:chmod 775 文件或目录
- 设置目录或文件的归属
语法:
chown 属主 文件或目录 #设置其属主
chown :属组 文件或目录 #设置其属组
chown 属主:属组 文件或目录 #设置其属主和属组
注:选项-R 递归可将其子目录子文件继承父级目录的归属;
-
umask文件反权限:
- umask #查看系统的默认权限反掩码值,文件最大权限为666,目录最大权限为777
- umask 值 #手动更改文件权限的反掩码值,更改后创建文件或目录验证反掩码值
-
chattr锁定文件
- chattr +i 文件路径 #锁定文件,不得移动删除等
- chattr -i 文件路径 #解锁文件
-
特殊权限setuid和setgid
- chmod u+s 文件或目录位置 #设置setuid权限
- chmod g+s 文件或目录位置 #设置setgid权限
/etc/passwd的权限为 -rw-r--r--。也就是说:该文件的所有者拥有读写的权限,而属组和其他人只有读取的权限。我们知道,在系统中我们要修改一个用户的密码,root用户和普通用户均可以用“/usr/bin/passwd 用户名” 这个命令来修改这个/etc/passwd这个文件,root用户本身拥有对/etc/passwd的写权限,可以理解;那普通用户没有写权限,那他怎么也能修改呢?这里就用到了setuid,setuid的作用是让执行该命令的用户以该命令拥有者的权限去执行,就是普通用户执行passwd时会拥有root的权限,这样就可以修改/etc/passwd这个文件了。它的标志为:s,会出现在x的地方,例:-rwsr-xr-x 。而setgid的意思和它是一样的,即让执行文件的用户以该文件所属组的权限去执行。
-
特殊权限stick bit(粘滞位)
- chmod o+t xxx #设置stick bit权限,针对目录
我们知道/tmp是系统的临时文件目录,所有的用户在该目录下拥有所有的权限,也就是说在该目录下可以任意创建、修改、删除文件,那如果用户A在该目录下创建了一个文件,用户B将该文件删除了,这种情况我们是不能允许的。为了达到该目的,就出现了stick bit(粘滞位)的概念。它是针对目录来说的,如果该目录设置了stick bit(粘滞位),则该目录下的文件除了该文件的创建者和root用户可以删除和修改/tmp目录下的stuff,别的用户均不能动别人的,这就是粘滞位的作用。
- 特殊权限facl(文件的访问控制列表)的设置
语法:
setfacl -m u:用户名:rwx 文件或目录
setfacl -d -m u:用户名:rwx 目录 ##设置目录的默认facl并目录下所有子文件子目录都使用父目录的默认facl
getfacl 目录或文件 ##查看目标文件或目录的acl规则
setfacl -b 文件或目录 ##删除文件所有的acl规则
setfacl -x u:root 文件或目录 ##删除文件的一条acl规则
setfacl -m m:w /mnt/test ##设置有效权限mask,有效权限(mask) 即用户或组所设置的权限必须要存在于mask的权限设置范围内才会生效