linux操作系统上的用户如果需要登录主机,当其输入用户名和密码之后:
下面我们详细解释文件:
//我的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/就是默认没有登录环境的。 |
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 | 保留字段,目前无含义 |
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代表的是更改初始用户组。
以下三个命令,都是管理员权限可以执行的操作。
会在/etc/passwd /etc/shadow(密码相关的参数填入,但是没有设置密码,第二列是两个谈好“!!”,,重置密码的话,使用passwd即可,如果输入的密码不符合规范,root用户输入两次,系统就统一了,普通用户必须要输入合规的密码才行),/etc/group(与账号名一模一样的组名)中创建相应信息。
在/home下创建一个和账号名一模一样的主文件夹,且权限为700
当时用useradd设置的参数需要被更改是,可以使用usermod进行个别参数的修改,比如上文提到的-g,-G这样重新设置用户组。
usermod的参数和useradd很类似,因为本身usermod就是对useradd做过的设置进行修改。
“userdel [-r] 用户名”。参数“-r”会同时删除主目录。推荐这个,不然以后再创建同名用户的时候,系统会提示有同名mail。
使用userdel删除的有:
用户相关参数:/etc/passwd, /etc/shadow
用户组相关参数:/etc/group, /etc/gshadow
用户个人文件数据:/home/username,/var/spool/mail/username
查看某人或者自己的uid, gid等信息
id [username]
"group [-g gid] 用户组名": 规定使用的gid
"group [-r] 用户组名":为了让UID和GID成对,新建系统用户组时,使用“-r”。
注意:如果一个组,是其他用户的初始用户组,那
么就无法删除。不然,/etc/passwd中第四列GID的值找不到了,用户登录时会很懵逼。
以上创建、修改、删除用户组的操作,只能由root用户才有权限执行
root操作
"gpasswd testgroup":设置用户组的密码
"gpasswd -A 用户名 组名":把该用户设置为该组的用户组管理员
用户组管理员操作
"gpasswd -a 用户名 组名":将该用户添加到该组中
SUID和SGID会出现在用户的执行位或者用户组的执行位上,比如:
用户执行位由x变成s字母,意思是,当某用户执行这个文件时,享有该文件拥有者的权限