打包和压缩
- 将文件或文件夹合并成一个包,然后通过压缩算法进行数据压缩,减小包的体积,方便传输。
windows:
zip
rar
Linux:
zip
tar
gz
bz2
tar.gz
tar.bz2
压缩算法:
gzip
bzip2
- zip
是一个windows和linux中常的打包压缩工具,支持压缩算法是zip。
zip工具需要安装
yum -y install zip unzip
cd /root
zip压缩文件与文件夹
zip压缩一个文件(默认压缩在当前目录下)
格式 zip 压缩包名称 文件路径
zip a.zip a.txt 将当前目录下的a.txt文件压缩成a.zip格式的压缩包
# adding: a.txt (stored 0%) deflated压缩节约了多少空间(百分比)
ls -l
# -rw-r--r-- 1 root root 164 Mar 28 17:35 a.zip
# -rw-r--r-- 1 root root 4 Mar 27 20:49 a.txt
zip压缩目录
格式 zip [选项] 压缩包名称 文件路径
需要一个-r参数,不加-r默认只压缩目录本身 (-r递归压缩)
zip -r opt.zip /opt 将/opt目录压缩成opt.zip格式的压缩包(-r递归压缩)
zip -r -q opt.zip /opt -q 不显示压缩过程信息
ls
# opt.zip
zip解压命令
格式 unzip [选项] 压缩路径
unzip解压命令只能解压由zip打包的压缩文件,其他压缩包由unzip解压时会报错
unzip opt.zip 默认解压到当前目录下
ls
# opt opt.zip
unzip opt.zip -d /root 解压到指定目录下
ls /root
# opt
选项
-l:只查看解压内容,不进行解压
unzip -l opt.zip
- tar
tar其实是一个打包工具,不具备压缩功能,但是可以使用参数调用压缩工具来进行解压
选项
-c:创建压缩包
-f:指定压缩包名称(-f后面指定的必须是压缩包的名称)
tar -c -z a.tar a.txt 创建一个a.tar压缩包,并没有指定压缩工具
ls -l
# -rw-r--r-- 1 root root 10240 Mar 28 21:26 a.tar
# -rw-r--r-- 1 root root 4 Mar 27 20:49 a.txt
-z:指定gzip压缩工具进行压缩
tar -c -z -f A.tar.gz a.txt 指定gzip的压缩工具进行压缩
# -rw-r--r-- 1 root root 118 Mar 28 21:31 A.tar.gz
# -rw-r--r-- 1 root root 4 Mar 27 20:49 a.txt
注: 使用-z参数,不会自动添加.gz后缀
-j:指定bzip2压缩工具进行压缩
tar -c -j -f B.tar.bz2 a.txt
# -rw-r--r-- 1 root root 120 Mar 28 21:40 B.tar.bz2
-J:指定xz压缩工具进行压缩
tar -c -j -f C.tar.xz a.txt
# -rw-r--r-- 1 root root 176 Mar 28 21:47 C.tar.xz
-t:查看压缩包内容
tar -t -f A.tar.gz
# a.txt
-v:显示压缩包压缩和解压的过程
tar -c -v -f D.tar a.txt
# a.txt
-P:允许使用绝对路径进行打包
tar -P -cvf F.tar /etc/passwd 不加-P无法打包绝对路径下的文件或者目录
# /etc/passwd
-x:解压时是按照原来的路径进行解压
tar -x -v -f F.tar 不加-P是会报错的,无法解压到原路径的绝对路径下
# tar: Removing leading `/' from member names
tar -P -x -v -f F.tar
# /etc/passwd
注:tar会自动识别压缩功能
-C:指定解压路径
tar -x -v -f F.tar -C /opt 将当前路径下的F.tar解压到/opt目录下
# a.txt
ls /opt
# a.txt
-h:打包软链接
tar -c -z -h -f A.tar.gz etc/grub.cfg -h打包软链接
--exclude:排除某些文件进行打包
mkdir /abc
touch /abc/a{1..9}
cd /abc
tar -c -f A.tar ./* --exclude=a3 --exclude=a8 打包除了a3,a8以外的所有其他文件
tar -tf A.tar
# ./a1
# ./a2
# ./a4
# ./a5
# ./a6
# ./a7
# ./a9
--exclude-from:根据某个文件列表排除多个文件
cat /root/a.txt 查看a.txt内容
# a1
# a2
# a3
tar -c -f B.tar ./* --exclude-from=/root/a.txt 创建一个B.tar的压缩包,排除/root/a.txt的内容
tar -tf B.tar 查看B.tar压缩包的内容
# ./a4
# ./a5
# ./a6
# ./a7
# ./a8
# ./a9
用户管理
- linux中用户介绍
什么是用户?
- 用户其实就是相当于权限的化身
- 处于安全考虑
- 所有我们在进入系统之前都需要登陆,根据用户给相应的权限
- Linux系统中用户角色
- uid : Linux系统中当前用户ID(相当于身份证号)
- gid : 组ID,统一某一类用户权限
设置用户组的配置文件路径 : /etc/group
id root 查看当前用户的uid和gid
# uid=0(root) gid=0(root) groups=0(root)
who 查看当前系统登陆的用户信息
# root pts/0 2021-03-29 08:39 (192.168.80.1)
whoami 查看当前登陆的用户信息
# root
cat /etc/passwd
# root:x:0:0:root:/root:/bin/bash
# bin:x:1:1:bin:/bin:/sbin/nologin
# 用户名:密码占位符:UID:GID:注释信息:家目录:默认使用解析器
如何判断一个用户是否能登陆???
查看/ect/passwd文件,/bin/bash结尾的用户是可以登陆的,
/sbin/nologin结尾的用户是不可以登陆的。
Centos7系统的规定
UID:0 由超级用户或具备超级用户权限的用户创建用户
UID:1-200 系统用户,用来运行系统自带的进程,默认已创建
UID:201-999 系统用户,用来运行安装的程序,所有此类用户无需登陆系统
UID:500-65535 普通用户,正常1可以登陆系统的用户,权限比较小,能执行的任务有限
用户组添加用户
useradd nana
vim /etc/group 设置用户组的配置文件路径
# postfix:x:89:
# ntp:x:38:
# nana:x:1000:root 将用户root添加至nana组
id root 查看用户root的uid和gid
# uid=0(root) gid=0(root) groups=0(root),1000(nana)
- 超级用户
- Linux : root
- Windows : administrator
- 用户与组相关文件
- 我们在使用
useradd
命令创建用户,其实就是在以下文件中添加了一些数据,更加验证了Linux系统中一切皆文件的思想。
cat /etc/passwd 用户基本信息文件
# root:x:0:0:root:/root:/bin/bash
# bin:x:1:1:bin:/bin:/sbin/nologin
# 用户名:密码占位符:UID:GID:注释信息:家目录:默认使用解析器
cat /etc/shadow 密码详情文件
# root:$6$EFzDufv.OgY8.Zl1$aOYWcFk/lOrfvzpaLaHyA/MQnchZAF.QgkpbFWFrb/GTPYRMO7kSMy9wMl4TgAkkwCzAEL.8qv.fK1EaN/gMq1::0:99999:7:::
# sshd:!!:18689::::::
# 用户名称:密码(!!表示没有密码):最近一次密码变更时间(1970年到现在过了多少天):密码最少使用天数(0表示无限制):密码最长使用天数(99999表示限制):密码过期预警天数:密码过期后没有修改密码,用户还可以使用的天数:账户失效日期(过了这个日期账号旧无法使用):保留,没有被使用
vim /etc/group 用户组相关文件
# root:x:0:
# bin:x:1:
# 用户组的名称:用户组的密码占位符:用户组的ID/GID:给该组添加其他用户(多个逗号分割)
vim /etc/gshadow 用户组密码文件
# root:::
# bin:::
# 用户组的名称:组密码:组的管理者:给该组添加其他用户(多个逗号分割)
ls -A /etc/skel/ 用户家目录模板文件
# .bash_logout .bash_profile .bashrc
ls -a /root/
# .bash_logout .bash_profile .bashrc ...
ls /home/xxx 普通用户家目录
# nana test dada
- 用户创建与删除
useradd
、userdel
格式:
useradd 用户名
选项:
-u(指定用户的UID) -g(指定用户所属的主群) -G(指定用户所属的附加群)
-d(指定用户的家目录) -c(指定用户的备注信息) -s(指定用户所用的shell)
-e(修改过期时间) -M(不创建家目录) -r(创建系统账户,uid处于系统用户范围内,默认没有家目录)
useradd nana 创建用户
ls /home/ 查看普通用户家目录
# nana
userdel nana 删除用户,但是用户的家目录还在
userdel -r nana 彻底删除用户(连着用户家目录一起删除)
- 修改用户信息
usermod
修改用户信息最主要的命令是usermod
命令,其参数跟useradd
基本一致
· 修改UID(-u)
usermod -u 2000 nana 将用户nana的uid修改成2000
cat /etc/passwd
# nana:x:2000:1000::/home/nana:/bin/bash
· 修改基本组及附加组
id
# uid=0(root) gid=0(root) groups=0(root),1000(nana)
基本组(-g) : 一个用户必须拥有的组
groupadd group1 创建附加组group1
id nana 查看用户uid和gid
# uid=2000(nana) gid=1000(nana) groups=1000(nana)
usermod -g group1 nana 修改用户nana的基本组
cat /etc/passwd | grep nana
# nana:x:2000:1006::/home/nana:/bin/bash
附加组(-G) : 用户加入的其他用户组,覆盖添加附加组
id 查看用户uid和gid
# uid=0(root) gid=0(root) groups=0(root),1000(nana)
usermod -G group1 root 给root用户添加附加组group1
cat /etc/group | grep group1
# group1:x:1006:root
usermod -G dudu root
cat /etc/group | grep root dudu组直接覆盖掉了group1组
# dudu:x:1001:root
· 追加(-a)
usermod -a -G group1 root
cat /etc/group | grep root
# dudu:x:1001:root
# group1:x:1006:root
· 修改家目录(-d)
usermod -d /home/nanammd nana -d讲用户nana的家目录修改成nanammd
cat /etc/passwd | grep nana
# nana:x:2000:1006::/home/nanammd:/bin/bash
注:修改家目录仅仅修改了配置,而原来的家目录文件没有迁移
· 修改用户描述信息(-c)
usermod -c "对象呢" nana
cat /etc/passwd | grep nana
# nana:x:2000:1006:对象呢:/home/nanammd:/bin/bash
· 修改用户默认解释器(-s)
usermod -s /bin/sh nana
cat /etc/passwd | grep nana
# nana:x:2000:1006:对象呢:/home/nanammd:/bin/sh
· 用户的锁定和解锁(-L)(-U)
usermod -L nana 锁定用户登陆(锁定之后,用户无法登陆)
usermod -U nana 解锁用户登陆
· 修改登陆名称(-l)
usermod -l baobao nana 将用户nana的名称修改成baobao
cat /etc/passwd | grep baobao
# baobao:x:2000:1006:对象呢:/home/nanammd:/bin/sh
- 密码
passwd
修改或添加Linux普通用户的密码,直接影响的文件是/etc/shadow
passwd dudu 增加或修改用户dudu的密码
# Changing password for user dudu.
# New password:
# BAD PASSWORD: The password is shorter than 8 characters
# Retype new password:
# passwd: all authentication tokens updated successfully.
cat /etc/shadow | grep dudu 查看密码文件
# dudu:$6$mKjPIzL3$xozMdtSepGBW4FiLWagZmf0yf75f1RcZlQhzxSFWD./rvVymaLOoHF1XcnJtqyMrs9i2eCztaQD5gckoCDktN0:18715:0:99999:7:::
· 免交互修改密码
echo "1" | passwd --stdin dudu
# Changing password for user dudu.
# passwd: all authentication tokens updated successfully.
- 创建组
groupadd
groupadd a1 创建基本组,不指定gid
tail -1 /etc/group
# a1:x:1008:
· 指定gid(-g)
groupadd -g 2222 a2 创建基本组,指定gid为2222
tail -1 /etc/group
# a2:x:2222:
· 创建系统组(-r)
groupadd -r a3 创建系统组,gid从201-999(201-999 系统组,用来运行安装的程序,所有此类用户无需登陆系统)
tail -1 /etc/group
# a3:x:996:
- 修改组
groupmod
· 修改组名称(-n)
groupmod -n AAA a3 将组名a3修改成AAA
tail -1 /etc/group
# AAA:x:996:
· 修改gid(-g)
groupmod -g 1888 AAA
tail -1 /etc/group
# AAA:x:1888:
- 删除组
groupdel
groupdel group1 无法删除,group1被baobao占用
# groupdel: cannot remove the primary group of user 'baobao'
id baobao baobao的基本组为group1
# uid=2000(baobao) gid=1006(group1) groups=1006(group1),0(root)
注:用户组在系统中删除,如果一个组被用户占用则不能删除
groupdel a1 a1没有被占用,可以直接删除组a1
# 成功删除
useradd lala
tail -1 /etc/group
# lala:x:2001:
userdel -r lala 完全删除用户lala
cat /etc/group
# 用户组lala也被删除了
注: 用户被删除,基本组也会被删除
- 组成员管理
· 添加一个用户到组(gpasswd -a)
useradd test1
id test1
# uid=2001(test1) gid=2001(test1) groups=2001(test1)
gpasswd -a test1 group1 将用户test1添加到group1组中
# Adding user test to group group1
id test1
# uid=2001(test1) gid=2001(test1) groups=2001(test1),1006(group1)
· 添加多个用户到组(gpasswd -M)
gpasswd -M test,root group1 将用户test,root添加到group1组中
id test
# uid=1003(test) gid=1003 groups=1003,1006(group1)
id root
# uid=0(root) gid=0(root) groups=0(root),1006(group1)
· 为一个组添加管理者(gpasswd -A )
cat /etc/group | grep AAA
# AAA:x:1888:
gpasswd -M root,test,dudu AAA (-M)添加root,test,dudu用户到组AAA4中
cat /etc/gshadow | grep AAA 查看AAA用户组密码文件
# AAA:!::root,test,dudu
gpasswd -A test AAA (-A)添加test为组AAA的管理者
cat /etc/gshadow | grep AAA
# AAA:!:test:root,test,dudu
· 组管理者的权限(组长有权限向组内添加新用户,其他用户除root以外没有权限向组添加新用户)
su - test 切换到用户test
# Last login: Mon Mar 29 11:17:21 CST 2021 on tty1
# /usr/bin/id: cannot find name for group ID 1003
gpasswd -a LALA AAA 以组管理者的身份将LALA添加至组AAA
# Adding user LALA to group AAA
· 组权限
touch /opt/a.txt
ls -l /opt/a.txt
# -rw-r--r-- 1 root root 4 Mar 29 18:12 /opt/a.txt
chown :AAA /opt/a.txt 修改/opt/a.txt所属组为AAA
ls -l /opt/a.txt
# -rw-r--r-- 1 root AAA 4 Mar 29 18:12 /opt/a.txt
chmod g+w /opt/a.txt 修改组权限为读写权限
cat /etc/group | grep AAA
# AAA:x:1888:root,test,dudu,LALA
su - dudu 切换到用户dudu
echo 456 > /opt/a.txt 将456写入/opt/a.txt
cat /opt/a.txt
# 456
注: 用户组AAA对于a.txt的读写权限,用户组下的所有组员都可以对a.txt都具备读写权限
权限管理
- 权限的概念
d rwx r-x r-x
目录 所属用户权限 所属组权限 其他用户权限
- 基本权限介绍
r : 可读 => 4
w : 可写 => 2
x : 可执行 => 1
- : 没有权限 => 0
- 权限归属
属主 : u
属组 : g
其他人 : o
所有人 : a
- 权限的设置(chmod)
- 目录默认权限755,文件默认权限644
自己和所属组拥有可读可写权限,其他人拥有可读权限
chomd u=rw,g=rw,o=r a.txt
chmond 664 a.txt
chmod -R 744 /a 给目录a递归设置权限
- 权限对于目录下文件可读的影响
· 要想查看目录下的文件内容,目录和子目录都至少拥有可执行权限,文件本身至少需要可读权限
useradd sb
mkdir /a/b/c
echo 123 > /a/b/c/a.txt
chmod -R 001 /a
chmod 004 /a/b/c/a.txt
su - sb
cat /a/b/c/a.txt
# 123
·权限对于目录下文件可编辑的影响
- 要想目录下的文件内容可以被写入
echo
,目录和子目录至少拥有可执行权限,文件本身至少拥有可写的权限
mkdir -p /a/b/c
echo 123 > /a/b/c/a.txt
chmod -R 001 /a 创建目录/a的递归可执行权限
chmod 002 /a/b/c/a.txt 创建/a/b/c/a.txt的可写权限
ls -l /a/b/c/a.txt
# --------wx 1 root root 4 Mar 29 20:44 /a/b/c/a.txt
su - sb
echo 456 > /a/b/c/a.txt 只有写权限
- 要想目录下的文件内容可以被写入
vim
,目录和子目录至少拥有可执行权限,文件本身至少拥有可写可读权限
chmod -R 001 /a 创建/a递归可执行权限
chmod 006 /a/b/c/a.txt 创建/a/b/c/a.txt的读写权限
su - sb
vim /a/b/c/a.txt 可写可保存,但是不能执行(写入后可以用wq保存)
- 要想目录下的文件本身可以被编辑
mv rm
,目录和文件本身至少拥有可执行可写的权限
chmod -R 003 /a 创建目录/a递归可写可执行权限
chmod 003 /a/b/c/a.txt 创建/a/b/c/a.txt的可写可执行权限
su - sb
mv /a/b/c/a.txt /a/b/c/b.txt
rm -rf /a/b/c/b.txt
· 权限对于目录下文件可执行的影响
- 要想目录下的文件内容可以被执行,目录和文件本身都必须要拥有可读可执行权限(5)
文件权限之特殊权限
- SUID
普通用户不是root也不属于root组,于是它对/etc/shadow文件没有任何权限
ll /etc/shadow 查看密码文件
# ---------- 1 root root 629 Mar 29 20:41 /etc/shadow
但是普通用户却可以用passwd命令修改密码,而修改密码都是在修改/etc/shadow文件,如何实现的?
su - test
passwd 切换用户是可以修改密码的
# Changing password for user test.
# Changing password for test.
# (current) UNIX password:
# New password:
# Retype new password:
# passwd: all authentication tokens updated successfully.
which passwd
# /usr/bin/passwd
ll /usr/bin/passwd 查看passwd执行文件权限,用户权限有个s。
# -rwsr-xr-x. 1 root root 27856 Apr 1 2020 /usr/bin/passwd
- s权限
4
的特殊之处
· 临时提权 -
作用对象必须是二进制文件
-
该文件必须拥有可执行权限
权限位置
s(4) : 临时提权 chmod 4755 a.txt # a.txt文件内容必须是二进制文件,该文件必须拥有可执行权限
权限管理umask
umask就是解决目录及文件的默认权限。
· 文件的最高权限是777
· 目录的最高权限是666
在umask影响下
- 文件权限的计算方法 : 偶数位直接相减,奇数位相减后加一
文件的起始权限值 : 666 umsk : 022 偶数直接相减即可(666-022 = 644)
文件的起始权限值 : 666 umsk : 033 偶数直接相减,奇数位相减后在其原奇数位加1(666-033 = 6[3+1][3+1] = 644)
文件的起始权限值 : 666 umsk : 325 偶数直接相减,奇数位相减后在其原奇数位加1(666-325 = [3+1]4[1+1] = 442)
- 目录权限计算方法 : 不分奇偶数
目录起始权限值 : 777 umask : 032 直接相减(777-032 = 745)
- umask 设置文件或者目录权限
- 临时设置
umask 034 目录权限为:743 文件权限为:642
目录:
mkdir abc
ls -ld abc 权限为743
# drwxr---wx 2 root root 6 Mar 30 09:42 abc
文件:
touch A.txt
ll A.txt 权限为642
# -rw-r---w- 1 root root 0 Mar 30 09:44 A.txt
- 永久设置
vim /etc/profile
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
# UID大于199的umask权限
umask 002 # 普通用户
else
umask 022 # root用户
source /etc/profile # 重载/etc/profile
ACL权限
- ACL是为了解决某种特殊环境下的,用户的权限需求。
· setfacl : 设置acl权限
· getfacl : 查看acl权限
- ACL权限归属
· u : 指定用户
· g : 指定组
· o : 修改其他用户权限
· m : 指定mask权限 mask权限是acl的权限控制(mask权限会根据权限的更改而变化)
setfacl -m u:用户名称:权限(rwx) 文件名称 # 设置用户权限
setfacl -m g:组名称:权限(rwx) 文件名称 # 设置组权限
setfacl -m o:权限(rwx) 文件名称 # 设置其他人权限
setfacl -m m:权限(rwx) 文件名称 # 设置mask权限
- ACL权限的删除
setfacl -x u:用户名称 文件名称 删除某一个用户权限
setfacl -x g:组名称 文件名称 删除某一个组权限
setfacl -b 文件名称 清空所有acl权限
getfacl 文件名称
注 : 默认情况下,ACL权限跟普通权限保持一致
mkdir -p /a/b/c
touch /a/b/c/a.txt
chmod -R 001 /a 目录可执行权限
chmod 000 /a/b/c/a.txt a.txt没人任何权限
setfacl -m u:test:r /a/b/c/a.txt 给普通用户test设置可读权限
ll /a/b/c + 表示a.txt有acl附加权限
# total 4
# ----r-----+ 1 root root 4 Mar 30 10:31 a.txt
getfacl /a/b/c/a.txt 查看a.txt的acl权限
# getfacl: Removing leading '/' from absolute path names
# file: a/b/c/a.txt
# owner: root
# group: root
# user::---
# user:test:r--
# group::---
# mask::r-- mask权限是acl的权限控制
# other::---
查看文件
su - test
cat /a/b/c/a.txt 可以查看a.txt的内容
- ACL继承(
-d
)
· 子目录或者文件继承父目录的ACL权限
mkdir -p /haha/hehe
setfacl -m u:test:rw /haha/hehe/ 设置用户test对于目录/haha/hehe具备读写权限
setfacl -m d u:test:rw /haha/hehe/ 设置用户test对于目录/haha/hehe/的ACL继承权限
touch /haha/hehe/66.txt 创建66.txt
ll /haha/hehe/66.txt (+) 继承了acl目录的权限
# -rw-rw-r--+ 1 root root 0 Mar 30 11:53 /haha/hehe/66.txt
getfacl /haha/hehe/66.txt
# getfacl: Removing leading '/' from absolute path names
# file: haha/hehe/66.txt
# owner: root
# group: root
# user::rw-
# user:baba:rw-
# group::r-x #effective:r--
# mask::rw-
# other::r--
文件属性的权限控制
lsattr 查看文件属性权限
chattr +a 允许追加内容
chattr +i 禁止任何修改(有些病毒程序会对文件设置i的属性权限)
charrr +A 不更改文件访问时间
useradd nana
touch /s.txt
chown nana:nana /s.txt
ll /s.txt
# -rw-r--r-- 1 nana nana 0 Mar 30 12:18 /s.txt
lsattr /s.txt 查看s.txt的文件属性权限
# ---------------- /s.txt
· 属性设置
(+a) 允许追加内容
touch /s.txt
chattr +a /s.txt 允许追加内容
lsattr /s.txt
# -----a---------- /s.txt
(+i) 禁止任何修改
chattr +i /s.txt 属性权限设置禁止任何修改
lsattr /s.txt 查看文件属性权限
# ----ia---------- /s.txt
su - nana
ll /s.txt s.txt用户与用户组都具备rwx权限
# -rwxrwx--- 1 nana nana 8 Mar 30 12:29 /s.txt
echo 123 > /s.txt 写入内容失败(对文件属性设置了禁止修改)
# -bash: /s.txt: Permission denied
chattr +A /s.txt 不更改文件访问时间
lsattr /s.txt 查看s.txt的文件属性权限
# ----ia-A-------- /s.txt
su - nana
cat /s.txt
# 123
stat /s.txt 查看/s.txt的基本信息,查看文本文件的时间并没有发生变化
# File: ‘/s.txt’
# Size: 8 Blocks: 8 IO Block: 4096 regular file
# Device: fd00h/64768d Inode: 35159 Links: 1
# Access: (0770/-rwxrwx---) Uid: ( 1002/ nana) Gid: ( 1002/ nana)
# Access: 2021-03-30 12:19:50.529186480 +0800 查看文本文件的时间
# Modify: 2021-03-30 12:29:21.261199441 +0800 修改文本文件内容的时间
# Change: 2021-03-30 13:36:40.749036316 +0800 修改文本文件属性的时间
# Birth: -
su切换用户与sudo提权
- SUDO
用于普通用户提升权限的
· 相关的文件 :/etc/sudoers
· 检查/etc/sudors是否修改正确 :visudo -c
· sudoers文件格式
root ALL= (ALL) ALL
用户名称 所有机器可登录 所有IP或主机名 所有的指令
· 指令编写格式
vim /etc/suduers sudo配置文件
visudo -c 检查sudo配置文件是否修改正确
# /etc/sudoers: parsed OK
必须写全路径:which查看命令全路径
1.只支持vim命令提权
nana ALL=(ALL) /usr/bin/vim
2.支持所有的命令提权
nana ALL=(ALL) ALL
3.不支持某个命令提权
nana ALL=(ALL) ALL,!/usr/bin/vim # 不支持使用vim命令
4.不支持某个命令的部分功能
nana ALL=(ALL) ALL,!/usr/bin/vim /root/a.txt # 不支持使用vim命令对/root/a.txt进行编辑
- sudo命令使用演示
mkdir /root/A/
vim /etc/sudoers 用户nana对于不支持cd到/root/A/下,支持其他所有命令功能
nana ALL=(ALL) ALL,!/usr/bin/cd /root/A/
visudo -c 验证/etc/sudors是否修改正确
# /etc/sudoers: parsed OK
以nana的身份登陆服务器
sudo cd /root 使用sudo可以切换到root目录下
# [sudo] password for nana:
sudo /root/A/ 使用sudo命令无法切换到/root/A/目录下
# sudo: /root/A/: command not found
- SU
su 用户 与 su - 用户的差别
su - 用户 执行登陆shell,身份和环境都切换
su 用户 执行非登陆shell,只切换用户身份
· su - xxx 切换用户的执行系统文件要多于 su xxx