Linux系统的用户和用户群组的各种权限总结
- 用户群组
- 用户群组文件
- 添加群组:groupadd
- 用户
- 用户文件
- 新建用户:useradd
- 修改用户:usermod
- 删除用户:userdel
- 文件归属:chown
- 文件权限:chmod
- 相关文件和目录
用户群组
用户群组文件
/etc/group
: 记录系统用户群组的文件
添加群组:groupadd
# 添加一个名为 tech1 的新群组,GID标识号默认自增
groupadd tech1
# 添加一个名为 tech1 的新群组,GID标识号为2001
groupadd -g 2001 tech1
用户
用户文件
/etc/passwd
: 记录系统用户的文件
新建用户:useradd
# 新增用户
useradd tester1
# 新增带备注的用户
# cat /etc/passwd |tail -1
useradd -c remark1 user1
# sudo 是一个非常有权势的群组, tester3 加入到这个群组
useradd tester3 -g sudo
-N
: 不要创建以用户名称为名的群组,并强制设置用户GID为100。-d
:指定用户登入时的主目录,替换系统默认值/home/<用户名>-g
: 指定用户所属群组。值可以使组名也可以是GID。用户群组必须已经存在的,期默认值为100,即users。-G
: 指定用户所属的附加群组。-m
:自动建立用户的登入目录。-M
:不要自动建立用户的登入目录。-s
:指定用户登入后所使用的shell。默认值为/bin/bash。-u
:指定用户ID号。该值在系统中必须是唯一的。0~499默认是保留给系统用户账号使用的,所以该值必须大于499。-c
:加上备注文字,备注文字保存在passwd的备注栏中。
修改用户:usermod
# 修改用户帐号的备注文字
usermod -c remark2 user1
# 修改用户user1的登陆目录
usermod -d /wwwroot/user1 user1
# 修改账户名
usermod -l user111 user1
# 修改用户ID
usermod -u 1995 user1
# 添加用户 john 到 tech1 群组中
usermod -a -G tech1 john
usermod -aG tech1 john
- usermod命令不允许改变在线的使用者帐号名。
- 当usermod命令用来改变user id,必须确认这名user没在执行程序。
- 使用
-aG
而不是仅仅-G
, 是为了避免将用户从原有组中移除。这里只进行追加操作。 - 如果组名包含空格或特殊符号,请使用双引号,包裹字符串参数
-g<群组>:修改用户所属的群组;
[root@centos6 ~]$ usermod -g yingyu han
[root@centos6 ~]$ id han
uid=2019(han) gid=506(yingyu) groups=506(yingyu)
-G<群组>;修改用户所属的附加群组;
[root@centos6 ~]$ usermod -G shuxue han
[root@centos6 ~]$ id han
uid=2019(han) gid=506(yingyu) groups=506(yingyu),2020(shuxue)
删除用户:userdel
userdel -f user1
-f
:强制删除用户,即使用户当前已登录。-r
:删除用户的同时,删除与用户相关的所有文件。
文件归属:chown
chown [参数选项] 所属用户[:所属用户群组] 文件或目录
# 更改目录或文件 fileordir1 的所属用户为 user1
chown user1 fileordir1
# 更改目录或文件 fileordir1 的所属用户为 user1, 所属群组为 group1
chown user1:group1 fileordir1
# 使用冒号: 修改所属用户群组
chown :group1 fileordir1
# 使用 -R 参数,对目录下,所有的文件和文件夹,一起修改
chown -R user1:group1 dir1/
文件权限:chmod
语法: chmod [选项] 权限模式 文件名或目录
# 给文件file1的所属群组,添加可写权限
chmod g+w file1
# 给文件file1的所属群组,添加可执行权限
chmod g+x file1
# 给文件run.php的所属用户和群组,赋予读写和执行权限。其他人为可执行权限。
chmod u=rwx,g=rwx,o=x run.php
# 对dir1目录下的所有文件和文件夹,所有用户都赋予读写和可执行权限。
# a=rwx 参数,与 777 参数效果相当。即:chmod -R 777 dir1/
chmod -R a=rwx dir1/
权限模式
为 who opt per
三部分的 组合参数
:
who
: 指定归属者。参数为用户u
,群组g
,其他o
,所有a
opt
: 操作符。指定归属者的权限操作为添加+
,减少-
,还是直接变更=
per
: 指定给归属者的具体权限(permission)。参数为可读r
,可写w
,可执行x
这种 组合参数的权限模式
, 比诸如 chmod 400
chmod 600
chmod 777
之类的纯数字好记很多。
相关文件和目录
/etc/passwd
: 用户信息文件。格式为用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
/etc/group
: 用户群组信息文件。格式为组名:口令:组标识号:组内用户列表
/etc/shadow
: 用户密码文件。格式为登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
/etc/gshadow
: 用户群组密码文件/home/user1/
: 用户user1的主目录/var/spool/mail/user1/
: 用户user1的邮箱目录
/etc/shadow
文件各字段的含义:
-
登录名
是与/etc/passwd
文件中的登录名相一致的用户账号 -
口令
字段存放的是加密后的用户口令字:
-
如果为空,则对应用户没有口令,登录时不需要口令;
-
星号代表帐号被锁定;
-
双叹号表示这个密码已经过期了;
-
6 6 6开头的,表明是用SHA-512加密;
-
1 1 1表明是用MD5加密;
-
2 2 2 是用Blowfish加密;
-
5 5 5 是用 SHA-256加密;
-
最后一次修改时间
表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如在SCOLinux中,这个时间起点是1970年1月1日。 -
最小时间间隔
指的是两次修改口令之间所需的最小天数。 -
最大时间间隔
指的是口令保持有效的最大天数。 -
警告时间
字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。 -
不活动时间
表示的是用户没有登录活动但账号仍能保持有效的最大天数。 -
失效时间
字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。
useradd、usermod、userdel命令详解: https://www.cnblogs.com/Alwayslearn/p/17206186.html
linux的用户管理和权限设置相关命令 https://blog.csdn.net/tjfsuxyy/article/details/130707234
linux etc下 passwd、shadow和group文件详解 https://cloud.tencent.com/developer/article/1017460