用户,就是系统使用者的身份
在系统中,用户存储为若干串字符+若干个系统配置文件
在linux中一般来说,一个用户会用到5个目录存放相关用户信息:
1)/etc/passwd
存放用户信息,其格式为:
用户:密码:uid:gid:说明:家目录:用户使用的shell
[root@localhost ~]# tail -n 5 /etc/passwd sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin tcpdump:x:72:72::/:/sbin/nologin mazha:x:1000:1000:mazha:/home/mazha:/bin/bash
2) /etc/shadow
存放用户验证信息,其格式为:
用户:密码:最后一次密码修改该时间:最短有效期:最长有效期:警告期:非活跃期:帐号到期日
[root@localhost ~]# tail -n 5 /etc/shadow sshd:!!:17078:::::: avahi:!!:17078:::::: postfix:!!:17078:::::: tcpdump:!!:17078:::::: mazha:$1$50CPLyN9$SbWMdqn.YcTSni8Iyv.L30:17083:0:99999:7:::注:密码以hash加密后的字符串储存,系统对原密码不做保留
3) /etc/group
存放用户组信息,格式为:
组名称:组密码:组id:附加组成员
[root@localhost ~]# tail -n 5 /etc/group tcpdump:x:72: stapusr:x:156: stapsys:x:157: stapdev:x:158: mazha:x:1000:
4) /etc/gshadow
存放用户组验证信息
5) /home/username
用户家目录,存放用户相关文件
[root@localhost ~]# cd /home/mazha/ [root@localhost mazha]# ls [root@localhost mazha]# ls -a . .bash_history .bash_profile .cache .mozilla .. .bash_logout .bashrc .config
1)用户建立
useradd 参数 用户名字
-u 指定用户uid
[root@localhost mazha]# useradd -u 8888 test [root@localhost mazha]# tail -n 2 /etc/passwd mazha:x:1000:1000:mazha:/home/mazha:/bin/bash test:x:8888:8888::/home/test:/bin/bash
-g 指定用户初始组信息,这个组必须已经存在
[root@localhost mazha]# useradd -g mazha test [root@localhost mazha]# tail -n 2 /etc/passwd mazha:x:1000:1000:mazha:/home/mazha:/bin/bash test:x:1001:1000::/home/test:/bin/bash
-G 指定附加组,这个组必须存在
[root@localhost mazha]# useradd -G mazha test [root@localhost mazha]# tail -n 2 /etc/group mazha:x:1000:test test:x:1001:
-c 用户说明
[root@localhost mazha]# useradd -c handsome test [root@localhost mazha]# tail -n 2 /etc/passwd mazha:x:1000:1000:mazha:/home/mazha:/bin/bash test:x:1001:1001:handsome:/home/test:/bin/bash
-d 用户家目录
[root@localhost mazha]# useradd -d /home/111 test [root@localhost mazha]# tail -n 2 /etc/passwd mazha:x:1000:1000:mazha:/home/mazha:/bin/bash test:x:1001:1001::/home/111:/bin/bash
-s 用户所使用的shell,/etc/shells记录了用户能使用shell的名字
2)用户删除
userdel -r 用户名称 -r表示删除用户信息及用户的系统配置(递归删除)
[root@localhost mazha]# tail -n 2 /etc/passwd tcpdump:x:72:72::/:/sbin/nologin mazha:x:1000:1000:mazha:/home/mazha:/bin/bash
3)用户管理
usermod 参数 用户名字
-c<备注> 修改用户帐号的备注文字
[root@localhost mazha]# usermod -c super test [root@localhost mazha]# tail -n 2 /etc/passwd mazha:x:1000:1000:mazha:/home/mazha:/bin/bash test:x:1001:1001:super:/home/test:/bin/bash
-d<登入目录> 修改用户登入时的目录
-e<有效期限> 修改帐号的有效期限
-f<缓冲天数> 修改在密码过期后多少天即关闭该帐号
-g<群组> 修改用户所属的群组
-G<群组> 修改用户所属的附加群组
-p 修改用户密码
-l<帐号名称> 修改用户帐号名称
[root@localhost mazha]# usermod -l quit test [root@localhost mazha]# tail -n 2 /etc/passwd mazha:x:1000:1000:mazha:/home/mazha:/bin/bash quit:x:1001:1001:super:/home/test:/bin/bash
-L 锁定用户密码,使密码无效
[root@localhost mazha]# usermod -L quit [root@localhost mazha]# tail -n 2 /etc/shadow mazha:$1$50CPLyN9$SbWMdqn.YcTSni8Iyv.L30:17083:0:99999:7::: quit:!:17084:0:99999:7:::
-s<shell> 修改用户登入后所使用的shell
-u<uid> 修改用户ID
-U 解除密码锁定
注:使用 usermod -U 时,若当前用户没有密码,则会提示先使用usermod -p 添加一个密码,但
usermod -p 修改密码,一般直接存入/etc/shadow,所以是存入了加密后的文档,是不能登陆的,只能作为消除密码使用。
4)组的建立
groupadd -g 组号 建立组
[root@localhost mazha]# groupadd -g 6666 super [root@localhost mazha]# tail -n 2 /etc/gro groff/ group group- [root@localhost mazha]# tail -n 2 /etc/group mazha:x:1000: super:x:6666:
groupdel 组名字 删除组
[root@localhost mazha]# groupdel super [root@localhost mazha]# tail -n 2 /etc/group stapdev:x:158: mazha:x:1000:
注:进行以上实验时建议配合监控命令,更加直观
watch -n 1 'tail -n 3 /etc/passwd/etc/group;echo ====;ls -l /home;echo ===;ls -l /mnt'
5)用户id信息查看
id 参数 用户
[root@localhost mazha]# id quit uid=1001(quit) gid=1001(test) groups=1001(test)
-u 用户uid
[root@localhost mazha]# id -u quit 1001
-g 用户初始组id
[root@localhost mazha]# id -g quit 1001
-G 用户所有所在组id
[root@localhost mazha]# id -G quit 1001
-n 显示名称而不是id数字(一般配合 -g一起使用)
[root@localhost mazha]# id -ng quit test
-a 显示所有信息
[root@localhost mazha]# id -a quit uid=1001(quit) gid=1001(test) groups=1001(test)