理解linux用户权限
用户权限通过创建用户时分配的UID跟踪,UID唯一,用户登陆系统通过登陆名,同时关联一个对应密码
UID和登陆名匹配关系配置在**/etc/passwd**,该文件中还包含一些与用户有关的信息,该文件字段包括:
root: x :0:0:root:/root:/bin/bash
用户名:密码:UID:GID:备注字段:家目录:默认shell
密码字段设置为x,实际密码配置在/etc/shadow中
/etc/shadow字段含义:
root:$6$1iVS0W6jfSpHDd5Y$97y3g9wvRN7CsWH201eZ5UDrRspOF6jj5Kjjv8mYFrg/UcVq1RwPzKJdDWyHJt6pKwtB5EajJTAtJZv/6dIjL1::0:99999:7:::
用户名:加密密码:自上次修改密码过去的天数:多少天后能修改密码:多少天后必须修改密码:密码过期前提前多少天提醒用户修改密码:密码过期后多少天禁用账户:用户账户被禁用日期:预留
添加用户:useradd USERNAME;添加普通用户默认UID从1000开始,系统用户从201开始
useradd -D查看默认配置,默认配置:
GROUP=100 #新用户会被配置到GID为100的公共组
HOME=/home #新用户家目录位于/home/loginname
INACTIVE=-1 #用户密码过期后不会被禁用
EXPIRE= #未被设置过期时间
SHELL=/bin/bash #默认shell
SKEL=/etc/skel #默认系统文件
CREATE_MAIL_SPOOL=yes #邮件文件
关于GROUP=100,创建用户时不会马上使用,需要满足两个条件才会使用,添加用户时没有指定用户所属组:即没有指定-g或-G,但是-g是默认的。而创建用户的默认配置使用的配置文件在/etc/login.defs中,包括掩码信息,create_home等信息,其中有一项USERGROUPS_ENAB,把该选项设为no,再创建用户默认组就为100
关于/etc/skel,系统默认配置一份系统文件,当用户创建的时候,会把此目录中的内容复制到$HOME中,文件包括:
.bash_logout .bash_profile .bashrc
useradd参数:-d home_dir,为主目录指定一个名字,-e YYYY-MM-DD指定一个过期时间,-g GID,-G 附加组名称,-m 创建家目录,-k 复制skel -M不创建家目录 -U创建与用户名同名的新组,-r创建系统用户 -p passwd, -s shell,-u uid
By default, a group will also be created for the new user (see -g, -N, -U, and USERGROUPS_ENAB).
删除用户userdel,默认删除/etc/passwd中的内容,-r删除用户家目录和邮件目录
修改用户usermod,-l修改用户登陆名,-L锁定用户,无法登陆,-p修改用户密码,-U解除锁定
修改密码passwd,-e强制用户下次登陆修改密码
chpasswd < file,批量修改密码,file内容格式:userid:passwd,通过重定向到chpasswd
chsh -s SHELL username,修改指定用户/etc/passwd中shell信息
chfn修改备注字段信息,finger可查看,指纹信息
chage管理用户的有效期,chage [option] LOGIN,-d设置上次修改密码到现在的天数,-E密码过期时间,-I密码过期到锁定账户天数,-m设置密码修改之间的天数,-W设置密码过期前多久开始出现提醒信息。支持日期格式:YYYY-MM-DD,1970.1.1到该天的天数
/etc/group组文件,root: x :0:,字段含义
组名:组密码:GID:属于该组的用户列表
创建组groupadd GROUPNAME,默认普通组从1000开始,系统组从201开始,通过usermod向组(附加组)添加用户usermod -G GNAME,如果是默认组则usermod -g
修改了组关系的用户,需要登出再登陆才能生效
修改组groupmod,修改组名-n ,修改GID -g