linunx如何管理【账号和权限】
一. 管理用户和组账号
1)用户账号和组账号概述
Linux基于用户身份对资源访问进行控制
A. 用户账号
a) 超级用户、普通用户、程序用户
- 超级用户
Root用户是Linux操作系统中默认的超级用户账号,对本机拥有最高的权限
系统中的超级用户是唯一的
- 普通用户
由root用户或其他管理员创建,拥有一定的权限,一般只在用户自己的家目 录中拥有完整权限
- 程序用户
在安装Linux系统部分应用程序时,会添加一些特定的低权限用户账号,这些用户账号一般不允许登录系统,仅用于维持系统或某个程序的正常运行,如bin、daemon、ftp、mail等
B. 组账号
a) 基本组(私有组)
- 基本组账号只有一个,一般为创建用户时指定的组
在/etc/passwd文件中第4字段记录的即为用户基本组的UID号
b) 附加组(公共组)
- 用户除了基本组之外,额外添加指定的组
C. UID和GID
a) UID(User IDentity,用户标识号)
b) GID(Group IDentify,组标识号)
- root账户的UID和GID号为固定值0
- 程序用户的UID和GID号默认为CentOS 5,6:1~499, CentOS 7,1~999
- 普通用户的UID和GID号默认为CentOS 5,6:500~60000, CentOS 7,1000~60000
2)用户账号文件/etc/passwd
保存用户名称、宿主目录、登录shell信息
A. 文件位置;/etc/passwd
a) 基于系统运行和管理的需要,所有用户都可以访问passwd文件中的内容,但是只有root用户可以进行更改
b) 在早期的UNIX操作系统中,用户帐号的密码信息是保存在passwd文件中的,不法用户可以很容易的获取密码字串并进行暴力破解,因此存在一定的安全隐患。后来经改进后,将密码转存入专门的shadow文件中,而passwd文件中仅保留密码占位符""x"。
B. 每一行对应一个用户的账号记录
root:x:0:0 : root :/root : /bin/bash
字段1:用户帐号的名称
字段2:用户密码占位符"x"
字段3:用户帐号的UID号
字段4:所属基本组帐号的GID号
字段5:用户全名
字段6:宿主目录
字段7:登录shell信息(/bin/bash为可登陆系统,/sbin/nologin和/bin/false为禁止 用户登陆系统)
C. 示例
3)用户账号文件/etc/shadow
保存用户的密码、账号等有效期信息
A. 文件位置;/etc/shadow
a) 默认只有 root用户能够读取shadow 文件中的内容,且不允许直接编辑该文件中的内容.
B. 每一行对应一个用户的密码记录
root:$6$VyoUGqoC$v5HlLM1wagZC/FwGfnrtJFnlT:18445:0:99999:7: : :
字段1:用户帐号的名称
字段2:使用M:p5加密的密码字串信息,当为"*"或"!!"时表示此用户不能登录到系统。若该字段内容为空,则该用户无须密码即可登录系统
字段3:上次修改密码的时间,表示从1970年01月01日算起到最近一次修改密码时间隔的天数
字段4:密码的最短有效天数,自本次修改密码后,必须至少经过该天数才能再次修改密码。默认值为0,表示不进行限制
字段5:密码的最长有效天数,自本次修改密码后,经过该天数以后必须再次修改密码。默认值为9999,表示不进行限制
字段6:提前多少天警告用户密码将过期,默认值为7
字段7:在密码过期之后多少天禁用此用户
字段8:帐号失效时间,此字段指定了用户作废的天数(从1970年01月01日起计算),默认值为空,表示账号永久可用。
字段9:保留字段(未使用)
C. 示例
4)用户账号管理
A. 添加用户账号useradd命令
在/etc/passwd文件和/etc/shadow文件的末尾增加该用户账号的记录。
若未明确指定用户的宿主目录,则在/home目录下自动创建与该用户账号同名的宿 主目录,并在该目录中建立用户的各种初始配置文件若没有明确指定用户所属的组, 则自动创建与该用户账号同名的基本组账号,组账号的记录信息将保存到/etc/group和/etc/gshadow文件中。
a) 格式
Useradd [选项]... 用户名
b) 常用操作
常用选项 |
作用 |
useradd -u 用户名 |
指定用户的UID号,要求该UID号码未被其他用户使用。 |
useradd -d 用户名 |
指定用户的宿主目录位置(当与-M一起使用时,不生效)。只能用绝对路径指定目录,且不需要事先创建目录 |
useradd -e 用户名 |
指定用户的账户失效时间,可使用YYYY-MM-DD的日期格式。 |
useradd -g 用户名 |
-g:指定用户的基本组名(或使用GID号),对应的组名必须已存在。 |
useradd -G 用户名 |
-G:指定用户的附加组名(或使用GID号),对应的组名必须已存在。 |
useradd -M 用户名 |
-M:不建立宿主目录。 |
useradd -s 用户名 |
-s:指定用户的登录Shell,(比如/bin/bash为可登陆系统,/sbin/nologin和/bin/false为禁止用户登陆系统)。 |
C) 示例:
创建一个UID号为1999,且GID号与周xiangtong
创建一个不建立宿主目录且用户登录shell为/sbin/nologin
可以看到家目录中无zhaoliu用户
创建一个2021.12.21失效的账户
B. 设置/更改用户口令passwd命令
root用户可以指定用户名作为参数,对指定账号的密码进行管理;不指定用户名时, 修改当前账号的密码。普通用户却只能执行单独的"passwd"命令修改自己的密码。
a) 格式
Passwd [选项]... 用户名
b) 常用操作
常用选项 |
作用 |
passwd -d用户名 |
清空指定用户的密码,仅使用用户名即可登录系统。 |
passwd -l用户名 |
锁定用户账户,锁定的用户账号将无法再登录系统。 |
passwd -S用户名 |
查看用户账户的状态(是否被锁定)。 |
passwd -u用户名 |
解锁用户账户。 |
c) 示例:
更改当前用户的密码
只是在root用户下,普通用户能指定自己的
指定用户修改密码
清除指定用户的密码
锁定指定用户
查看指定用户的账户状态(是否被锁定)
解锁指定用户
C. 修改用户账号的属性你usermod命令
修改账号已经存在的用户属性
a) 格式
usermod [选项]... 用户名
b) 常用操作
常用选项 |
作用 |
usermod -u用户名 |
:修改用户的UID号。 |
usermod -d用户名 |
修改用户的宿主目录位置。 |
usermod -e用户名 |
修改用户的账户失效时间,可使用YYYY-MM-DD的日期格式 |
usermod -g用户名 |
修改用户的基本组名(或使用GID号)。 |
usermod -G用户名 |
修改用户的附加组名(或使用GID号) |
usermod -s用户名 |
指定用户的登录Shell。 |
usermod -l用户名 |
更改用户账号的登录名称。 |
usermod -L用户名 |
锁定用户账户。 |
usermod -U用户名 |
解锁用户账户。 |
c) 示例:
修改用户名caijijie为caijiajie
修改用户的UID号
锁定指定账户
D.删除用户账号 userdel
a) 格式
Userdel [-r] 用户名
添加“一r”选项时可以将该用户的宿主目录一并删除
c) 示例
删除指定用户
5)用户配置文件
A. 文件来源
l useradd命令添加一个新的用户账号后会在该用户的宿主目录中建立一些初始配置文件。
l 这些文件来自于账号模板目录/etc/skell,基本上都是隐藏文件。
B. 主要的用户初始配置文件
用户宿主目录下的初始配置文件只对当前用户有效
~ / .bash_profile
#此文件中的命令将在该用户每次登录时被执行,它会设置一些环境变量,并且会 调用该用户的~/.bashrc文件
~ / .bashrc
#此文件中的命令会在每次打开新的bash shell时(也包括登录系统)被执行,并且 会调用/etc/bashrc文件
~ / .bash_logout
#此文件中的命令将在用户每次退出登录或退出bash shell时执行
全局配置文件对所有用户有效
/ etc/profile
#这个文件是为系统全局变量配置文件,可通过重启系统或者执行source /etc/profile 命令使profile文件被读取
/etc/profile.d/
#这个文件实际上是/etc/profile的子目录,存放的是一些应用程序所需的启动脚本
/etc/bashrc
#每一个运行bash shell的用户都会执行此文件,可通过执行bash 命令打开一个新 的bash shell时,使 bashrc文件被读取
6)组账号管理
A. 与用户账号文件类似
a) /etc/group : 保存组账号基本信息
b) /etc/gshadow : 保存组账号的文件信息
grep "postfix"/etc/ group
mail:x:12:postfix
postfix:x:89:
字段1:组帐号的名称
字段2:占位符"x”
字段3:组账号的GID号
字段4:组账号包含的用户成员(一般不包括基本组对应的用户帐号),多个成员之间以逗号" ,"分隔
B. 添加组账号groupadd命令
a) 格式
group [-g GID] 组账号名
b) 示例
创建一个GID为1234的组
C. 组账号groupadel命令
a) 格式
groupdel 组账号名
b) 示例
D. 添加删除组员gpasswd
a) 格式
Gpasswd [选项]... 组账号名
b) 常用操作
常用选项 |
作用 |
group -a 组账号名 |
向组内添加一个用户 |
group -d 组账号名 |
从组内删除一个用户成员 |
group -M 组账号名 |
定义组成员列表,以逗号分隔 |
c)示例
将李四添加到张三组中
将李四从张三组中删除
将李四和张三组中添加到zhou组中
7)查询账号信息
A. groups命令
a)查询用户所属组
b) 格式:groups [用户名]
c)示例
查询root用户所属组
B. id命令
a)查询用户身份标识
b)格式:id [用户名]
c)示例
查询zhou用户身份标识
C. finger命令
a)查询用户账号的登录属性
注:需要先进行安装finger命令包
b) 格式:finger [用户名]
c)示例
D. w、who、users命令
a)查询已登录到主机的用户信息
w
who
users
二. 管理目录和文件属性
A. 文件/目录的权限归属
a) 访问权限
l 读取r:允许查看文件内容、显示目录列表号
l 写入w:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录
l 可执行x:允许运行程序、切换目录
b) 归属(所有权)
l 属主:拥有该文件或目录的用户帐号
l 属组:拥有该文件或目录的组帐号
B. 查看文件/目录的权限和归属
权限项 |
读 |
写 |
执行 |
读 |
写 |
执行 |
读 |
写 |
执行 |
字符表示 |
r |
w |
x |
r |
w |
x |
r |
w |
x |
数字表示 |
4 |
2 |
1 |
4 |
2 |
1 |
4 |
2 |
1 |
权限分配 |
文件所有者 |
文件所属组 |
其他用户 |
a) 设置文件和目录权限chmod
- 格式 chmod命令
Chmod [ugoa] [+-=] [rwx] 文件或目录
或
Chmod nnn 文件或目录
u、g、o、a分别表示
属组、属组、其他用户、所有用户
rwx分别表示
读、写、运行权限
+、-、=分别表示
增加、去除、设置权限
- -R:递归修改指定目录下所有子项的权限
b) 设置文件和目录归属chown
- 格式 chown命令
Chown 属主 文件或目录
Chown :属组 文件或目录
Chown 属主::属组 文件或目录
- 常用操作
-R:递归修改指定目录下所有文件、子目录的归属