linux用户分组以及文件和目录的权限学习笔记

写在前面

  linux分组权限管理在实际工作中会经常遇到,这篇文章我主要是对一些命令和概念进行了总结罗列,方便记忆。

用户和组相关的配置文件

  1. /etc/passwd
  系统用户配置文件,是用户管理中最重要的一个文件。这个文件记录了Linux系统中每个用户的一些基本属性,并且对所有用户可读。
  /etc/passwd中每一行记录对应一个用户,每行记录又被冒号分割,其格式和具体含义如下:
  用户名:口令:用户标识号:组标识号:注释性描述:主目录:默认shell
  例如:root:x:0:0:root:/root:/bin/bash
    - 用户名:是代表用户账号的字符串
    - 口令:存放着加密后的用户口令
    - 用户标识号:就是用户的UID
    - 组标识号:就是组的GID
    - 注释性描述:字段是对用户的描述信息
    - 主目录:也就是用户登录到系统之后默认所处的目录
    - 默认shell:就是用户登录系统后默认使用的命令解释器
  2. /etc/shadow文件
  用户密码文件,由于/etc/passwd文件是所有用户都可读的,这样就导致了用户的密码容易出现泄露,因此,linux将用户的密码信息从/etc/passwd中分离出来,单独的放到了一个文件中,这个文件就是/etc/shadow,该文件只有root用户拥有读权限,从而保证了用户密码的安全性。
  /etc/shadow文件内容的格式:
  用户名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:保留字段
  例如:root:$1$S4xQtnCs$6KteE0/CWlqWrq5.5i9Rc/:16875:0:99999:7:::
    - 用户名:是代表用户账号的字符串
    - 加密口令:存放的是加密后的用户口令字串,如果此字段是“*”、“!”、“x”等字符,则对应的用户不能登录系统
    - 最后一次修改时间:表示从某个时间起,到用户最近一次修改口令的间隔天数
    - 最小时间间隔:表示两次修改密码之间的最小时间间隔
    - 最大时间间隔:表示两次修改密码之间的最大时间间隔,这个设置能增强管理员管理用户的时效性
    - 警告时间:表示从系统开始警告用户到密码正式失效之间的天数
    - 不活动时间:此字段表示用户口令作废多少天后,系统会禁用此用户,也就是说系统不再让此用户登录,也不会提示用户过期,是完全禁用
    - 失效时间:表示该用户的帐号生存期,超过这个设定时间,帐号失效,用户就无法登录系统了。如果这个字段的值为空,帐号永久可用
    - 保留字段:linux的保留字段,目前为空,以备linux日后发展之用
  3. /etc/group文件
  用户组配置文件,用户组的所有信息都存放在此文件中。
  /etc/group文件内容的格式:
  组名:口令:组标识号:组内用户列表
  例如:bin:x:1:bin,daemon
    - 组名:是用户组的名称,由字母或数字构成
    - 口令:存放的是用户组加密后的口令字串,密码默认设置在/etc/gshadow文件中,而在这里用“x”代替,linux系统下默认的用户组都没有口令,可以通过gpasswd来给用户组添加密码
    - 组标识号:就是组的GID
    - 组内用户列表: 显示属于这个组的所有用户,多个用户之间用逗号分隔
  4. /etc/login.defs文件
  用来定义创建一个用户时的默认设置,比如指定用户的UID和GID的范围,用户的过期时间、是否需要创建用户主目录等等
  5. /etc/default/useradd文件
  通过useradd命令不加任何参数创建一个用户是的默认配置
  6. /etc/skel目录
  新建立的用户在主目录下默认拥有自己指定的配置文件

用户和组管理

添加、修改和删除用户命令useradd/usermod/userdel

  1. useradd
  useradd不加任何参数创建用户时,系统首先读取添加用户配置文件/etc/login.defs和/etc/default/useradd,根据这两个配置文件中定义的规则添加用户,然后会向/etc/passwd和/etc/group文件添加用户和用户组记录,同时/etc/passwd和/etc/group对应的加密文件也会自动生成记录,接着系统会自动在/etc/default/useradd文件设定的目录下建立用户主目录,最后复制/etc/skel目录中的所有文件到新用户的主目录中,这样一个新的用户就建立完成了
    - 使用语法useradd [-option] name
    - 常用参数
      - -u uid:即用户标识号,此标识号必须唯一。
      - -U user-group:创建一个与用户同名的分组,并将此用户加入分组。
      - -g group:指定新建用户登录时所属的默认组,或者叫主组。此群组必须已经存在。
      - -G group:指定新建用户的附加组,此群组必须已经存在。附加组是相对与主组而言的,当一个用户同时是多个组中的成员时,登录时的默认组成为主组,而其它组称为附加组。
      - -c comment:对新建用户的说明信息。
      - -p password:设置登录口令
      - name:指定需要创建的用户名。
  2. usermod
  usermod修改一个用户的属性,usermod命令接的参数和useradd接的参数很多都是类似的。
    - 使用语法usermod [-option] name
    - 常用参数
      - -a -G append group:添加用户所属分组,如果只有-G参数的话,该用户会从原来所属分组删除的。
  3. userdel
  Userdel用来删除一个用户。
    - 使用语法 userdel [-option] name
    - 常用参数
      - -f force:强制删除
      - -r remove:删除用户主目录下的文件以及主目录本身
  4. passwd
  修改用户的认证口令。

添加、切换、删除用户组命令groupadd/newgrp/groupdel

  1. groupadd
  添加一个分组
  2. newgrp
  切换用户组,需要先用gpasswd为group添加密码。
  3. groupdel
  删除一个用户组,若用户组下存在用户,需要先删除用户才能删除该组

文件与目录的权限

查看文件与目录的权限ls -al

  例如:

[root@localhost c]#ls -al
total 20
drwxr-xr-x.  2 root root 4096 Mar 30 09:45 .
drwxr-xr-x. 14 root root 4096 Apr  6 02:29 ..
-rwxr-xr-x.  1 root root 6504 Mar 30 08:51 a.out
-rw-r--r--.  1 root root  177 Mar 30 08:51 helloworld.c  

  - 上面字段解释(图来自《鸟哥的linux私房菜》)
    

  - 权限字段解释
  

修改权限

  1. 改变所属群组, chgrp;分组必须存在。
  chgrp [-option] group filename/dirname,
  2. 改变档案拥有者, chown;用户必须存在。
  chown [-option] owner filename/dirname
  3. 改变权限属性, chmod;
    - chmod [-option] xyz filename/dirname

chmod u
g
o
a
+(加入)
-(除去)
=(设定)
r
w
x
档案或目录

目录权限属性

  1. r (read contents in directory): 表示具有读取目录结构列表的权限,所以当您具有读取 (r) 一个目录的权限时, 您就可以利用 ls 这个指令将该目录的内容列表显示出来!
  2. w (modify contents of directory): 他表示您将具有改动该目录结构列表的权限,也就是底下这些权限:
    - 建立新的档案与目录;
    - 删除已经存在的档案与目录(不论该档案是属于谁的!)
    - 将已存在的档案或目录进行更名;
    - 搬移该目录内的档案、目录位置。
  3. x (access directory): 是否能将工作目录改为该目录。

参考资料

  《鸟哥的linux私房菜》