- 用户标识符: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用户管理
最新推荐文章于 2024-07-23 11:29:58 发布