Linux 是一个多用户、多任务的操作系统,所以为了运行这样一套系统,必须要有一套用户管理系统。
User
root 用户是所有类 Unix 系统中的超级管理员,UID 是 0。
/etc/passwd
类似如下:
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
7 个部分:
- 账户名称
- 密码,已被移到
/etc/shadow
目录中 - UID - 0 代表“系统管理员” - 1~499 保留系统使用,1~99 保留系统默认帐号,另外 100~499 则保留给服务使用 - 500~65535 一般用户使用,Linux 2.6.x 已经可以支持 2 的 32 次方减 1 UID
- GID
- 用户信息说明
- home dir
- shell
UID 是不能有冲突的,并且普通用户必须从 1000 开始,即使前面有空缺。
/etc/shadow
加密的密码
9 个部分:
- 帐号名称
- 密码,加密过,如果为* 或 ! 则表示这个帐号并不会用来登陆
- 最近更改密码日期,1970 年 1 月 1 号作为 1
- 密码不可更改天数
- 密码需要重新更改天数
- 密码更改期限前的警告期限
- 密码过期的宽限时间
- 帐号失效日期
- 保留
useradd
useradd
命令可以用来新增用户
root@linux ~# useradd username
可以通过 id username
来查看用户的具体资料。
/etc/default/useradd
新增用户模板
GROUP=100 #默认用户组 HOME=/home #默认 Home 目录 INACTIVE=-1 # /etc/shadow 内第 7 栏 EXPIRE= # /etc/shadow 内第 8 栏 SHELL=/bin/bash #默认 shell SKEL=/etc/skel #home 目录内容数据参考
/etc/skel/*
新增用户 home 目录参考
passwd
设置密码,直接 passwd
则是修改自己密码
root@Linux ~# passwd username
usermod
调整用户帐户信息
比如将用户 einverne 加入 docker 组:
sudo usermod -aG docker einverne
记住这里的 -a
是非常重要的,是 append 附加到最后的意思,如果不加则会把历史的全部清空。
userdel
删除用户
root@linux /# userdel [-r] username
-r
连同 home 目录一起删除
Group
为了管理一组用户,Linux 系统中有组概念,通过用户组 GID, 来区别。
/etc/group
类似
root:x:0:root
daemon:x:1:root,bin,daemon
bin:x:2:root,bin,daemon
sys:x:3:root,bin,adm
4 部分:
- 用户组名称
- 用户组密码 /etc/gshadow
- GID
- 支持的帐号名称
有效用户组
查看以 einverne 用户身份登录,支持的用户组命令:
pi@linux / $ groups
pi adm dialout cdrom sudo audio video plugdev games users netdev gpio i2c spi input
使用命令 newgrp groupname
切换有效用户
查看用户在哪些 groups 中
groups einverne
/etc/gshadow
类似:
root:::root
4 个字段:
- 用户组名称
- 密码栏,以 ! 开头表示无法登陆
- 用户组管理员帐号
- 用户组所属帐号
groupadd
命令:
root@linux ~# groupadd groupname
groupmod
调整 group 相关参数
root@linux ~# groupmod -g 103 -n groupname groupothername
groupdel
删除用户组
root@linux ~# groupdel groupname
su & sudo
/etc/sudoers
文件,建议使用 visudo
编辑该文件
格式:用户帐号 登录主机 = (可变换的身份) 可执行的命令
用户
einverne ALL = (ALL) ALL
用户组内
%groupname ALL = (ALL) ALL
不需要密码
%groupname ALL = (ALL) NOPASSWD: ALL
permission related
chgrp
change file group
chgrp users dirname/filename [-R]
chown [-R]
chown change file owner
chown root:root filename
chmod
change file property, SUID
-
number
r:4 w:2 x:1
chmod [-R] xyz filename/dir
-
符号
-
加入 - 除去 = 设置 u user g group o others a all
列举当前系统组和用户
通过 Ubuntu 内置的 compgen
打印系统中所有的用户及组织。
compgen -u
compgen -g