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

  在linux系统中,所创建的用户帐号和其相关信息(密码除外)均是存放在/etc/passwd配置文件中。由于所有用户对passwd文件均有读取的权限,因此密码信息并未保存在该文件中,而是保存在了/etc/shadow的配置文件中。

      1,在passwd配置文件中,从左至右各字段的对应关系及其含义:

linux用户组和权限管理_linux文件管理

  2,用户密码管理

    在shadow配置文件中,从左至右各字段的对应关系及其含义:

linux用户组和权限管理_linux文件管理_02

3.组信息管理文件

linux用户组和权限管理_linux文件管理_03

4.组密码文件:/etc/gshadow

linux用户组和权限管理_linux文件管理_04

用户管理命令:

添加用户命令:useradd

修改用户命令:passwd

修改用户权限:usermod

删除用户:userdel

切换用户:su

添加用户时会生成一个模板文件家目录

/etc/skel

在创建一个用户时,在其家目录下 会(根据模板(模板目录下的文件))自动拷贝生成 一些文件


usermod [选项] 用户名

-u UID修改用户的UID号

-c 用户说明修改用户的说明信息

-G 组名修改用户的附加组

-g 初始组修改初始组

-L临时锁定用户 (Lock)

-U解除用户锁定(Unlock)

例子:将harry添加到admin组中

[root@centos7 app]#usermod -G admin harry

[root@centos7 app]#id harry

uid=1002(harry) gid=1003(harry) groups=1003(harry),1006(admin)

3.修改用户信息 usermod
修改用户密码状态chage
usermod与useradd类似,一个针对老用户,一个是针对新增用户的 选项一样
usermod [选项] 用户名
-u UID 修改用户的UID号
-c 用户说明 修改用户的说明信息
-G 组名 修改用户的附加组
-g 初始组 修改初始组
-L 临时锁定用户 (Lock)
-U 解除用户锁定(Unlock)

修改用户密码状态
chage [选项] 用户名
-l 列出用户的详细密码状态
-d 日期 修改密码最后一次的修改日期(shadow的第三个字段)
-m 天数 两次密码修改间隔(shadow第四个字段)
-M 天数 密码有效期(第5个字段)
-W 天数 密码过期前警告的天数(第6字段)
-I 天数 密码过期后宽限天数(第7字段)
-E 日期 密码失效时间(第8字段)

用户组管理
1.添加用户组
groupadd [选项] 组名
-g GID :指定组ID
2.修改用户组
groupmod [选项] 组名
-g GID: 修改组id
-n 新组名: 修改组名
groupmod -n newgroup_name group_name
把组名group_name 修改为newgroup_name
3.删除组名
groupdel 组名
当组是一个用户的初始组而且这个用户存在时,不可以删除这个组
必须得先删初始用户才行
有附加用户没初始用户的组可以删除
groupadd gr1
useradd -g gr1 u1
useradd -G gr1 u2
不会产生u1还个组,u1用户的初始组为gr1了

4.把用户添加入组或从组中移除
gpasswd [选项] 组名
-a 用户名: 把用户加入组(操作的是附加用户)
-d 用户名: 把用户从组中删除

suid:只能作用在二进制程序上,不能作用在脚本上(scripts)上

   执行suid权限的程序时,此用户将继承此程序的所有者权限

sgid:

 sgid:作用在二进制程序上,执行sgid程序时,此用户将继承此程序的所属组权限

  作用在目录上:再此目录上的新文件的所属组,将自动继承目录的所属组

sticky:只能作用在目录上,普通用户只能自己删除自己的文件
下面是sgid的例子

王和马哥参与一个项目,他们应该可以读写

查看用户组

[root@centos6 app]#groupmems -l -g opts

将用户组剔除

[root@centos6 project]#usermod -G '' wang //这也是一种清除的方法

[root@centos6 app]#gpasswd -d mage opts

在添加用户到组

[root@centos6 app]#groupmems -a wang -g opts

            usermod -aG opts wang

opts设置为目录的组

[root@centos6 app]#ll project1 -d

drwxr-xr-x. 2 root root 4096 Nov 19 19:06 project1

[root@centos6 app]#chgrp opts project1

[root@centos6 app]#ll -d project1

drwxr-xr-x. 2 root opts 4096 Nov 19 19:06 project1

再将目录设置为770就是other不能访问这个目录

linux用户组和权限管理_linux文件管理_05 

最后将目录设置为sgid以后谁创建文件都是ops的组

最后马哥创建文件查看

 

linux用户组和权限管理_linux文件管理_06

chattr +i这个是就是给文件加锁

chattr -i就是解锁
linux用户组和权限管理_linux文件管理_07

 

chattr +A file就是文件查看不更新时间

acl:访问控制列表

下面是给f2使用acl

[root@centos6 app]#setfacl -m  u:wang:rw f2

[root@centos6 app]#su wang

[wang@centos6 app]$cat f2

[wang@centos6 app]$

查看

[wang@centos6 app]$getfacl f2

# file: f2

# owner: root

# group: root

user::rw-

user:wang:rw-

group::r--

mask::rw-

other::---

删除权限

setfacl -x u:wang d2