Linux中的用户、用户组以及权限管理
概述
- 用户:要登录Linux必须要有一个用户,一台Linux系统下可以有多个用户,并且每个用户可有不同的权限。在Linux中可以指定用户对不同的文件、目录拥有不同的权限
- 用户组:Linux有一个组的概念不同的用户分配到一个组,那么同组下的用户,都拥有这个组的权限
- 权限:Linux权限有三种,读、写、执行
目录 | 拥有者权限 | 组权限 | 其他用户权限 |
---|---|---|---|
- | r w - | r w - | r - - |
d | r w x | r w x | r - x |
用户管理
创建用户
useradd [用户名]
选项说明:
-d
:指定的新账户的主目录
-g
:指定用户的所属组
-G
:指定用户附加组
-s
:指定用户登录shell
-m
:自动创建家目录用户
注:whoami
:可查看当前用户名
删除用户
userdel [用户名]
选项说明:
-r
:删除用户的同时删除家目录
修改用户密码
passwd 用户名
在xshell中连接新用户:
修改用户账号属性
命令:usermod
选项说明:
-u
:用户id
-g
:所属组id
root@ubuntu:/home# usermod -g root Test1
root@ubuntu:/home# id Test1
uid=1001(Test1) gid=0(root) 组=0(root)
-a -G GID
:追加修改组,不使用-a选项,会覆盖此前附加组
root@ubuntu:/home# usermod -a -G Test1 Test1 #第一个为组名,第二个为要修改的用户名
root@ubuntu:/home# id Test1
uid=1001(Test1) gid=0(root) 组=0(root),1001(Test1)
-d -m
:将家目录内容移至新位置
-s
:该用户账号的新登录
-l
:新的登录名称
用户切换
su - [用户名]
:加-
同时切换得到用户的家目录,不加直接在当前目录切换到新用户
用户组管理
创建用户组groupadd
root@ubuntu:/home# groupadd admin
删除用户组groupdel
root@ubuntu:/home# groupdel admin
修改组属性groupmod
-g Gid
修改组id:
root@ubuntu:/home# id Test1
uid=1001(Test1) gid=0(root) 组=0(root),1001(Test1)
root@ubuntu:/home# groupmod -g 12222 Test1
root@ubuntu:/home# id Test1
uid=1001(Test1) gid=0(root) 组=0(root),12222(Test1)
修改名字:
root@ubuntu:/home# groupmod -n PythonGroup Test1
提示:
- 创建用户时,会默认创建一个与用户名同名的组名
- 创建成功后可在/etc/passwd文件下查看
- 新创建的用户没有sudo权限,需要用户加到adm,sudo这两个组中才拥有sudo权限
chown改变所有者
chown [选项] [最终用户] [文件或目录] #改变文件或者目录的所有者
-R:递归操作
权限管理
字母表示
命令:chomd +/- rwx 文件名|目录名
:+增加权限,-取消权限
注:每个文件都有三组不同的权限,第一组文件所有者,第二组是文件所属组,第三组是其他用户
- 第一组:u文件所有者,修改所有者权限:chmod u+/-/= rwx filename
- 第二组:g文件所有者,修改所属组权限:chmod g+/-/= rwx filename
- 第三组:o其他用户,修改所属组权限:chmod o+/-/= rwx filename
数字表示
命令:chmod 755 文件名|目录名
:指定权限修改
注:chmod中第一个数字代表所有者权限,第二个数字代表所属组权限,第三个数字代表其他人权限
权限 | 数字表示法 |
---|---|
r | 4 |
w | 2 |
x | 1 |
远程管理
ifconfig:查看系统IP地址
ping命令
检查网络是否正常通行,Linux下默认ping不会结束,使用Ctrl+c强制结束
示例:ping www.badiu.com
其它选项:
ping -c
:指定ping几个数据包结束
ping -i
:指定发送数据包的间隔,单位为秒
ping -s
:指定发送数据的大小,单位字节
ping -t
:设置TTL的大小,TTL网络调数大小
ssh远程连接
ssh是一种网络协议,用于计算机之间的加密登录。Linux下默认开启sshd服务,只有开启sshd服务才能进行ssh连接。
可以使用service sshd status
查看是否开启sshd服务。active(running)表示已经开启
如果没有,则需安装openssh-server(本机),openssh-client(别的机器)
frank@ubuntu:~$ sudo apt-get install openssh-server
Windows下连接方式
- 借助第三方软件,xshell或者putty来连接
- ssh端口号默认:22
Linux下ssh命令连接方式
ssh -p 端口 主机
:-p可以指定端口,ssh一般默认22,看到提示welcome表示已经连接成功
scp文件复制
- scp就是secure copy,是一个在Linux下用来进行远程拷贝文件的命令
- 示例1:将另一台电脑的/home/day_8.7_01文件复制到本机的/home/中
root@ubuntu:/home# scp frank@192.168.78.129:/home/day_8.7_01 /home/
- 示例2:将本机的/home/testssh.txt文件复制到另一台电脑的frank@192.168.78.129:/home/frank中
root@ubuntu:/home# scp /home/testssh.txt frank@192.168.78.129:/home/frank
- 示例3:
scp -r
可以复制文件夹,把当前目录下的copy文件夹 复制到远程目录下的Desktop
root@ubuntu:/home# scp -r copy frank@ubuntu:Desktop
- 示例4:将远程主机的test881文件夹包括文件 复制到本机的桌面
root@ubuntu:~# scp -r frank@192.168.78.129:/home/8.8/test881 Desktop
- 注:scp只能在Linux中使用,Windows下往Linux上传下载文件可以使用winscp
netstat 显示网络状态和端口占用信息
netstat -anp | grep 进程号 #查看该进程网络信息
netstat -nlp | grep 端口号 #网络端口号占用情况
选项 | 功能 |
---|---|
-a | 显示所有正在监听(listen)和未监听的套接字(socket) |
-n | 拒绝显示别名,能显示数字的全部转化成数字 |
-l | 仅列出在监听的服务状态 |
-p | 表示显示哪个进程在调用 |
系统信息管理
查看系统时间
date
:查看系统当前时间
date [选项] [+参数] #时间日期类
date #显示当前时间
选项 | 功能 |
---|---|
-d<时间字符串> | 显示指定的“时间字符串”表示的时间,而非当前时间 |
-s<日期时间> | 设置系统日期时间 |
参数 | 功能 |
---|---|
<+日期时间格式> | 指定显示时使用的日期时间格式 |
date | 显示当前时间 |
---|---|
date +%Y | 显示当前年份 |
date +%m | 显示当前月份 |
date “+%Y-%m-%d %H:%M:%S” | 显示年月日时分秒 |
cal
:查看日历
cal [选项] #不加选项显示本月日历,加年份显示一年的日历
crontab
:系统定时任务
crontab [选项]
选项 | 功能 |
---|---|
-e | 编辑crontab定时任务 |
-l | 查询crontab任务 |
-r | 删除当前用户所有的crontab任务 |
查看磁盘空间
df -TH
查看磁盘分区,以及挂载情况
root@ubuntu:/home# df -TH
文件系统 类型 容量 已用 可用 已用% 挂载点
udev devtmpfs 1.1G 0 1.1G 0% /dev
tmpfs tmpfs 207M 13M 194M 7% /run
/dev/sda1 ext4 51G 19G 30G 39% /
tmpfs tmpfs 1.1G 259k 1.1G 1% /dev/shm
tmpfs tmpfs 5.3M 4.1k 5.3M 1% /run/lock
tmpfs tmpfs 1.1G 0 1.1G 0% /sys/fs/cgroup
tmpfs tmpfs 207M 66k 207M 1% /run/user/1000
du -sh [目录名]
:查看目录大小
root@ubuntu:/home# du -sh
11G .
du -h [文件名]
:查看文件大小
root@ubuntu:/home# du -h copy
20K copy
选项 | 功能 |
---|---|
-h | 以人们较易阅读的格式自行显示 |
-a | 不仅查看子目录大小,还要包括文件 |
-c | 显示所有的文件和子目录大小后,显示总和 |
-s | 只显示总和 |
–max-depth=n | 指定统计子目录的深度为第n层 |
查看设备挂载情况
lsblk #查看设备挂载情况
lsblk -f #查看详细的设备挂载情况,显示文件系统信息
mount/umount挂载/卸载
"挂载"是指将一个文件系统连接到操作系统的目录树中的特定位置,以便可以访问该文件系统中的文件和目录。
mount [-t vfstype] [-o options] device dir #瓜子挂载设备
umount 设备文件名或挂载点 #卸载设备
lsblk #查看挂载情况
参数 | 功能 |
---|---|
-t vfstype | 指定文件系统的类型,通常不必指定。mount会自动选择正确的类型 |
-o options | 主要用来描述设备或档案的挂接方式。loop:用来把一个文件当成硬盘分区挂接上系统; ro:采用只读方式挂接设备; rw:采用读写方式挂接设备; iocharset:指定访问文件系统所用字符集 |
device | 要挂接(mount)的设备 |
dir | 设备在系统上的挂接点(mount point) |
挂载:将/dev/cdrom文件挂载到/mnt/cdrom/目录下
卸载:
开机自动挂载:
vim /etc/fstab
在/etc目录下的fstab文件中编辑内容如下:
fdisk分区
fdisk -l #查看磁盘分区详情
fdisk 硬件设备名 #对新增硬盘进行分区操作
-l :显示所有硬盘进行分区操作
该命令必须在root用户下才能使用
查看内核/操作系统/CPU信息
uname -a
:查看内核/操作系统/CPU信息
root@ubuntu:/home# uname -a
Linux ubuntu 4.15.0-51-generic #55~16.04.1-Ubuntu SMP Thu May 16 09:24:37 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
uname -i
:查看硬件平台
root@ubuntu:/home# uname -i
x86_64
uname -m
:查看CPU
root@ubuntu:/home# uname -m
x86_64
uname -n
:节点名称
root@ubuntu:/home# uname -n
ubuntu
````uname -o`:操作系统
```bash
root@ubuntu:/home# uname -o
GNU/Linux
uname -v
:内核版本
root@ubuntu:/home# uname -v
#55~16.04.1-Ubuntu SMP Thu May 16 09:24:37 UTC 2019
uname -r
:发行版本号
root@ubuntu:/home# uname -r
4.15.0-51-generic
查看进程
- top
top #查看进程实时运行情况,即系统资源实时使用情况,退出top界面输入q
选项 | 功能 |
---|---|
-d 秒数 | 指定top命令每隔几秒更新。默认是3秒在top命令的交互模式当中可以执行的命令 |
-i | 使top不显示任何闲置或者僵死进程 |
-p | 通过指定监控进程ID来仅仅监控某个进程的状态 |
操作 | 功能 |
---|---|
P | 以CPU使用率排序,默认就是此项 |
M | 以内存的使用率排序 |
N | 以PID排序 |
q | 退出top |
一些说明:
符号 | 说明 |
---|---|
PID | 进程id |
USER | 进程所有者 |
PR | 进程优先级 |
NI | nice值。负值表示高优先级,正值表示低优先级 |
VIRT | 进程使用的虚拟内存总量,单位kb。 VIRT=SWAP+RES |
RES | 进程使用的、未被换出的物理内存大小,单位kb |
SHR | 共享内存大小,单位kb |
S | 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程 |
%CPU | 上次更新到现在的CPU时间占用百分比 |
%MEM | 进程使用的物理内存百分比 |
TIME+ | 进程使用的CPU时间总计,单位1/100秒 |
COMMAND | 进程名称(命令名/命令行) |
- ps
ps #查看系统所有进程的状态
ps aux | grep xxx #查看系统中所有进程
ps -ef | grep xxx #可以查看子父进程之间的关系
选项 | 功能 |
---|---|
a | 列出带有终端的所有用户的进程 |
x | 列出当前用户的所有进程,包括没有终端的进程 |
u | 面向用户友好的显示风格 |
-j | 以作业控制格式显示进程信息 |
-e | 列出所有进程 |
-u | 列出某个用户关联的所有进程 |
-f | 显示完整格式的进程列表 |
ps aux | less 命令的显示信息及说明:
符号 | 说明 |
---|---|
PID | 进程的ID号 |
%CPU | 该进程占用CPU资源的百分比,占用越高,进程越耗费资源 |
%MEM | 该进程占用物理内存的百分比,占用越高,进程越耗费资源 |
VSZ | 该进程占用虚拟内存的大小,单位为KB |
RSS | 该进程占用实际物理内存的大小,单位为KB |
TTY | 该进程是在哪个终端中运行的 |
STAT | 进程状态 |
START | 该进程的启动时间 |
TIME | 该进程占用CPU的运算时间,注意不是系统时间 |
COMMAND | 产生此进程的命令名 |
常见的进程状态:
符号 | 状态 |
---|---|
D | 不可中断系统进程 |
R | 运行中的进程 |
S | 中断sleep状态 |
T | 停止 |
Z | 僵死,一般称之为僵尸进城 |
s | 包含子进程 |
l | 多线程 |
+ | 前台显示 |
查看进程树
pstree [选项]
选项 | 功能 |
---|---|
-p | 显示进程的PID |
-u | 显示进程的所属用户 |
结束进程
kill [参数] [进程号]
kill -9 [进程号] #强制结束进程
kill -15 [进程号] #结束进程,等级没有-9高
Linux中的1号进程(init进程)是所有进程的祖先进程,是不能被结束的