UID 与 GID
UID用户的编号 GID 用户群组的编号
账号登录时,有一个对应的文本来记录某个账户的UID与GID。然后获得这个UID去对应的密码文本中,取得密码进行比对,然后登陆。
保管账户的文本:/etc/passwd
让我们看一下这个文件的结构:
head -n 4取4行
看到了取出4行数据,我们看root,就是画红框的那个
用户名 密码 0 0 root /root /bin/bash
root x(去shadow查看) UID GID 用户信息说明 家目录(可修改) 预设shell使用bash
第三项UID解析
注:所以要时刻关注/etc/passwd这个文件,多关注一下UID是0的账户,防止被恶意篡改
保管密码的文本:/etc/shadow
红框就是root 的密码。加密的。。。
root 加密串 18078 0【密码可随时更改】 99999 7 空 空
账号名称 密码 最近更改密码日期 密码不可被更动天数 变更其先前 密码需要重新变更的天数 密码需要变更前警告天数 密码更改的宽限期 密码过期日
root密码忘记的处理办法
一 利用单人维护模式,修改passwd密码
二 live cd开机后挂载/etc/shadow,将root的密码字段清空
查询密码加密的方式的指令
[root@localhost conf.d]# authconfig --test | grep hashing password hashing algorithm is sha512
GID解析
GID放在了
/etc/group 和 /etc/gshadow 这两个目录下面。同上,一个保存账户信息,一个保存群组密码信息
[root@localhost conf.d]# head -n 4 /etc/group root:x:0: bin:x:1: daemon:x:2: sys:x:3:
解析类似:
root 用户名
x群组密码
0 GID
最后:后面的空意思是加入该群组的用户为空,如果想让两个用户加入群组,可以在:后面将这两个用户的用户名写入即可。
例
二 有效群组与支持群组
有效群组就是用户的默认群组,也就是你用户创建的时候的默认群组
支持群组,就是默认群组之外,你后加的支持的群组
查看用户的群组信息的命令
groups xxxx。即可查看用户的群组信息
如图:
可以看到,lsq这个用户的默认群组就是lsq
默认群组的作用:
你用该用户登录之后,创建目录,文件等操作,这些目录,文件的默认群组就是用户的默认群组。这就是默认群组的作用。这样就解决了,多用户情况下,自己账户做的文件及文件夹信息只能有自己查看的有效方法。
默认群组是否可以切换呢?答案是可以的。
newgrp命令。但是这个命令只能在有效群组和支持群组之间进行切换,而无法对不支持的群组进行切换。
所以一般情况下,首先你要查看一下用户所支持的群组,groups XXXX,然后根据所列出的群组信息,用newgrp来进行切换默认群组的操作。
OK。我们现在拿lsq这个用户来说,现在lsq只支持一个用户组,即lsq组,所以无法切换他的默认群组,因为只有一个,所以,我们需要先将该用户添加到想要的群组中
gpasswd命令来设置,命令详解 如下图:
首先我们需要将lsq加入到users组中。gpasswd -a lsq users ,然后groups lsq查看一下。然后登陆lsq账户,用newgrp users切换默认群组,然后groups查看一下默认群组是否切换,如下图
红框标注了命令执行前后的区别。groups之后,第一个显示的群组即该账户的默认群组。第一个红框,默认群组是lsq,第二个红框,默认群组是users.现在我们所有通过lsq账户做的操作添加目录,文件,都将具有users的权限。也就是所有有users组权限的用户都可以进行操作
三 新增移除使用者 useradd passwd usermod userdel
useradd解析:
OK。接下来鸟哥解答了我的一个 疑惑,就是为什么他会默认创建上面的默认群组,家目录等等。他的配置文件在哪里?
通过命令useradd -D即可以查看他的默认的配置信息
看到了么?GROUP 100 HOME /home SHELL /bin/bash
这里有个坑。就是默认群组 GROUP 100这个东东,我们查一下100这个群组是谁?
看到了么?100的群组是users。但是我们的lsq的默认群组是lsq并不是100啊。。。为啥不执行默认呢?书中给出了答案,安全性考虑。。。
即 私有群机制和公共群组机制
centos rhel fedora等系统都是执行的似有群机制,也就是说,创建用户的时候,都会基于该用户名创建一个自己的群组
公共群组
SuSE 等系统
passwd 修改用户密码
root账户修改密码,可以不受密码限制的影响,任意修改。
自己修改密码,会受到密码限制的影响。
我们在安装系统时,会让我们输入root账户的密码。这个时候你会发现,你的密码是受限制的,比如太弱等等。但是你安装完系统之后,通过passwd来更改密码的时候,虽然他也会提示密码太弱等信息,但还是会修改你的root密码
他会提示,BAD PASSWORD。。。但是最终还是会successfully.这就是root的霸道之处,霸道总裁。
通过明码更改密码
,最关键的就是passwd 后面的stdin这个了。
chage 命令
鸟哥,给了个很实用的例子,让用户在登录系统后,第一时间更改密码
即让用户密码在第一时间过期。
chage -d 0 agetest。。。在第0天更改密码。这样用户登录的时候,就需要第一时间修改密码信息了。
usermod
。通过-c给账号加上说明信息。两个红框就是有说明信息和没说明信息的区别。
范例3是个很值得考究的东东。其中关于chown 和 chmod 这两个命令的解析
userdel 删除用户
id 指令 查询用户的详细信息
群组相关命令
综合实践:
首先 创建群组
然后添加用户,并将用户置于该群组
我画框的就是让用户无法登陆的脚本。。。。/sbin/nologin 用-s进行挂载
剩下的就很简单了。用passwd --stdin 来进行密码的更新
任务二
首先建立群组
然后建立用户并放入该群组
然后设置密码
然后创建目录
设置目录的群组权限
然后就是红框中的部分,2770的理解概念,用到了SGID的知识,你还记得么?我反正忘了。。。回头查查
OK。关于目录权限的SUID,SGID,SBIT的权限设置问题。
4 SUID设置用户的权限 当权限前加4的时候,意思就是该文档的执行权限具有了文档拥有者的权限。该权限只能用在系统的一些命令上。不能用在脚本上,也不能应用于目录上
2 SGID设置目录的group群组中的人都具有目录中文档拥有者的权限。也就是说实现了该目录群组下的所有人都可以修改同一个文件的功能
1 SBIT只针对目录起作用,主要针对others来设置当,用户在该目录下建立文档和文件时,只有自己和root用户才能够删除文档和目录
上面题目中,需要3个人同时协作文档,所以就需要三个人都可以修改某个文件,那就必须加上2这个SGID的权限。也就是2770目录权限的由来