Linux用户管理

  • 用户标识符: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
            • 只能够进行密码修改操作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值