一、Linux的账号与群组
(一)使用者识别码UID,GID
linux操作系统上的用户如果需要登录主机,当其输入用户名和密码之后:
- 首先在/etc/passwd文件中查找是否有你的账号,如果没有无法登录,如果有的话将该用户的UID和GID读出来,此外将此用户的shell设置也一并读出。
- 然后根据UID到/etc/shadow文件中去寻找相应用户的密码,如果匹配一致
- 进入shell控制的阶段。
下面我们详细解释文件:
1:/etc/passwd
//我的passwd的一部分内容
student@student:~$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
- 字段之间用
:
分开.
字段 | 含义 |
---|---|
1 | 用户名 |
2 | 用户的密码原来直接存储在第二字段,但是为了安全,最后专门有了/etc/shadow文件,现在默认用x替代 |
3 | 用户的uid,一般情况下root为0,1-499默认为系统账号,有的更大些到1000,500-65535为用户的可登录账号,有的系统从1000开始。 |
4 | 用户的gid。linux的用户都会有两个ID,一个是用户uid,一个是用户组id,在我们登录的时候,输入用户名和密码,其实会先到/etc/passwd查看是否有你输入的账号或者用户名,有的话将该账号与对应的UID和GID(在/etc/group中)读出来。然后读出主文件夹与shell的设置,然后再去检验密码是否正确,正确的话正常登录。 |
5 | 用户的账号说明解释 |
6 | 用户的家目录文件夹 |
7 | 用户使用的shell,如果换成/sbin/nologin/就是默认没有登录环境的。 |
2:/etc/shadow
student@student:~$ cat /etc/shadow
root:$6$X9iEgIhv$wGtrUhjiNRp72LgCTzC1qdi.myfSU9S5nqsfr.m1KInUFoeOUBN73AmMy5sTe91biJLdHgsoimZQzeD9EvGlv1:16769:0:99999:7:::
daemon:*:16547:0:99999:7:::
bin:*:16547:0:99999:7:::
sys:*:16547:0:99999:7:::
sync:*:16547:0:99999:7:::
games:*:16547:0:99999:7:::
man:*:16547:0:99999:7:::
-
字段 含义 1 用户名 2 用户的密码加密字段 3 密码已经使用的日期(从1970-01-01开始,为什么?因为unix1969年发布雏形,基于当时对系统的考虑,就这样了) 4 密码最少多少天之后可以修改(例子中是3天之后,也就是修改一次3天之后才能再次修改) 5 密码多少天之后必须修改(例子中99999就是表明可以一直不用修改密码) 6 密码修改之前几天提醒我修改(例子中是7天之前) 7 要是没有修改延长几天(例子中延长3天) 8 无论怎样到这个时间过期(例子中的时间从1970-01-01算) 9 保留字段,目前无含义
3、/etc/group 内容具体分析
group_name:passwd:GID:user_list
在/etc/group 中的每条记录分四个字段:
第一字段:用户组名称;
第二字段:用户组密码;
第三字段:GID
第四字段:用户列表,每个用户之间用,号分割;本字段可以为空;如果字段为空表示用户组为GID的用户名(非系统用户,即UID小鱼500或者1000,该列可以为空,像root管理员,是要出现在本字段的);
初始用户组:通过useradd添加新用户之后,会默认创建与用户名一模一样的组名。可通过/etc/passwd中的第四列和/etc/group中的信息查看
有效用户组:newgrp设置“newgrp 新组名”。可以通过groups查看,排在第一位的,就是当前有效用户名。比如,当时用“touch”创建文件后,查看文件属性(ls),其所属组是有效用户组。
注意:处理root用户之外,通过newgrp新更改的有效用户组,必须本身就是该用户支持的组。
可以让root用户,“usermod -G 组名 用户名 ”。-g代表的是更改初始用户组。
二、账号管理
(一)新增与删除用户
以下三个命令,都是管理员权限可以执行的操作。
1、useradd
会在/etc/passwd /etc/shadow(密码相关的参数填入,但是没有设置密码,第二列是两个谈好“!!”,,重置密码的话,使用passwd即可,如果输入的密码不符合规范,root用户输入两次,系统就统一了,普通用户必须要输入合规的密码才行),/etc/group(与账号名一模一样的组名)中创建相应信息。
在/home下创建一个和账号名一模一样的主文件夹,且权限为700
2、usermod
当时用useradd设置的参数需要被更改是,可以使用usermod进行个别参数的修改,比如上文提到的-g,-G这样重新设置用户组。
usermod的参数和useradd很类似,因为本身usermod就是对useradd做过的设置进行修改。
3、userdel
“userdel [-r] 用户名”。参数“-r”会同时删除主目录。推荐这个,不然以后再创建同名用户的时候,系统会提示有同名mail。
使用userdel删除的有:
用户相关参数:/etc/passwd, /etc/shadow
用户组相关参数:/etc/group, /etc/gshadow
用户个人文件数据:/home/username,/var/spool/mail/username
(二)用户功能
1、id
查看某人或者自己的uid, gid等信息
id [username]
(三)新增与删除用户组
1、groupadd
"group [-g gid] 用户组名": 规定使用的gid
"group [-r] 用户组名":为了让UID和GID成对,新建系统用户组时,使用“-r”。
2、groupmod
3、groupdel
注意:如果一个组,是其他用户的初始用户组,那
么就无法删除。不然,/etc/passwd中第四列GID的值找不到了,用户登录时会很懵逼。
以上创建、修改、删除用户组的操作,只能由root用户才有权限执行
4、gpasswd
root操作
"gpasswd testgroup":设置用户组的密码
"gpasswd -A 用户名 组名":把该用户设置为该组的用户组管理员
用户组管理员操作
"gpasswd -a 用户名 组名":将该用户添加到该组中
(四)、账号管理实例
SUID和SGID会出现在用户的执行位或者用户组的执行位上,比如:
- -rwsr-xr-x 1 root root 42824 Sep 13 2012 /usr/bin/passwd
用户执行位由x变成s字母,意思是,当某用户执行这个文件时,享有该文件拥有者的权限