沙滩星空的博客沙滩星空的博客

Linux系统的用户和用户群组的各种权限总结

用户群组

用户群组文件

/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

linuxrwx.png

语法: 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 之类的纯数字好记很多。

文件权限更多相关请看:Linux文件权限详解

sudo超级管理员

apt install sudo
# export PATH=$PATH:/usr/bin
vim /etc/sudoers

相关文件和目录

  • /etc/passwd: 用户信息文件。格式为 用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
  • /etc/group: 用户群组信息文件。格式为 组名:口令:组标识号:组内用户列表
  • /etc/shadow: 用户密码文件。格式为 登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
  • /etc/gshadow: 用户群组密码文件
  • /etc/sudoers: 拥有超级管理员权限的sudo用户文件
  • /home/user1/: 用户user1的主目录
  • /var/spool/mail/user1/: 用户user1的邮箱目录

/etc/shadow 文件各字段的含义:

  1. 登录名 是与 /etc/passwd 文件中的登录名相一致的用户账号
  2. 口令 字段存放的是加密后的用户口令字:
  • 如果为空,则对应用户没有口令,登录时不需要口令;
  • 星号代表帐号被锁定;
  • 双叹号表示这个密码已经过期了;
  • $6$开头的,表明是用SHA-512加密;
  • $1$表明是用MD5加密;
  • $2$ 是用Blowfish加密;
  • $5$ 是用 SHA-256加密;
  1. 最后一次修改时间 表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如在SCOLinux中,这个时间起点是1970年1月1日。
  2. 最小时间间隔 指的是两次修改口令之间所需的最小天数。
  3. 最大时间间隔 指的是口令保持有效的最大天数。
  4. 警告时间 字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。
  5. 不活动时间 表示的是用户没有登录活动但账号仍能保持有效的最大天数。
  6. 失效时间 字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。

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
未经允许不得转载:沙滩星空的博客 » Linux系统的用户和用户群组的各种权限总结

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址