Linux账号和权限管理
用户账号分类
- 超级用户:Linux操作系统中默认的超级用户账号是root用户,对本主机拥有最高的权限,系统中只有一个超级用户
- 普通用户:由超级用户或是其他管理员用户创建的普通账号,拥有的权限会受到限制,一般只有在普通用户的家目录中才拥有完整的权限
- 程序用户:在安装Linux操作系统及部分应用程序时,会添加一些特定的低权限用户账号,这些用户一般不允许登录到系统,仅用于维持系统或某个程序的正常运行,如bin、ftp 等(程序用户也是普通用户的一种)
组账号分类
- 基本组(私有组):一个用户只有一个基本组账户,一般为创建用户时指定的组,账户诞生之时就会创建一个和自己同名的组账号。
- 附加组(公共组):用户除了基本组以外,额外添加指定的组,附加组可以有很多个。
UID和GID
- UID :(User IDentity,用户标识号)
- GID :(Group IDentify,组标识号)
- 超级用户(默认为root 用户)的 UID 和 GID 号为固定值 0
- 程序用户账号的 UID 和 GID 号默认为 CentOS5、6:1-499,CentOS7:1-999。
- 普通用户的 UID 和 GID 号默认为CentOS5、6:500-60000,CentOS7:1000-60000。
存放用户账户信息的文件:/etc/passwd
用户帐号信息在/etc目录下的passwd文件中存放。主要是用来保存用户名称、UID、GID、宿主目录、登录 shell 等基本信息的文件。每创建了一个新的用户,都会在此文件中自动生成一组记录,用来描述新创建用户的信息。
基于系统运行和管理需要,所有用户都可以访问passwd文件中的内容,但是只有root用户才能进行更改。
vim /etc/passwd 可以查看系统存储账户信息的文件
第一位:root: 用户名
第二位:x :密码占位符无实际意义
第三位:0:用户的 UID 号
第四位:0:用户的 GID 号(基本组的GID号)
第五位:root:用户全名的描述
第六位:/root:用户的宿主目录的位置
第七位:/bin/bash:登录shell信息,/bin/bash 表示可以登录系统,如果是 /sbin/nologin 则表示不允许登录系统
man 5 passwd 可以获得有关passwd的帮助
存放用户密码的文件:/etc/shadow
用户的密码信息在/etc目录下的shadow文件中存放,主要用来保存用户密码,账号有效期等信息。只有 root 用户有读权限,其它用户没有任何权限,这样就保证了用户密码的安全性。
文件内个字段的含义
- 第一字段:root:用户名称
- 第二字段:一串字符:代表使用MD5加密的密码字串信息,此字段为“ * ” 或 “ !! ”时表示此用户不能登录到系统,若该字段内容为空,则该用户无须密码即可登录系统
- 第三字段: :这是上次修改密码的时间,表示从1970年01月01日算起到最近一次修改密码时间隔的天数
- 第四字段:0 :密码的最短有效天数,自本次修改密码后,至少经过该天数才可以再次修改密码,默认值为0,表示不进行限制
- 第五字段:99999 :这是密码的最长有效天数,自本次修改密码后,经过该天数以后必须再次修改密码,默认值为99999,表示不进行限制
- 第六字段:7 :这是提前多少天警告用户密码将要过期,默认值为7
- 第七字段: :在密码过期之后多少天禁用此用户
- 第八字段: :账号失效时间此字段指定了用户作废的天数(从1970年01月01日起计算),默认值为空,表示账号永远可用
- 第九字段: :保留字段(未使用)
添加用户命令:useradd 或 adduser
-u 创建用户时设置uid
-g 创建用户时设置基本组
-G 创建用户时设置附加组
-d 创建用户时设置指定家目录
-e 创建用户时设置账户失效时间
-s 创建用户时设置shell登录环境
-M 创建用户时不创建用户的宿主目录
-M和-d无法一起使用
修改用户权限:usermod
-u 修改账户UID
-g 修改用户基本组
-G 添加用户附加组
-d 修改用户家目录
-e 修改用户失效时间
-s 修改用户shell环境
-M 不设置宿主目录
-l 修改用户名称
-L 锁定用户密码使其无法登陆
-U 解锁用户密码锁定状态
-d与-M无法一起使用
删除用户:userdel
userdel -r 删除用户的同时删除用户的宿主目录
给用户账号设置密码的命令:passwd
passwd [用户] 可以修改指定用户的密码
-l 锁定用户密码使其无法登陆
-u 解除用户密码的锁定状态
-s 可以查看当前密码的状态是否被锁定
-d 可以清除密码使用户登录不需要输入密码
-S 查看密码状态,这里显示已经被锁定就不能登录了
添加组的命令:groupadd
groupadd -g 可以在创建组的时候设置组ID
格式如下
添加组成员的命令:gpasswd [选项] [用户] [组]
-a 添加组成员
-q 删除组成员
-M 定义组成员
查询用户/组信息
groups [组]
id [用户]
更改文件或目录权限和所属的命令
chown 和 chmod
chmod nnn 目录或文件 :修改目录或文件的权限
chmod [-R] nnn 目录: -R 递归修改所有子目录的权限
-u:属主权限
-g:属组权限
-o:其它用户权限
-a:全部(属主,属组,其它用户)权限
+:添加权限
-:删除权限
=:设置(定义)权限
r:可读
w:可写
x:可执行
chown 属主 :属组 ##一起修改属主和属组
chown [-R] 属主 :属组 ##可以递归修改所有子目录的所属
chown 属主 ##修改属主
chown :属组 ##修改属组
chgrp 属组 ##另一种修改属组的方法
== 系统/用户初始配置文件==
/etc/profile /etc/bashrc /etc/profile.d/
~/.bash_profile ~/.bashrc ~/.bash_logout