目录
引言:Linux提供了严格的权限管理机制,主要从用户身份,文件权限两方面对资源访问进行限制。本篇内容将分别介绍用户和组账号的管理,文件的归属管理以及权限管理。
1、管理用户账号和组账号
用户账号和组账号概述
Linux基于用户身份对资源访问进行控制
用户账号
超级用户:root管理员,权限最高,ID为0
普通用户: 可以登录系统 ,UID在1-999(保留),创建账号从1000开始,
程序用户:伪用户,不能登录操作系统,只能正常运行服务,比如ftp和apache
组账号
基本组 (私有组)
附加组 (公有组,一个用户同时包含在其他组中,则这些组称为该用户的附加组)
UID和GID
UID :用户标识号
GID :组标识号
2、用户账号文件
保存用户名称、宿主目录、登录shell等基本信息
文件位置:/etc/passwd
每一行对应一个用户的账号记录
例:
用户账户文件/etc/shadow
文件位置:/etc/passwd
每一行对应一个用户的密码记录
例:
3、chage命令
用来修改账号和密码的有效期限,针对目前系统已经存在的用户
chage [选项] 用户名
-m :密码可更改的最小天数,为零时 代表任何时候都可以更改密码
-M:密码保持有效的最大天数。chage -M 60 root
-W :用户密码到期前,提高收到警告信息的天数
-E:账号到期的日期,过了这天,此账号将不可用
-d: 上一次更改的日期
-I(大写i):停滞时期,如果一个密码已过期这些天,那么此账号将不可用
-l:例出当前的设置,由非特权用户来确定他们的密码或账号何时过期
例:
chage -E 2022-03-28 test #其中,test为用户,用户将在2022年3月28日失效(不可登录)
chage -d 2022-04-28 test #设置test用户最后一次修改密码的日期为2019年4月28日
chage -d 0 test #则代表改test用户需立即修改密码
date -d “+45 day” -u #如果不知道时间可以用date查看
date -s #修改系统时间
4、添加用户账户 -------useradd
useradd [选项] ....用户名
常用选项
-u:指定用户的UID 号,要求该UID号码未被其他用户使用
-d: 指定用户的宿主目录位置(当与-M 一起使用时,不生效)
-e: 指定用户的账号失效时间,可使用 1970-01-01 的日期格式
-g:指定用户的基本组名 (或使用GID号)
-G:指定用户的附加组名(或使用GID号)
-M:不建立宿主目录,即使/etc/login.defs 系统配置中已设定要建立宿主目录
-s:指定用户的登录shell /sbin/nologin 不能登录 /bin/bash 能登录
例:创建用户 liyong,并设置密码
5、设置、更改用户口令--------passwd
passwd [选项] ....用户名
常用选项
-d :指定清除用户账号密码
-S:查看用户状态是否被锁定
-l : 锁定用户账户
-u: 解锁用户
例:
6、修改用户账号的属性---------usermod
usermod [选项] .....用户名
常用选项
-l:更改用户账号的登录名称
-L:锁定用户账户
-U:解锁用户账户
以下选项与useradd命令中含义相同
-u:修改用户的UID号
-d:修改用户的宿主目录位置
-e:修改用户的账户失效时间,可使用1970-01-01 的日期格式
-g:修改用户的基本组名(或使用GID号)
-G:修改用户的附加组名(或使用GID号)
-s:指定用户的登录shell /sbin/nologin 不能登录 /bin/bash 能登录
7、删除用户账号-------userdel
userdel [-r] 用户名
添加-r 选项时,表示连用户的宿主目录一并删除
如果:我们不带参数删除用户,在创建此用户时会报错 例:不加-r的话此时只是删除了这个用户,如果想完全删除还需要找到2个文件将其删除才可以。
8、用户账号的初始配置文件
文件来源
新创建用户账号时,从/etc/skel 目录中复制而来
主要的用户初始配置文件
~/.bash_profile
- ~/.bashrc
- ~/.bash_logout
~/.bash_profile:
示例代码中为用户添加了2个环境变量(JAVAHOME和CLASSPATH),并修改了已有环境变量PATH的值.(PATH的查找是从前开始查找,找到就返回)
CLASSPATH环境变量的值是在JAVA运行时查找加载类的默认classpath.
- ~/.bashrc
例子中定义了路径,语言,命令别名(使用rm删除命令时总是加上-i参数需要用户确认,使用ls命令列出文件列表时加上颜色显示)。每次修改.bashrc后,使用source /.bashrc(或者 . / .bashrc)就可以立刻加载修改后的设置,使之生效。一般会在.bash_profile文件中显示调用.bahsrc。登录linux启动bash时首先会先去读取
关于环境变量的读取顺序:
用户登录->>加载~/bash profile --> bash profile中配置了首先是使~/.bashrc生效
- ~/.bash_logout
用途:用户登出时执行的命令
#~ /.bash_logout
#在当前用户登出时,打印出Logout 和当前时间
echo “Logout, ‘date’”
9、history命令
参数:
n :数字,要列出最近的 n 条命令列表
-c :将目前的shell中的所有 history 内容全部消除
-a :将目前新增的history 指令新增入 histfiles 中,若没有加 histfiles ,则预设写入 ~/.bash_history
-r :将 histfiles 的内容读到目前这个 shell 的 history 记忆中
-w :将目前的 history 记忆内容写入 histfiles
history -r /root/history.txt,把命令读进来作为当前bash的历史记录
history -w /root/history.txt,把当前bash的历史记录写入history.txt
echo “history -c” >> ~/.bash_logout
echo “history -c” >> ~/.bash_profile
10、组账号文件
与用户账号文件相类似
/etc/group : 保存组账号基本信息
/etc/gshadow :保存组账号的密码信息
添加组账号---------groupadd
groupadd [-g GID] 组账号名
例:
添加删除组成员------gpasswd
设置组账号密码(极少用)、添加\删除组成员
gpasswd [选项] ...组账号名
常用选项
-a:添加用户到组
-d:从组删除用户
-A:指定管理员
-M:指定组成员和-A的用途差不多
-r:删除密码
-R:限制用户登入组,只有组中的成员才可以用newgrp加入组
例:
删除组账号--------groupdel
groupdel 组账号名
例:创建一个组,在用groupdel删除
查询账号信息 ------groups
查询用户所属的组
groups [用户名]
id命令
查询用户身份标识
id [用户名]
例:查询hx用户和gx用户所属的组 ,,查询hx身份标识
查询账号信息------finger
查询用户账号的详细信息
finger [用户名]
需要先用yum安装程序
w、who、users 命令
查询已登录到主机的用户信息
例:
User:登录用户名
TTY:登录后系统分配的终端号
From:远程主机名,即从哪登录的login@:何时登录
IDLE:用户空闲时间。这是个计时器,一旦用户执行任何操作,改计时器就会被重置。
JCPU:和终端连接的所有进程占用时间。包括当前正在运行的后台作业占用时间
PCPU:当前进程所占用时间
WHAT:当前正在运行进程的命令行
pts说明是用远程工具连接的,比如1xshell,后面的数字代表登录的时间顺序,越小证明登录的越早。
11、文件/目录的权限和归属
访问权限
读取 r :允许查看文件内容、显示目录列表
写入w:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录
可执行x: 允许允许程序、切换目录
归属(所有权)
属主:拥有该文件或目录的用户账号
属组:拥有该文件或目录的组账号
root用户、 root组 如"drwxr-xr-x”和"-rw-r--r--"。权限字段由四部分组成,各自的含义如下所述。
第1个字符:表示该文件的类型,可以是 d(目录)、b(块设备文件)、c(字符设备文件)、"-”(普通文件)、字母"l”(链接文件)等。
第24个字符:表示该文件的属主用户(User)对该文件的访问权限。
第5
7个字符:表示该文件的属组内各成员用户(Group)对该文件的访问权限。
第8~10 个字符:表示其他任何用户 (other)对该文件的访问权限。
权限项 | 读 | 写 | 执行 | 读 | 写 | 执行 | 读 | 写 | 执行 |
字符表示 | r | w | x | r | w | x | r | w | x |
数字表示 | 4 | 2 | 1 | 4 | 2 | 1 | 4 | 2 | 1 |
权限分配 | 文件所有者 | 文件所属组 | 其他用户 |
设置文件和目录的权限------chmod
chmod命令
chmod [ugoa] [+-=] [rwx] 文件或目录
chmod nnn(3为八进制数) 文件或目录....
常用选项 -R:递归修改指定目录下所有子项的权限
u :属主 g :属组 o: 其他用户 a :所有用户
+:增加 - :去除 =:设置权限
r :读 w: 写 x:运行权限
例:
设置文件和目录的归属---------chown
chown命令
chown 属主 文件或目录
chown :属组 文件或目录
chown 属主:属组 文件或目录
常用选项
-R :递归修改指定目录下所有文件、子目录的归属
权限掩码-------umask
umaks 作用
控制新键的文件或者目录的权限
默认权限去除umask的权限为新建的文件目录的权限
umask 设置:umask 022
umask 查看:umask
总结
上述我们可以了解对账号的使用,创建删除和添加,对账号控制权限的操作,
用户账号管理(useradd、passwd、usermod、userdel)
组账号管理 (groupadd、gpasswd、groupdel)
用户账号文件与组账号文件
查询账户相关信息的命令(groups 、id、finger、w)
设置目录与文件权限(chmod)
设置目录与文件归属(chown)