linux学习—权限管理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux学习—权限管理相关的知识,希望对你有一定的参考价值。
用户、组和权限(一)--为了让每个用户具有较安全的管理机制,文件的权限管理是很重要的。Linux通常将文件的访问方式分为三个类别(owner/group/other),并且具有Read/Write/eXecute等的权限。
目录
用户
用户组
安全上下文
组的类别
passwd,shadow,group,gshadow文件
useradd,userdel,groupadd,groupdel命令
passwd,usermod,gpasswd,groupmod命令
groupmems,newgrp,groups命令
一、用户
Linux是多用户的系统,经常会出现多个用户同时使用主机,考虑到每个人的隐私以及个人爱好,文件拥有者(用户)就相当重要了。
用户类别 | UID | |
管理员 | root ,0 | |
系统用户 | 1-499(centos6) ,1-999(centos7) | 普通用户 1—65535 |
登录用户 | 500+(centos6) , 1000+(centos7) |
二、用户组
用户组多用于团队开发,每个团队的成员需要同时可以修改自己团体内任何人文件,且不能让其他团体的人看到自己文件的内容,这时通过用户组的权限设置可以实现。
管理员组 | root 0 |
系统组 | |
普通组 |
现在用家庭的概念做一个形象的比喻:
假设有一家人,家里有三兄弟,分别是王大毛、王二毛、王三毛,这个家庭属于王大毛门下,所以,王大毛家有三个人(王大毛、王二毛、王 三毛),而且这三个人分别拥有自己的房间,共同拥有一个客厅,王大毛家相当于用户组,三兄弟相当于3个用户;
有一个人叫做张小猪,他对于王大毛家的人就是其他人。
三、安全上下文
进程发起者 命令 对象
进程所能够访问资源的权限取决于进程的运行者的身份
四、组的类别
主要组(也叫私有组) 用户创建的时候,组名自动创建//组名同用户名
附加组(真正常用的)
思考:多个用户可以属于一个主要组吗?
答:可以手动设置,但是最好不要这样设置,安全考虑
五、passwd,shadow,group,gshadow文件
/etc/passwd
pwconv 将passwd中的密码映射到/etc/shadow
pwunconv 取消映射
/etc/shadow
用户名
密码位
密码上一次的修改时间
密码的最小存活期
密码的最大存活期
密码过期之前提前多少天提醒用户将会过期
密码过期之后在用户仍不改密码后多少天触发帐户过期
帐户过期时间
保留位
/etc/group
组名 组密码组ID 以当前组为附加组成员列表(,为分隔符)
grpconv 将组密码映射到/etc/gshadow
grpunconv 取消组密码的映射
/etc/gshadow
组名 组密码 管理员列表 以当前组为附加组成员列表
六、useradd,userdel,groupadd,groupdel命令
1、useradd + [选项] + 用户名
useradd 用户创建 adduser也可以(其实adduser就是useradd的软链接)
-u+UID 指定UID创建用户
-o 配合-u 指定已存在的UID创建用户
例如:useradd -u 600 lisi
useradd -u 600 wangwu -o
cat /etc/passwd 查看lisi和wangwu的UID相同
(以:为分隔符,第三列为UID)
-g+GID或组名 指定已存在的主要组创建用户
-G+附加组号或者附加组名 指定已存在的附加组创建用户,以,为分隔符可以同时指定多个
-c+注释信息 附加注释信息创建用户
-d+目录路径 指定目录路径,创建用户(目录名已存在,基名不存在)
-s 指定登录shell创建用户
例如:useradd -s /sbin/nologin wangwu 创建不可交互式登录用户wangwu
之后输入su - wangwu ,显示登录失败
-N 不创建私有组作为主组,即使用users组作主组
-r 创建系统用户
2、/etc/default/useradd 创建用户的默认配置文件
GROUP=100 表示使用useradd -N时默认使用的组为GIP为100的组
HOME=/home 自动创建家目录时,从哪个目录下创建与用户同名的家目录
INACTIVE=-1 用户是否设置 密码过期后,多少天帐户过期,为-1时,不会触发帐户过期
EXPIRE= 是否指定一个帐户过期时间,为空表示帐户默认永不过期
SHELL=/bin/bash 使用useradd创建用户时,如不使用-s 指定则默认的用户shell为/bin/bash
SKEL=/etc/skel 家目录的内容数据参考目录,自动创建家目录时,从哪个目录拷贝模板文件
(利用useradd新增用户后,新增用户家目录下的各项数据都是由/etc/skel 复制过去的)
CREATE_MAIL_SPOOL=yes 创建用户时是否在/var/spool/mail下为用户与用户同名的邮箱文件。
手工创建家目录的方法(加深理解)
mkdir /home/machao
chmod 700 /home/machao/
cp -r /etc/skel/.[^.]* /home/machao/
chown -R machao.machao /home/machao
3、userdel -r +用户名 删除用户名连同家目录以及邮箱文件一起删除
4、groupadd + [选项] + 组名 创建组 (创建的组不分主要组和附加组,因为没有用户)
-g+GID或者组名 创建指定GID的组
-r 创建系统组
5、groupdel+ 组名 删除组
七、passwd,usermod,gpasswd,groupmod命令
1、passwd + username 指定要修改密码的用户名(仅root运行,普通用户不输入用户名,可直接修改自己的密码)
-l 锁定用户 实际就是在密码位前加!!
-u 取消用户锁定
-e 强制用户下次登录时更改密码
-n + mindays: 指定最短使用期限
-x + maxdays: 最大使用期限
-w + warndays:提前多少天开始警告
-i + inactivedays:非活动期限
--stdin 从标准输入接收用户密码(常用)
2、usermod + username 用户属性修改
-u+UID 修改用户ID
-g+GID或者组名 修改用户主要组
-G+GID或者组名[,组名] 设定用户的附加组为哪些组,之前的附加组信息被覆盖
-aG 增加用户的附加组,不会覆盖之前的附加组
-s+shell 修改用户的登录shell
-c+注释信息 修改用户的描述信息
-d+目录路径 新家目录不会自动创建;若要创建新家目录并移动原家数据,同时使用-m选项
-l+目标用户名+原始用户名 更改用户名
-L+用户名 锁定指定用户,在/etc/shadow密码栏增加!
-U+用户名 解锁指定用户,将/etc/shadow密码栏的!拿掉
-e+年月日 指明账户过期的日期
-f 设定非活动期限
3、gpasswd + [选项] + 组名 (重点难点)
gpasswd + 组名 设置组密码
gpasswd -a + 用户名 添加指定用户到指定组名的附加组
gpasswd -d + 用户名 删除用户
gpasswd -M + 用户名(多个用户用,分隔) 仅root执行,设置用户列表到指定用户组名的组
(可以用命令groupmems -l -g +组名 查看指定组下用户列表)
gpasswd -A + 用户名(多个用户用,分隔) 设置指定组的管理员 仅root执行
(管理员只可以修改组密码,单个踢出组成员,单个添加组成员;管理员可能不是组成员,也就不能访问组内的文件,但是管理员可以 把自己加入该组内,然后访问文件)
4、groupmod
-n+目标组名+原始组名 修改组名
-g+目标GID+原始组名 修改组ID
八、groupmems,newgrp,groups命令
1、groupmems 仅限于root
-g + 组名 -a + 用户名 添加指定用户到指定组名的附加组
-g + 组名 -d + 用户名 删除指定用户
-g + 组名 -p 清空所有指定组成员
-g + 组名 -l 查看指定组有那些成员(仅附加组)
2、newgrp + 组名(普通用户执行)
非附加组成员的普通用户在正确输入组密码后临时变更指定组名为主要组,原主要组临时变成附加组
附加组成员的普通用户无须输入密码就可以临时变更指定组名为主要组,原主要组临时变成附加组
*******************
使用newgrp之后实质就是进入了一个子shell,在这个子shell环境下的主要组为指定组,使用exit后,只是退出了子shell,当前用户没有变(注意理解)
进入guanyu用户下,查看用户的主要组和附加组,使用了newgrp命令之后,主要组和附加组发生变化;exit退出之后,用户并没有变
*********************
3、groups + 用户名 查看指定用户属于那些组(包含主要组和附加组)
小总结:添加删除组成员可以用usermod -G,gpasswd -d,groupmems -g + 组 -d +用户
以上是关于linux学习—权限管理的主要内容,如果未能解决你的问题,请参考以下文章