-
用户标识符:UID与GID
-
-
每个登录的用户至少会取得两个ID,一个是用户ID(UserID,简称UID),一个是用户组ID(Group ID 简称 GID)
-
vi /etc/passwd
-
-
root:x:1:0:root:/root:/bin/bash
-
bin:x:1:1:bin:/bin:/sbin/nologin
-
daemon:x:2:2:daemon:/sbin:/sbin/nologin
-
-
/etc/passwd 文件结构
-
-
每一行使用“:”分隔开 共有七个字段
-
-
1、账号名称
-
2、密码:早期密码放在这个字段上,后来考虑到安全性,将这个字段的数据该放到/etc/shadow中,这里用X进行替代
-
3、UID
-
-
0(系统管理员)
-
1~499(系统账户)
-
-
1~99 由distributions自行创建的系统账号
-
100~499 若用户有系统账号需求时,可以使用的账号UID
-
-
500~65535(可登陆账号)
-
-
4、GID
-
-
这个与/etc/group有关
-
-
5、用户信息说明
-
6、主文件夹
-
7、Shell
-
-
文件权限
-
-
-rw-r--r--. 1 root root 846 5月 18 22:52 passwd
-
-
-
/etc/shadow 文件结构
-
-
head -n 4 /etc/shadow
-
-
root:$6$i4u/hfm.TBQuisEr$oKGiha.4iHSs/1Lt1iE7fcqqrc3NnJnPZccrY40KIJaSIMUu1CtDg.DEgHkJYQpvtS01ZJJTX3kCW6gyLWO4M/::0:99999:7:::
-
bin:*:17110:0:99999:7:::
-
daemon:*:17110:0:99999:7:::
-
adm:*:17110:0:99999:7:::
-
-
以“:”分隔,共有9个字段
-
-
1、账号名称
-
2、密码
-
-
在此字段前加!或*改变密码字段长度,就会让密码“暂时失效”了
-
-
3、最近更动密码的日期
-
-
日期时间是以1970年1月1日作为1而累加的日期,1971年1月1日则为366
-
-
4、密码不可被更动的天数(与第三个字段相比)
-
-
0表示密码可以随时改动。
-
20 那么当你设置密码之后,20天内无法修改这个密码
-
-
5、密码需要重新更改的天数(与第三个字段相比)
-
-
要在这个天数内重新设置你的密码,否则这个账号的密码将会变为过期特性。
-
99999(计算为273年)表示密码的更改没有强制之意
-
-
6、密码需要更改期限的警告天(与第5个字段相比)
-
-
当账号的密码有效期快到的时候,系统会依据这个字段设置发出“警告”
-
-
7、密码过期后的账号宽限时间(密码失效日)(与第五个字段相比)
-
8、账号失效日期
-
9、保留
-
-
最后一个字段保留的,看以后有没有新功能加入
-
-
-
-
修改密码处理
-
-
一般用户的密码忘记了,这个最容易解决,利用root的身份passwd命令来处理即可
-
root忘记了密码,重新启动进入用户维护模式后,系统会自动给予root权限的bash接口,再以passwd修改密码即可,
-
或以live CD开机后挂载根目录去修改/etc/shadow,将里面的root的密码字段清空,再重新启动root将不用密码即可登录,登录后再以passwd命令设置root密码即可。
-
-
-
有效与初始化用户组:groups,newgrp
-
-
需要了解/etc/group与/etc/gshadow
-
/etc/group 文件结构
-
-
head -n 4 /etc/group
-
-
root:x:0:
-
bin:x:1:
-
daemon:x:2:
-
sys:x:3:
-
-
以冒号作为字段的分隔符,共有四列
-
-
1、用户组
-
2、用户组密码
-
-
密码已经移动到/etc/gshadow,这个字段只会存一个X
-
-
3、GID
-
4、此用户组支持的账号名称
-
-
我们知道一个账号可以加入多个用户组,多个用户在一个组,多个用户属于一个组用逗号隔开
-
root:x:0:root,users
-
-
-
-
有效用户组与初始化用户组
-
-
在/etc/passwd里面第四列的GID是初始化用户组,
-
在/etc/group第四个字段中列出的用户,表示该用户属于该用户组
-
通过groups 打印出的第一个用户组为有效用户组,
-
-
groups
-
-
root
-
-
使用touch去创建一个新文件时,那么这个文件所的所属用户组为有效用户组
-
-
newgrp:有效用户组的切换
-
-
newgrp users
-
-
-
/etc/gshadow 文件结构
-
-
head -n 4 /etc/gshadow
-
-
root:::
-
bin:::
-
daemon:::
-
sys:::
-
-
以冒号作为字段的分隔符,共有四列
-
-
1、用户组名
-
2、密码列,同样,开头为!标识无合法密码,所以无用户组管理员
-
3、用户组管理员的账号
-
4、该用户组的所属账号
-
-
-
-
新增与删除用户:useradd,相关配置文件,passwd,usermod,userdel
-
-
man useradd 查看使用方法
-
useradd [-u UID] [-g 初始化用户组] [-G 次要用户组] [-m M] [-c 说明栏] [-d 主文件夹绝对路径] [-s shell] 用户账号名
-
-
-u:后面接着的是UID,是一组数字。直接指定一个特定的UID给这个账号
-
-g:后面接的那个用户组名就是我们上面提到的 initial group 初始化用户组。该用户组的GID会放置到/etc/passwd的第四个字段内
-
-
-
-G:后面接的组名则是这个账号还可以加入的用户组,这个参数会修改 /etc/group内的相关数据
-
-M:强制!不要创建用户主文件夹(系统账号默认值)
-
-m:强制!要创建用户主文件夹(一般用户默认值)
-
-c:这个就是/etc/passwd的第五列说明内容,可以随便设置
-
-d:指定某个目录成为主文件夹,而不要使用默认值。务必使用绝对路径
-
-r:创建一个系统账号,这个账号的UID会限制(参考 /etc/login.defs)
-
-s:后面接一个shell,若没有指定则默认是/bin/bash
-
-e:后面接一个日期,格式为“YYYY-MM-DD”,此选项可写入shadow第八字段,
-
-f:后面接shadow的第七字段选项,指定密码是否会失效,0为立刻失效,-1为永远不失效
-
-
useradd fuchenlin
-
-
其实系统已经帮我们规定好非常多的默认值,所以我们可以简单的使用“ useradd 账号”来创建用户即可。系统会帮我们处理几项
-
-
在/etc/passwd里面创建一行与账号相关的数据,包括UID/GID/主文件夹等
-
在/etc/shadow里面将此账号的密码相关参数填入,但是尚未有密码
-
在/etc/group里面加入一个与账号名称一模一样的组名
-
在/home下面创建一个与账号同名的目录作为用户主文件夹,且权限为700
-
-
-
useradd -u 700 -g users fuchenlin1
-
-
指定用户的UID及初始化用户组
-
-
useradd -r fuchenlin2
-
-
创建一个系统账号,不会创建主文件夹
-
-
useradd 参考文件
-
-
useradd -D
-
-
GROUP=100
-
HOME=/home
-
INACTIVE=-1
-
EXPIRE=
-
SHELL=/bin/bash
-
SKEL=/etc/skel
-
CREATE_MAIL_SPOOL=yes
-
-
这个数据其实是由/etc/default/useradd调出来的
-
-
GROUP=100 新建账号的初始化用户组使用GID为100,目前系统不参考这种设置
-
HOME=/home 用户主文件夹的基准目录
-
INACTIVE=-1 密码过期后是否会失效的设置
-
EXPIRE=:账号的失效日期
-
SHELL=/bin/bash 默认使用的shell程序文件名
-
SKEL=/etc/skel 用户主文件夹参考基准目录
-
CREATE_MALL_SPOOL=yes 创建用户的mailbox
-
-
除了这些基本的账号设置之外,可以看一下/etc/login.defs
-
-
MAIL_DIR /var/spool/mail 用户默认邮件信箱放置目录
-
-
-
PASS_MAX_DAYS 99999 /etc/shadow内的第5列,多久需要更改密码天数
-
PASS_MIN_DAYS 0 /etc/shadow内的第4列,多久不可重新设置密码天数
-
PASS_MIN_LEN 5 密码最短字符长度,已经被pam模块替代,失去效用
-
PASS_WARN_AGE 7 /etc/shadow内的第六列,过期前会警告的天数
-
UID_MIN 1000 用户最小的UID,意即小于1000的UID为系统保留
-
UID_MAX 60000 用户能够使用的最大UID
-
SYS_UID_MIN 201 系统用户最小的UID
-
SYS_UID_MAX 999 系统用户最大的UID
-
GID_MIN 1000 用户自定义用户组的最小GID,小于1000位系统保留
-
-
GID_MAX 60000 用户自定义用户组的最大GID
-
SYS_GID_MIN 201 系统用户用户组的最小GID
-
SYS_GID_MAX 999 系统用户用户组的最大GID
-
CREATE_HOME yes 是否主动创建用户主文件夹
-
UMASK 077 用户主文件夹创建的umask 因此权限会是700
-
USERGROUPS_ENAB yes 使用userdel删除时,是否会删除初始化用户组
-
ENCRYPT_METHOD SHA512 密码通过sha512加密
-
-
passwd 设置密码
-
-
passwd [-l] [-u] [—stdin] [-S] [-n 日数] [-x 日数] [-w 日数] [-i 日期] 账号
-
-
—stdin: 可以通过来自前一个管道的数据,作为密码输入
-
-l :是Lock的意思,会将/etc/shadow第二列加上!使密码失效。
-
-u:与-l相对,是Unlock的意思
-
-S:列出密码相关参数,即shadow文件内的大部分信息
-
-n:后面接天数,shadow的第4字段,多久不可修改密码天数
-
-x:后面接天数,shadow的第5字段,多久密码必须改动
-
-w:后面接天数,shadow的第6字段,密码过期前的警告天数
-
-i:后面接日期,shadow的第7字段,密码失效日期
-
-
passwd fuchenlin
-
-
通过root来设置即可,root可以设置各式各样的密码,系统几乎一定会接受
-
-
passwd
-
-
用fuchenlin登录后,修改fuchenlin自己的密码
-
这个时候密码的格式就会受到系统的限制
-
-
要帮一般账号新建密码需要使用“passwd 账号的格式”,使用“passwd”表示修改自己的密码
-
使用standard input 新建用户密码
-
-
echo “abc@123” | passwd —stdin fuchenlin
-
-
passwd -S fuchenlin
-
-
fuchenlin PS 2018-05-20 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
-
新建日期(2018-05-20)、最小天数(0)、更改天数(9999)、警告天数(7)、密码不会失效(-1)
-
-
chage 更详细的密码相关
-
-
chage [-ldEImMW] 账号
-
-
-l:列出该账号的详细密码参数
-
-d:后面接日期,修改shadow的第三个字段(最近一次更改密码的日期)格式 YYYY-MM-DD
-
-E:后面接日期,修改shadow的第八字段(账号失效日),格式YYYY-MM-DD
-
-I:后面接天数,修改shadow的第七字段(密码失效日期)。
-
-m:后面接天数,修改shadow的第四字段(密码最短保留天数)
-
-M:后面接天数,修改shadow的第五字段(密码多久需要进行更改)
-
-W:后面接天数,修改shadow的第六字段(密码过期前警告日期)
-
-
用户在地刺登录时强制他们一定要更改密码后才能够使用系统资源,
-
-
useradd agetest
-
echo “agetest” | passwd —stdin agetest
-
chage -d 0 agetest
-
-
-
-
usermod 修改用户信息
-
-
usermod [-cdegGlsuLu] username
-
-
-c:这个就是/etc/passwd的第五列说明内容,可以随便设置
-
-d:指定某个目录成为主文件夹,而不要使用默认值。务必使用绝对路径
-
-e:后面接一个日期,格式为“YYYY-MM-DD”,此选项可写入shadow第八字段,
-
-f:后面接shadow的第七字段选项,指定密码是否会失效,0为立刻失效,-1为永远不失效
-
-g:后面接的那个用户组名就是我们上面提到的 initial group 初始化用户组。该用户组的GID会放置到/etc/passwd的第四个字段内
-
-G:后面接的组名则是这个账号还可以加入的用户组,这个参数会修改 /etc/group内的相关数据
-
-a:与-G合用增加次要用户组的支持而非设置
-
-l:后面接账号名称、即修改账号名称,/etc/passwd的第一列
-
-s:后面接一个shell,若没有指定则默认是/bin/bash
-
-u:后面接着的是UID,是一组数字。直接指定一个特定的UID给这个账号
-
-L :是Lock的意思,会将/etc/shadow第二列加上!使密码失效。
-
-U:与-l相对,是Unlock的意思
-
-
-
userdel 删除用户数据
-
-
userdel [-r] username
-
-
-r:连同用户的主文件夹也一期删除
-
-
-
-
用户功能
-
-
finger 查阅用户相关系统
-
-
finger [-s] username
-
-
-s:仅累出用户的账号,全名,终端机代号与登录时间等
-
-m:列出与后面接的账号相同者,而不是利用部分对比
-
-
-
chfn 增加用户的具体信息
-
-
chfn [-foph] 账号名
-
-
-f:后面接完整的大名;
-
-o:你办公室的房间号码
-
-p:办公室的电话号码
-
-h:家里的电话号码
-
-
-
chsh 调整shell 是change shell的简写
-
-
chsh [-ls]
-
-
-l:列出目前系统上可用的shell
-
-s:设置修改自己的shell
-
-
-
id 可以查询某人或者自己的相关UID/GID等信息
-
-
新增与删除用户组
-
-
groupadd 新增用户组
-
-
groupadd [-g gid] [-r] 用户组名
-
-
-g:后面接某个特定的GID,用来直接给予某个GID
-
-r:新建系统用户组
-
-
-
groupmod 修改用户组
-
-
groupmod [-g gid] [-n group_name] 用户组名
-
-
-g :修改既有的GID数字
-
-n:修改既有的组名
-
-
-
groupdel 删除用户组
-
-
groupdel [groupname]
-
有某个账号的初始用户组使用该用户组,则不能删除
-
-
gpasswd 用户组管理员功能
-
-
用户身份切换
-
-
su 可以进行任何身份的切换
-
su [-lm] [-c 命令] [username]
-
-
-:单纯使用- 如“su -” 代表使用login-shell的变量文件读取方式来登录系统;若用户名没有加上,则代表切换为root的身份
-
-l:与-类似,但后面需要加欲切换的用户账号
-
-m:-m与-p是一样的,标识使用目前的环境设置,而不读取新用户的配置文件
-
-c:仅进行一次命令,所有-c后面可以加上命令
-
-
sudo 执行仅需要自己的密码即可
-
-
sudo [-b] [-u 新用户账号]
-
-
-b:将后续的命令让系统自动执行,而不与目前的shell产生影响
-
-u:后面可以接欲切换的用户,若无此项则代表切换身份为root
-
-
suod的执行流程
-
-
当用户执行suod时,系统于/etc/sudoers文件中查找该用户是否有执行sudo的权限
-
若用户具有可执行sudo的权限后,便让用户输入用户自己的密码来确认
-
若密码输入成功,便开始进行sudo后续接的命令
-
若欲切换的身份与执行身份相同,那也不需要输入密码
-
-
visudo 与 /etc/sudoers
-
-
使用visudo去修改/etc/sudoers
-
visudo
-
-
root ALL=(ALL) ALL
-
用户张, 登录这的来源主机名=(可切换的身份) 可执行的命令
-
-
利用用户组以免密码的功能处理visudo
-
-
%whell ALL=(ALL) ALL
-
在最左边加上%代表后面接的是一个用户组的意识
-
%whell ALL=(ALL) NOPASSWD:ALL
-
NOPASSWD 是免除密码输入的意思
-
-
有限的命令操作
-
-
myuser1 ALL=(root) /usr/binpasswd
-
-
只能够进行密码修改操作
-
-
-
-
-
Linux用户管理
最新推荐文章于 2023-06-13 20:31:10 发布