【Linux】 用户管理
Linux用户管理
■ 查看用户整体情况
cat /etc/passwd可以查看用户的一些基本信息。用finger <user>似乎更加方便
查看某一个特定的用户的话就可以 grep <user> /etc/passwd /etc/shadow /etc/group把三个信息文件连起来写,一次性地提取出这个用户相关的信息
■ 加入新用户
在没有特殊要求的时候,只要useradd <user>就好了。useradd命令有一些默认的参数,可以通过useradd -D来查看。这些参数配置在/etc/default/useradd中
用root可以忽略其他用户的旧密码,强行给用户设置一个新密码。passwd <user>。一般用户的话可以passwd来改变自己的密码。
root用户可以passwd -S <user>显示/etc/shadow中的一些信息。如果想要修改这些信息(主要是密码的一些信息比如密码过期日期,密码失效日期,密码过期后容许改密码的日期等等)的话用chage比较方便。chage -l可以列出这些信息。
■ 删除用户时的不调
一般删除用户通过userdel命令就可以进行了。但是有些时候,比如uid刚好是0,也就是说这个用户是root的另一个马甲的场合,此时直接userdel可能会报错说process 1正在运行,所以无法直接删除。
此时就会想到能否把uid变成一个普通用户的uid再删除。但是usermod -u此时也是报同样的错误的。此时可以暴力一点直接去修改/etc/passwd,将uid为0的这个用户的uid改成一个普通用户的uid(当然不能和现有的任意一个用户的uid重叠,否则就变成删掉了那个用户了)。
然后userdel就可以成功。
■ 关于/etc/passwd和/etc/shadow的文件结构
众所周知,/etc/passwd中承载着关于用户的很多信息,关于它的文件结构:
每一行代表着一个用户的信息,不同字段之间的信息用一个冒号隔开
每一行的内容大致是:"用户名:密码(显示为x,真正的密码信息在/etc/shadow中只有root有权限看):UID:GID:用户信息说明:用户主文件夹:用户所用的shell类型"
比如以root为例,root在passwd文件中的那一行就是 , "root:x:0:0:root:/root:/bin/bash"。
至于shadow文件,是存放着所有用户密码信息的重要哦文件,权限是000,只有root用户有权限查看。shadow的文件结构如下:
"用户名:密码密文:最近改动密码的日期(格式是天数时间戳):密码被修改后连续多少天不能修改(0则表示修改完后可立即再修改):密码会在多少天后过期(99999表示密码不会过期):密码过期前几天警告:密码过期后宽限天数:账号失效时间(和密码失效不一样,密码失效只要再改下密码即可,账号失效的话改密码也无济于事):保留字段"
shadow文件中每一行的第三字段+第五字段是密码过期的日期,此时已经无法用老密码登录系统,在此基础上还有第七字段的天数作为宽限,宽限期内还可以自己去改密码。
比如root用户在shadow中的信息是"root:$6$TB5wGNj(密文意思一下。。):17292:0:99999:7:::"
■ last
last命令用于查看用户的登录历史情况(倒序),它自动读取/var/log/wtmp文件
last -a将登录用户的主机名或IP(SSH连接时)显示在最后一个字段
last -f <file> 可以指定文件,比如和wtmp同目录的btmp更加详细地记录了远程登录的信息
之前好像在哪里也提到过,last命令看到的都是成功登录的信息,如果要算上登录失败以及尝试登录的这些信息的话应该要看/var/log/secure文件
■ 非交互式修改密码
密码修改基本上都是靠交互式完成的。但是也可以通过下面这个命令来进行非交互式的密码修改:
echo 'new_password' | passwd --stdin "username",这样就把用户名为username的用户的密码改过来了。