Linux基础权限
权限字母表示法
u:User 属主 用户
g:Group 属组 小组
o:Other 其他人(acl)
a:ALL 所有用户
对于文件和目录:
r:Read cat 文件 ls 目录 查看
w:Write touch 文件 mkdir 目录 vim 文件 w
x:Execute ./脚本 命令
+ 增加权限
- 减少权限
= 需要的权限 u=rwx g=rx o=r a=rx
chmod u+w fileName (文件/目录)
命令->shell (bash zsh csh)->执行对应的程序
Linux中一切皆文件
程序也是文件,可执行文件
type命令判断一个命令是否是Shell自带的命令
file命令查看文件的类型
# 可执行文件
[root@localhost ~]# file /bin/vim
/bin/vim: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=3dc92fe1ec8c5aa3d85b11ff67c0300b966f46b9, stripped
# 空文件
[root@localhost ~]# file a.txt
a.txt: empty
[root@localhost ~]# vim a.txt
# 纯英文的文件
[root@localhost ~]# file a.txt
a.txt: ASCII text # ASCII是英文的字符集
# 包含非英文字符的文件
[root@localhost ~]# file a.txt
a.txt: UTF-8 Unicode text
# 目录
[root@localhost ~]# file /root
/root: directory
# 块文件
[root@localhost ~]# file /dev/sda
/dev/sda: block special
# 详细信息是b以开头
[root@localhost ~]# ls -l /dev/sda
brw-rw----. 1 root disk 8, 0 1月 16 08:34 /dev/sda
可执行文件:
二进制可执行文件(由源码编译生成的),可以被CPU直接执行,执行速度块
脚本(shell,python,js,lua) (由语言对应的解释器调用执行),执行速度慢
[root@localhost ~]# ls -l
总用量 12
-rw-------. 1 root root 1568 1月 10 11:05 anaconda-ks.cfg
-rw-r--r--. 1 root root 16 1月 16 09:56 a.txt
-rwxr-xr-x. 1 root root 93 1月 16 10:16 hello.py
drwxr-xr-x. 2 root root 6 1月 16 10:47 mydir
从左向右
1 文件类型 - 普通文件 d 目录 l(link) 链接文件 b 块文件 s 网络文件 p 管道文件
2-10 权限位 三个一组 属主 数组 其他用 -表示没有权限 r读 w写 x执行
11 ./+ SElinux安全/拥有acl权限
12 硬链接数量 .本目录的硬链接 ..上层目录的硬链接
13 属主
14 属组
15 文件大小
16 修改时间
17 文件名
权限 | 文件 | 目录 |
---|---|---|
r | 查看文件中内容可以cat\less等命令 | 查看目录中的文件ls |
w | 可写、可修改 | 创建、移动文件、删除文件、复制文件,修改文件==(包括修改属主和属组)==,其他用户拥有该目录w权限时,是可以修改目录中的文件(通过修改文件属主、属组实现修改内容。) |
x | 可执行,对脚本和二进制程序 | 是否可以进入该目录,查看权限受限只能看到文件名。 |
s/S | 允许其他用户使用属主或属组的权限执行该程序(有x权限时显示小写的s,没有x权限显示大S)只针对程序有效passwd | 无效 |
t/T | 无效 | 必须有x权限,才能生效,粘贴位权限,拥有该权限的目录,只允许==属主和root用户==修改、删除文件,其他用户不能修改、删除 /tmp |
数字表示法
chmod 644 fileName
rw-r--r--
u=rw g=r o=r
-R 将目录和目录下所有文件都设置为该权限。
chmod u+s 程序 # 让其他用户以属主(root)的身份运行该程序。
chmod g+s 程序 # 让其他用户以属组(root)的身份运行该程序。
chmod o+t 目录 # 只允许root和属主对该目录下的文件进行修改和删除。
数值 | 权限 | 特殊权限 |
---|---|---|
0 | --- |
---|---|--- |
==1== | --x |
---|---|--t |
==2== | -w- |
---|--s|--- |
3 | -wx |
---|--s|--t |
==4== | r-- |
--s|---|--- |
5 | r-x |
--s|---|--t |
6 | rw- |
--s|--s|--- |
7 | rwx |
--s|--s|--t |
修改属主和属组
# 只有root权限才能修改其他用户文件的属主和属组
chown 属主:属组 文件
chown 属主:属组 目录
chown 属主:属组 -R 目录 # 递归修改目录中所有的文件和目录属主和属组
chgrp 属组 文件
chgrp 属组 -R 目录
su 和 sudo
su 切换用户
su 用户 # 在当前目录下直接切换用户
su - 用户 # 切换用户并到用户自己的家目录,加载自己环境变量
exit 退出当前用户
# 普通用户切换其他用户需要密码。
# root用户切换其他用户不需要密码。
# 需要将普通用户配置到/etc/sudoers中才能生效。
sudo 提权,让普通用户临时拥有root部分或全部的权限。
sudo 命令
这是一个关于 Linux 系统中 sudo 配置文件 /etc/sudoers 中的一行规则。
root ALL=(ALL) ALL 的解释如下:
root: 表示这条规则适用于 root 用户。
ALL=(ALL): 表示 root 用户可以作为任意用户 (ALL) 执行任意命令 (ALL)。
ALL: 表示 root 用户可以在任意主机执行任意命令,没有限制。
换句话说,这行规则授予了 root 用户在 Linux 系统中完全的管理员权限,可以执行任何命令,无论是在本地还是远程环境。这是非常高级和危险的权限设置,只应该在必要的情况下给予。
su - tom
passwd # 只能修改自己的密码
sudo passwd # 使用sudo时,修改的是root密码
sudo passwd lily # 修改其他用户密码
visudo # 打开 /etc/sudoers文件
tom ALL=(ALL) NOPASSWD:ALL,!/usr/bin/passwd,!/usr/sbin/reboot
用户名 所有主机名=(所有用户) 不需要密码:所有命令,!取反,除了某些命令。
[root@localhost ~]# su - tom
[tom@localhost ~]$ passwd
更改用户 tom 的密码 。
为 tom 更改 STRESS 密码。
(当前)UNIX 密码:
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[tom@localhost ~]$
[tom@localhost ~]$ sudo passwd
[sudo] tom 的密码:
对不起,用户 tom 无权以 root 的身份在 localhost.localdomain 上执行 /bin/passwd。
# usermod -aG 组名 用户名
# -a append 将用户追加到组中
# -G 指定组名
# 将lily和tom添加到新建的组中
# useradd lily
# useradd tom
# 创建新的组
[root@localhost ~]# groupadd admin
[root@localhost ~]# usermod -aG admin lily
[root@localhost ~]# usermod -aG admin tom
[root@localhost ~]# visudo
# 给admin组设置权限,/etc/sudoers任意位置添加如下内容
%admin ALL=(ALL) NOPASSWD:ALL,!/usr/bin/passwd,!/usr/sbin/reboot
# ESC:wq 保存退出
[root@localhost ~]# su - tom
上一次登录:三 1月 17 11:31:33 CST 2024pts/1 上
[tom@localhost ~]$ sudo passwd
对不起,用户 tom 无权以 root 的身份在 localhost.localdomain 上执行 /bin/passwd。
[tom@localhost ~]$ sudo reboot
对不起,用户 tom 无权以 root 的身份在 localhost.localdomain 上执行 /sbin/reboot。
系统信息查看命令
free 查看系统内存占用情况。
- -h 根据大小显示合适单位 K M G T P Z S
[root@localhost ~]# free -h
total used free shared buff/cache available
Mem: 1.8G 195M 1.5G 9.5M 138M 1.4G
Swap: 3.5G 0B 3.5G
df 查看磁盘占用率
- -h 根据大小显示合适单位 K M G T P Z S
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 900M 0 900M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 9.6M 901M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda2 116G 2.6G 114G 3% /
/dev/sda1 509M 178M 332M 35% /boot
tmpfs 182M 0 182M 0% /run/user/0
ps 查看进程的运行情况
[root@localhost ~]# ps -aux | grep top
root 2026 0.0 0.1 161968 2196 pts/1 S+ 10:46 0:00 top
root 2033 0.0 0.0 112824 976 pts/0 S+ 10:48 0:00 grep --color=auto top
top 实时监控系统的一个运行状态
- m 查看内存占用
- t 查看CPU的运行状态
- q 退出
[root@localhost ~]# top
top - 10:58:33 up 1:23, 1 user, load average: 0.00, 0.01, 0.05 Tasks: 117 total, 1 running, 116 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0/0.0 0[
KiB Mem : 19.3/1862816 [||||||||||
KiB Swap: 0.0/3668988 [
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+
978 root 20 0 273160 8948 3752 S 0.3 0.5 0:09.25
1 root 20 0 193932 7108 4164 S 0.0 0.4 0:01.79
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01
4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00
5 root 20 0 0 0 0 S 0.0 0.0 0:00.01
6 root 20 0 0 0 0 S 0.0 0.0 0:00.13
7 root rt 0 0 0 0 S 0.0 0.0 0:00.31
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00
9 root 20 0 0 0 0 S 0.0 0.0 0:00.71
10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00
which 查找命令对应程序的所在路径。
[root@localhost ~]# which passwd
/usr/bin/passwd
[root@localhost ~]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
[root@localhost ~]# ls
anaconda-ks.cfg file1.txt file1.txz~ lndir mydir2
a.txt file1.txt~ hello.py mydir
[root@localhost ~]# which chmod
/usr/bin/chmod