Linux 用户和用户组管理全解

Micah2015年07月28日 15:01 分类 : Linux  > Linux命令
阅读: 1997

分享到微信朋友圈

/etc/passwd 用户信息文件 root:x:0:0:root:/root:/bin/bash 第一位:用户名 第二位:密码标识,指定用户是否有密码。删除表示相当于没有设定密码 第三位:用户ID(UID) 0:超级用户 1-499:系统用户(伪用户) 创建的密码是从500开始

Linux用户命令,Linux用户组管理命令

一、用户相关文件

1. /etc/passwd 用户信息文件

root:x:0:0:root:/root:/bin/bash

第一位:用户名

第二位:密码标识,指定用户是否有密码。删除表示相当于没有设定密码

第三位:用户IDUID 0:超级用户 1-499:系统用户(伪用户) 创建的密码是从500开始

把普通用户变成到超级用户:把用户UID改为0

第四位:组IDGID 添加用户时如果不指定用户所属组,则会建立和用户名相同的组

第五位:用户说明 说明该用户的信息,不是必须

第六位:用户家目录

第七列:登录shell(默认:/bin/bash,表示可以执行当前用户的所有权限内命令) 指定用户登录后的权限

2. /etc/shadow 影子文件

root:$1$3hOojuBX$LmiMHZVcZvSEhDXV1cYyy1:15609:0:99999:7:::

*第一位: 用户名

*第二位: 加密密码,加密密码的时候不仅仅是考虑密码,还会与其他值一起计算

第三位: 用户最后一次修改密码的天数

*第四位: 两次密码修改间隔时间

*第五位: 密码有效的最多天数

第六位: 从系统开始警告到密码失效的天数

第七位: 密码过期后宽限天数

第八位: 密码失效时间

第九位: 保留

3. /etc/group 组信息文件

root:x:0:root

第一位: 组名

第二位: 组密码标识,可以设一个组管理员。一般不要使用

第三位: GID

第四位: 此组中支持的其他用户,附加组是此组的用户

初始组:每个用户初始组只能有一个,建立用户时设定,一般都是和用户名相同的组作为初始组

附加组:每个用户可以属于多个附加组,可以让用户属于多个组,把用户加入组一般都是加入附加组

注意:组名和组ID一般都不要随意修改

4. /home/用户名 每个用户的家目录

5. 补充

/etc/gshadow 组的影子文件

/var/spool/mail/用户名 产生用户邮箱

/etc/skel 用户家目录模板,用户创建家目录的时候,把这个目录中的所有文件(包括非系统原生文件)自动拷贝到用户家目录,注意:该目录下文件是隐藏文件

二、用户管理命令

1. 添加用户

useradd 用户名

-u UID 指定用户的ID

-g 组名 指定初始组

-G 组名 指定附加组

-c 说明 添加说明

-d 目录 手工指定家目录,

如果直接修改passwd的方式来指定家目录需要注意:

创建该目录

修改该目录的所有者和所有组

修改权限为700

因为内部没有环境变量配置文件,所以登录后无法操作,可以把/etc/skel/中的文件(隐藏)拷贝到该家目录下(cp \.* /home/userhome:该命令中的\.表示隐藏文件前的.*表示通配符)

-s shell

手工删除用户需要删除一下文件或文件内容:

/etc/passwd

/etc/shadow

/etc/group

/etc/gshadow

/home/用户名

/var/spool/mail/用户名

2. 设定密码

passwd 用户名

passwd 改变当前用户的密码

passwd 选项 用户名

--stdin 允许管道符输入密码 echo "password" | passwd --stdin username

该列:echo 表示输出,|后面表示接收|前面输出的字符作为密码,该方式history查看历史命令能查看到密码明文,通常使用shell脚本批量添加用户。

-l 锁定用户密码,用户不允许登录

-u 解锁

3. 用户信息修改 修改已经存在的用户信息

usermod -u -G -c -d -s 用户名

注意:不要修改已经存在的用户的初始值

usermod -L 用户名 锁定用户,通过在密码前加一个!使用户密码验证不通过的方式

usermod -U 用户名 解锁

usermod -l 新名 旧名 修改用户名,一般不要使用

4. 删除用户

userdel -r 用户名

-r 连带家目录一起删除

5. 添加组

groupadd 组名

6. 删除组

groupdel 组名 只能删空组

7. chage -d 0 用户组 用户修改密码的时间,为0时用户登录时必须修改密码

8. 把已经存在的用户加入组

usermod -G 组名 用户名 可以不记该命令,记下面两条

gpasswd -a 用户名 组名 用户加入组

gpasswd -d 用户名 组名 把用户从组中删除

三、用户相关命令

1. id 用户名 显示用户的UID,初始组ID和附加组ID

2. su - 用户名 切换用户身份

- 连带环境变量一起切换

3. whoami 返回当前登录的用户名

4. 改变有效组的命令

newgrp 组名

切换用户创建文件时文件的所属组(初始组和附加组),临时生效

四、用户权限赋予

实例:要求user1,user2,user3用户对/dirtest目录有7权限,其他人没有

groupadd testgrp #创建一个组

gpasswd -a user1 testgrp #user1,user2,user3添加进组中

...

chmod 770 /dirtest #给该目录的权限赋予770权限

chgrp testgrp /dirtest #修改该目录的所属组为testgrp

五、ACL权限

1. getfacl 文件名 查询文件的acl权限

2. setfacl 选项 文件名 设定文件的acl权限

-m 设定权限

-b 删除权限

-R 递归

d 默认

setfacl -m u:用户名:权限 文件名 给用户设定acl权限

setfacl -m g:组名:权限 文件名 给组设定acl权限

例:setfacl -m u:username:rwx /dirname dirname目录赋予username用户rwx权限

setfacl -m u:用户名:权限 -R 目录名 递归给目录以及目录内的文件赋予acl权限,只影响已经存在的文件

setfacl -m d:u:用户名:权限 -R 目录名 给目录指定默认acl权限,只要内部有创建文件都会遵守该权限,只影响新创建的文件

六、sudo授权 给普通用户赋予部分管理员权限

1. root设置部分

visudo #开文件操作内容

直接修改文件如以下格式:

root ALL=(ALL) ALL

root:用户名

ALL:来源主句,指定一个IP地址,ALL代表全部。表示从该IP地址登录的指定的用户

(ALL):该用户可以切换的身份

ALL:可用命令

例:

useraa ALL=/usr/bin/passwd #赋予useradd修改用户密码的权限

useraa ALL=/usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd "", !/usr/bin/passwd root

#赋予useraa用户修改密码的权限,但是不允许修改管理员的密码:使用正则匹配,允许需要修改密码的用户的用户名为字母,不允许设置用户名为空,不允许修改超级管理员的密码。每个逗号后需要一个空格

2. useraa操作方式

sudo /usr/sbin/useradd

Micah
IT技术整理

精彩评论:0

还可以输入250个字 评论

评论成功

评论失败

 

微信公众号

微博