文章目录
第二章:用户与用户组
用户管理
命令的选项可以在Linux命令大全查找
1、创建用户 useradd [选项] 用户名
选项:
-d 指定用户登录时的目录
-e 指定用户的有效期限
-f 缓冲天数,密码过期时在指定天数后关闭该账号
-g 指定用户所属组
-G 指定用户的附加组
-m 自动创建用户的登录目录
-r 创建系统账号
-s 指定用户的登录shell
-u 指定用户的用户ID
2、查看用户的属性信息cat /etc/passwd
3、设置用户密码 passwd [选项] 用户名
修改密码也使用同样的语法格式
选项:
-l 锁定密码,锁定后密码失效,无法登录
-d 删除密码,仅系统管理员可用
-S 列出密码的相关信息,仅管理员可使用
-f 强制执行
查看用户的密码信息(已加密)cat /etc/shadow
4、删除用户 userdel [选项] 用户名
-f 强制删除,即使是当前用户
-r 删除用户的同时,删除与用户相关的所有文件
5、修改用户信息 usermod [选项] 参数
usermod命令用与修改用户属性信息,包括用户ID、主目录、用户组、账号有效信息
使用usermod命令时,必须先明确该用户没有在电脑上执行任何程序
-d 修改用户的的登录目录
-e 修改账号的有效期限
-f 修改缓冲天数
-g 修改指定用户所属组
-G 修改指定用户的附加组
-l 修改用户账号名称
-L 锁定密码,锁定后密码失效,无法登录
-U 解除密码锁定
-s 修改指定用户的登录shell
-u 修改指定用户的用户ID
用法:
# usermod -u 678 user1
用户组管理
1、新增用户 groupadd [选项] 参数
-g 指定新建用户组的组ID
-r 创建系统用户组,组ID的取值范围为1~499
-o 允许创建组ID已存在的用户
用法:
# groupadd -g 550 group1
Linux系统将用户组信息储存在/etc/group
文件中,新用户组创建成功后,该文件将多一条与该用户组相关的记录。
2、删除用户组 groupdel 组名
3、修改用户组属性 groupmod [选项] 参数
选项:
-g 为用户组指定新的组ID
-n 修改用户组的组名
-o 允许用户创建组ID已存在的用户组
用法:
# groupmod -n <旧组名> <新组名>
# groupmod -o <组名> -g <已经存在的组ID>
4、用户组切换 newgrp 用户组
用户组分为基本组和附加组,将用户添加附加组后,用户可拥有对应组的权限。用户的基本组唯一,但附加组可以不唯一。用户可从附加组中移除,但不能从基本组中移除。
5、用户组管理
gpasswd命令用于管理用户组 gpasswd [选项] 参数
-a 添加用户到用户组
-d 从用户组中删除用户
-r 删除密码
-R 限制用户登入组,只有组中的成员才可以用newgrp加入用户组
用法:
# gpasswd -a user1 group1 将用户user1添加到group1
用户切换
1、使用su命令切换用户,可以任意用户切换 su [选项] 用户名
若选项和用户名缺省(默认),则表示切换到root用户,但此时保留原来用户的工作环境,若使用“su -”,则表示从当前用户切换到root用户,并切换到root用户的工作目录。
选项:
-c 执行完指定的指令后,切换到原来的用户
-l 切换用户的同时,切换到对应用户的工作目录,环境变量也会随之改变。
-m,-p 切换用户,不改变环境目录
-s 指定要执行的shell
2、sudo命令的格式sudo [选项] [参数]
sudo可使当前用户以其他身份来执行命令,若不指定用户名,则默认以root身份执行。在使用sudo命令时,用户需要输入自己的密码,密码验证在之后的5分钟内有效,若超过则需要重新验证。
使用sudo命令之前,需要先在etc目录下的sudoers文件中对可执行sudo指令的用户进行设置。sudoers文件内容须遵循语法规范,visudo命令可防止其他用户同时修改sudoers文件。
# visudo
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
# 第二条语句是对root用户权限设置,作用:使root用户能够在任何情景下执行任何命令,
格式:
账户名 主机名称=(可切换的身份) 可用的命令
说明:
账户名:只有账户名被写入sudoers文件时,该用户才能使用sudo命令
主机名称:该参数决定此条语句中账户名对应的用户可以从哪些网络主机连接当前Linux主机,root用户默认可以 来自任何一台网络主机。
可用的命令:该参数指数此条语句中的用户可以执行哪些命令。注意,命令的路径为绝对路径。
以上的语句ALL分别代表任何主机,任何身份和任何命令。以用户user1为例,若要使用户user1能以root用户执行/bin/more命令,则应在sudoers文件中添加如下内容。
user1 ALL=(root) /bin/more
保存退出后,切换到用户user1,使用命令`sudo -l`可查看该用户可以使用的命令。
当需要操作的用户较多时,如此操作显然相对麻烦,Linux系统支持为用户组内的整组用户统一设置权限。
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
"%"声明之后的字符串是一个用户组,该语句表示任何加入用户组wheel的用户,都能通过任意主机连接、任何身份执行全部命令。若想提升某些用户的权限为ALL,将它们添加到用户组wheel即可。
例子
%group1 ALL=(root) /bin/more
禁用
%group1 ALL=(root) !/bin/more
第三章:用户的权限
基本权限UGO
权限 | 对应字符 | 文件 | 目录 |
---|---|---|---|
读 | r | 可查看文件内容 | 可以列出目录中的内容 |
写 | w | 可修改文件内容 | 可以在目录中创建、删除文件 |
执行 | x | 可执行该文件 | 可以进入目录 |
常用的权限管理命令有chmod、chown、chgrp等,默认情况下,普通用户不能使用权限。
设置权限:
1、chmod更改权限,其功能为变更文件或目录权限(使用字符,使用数字)
语法:
chmod 对象(u/g/o)赋值符(+/-/=)权限类型(rwx) 文件/目录
选项:
-f 不显示错误信息
-v 显示指令执行过程
-R 递归处理,处理指定目录及其中所有的文件与子目录
# ll file1
-rw-r--r-- 1 root root 0 10月 17 17:31 file1
# chmod u+x,g+x file1 或 # chmod 754 file1
# ll file1
-rwxr-xr-- 1 root root 0 10月 17 17:31 file1
-rw-r--r-- . 1 root root 0 6月 23 14:11 fil
链接 属主 属组 大小
2、chown其功能为更改文件或目录的所有者。默认情况下文件的所有者为创建该文件的用户,或在文件被创建时通过命令指定用户,需要时可使用chown对文件的所有者进行修改。
命令格式 chown [选项] [用户] [文件或目录]
选项:
-f 不显示错误信息
-v 显示指令执行过程
-R 递归处理,处理指定目录及其中所有的文件与子目录
chown:设置文件属于谁,属组
语法: chown 用户名.组名 文件
chown user01.hr /tmp/file1
3、chgrp用于更改文件或目录的所属组,一般情况下,文件或目录与创建该文件的用户属于同一组,或在被创建时通过选项指定所属组,但在需要时,可通过chgrp命令更改文件的所属组。
# chgrp 组名 文件或目录
小结:chmod、chown、chgrp都可以对目录进行改权、改主、改组,但底下文件权限不会变,若要改变,使用-R递归操作
基本权限ACL
access contral list 限制用户对文件的访问
ACL是UGO的补充,或者说是加强版
命令:setfacl -m g:hr:rwx /home/file1
设置文件 -设置 对象:对象名:权限
[root@localhost tmp]# useradd alice
[root@localhost tmp]# useradd jack
[root@localhost tmp]# setfacl -m u:alice:rw /home/test.txt
[root@localhost tmp]# setfacl -m u:jack:- /home/test.txt
[root@localhost tmp]# getfacl /home/test.txt
getfacl: Removing leading '/' from absolute path names
# file: home/test.txt
# owner: root
# group: root
user::rw-
user:alice:rw-
user:jack:---
group::r--
mask::rw-
other::r--
#删除alice对test.txt文件的权限
[root@localhost tmp]# setfacl -x u:alice /home/test.txt
[root@localhost tmp]# getfacl /home/test.txt
getfacl: Removing leading '/' from absolute path names
# file: home/test.txt
# owner: root
# group: root
user::rw-
user:jack:---
group::r--
mask::r--
other::r--
特殊权限(了解)
1、特殊位suid:高级权限类型(suid,(sgid)针对文件/程序时,具备临时获得属主权限)
suid是针对文件所设置的一个特别的权限。
功能:使调用文件的用户临时具备属主的能力
普通用户不能查看root目录下的文件,但赋予/usr/bin/cat一个s权限后,普通用户可以cat,root文件
[alice@localhost ~]$ cat /root/file1.txt
cat: /root/file1.txt: 权限不够
[root@localhost ~]# chmod u+s /usr/bin/cat
[root@localhost ~]# ll /usr/bin/cat
-rwsr-xr-x. 1 root root 54080 8月 20 2019 /usr/bin/cat
[alice@localhost ~]$ cat /root/file1.txt
123
2、文件属性chattr
i:在文件上启用这个属性时,我们不能更改、重命名或者删除这文件
a:允许在文件中追加操作
#chattr改变文件属性
[root@localhost ~]# chattr +i ./file1.txt
#lsattr列出文件属性
[root@localhost ~]# lsattr ./file1.txt
----i----------- ./file1.txt
#不允许修改、删除文件
[root@localhost ~]# rm -rf file1.txt
rm: 无法删除"file1.txt": 不允许的操作
#去除i属性
[root@localhost ~]# chattr -i ./file1.txt
3、进程掩码umask
第四章:进程管理
进程存在于计算机内存中,计算机内存中可同时存在多个进程,每个CPU上同时只会执行一个进程,但计算机上似乎能够同时运行多个进程。实际上这是计算机采用了“多道程序设计”技术,即计算机允许多个相互独立的程序同时进入内存,在内核的管理控制下,相互之间穿插运行。
进程状态
初始态、就绪态、运行态、睡眠态和终止态。
进程管理命令
1、ps 在命令行输入ps后按回车键就能查看当前系统中正在运行的进程。
选项:
a 显示当前终端机下的所有进程,包括其他用户启动的进程
u 以用户的形式,显示系统中的进程
x 忽略终端机,显示所有进程
e 显示每个进程使用的环境变量
r 只列出当前终端机中正在执行的进程
-a 显示所有终端机中除阶段作业领导进程(拥有子进程的进程)之外的进程
-e 显示所有进程
-f 除默认项外,显示UUID、PPID、C、STIME项
-o 指定显示哪些字段,字段名可以使用长格式,也可以使用“%字符”的短格式指定,多个字段名使用逗号分割
-l 使用详细的格式显示进程信息
进程是已启动的可执行程序的运行实例,进程有一下组成部分:
1、一个文件:
2、被分配内存空间:
3、有权限控制;
4、程序代码的一个或多个副本(也叫执行线程);
5、拥有状态
ps -ef 显示含义(查看进程的父子关系)
列的含义
字段名 | 说明 |
---|---|
UID | 该进程执行的用户id |
PID | 进程id |
PPID | 该进程的父进程id,如果一个程序的父级进程找不到,该程序的进程被称之为僵尸进程 |
C | cpu的占用率,其形式是百分数 |
STIME | 进行的启动时间 |
TTY | 终端设备,发起该进程的设备识别符号,如果显示“?”则表示该进程不是由终端设备发起的 |
TIME | 进程的执行时间 |
CMD | 该进程的名称或者对应的路径 |
案例(100%使用的命令)在ps的结果中过滤出想要查看的进程状态
#ps -ef |grep 进程名称
自定义显示内容
ps axo user,pid,ppid,%mem | head -3
ps aux命令展示的进程信息
user | 用户 |
---|---|
PID | 进程的编号 |
%CPU | 占用CPU时间的百分比 |