1.1 Linux账号与用户组
1.1.1 用户标志符:UID与GID
每个登录的用户至少会取得两个ID,一个是用户ID(UserID,简称UID),一个是用户组ID(GroupID,简称GID)。ID与账号的对应关系就在/etc/passwd当中。
1.1.2 用户账号
当输入账号密码后,系统先寻找etc/passwd里面是否有输入的账号,如果没有则跳出,如果有的话则将该账号对应的UID与GID(在etc/group)读出来,该账号的主文件夹与shell设置一并读出。接下来进入etc/shadow里面找出对应的账号与UID,然后核对输入的密码是否正确。
etc/passwd文件结构如下:
可以看出每一行用:隔开,共有7个字段,分别是:
1.账号名称:用来对应UID。
2.密码:这里仅显示一个x。
3. UID
为0的时候是系统管理员,即root。为1-499是系统账号。500-65535是可登陆账号。
4.GID
5.用户信息说明列:解释这个账号的意义
6.主文件夹:用户主文件夹
7.Shell
当用户登陆候会取得一个Shell来与系统内核通信以进行用户的操作任务。
etc/shadow文件结构如下:
同样其中有9个字段:
1.账号名称
2. 密码
3.最近更改密码日期(以1970.1.1累加日期)
4.密码不可变动天数(相对于3)
5.密码需要重新更改天数(相对于3)
6.密码需要更改警告天数(依照5)
7.密码过期后账号宽限时间(相对于5)
8.账号失效日期
9.保留
1.1.3 有效与初始用户组:groups,newgrp
/etc/group每个字段的意义是:
1.用户组名称
2.用户组密码
3.GID
4.此用户组支持的账号名称
一个账号可以加入多个用户组,以逗号隔开。
有效用户组和初始用户组
etc/passwd第四列的GID就是初始用户组。
以groups命令可查看当前用户的组,第一个显示的用户组就是有效用户组。
使用newgrp可以切换有效用户组。
2.2 账号管理
2.2.1 新增和删除用户以及相关配置文件
新增用户可使用useradd和adduser。
adduser会自动为创建的用户指定主目录,系统shell版本,会在创建时要求设置好密码。
useradd需要使用参数指定上述基本设置,如果不使用任何参数,则创建的用户无密码,无主目录,无shell版本。要设置密码使用passwd。change可以显示更详细的密码参数显示功能。usermod可以对账号相关数据进行微调。
2.3 用户身份切换
使用一般账号,相对比较安全,避免一些严重的错误。
要从一般用户进入root,有两种方式。
“su -”直接将用户变为root,但这个命令需要root密码。
sudo需要事先设置好,sudo需要输入用户自己的密码,因此root密码不会流出去。
2.3.1 su
若要完整地切换到新用户的环境,必须要使用“su -username”或“su - | username”,才会连同PATH/USER/MAIL等变量都转换成新用户的环境。
如果仅想执行一次root命令,可以利用“su - -c “命令” ”。
root切换成任何用户,不需要输入密码。
2.3.2 sudo
由于sudo在输入自己密码即可以其他用户身份执行命令,因此并非所有人都能执行sudo,只有/etc/sudoers内的用户才能执行。
除了root账号之外,若想使用sudo执行属于root的权限命令,则root首先需使用visudo去修改/etc/sudoers,让该账号能够使用全部或部分root命令。