inux基础之用户权限
安全3A
-
Authentication
认证 -
Authorization
授权 -
Accouting|Audition
审计 - 什么是3A比如说windows 就有3A
- 华为路由,硬件等等都有
- 那3A到底什么意思
- 所谓认证,就是确定你的身份
- 确认了身份当然就是给你授权,给他适当权限
- 审计就是所谓的监管,记录他所做事,有了权利你不能为所欲为吧,要监管他做了些什么事
用户usder
- 令牌token或identity
- 那他们什么意思,其实他们和认证相关
- 每个用户我怎么知道你是谁张三李四
- 每个用户登录的时候他会在系统自动的标识你的身份,这就是令牌
- 就像古代军队的军牌和虎符一样
- 我们普通用户和root用户登录了系统是看ID号的(UID)
- 我们登录的时候输入的用户名等等一些英文,但是在计算机里面他识别的是数字
- 通过UID来判断,在底层计算机会自动的把你的用户名字转换为ID 的,在后台有个转换功能
- 对于管理员来说,我们用的是root帐号,那为什么他是管理员,不是别的帐号,那因为他的ID是
0
系统会自动判断你的权限,因为root是系统分配的,他可以改吗 ,可以我们后面在说。- 在linux里面用户的范围是有限制的一共是从1-65535 加上0那一共是65536个帐号
- 但是在每个版本他们普通用户的 默认用户ID都不同比如
CentOS 6
里面他们的帐号ID是从500开始变的,entOS 7
里面他们的帐号是从1000开始变的。 - 在
CentOS 5
里面1-499,这个是给系统用的,不是给用户用的 - 在
CentOS 7
以后才从1-999才预留给系统用- 所以我们才会显示500到1000
- 系统帐号一般给进程来使用
- 比如说我们远程链接的SSH,这个服务
- 这个服务也是进程,他也需要指定一个帐号的身份来运行,他就要用到一些特定的用户,以谁的身份来运行这就是系统帐号。
- 一般帐号是不能登录的只能在本机用
- 我们创建了用户以后系统会默认给我们用户分配ID ,这个ID是可以改的
组group
- 同样的组也是一样:组
Groupname/GID
- 那组是什么,组相当于多的用户的集合,比如我们组团玩,吃饭
- 那组有什么好处,比如说2个用户在一个组,要给他权限,比如给他读和写的权限,那我把权限给组就可以了。
- 就相当于给组给权限了,他们都在这个组里面,他们会继承这个组的权限
- 如果又有个帐号想要读和写的权限,那把这个帐号加到这个组就可以了
- 当然也可以不用组给他权限,可以单独给,但是用户一多就权限就乱了,有了组管理更方便
- 所以组比是必须了,他是为了方便管理而存在的
- 当然组也是有ID 号的哦,组也有个帐号也叫root哦,ID也是0哦
- 当然他是所属组的和用户不同
- 用户的ID叫UID
- 组的用户叫GID
- 那表示组用户名和用户名同名
- windows 是不允许用户名和组名同名的哦
- 当然在linux里面我们可以给用户授权也可以给组授权,一般情况下给组授权好一点,以为你方便管理,给组授权代表一个集合更方便
安全上下文
程序(program)
进程(process)
- 安全上下问什么意思
- 比如说我给某个用户读和写的权限
- 他不关用什么工具都可以用
- 这表示权限不是和工具相关
- 和这个用户相关
- 那我在创建个用户
- 只给他读的权限
- 那他不管用什么工具那他只有读的权限
- 这表示用户能怎么用和工具无关和你的身份有关
- 这就是安全上下文
- 用户得到的权限是进程的发起者赋予的
- 这个程序是谁执行的那他就是权限的发起者
- 进程所能访问的权限取决于,进程运行者的身份,而不是进程本身
- 你去运行某个程序的时候会检测你运行的环境和用户的身份和权限
用户组的类别
- 用户是可以加到几个组的,就是多个组
- 那么我这里创建3个组分别是
Q1,Q2.Q3
- Q是读;Q2是写;Q3是读和写
- 这表示只要有用户加到那里组就就会继承他们的权限,比如加到Q3这个用户就会有读和写的权限
- 如果有个用户在三个组里面都有他, 那他就会继承他们所有的累加权限
主要组(primary group) - 一个帐号必须有个主组,只有一个主组
- 那什么是主组
- 主组的意思就是你在公司上班的岗位
- 就是身份你在公司的身份
附加组(suoolementary group)
- 附加组对于帐号来说可以有可以没有
- 有的话可以有多个
- 附加组的意思就是你可能身兼数个岗位
注意不管你是主组或是附加组权限上面没有影响
用户和组的配置文件
linux用户和组的主要配置文件:
/etc/passwd:用户及其属性信息(名称,UIN,主组ID等)
/etc/group:组及其属性信息
/etc/shadow:用户密码及其相关属性
/etc/gshadow:组密码及其相关属性
/etc/passwd文件
-
psaawd 是一个文本文件
-
他里面定义了和用户相关ID等资料
-
文件的格式
-
运行了vi /etc/passwd命令以后会显示很多字段
-
我们用其中的一个用户来表示如:root
-
第一个字段显示的是我们的用户
-
第二个字段显示的是我们密码现在是X表示
-
可以用
-
pwunconv 回归以前查看口令界面
-
pwconv 恢复口令最新状态
-
来查看
-
第三个字段是系统自动分配的系统ID号,来修改权限等等,可以把普通用户修改为管理员
-
这表示帐号和名字决定不聊身份,只有帐号ID才能决定身份
-
但是千万不要把root 修改为0以上不然很麻烦
-
如果改了只有进单用户去修改
-
第四字段是组的编号主组的ID
-
第五字段是放的是用户的描述信息用
-
chfn可以修改用户的描述信息
-
第六字段是家目录路径
-
第七字段是shell类型也可以来改shell类型
-
nlogin是给程序用的不是给用户用的
-
命令 getent shadow 可以用户选择性的来查看
etc/shadow: 密码加密 -
shadow 影子的意思 ,用来放用户的密码
-
加密机制
-
哈希算法
-
单向加密算法,所谓单向我一但加密,就是不可以退的,所以加密是固定的,所以位数也是一样的
/etc/group -
第一个是用户名
-
第二个是组的口令
-
第三个是组的ID号
-
第四个是附组用户
-
groups
可以查出用户所属组 -
groupmems -g 命令 -l
可以查看组里包括那些附属组。 -
用户密码放在了
cat /etc/gshadow
里面 -
gpasswd
是用来给组加口令 -
那组的口令是干啥用的,,当用户想把自己加到某个组里就要用密码。
-
froupmems -g 用户1 -a 用户2
这条命令就是把用户2
加到用户1
里面. -
newgrp 用户
临时切换为主组,需要输入密码
用户和组的配置文件
-
-
打开
cat /group
后会显示组 -
找到root用户组
-
第一个字符root用户显示的是用户
-
第二个字符显示的是口令
-
第三个字符是组的ID号
-
最后是写的附属组
-
id 用户
可以查看属于那个组 -
groups 用户
也可以查看属于那个组 -
进
/etc/group
可以添加附属组 -
进 `cat /etc/passwd可以查看主组
-
groups
这个文件放的是附属组,不放主组 -
groumems -g 用户 -l
也可以查看用户这个组里面的附属组成员>这个是组名>这个命令是这个组里包括那些用户,附属组的用户 -
groups 用户
这个命令列出的是用户名>这个是用户名别和上面的搞混了,这个命令是查这个用户是属于什么组,运行了列出的就是他的主组 -
口令已经不放在原来的路径下了,他放在了
cat /etc/gshadow
这个文件是专来放组的口令的。 -
给用户加口令用的是
passwd
-
给组加口令用的是
gpassws
多了一个g -
就算他加了口令对我们的group文件没有变化,
/etc/gshadow
才是放口令的 -
可以管理员账号用
grupmems -g 用户1 -a 用户2
这条命令是把用户2加到用户1组里面,千万别写反了,可以用groups 用户2
来查看有没有加入进去 -
当我把一个用户加到组里面以后,加入的那个组必须要重新登录才可以,只有重新登录以后才他获取自己的组成员关系
-
虽然属于一个组但是他们不同步就需要输入口令
-
如果想输入不需要口令需要去
/etc/gshadow
里面修改让他们同步才不需要输入密码 -
gshadow
文件他决定了切换需要不需要口令 -
最好是
cat /etc/group 和 /etc/gshadow
文件最好是一样的否则会出现一些莫名奇妙的问题,最好是同步 -
如果我已经在这个附属组里面了那就不需要输入口令,如果我们不在需要去里面加。
-
组不设定口令是没有机会在往里面加的
-
gpasswd -a 用户 组名
这样可以加用户 -
gpasswd -d 用户 组名
这样可以去掉用户 -
gpasswd -A 用户 组名
这样可以把用户设为组的管理员 -
gpaswd -M 用户 用户 用户 组名
可以多用户添加用户到组里面 -
不要迫不得已不要修改文件
-
如果你一定想改就用vipw
-
pwck
可以检查命令的语法 -
grpck
是对组来进行检查管理的是组 -
最好不要改文本,最好用命令改
用户和组管理命令 -
useradd
是创建用户 -
usermod
是修改用户 -
userdel
是删除用户>这个命令是默认不删除家目录的,加入删除了用户会显示出UID号 -
加入
-r
如userdel -r 用户
才会把用户家目录删除 -
删除用户只能一个一个删除,不能多用户删除
组管理
-
groupadd
增加组用户 -
groupmod
修改组用户 -
groudel
删除组用户
useradd
-
-u
是指定用户useradd -u uid 用户
-
-o
配合-u 选项,不检查UID的唯一性,加入Uid一样他们会共享一个家目录
--N
创建用户的时候直接加组 -
-g
创建用户的时候指定组useradd -g 主组 用户
-
-r
创建系统用户 系统用户的家目录是不会自动生成的 -
-G
指定附属组useradd -g 主组 -G 附属组可以一次指定多个附属组
-
-d
是指定家目录 指定家目录要这个目录要必须不存在useradd -d 路径 用户
-
-s
指定shell类型useradd -s shell类型 -r 用户
用-r系统账号家目录不会自动生成 - 一般写是
useradd -s shell类型 -r -d 家目录 用户 这样才会创建家目录``如:
useradd -s /shin/bash -r -d /app/apache apache` -
-M
是不创建家目录如
useradd -M 创建的用户名` chpasswd 可以批量修改口令如 cat passwd.t nxt| chpasswd
-
文件权限
- 权限(peumission)
- 在linux权限分配里面就只有三种
-
r read
读 读取 -
w write
写 写入 -
x excute
执行 - 其中所有者是用前三个字母来分别是用
r w x
来表示 输入有会显示没有用-
来表示 - 因为有三种人 ,三种权限分配所以有9个字符
- 中间是所属组
- 最后一个是其他人
- chown 更改所有者
- chgrp 更改所属组
- ————————————————
- chown 这个命令可以修改组和所有者有几个方式
chown . 组名 文件
chown : 组名 文件
chown 所有者:组名 文件
-
chouwn 所有者: 文件
假如不加组名会默认加入所有者的组 -
chmod
添加权限 + - = -
+
是添加权限 -
-
是去掉权限 -
=
是覆盖权限 -
chmod -- rederence 组1 组2
这是参考组1给2组配权限
———————————————————————— -
u
是所有者 -
g
所属组 -
o
是其他_______________________________________ - 使用格式
- chmod u+x 文件名
—————————————————————— - 所有者是可以改文件权限的
-
usermod -G 组 用户
可以添加组 - 执行权限是对管理员账号是有效的,如果其中有1个可执行的的管理员就可以执行,如果都没有管理员账号也不能执行。
- ` 删除文件和文件本身权限无关,和目录有关
- umask + defaule permission
-umask 是改变创建文件时候权限大小
-
umask
掩码 -
umask -s
显示权限 -
umask
修改权限 - 如:
umask u=rw,g=r,o=x
-
umask -p
显示掩码 - 二进制程序没有权限一样能执行
- suid sgis 权限必须放在可执行程序上
- 功能是继承所有者或所属组的权限
网友评论