目录
权限的种类:
文件的类型:
常用文件编辑、文件查看和权限管理命令:
1、vi和vim命令
vi和vim的三种状态:
vi和vim的基础用法:
2、cat命令
基本用法是:
3、bash命令
基本用法:
4、chmod命令
基本用法:
5、chown命令
它的基本用法是:
6、su命令
基本用法:
su 接这个 “-” 与不接的区别是什么?
7、sudo命令
基本用法:
8、su命令与sudo命令的区别
不同之处:
9、umask命令
umask命令的基本用法:
10、chattr和lsattr命令
基本用法:
11、chgrp命令
基本用法:
访问权限(三个位置 无权限的用“-”代替):
可读 r read
可写 w write
可执行 x execute
访问权限
可读(read):允许查看文件内容、显示目录列表
可写(write):允许修改文件内容,允许在目录中新建、移动、删除文件或子目录
可执行(execute):允许运行程序、切换目录
示例: d rwxr-xr-x. 2 root root 40 Dec 7 05:25 bakeup
解释:文件类型 访问权限 user group
权限的先后顺序:文件所有者 文件所属组 其他用户
user 用户 所有者 --》owner
group 组 属组
others 其他用户
- 普通的文件
d 文件夹 directory
l 链接文件 link
s socket文件: 实现进程和进程之间通信使用
p 管道文件 pipe : 实现进程和进程之间通信使用
c 字符设备文件 字符的输入和输出 character
b block文件 --》磁盘的文件--》存放数据的文件
vi和vim是两个常见的文本编辑器,都是在终端中使用的命令行工具。vi是Unix系统中的一款文本编辑器,vim则是vi的改进版。vi是系统自带的,vim需要我们自己去下载:yum install vim -y
基本上vi和vim可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:
1) 命令行模式command mode)
控制屏幕光标的移动,字符、字或行的删除,查找,移动复制某区段及进入Insert mode下,或者到 last line mode。
命令行模式下的常用命令:
【1】控制光标移动:↑,↓,j
【2】删除当前行:dd
【3】查找:/字符
【4】进入编辑模式:i o a
【5】进入底行模式::
2) 编辑模式(Insert mode)
只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。
编辑模式下常用命令:
【1】ESC 退出编辑模式到命令行模式;
3) 底行模式(last line mode)
将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。
底行模式下常用命令:
【1】退出编辑: :q
【2】强制退出: :q!
【3】保存并退出: :wq
vi和vim的命令模式和插入模式是其最基本的特点,命令模式下可以进行各种文本编辑操作,插入模式下可以输入文本。在命令模式下,可以使用各种命令进行文本编辑,例如删除、复制、粘贴、查找、替换等操作。在插入模式下,可以直接输入文本内容。
打开文件
命令:vi/vim 文件名
示例:打开当前目录下的aa.txt文件 vi aa.txt 或者 vim aa.txt
注意:使用vi编辑器打开文件后,并不能编辑,因为此时处于命令模式,点击键盘i/a/o进入编辑模式。
编辑文件
使用vi编辑器打开文件后点击按键:i ,a或者o即可进入编辑模式。
i:在光标所在字符前开始插入
a:在光标所在字符后开始插入
o:在光标所在行的下面另起一新行插入
保存文件:
第一步:ESC 进入命令行模式
第二步:: 进入底行模式
第三步:wq 保存并退出编辑
取消编辑:
第一步:ESC 进入命令行模式
第二步:: 进入底行模式
第三步:q! 撤销本次修改并退出编辑(强制退出并且不保存)
cat命令是一个Unix/Linux系统中的命令,它的主要用途是将文件内容输出到终端上。
1. 显示文件内容:cat filename
2. 合并文件:cat file1 file2 > newfile
3. 追加文件:cat file1 >> file2
4. 创建文件:cat > newfile
其中,第一种用法是最常见的,它可以将文件的内容显示在终端上。第二种用法可以将多个文件合并成一个新的文件,新文件的内容为原文件的内容依次排列。第三种用法可以将一个文件的内容追加到另一个文件的末尾。第四种用法可以创建一个新的文件,并在终端输入内容。
bash是一种Unix shell,是一个命令行界面程序,用于在操作系统上执行命令和脚本。
bash命令的基本用法是通过命令行界面输入命令来执行操作系统上的任务,如创建、复制、移动、删除文件或目录,查看文件内容,编辑文件等。bash命令可以与其他UNIX命令结合使用,如grep、awk、sed等,以便更有效地处理数据。bash命令还可以使用重定向、管道和环境变量等高级特性来进行更复杂的操作。在Linux和Mac OS X等操作系统中,bash是默认的shell程序。
chmod命令用于改变文件或目录的访问权限。具体来说,它可以修改文件或目录的读、写、执行权限,以及文件或目录的所有者、所属组等属性。
chmod [选项] 模式 文件名
选项:
-c:显示修改的权限信息
-R:递归地修改目录及其下所有文件的权限
模式:
数字模式:用三个数字表示文件或目录的权限,分别表示所有者、所属组和其他用户的权限。每个数字由三个二进制位组成,分别表示读、写、执行权限,其中4表示读权限,2表示写权限,1表示执行权限。例如,755表示所有者有读、写、执行权限,所属组和其他用户有读、执行权限。
符号模式:用符号表示文件或目录的权限。符号模式由三部分组成,分别是谁(u、g、o、a)、做什么(+、-、=)以及权限(r、w、x)。例如,u+x表示给所有者添加执行权限,a=r表示给所有用户设置只读权限。
chomd [ugoa] [+ -] [rwx] 需要修改的文件或目录
chomd nnn 文件或目录
读 写 执行 无
4 2 1 0
文件名:需要修改权限的文件或目录名。
chown命令用于修改文件或目录的所有者和所属组。
chown [选项] [所有者][:[所属组]] 文件/目录
其中,选项包括:
-R:递归修改文件夹及其子文件夹的所有者和所属组。
-v:显示所有修改的文件/目录信息。
例如,将文件file1的所有者修改为user1,所属组修改为group1:
chown user1:group1 file1
将文件夹dir1及其子文件夹及文件的所有者和所属组都修改为user1和group1:
chown -R user1:group1 dir1
su命令是用来切换用户身份的命令,其意义是“切换用户身份”。一般来说,su命令可以用来切换到超级用户(root)身份或者其他用户身份,以便获取更高的权限来执行某些需要特权的操作。
su命令的基本用法是在终端中输入su,然后按回车键即可。此时系统会要求输入要切换到的用户的密码,如果输入正确,则会切换到该用户的身份。例如,要切换到root用户身份,可以在终端中输入su,然后输入root用户的密码即可。
另外,还可以使用su命令的一些选项来实现不同的功能,如:
-su -:切换到指定用户的身份,同时加载该用户的环境变量;
-su -c command:执行指定的命令,并切换到root用户身份;
-su -l:切换到root用户身份,并加载root用户的环境变量。
当不接 “-” 时、 linux系统只会运行局部配置文件来切换用户
不接“-” 可保留上一个用户的大部分环境变量、 如处在的文件地址
man su
-, -l, --login
Starts the shell as login shell with an environment
similar to a real login:
o clears all environment variables except
for TERM 清除所有环境变量的术语
o initializes the environment variables
HOME, SHELL, USER, LOGNAME, PATH
初始化环境变量 Home, shell,用户,日志名,路径
o changes to the target user's home direc‐
tory 对目标用户的主目录的更改
o sets argv[0] of the shell to '-' in order
to make the shell a login shell
将shell的argv[0]设置为'-',以便使shell成为登录shell
sudo命令是Linux和Unix系统中的一个命令,用于以超级用户或管理员权限执行指定的命令或操作。它可以让普通用户以root用户的权限执行需要特权的操作,如安装软件、修改系统配置等。
sudo allows a permitted user to execute a command as the superuser or another user,
sudo 是linux里的超级管理员允许普通的用户执行命令时享受root用户的权力 --》解决了授权的问题
/etc/sudoers --》 允许定义某个用户 来授予更高的权限 --》更改文件
在进入sudoers文件中 可对一些权限设置别名 在下面调用别名的时候不需要使用括号'()'' 括起来
而且可以不使用最后的ALL
示例:
## Sudoers allows particular users to run various commands as
## the root user, without needing the root password.
panlinfeng ALL=(ALL) ALL #添加授权记录
root ALL=(ALL) ALL (所有命令都可以执行)
lpf ALL = USERADMINS (只对别名内的权限有效)
feng ALL=(ALL) NOPASSWD: ALL (不需要登录密码就能执行所有命令)
zjx ALL=(ALL) /bin/cp (只对cp命令有root使用权限)
%group_name host_list=(user_list) command_list --》 赋予组别权力
其中,%group_name表示要授予权限的组名,host_list表示允许使用sudo命令的主机列表,user_list表示可以模拟的用户列表,command_list表示可以执行的命令列表
1. 执行单个命令:sudo command
2. 进入root用户的shell环境:sudo -s
3. 切换到其他用户的身份执行命令:sudo -u username command
4. 列出当前用户可以使用sudo执行的命令:sudo -l
5. 编辑sudo配置文件:sudo visudo
需要注意的是,使用sudo命令需要输入当前用户的密码,以确认用户的身份和权限。
su和sudo命令都是用来切换用户身份的命令
1. su命令需要知道目标用户的密码,才能切换到该用户的身份。而sudo命令则是通过授权文件来授予用户特定的权限,无需知道目标用户的密码。
2. su命令切换到目标用户的身份后,需要使用exit命令退出该用户的身份,才能回到原用户的身份。而sudo命令则只是暂时提升用户的权限,执行完命令后就会自动回到原用户的身份。
3. su命令可以切换到任意用户的身份,包括root用户。而sudo命令则需要在授权文件中明确指定用户可以执行哪些命令,以及以哪个用户的身份来执行。
综上所述,sudo命令比su命令更加安全和灵活,因为它可以避免用户共享密码的问题,并且可以按需授权用户执行特定的命令。
umask命令用于设置文件和目录的默认权限掩码。默认情况下,新创建的文件和目录的权限是由umask值与创建进程的权限进行计算得出的。umask值中的每个位表示对应权限位的掩码。例如,umask值为022表示禁用其他用户的写入权限,即新文件和目录的权限为644,新目录的权限为755。
umask命令的基本用法是通过umask值来设置文件和目录的默认权限掩码。可以使用数字或符号表示umask值,例如:
- umask 022:设置umask值为022,禁用其他用户的写入权限。
- umask u=rwx,g=rx,o=rx:设置umask值为755,即新文件和目录的权限为644,新目录的权限为755。
- umask +x:开启默认执行权限,即新文件和目录的权限为666,新目录的权限为777,并在此基础上开启执行权限。
umask命令还可以使用-o选项来显示当前umask值,使用-S选项来以符号方式显示umask值。
umask的掩码值到底是多少由/etc/profile文件里决定
chattr和lsattr是Linux系统中的命令,用于设置和查看文件或目录的隐藏属性。
chattr命令用于设置文件或目录的特殊属性,这些属性可以使文件或目录变得不可修改、不可删除、不可重命名等。常用的属性包括:
- i:将文件或目录设置为不可修改;
- a:将文件或目录设置为只能追加内容,不能修改或删除原有内容;
- u:将文件或目录设置为可以被undelete工具恢复。
lsattr命令则用于查看文件或目录的属性。常用的属性包括:
- i:文件或目录不可修改;
- a:文件或目录只能追加内容,不能修改或删除原有内容;
- u:文件或目录可以被undelete工具恢复。
chattr命令:
1. 设置文件或目录的属性:
chattr +属性名 文件名/目录名
例如,将文件a.txt设置为不可修改:
chattr +i a.txt
2. 取消文件或目录的属性:
chattr -属性名
lsattr命令:
1. 查看文件或目录的属性:
lsattr 文件名/目录名
例如,查看文件a.txt的属性:
lsattr a.txt
chgrp命令是用来更改文件或目录所属的用户组的命令。chgrp命令会修改文件或目录的组ID,使其与指定的组ID相同。
chgrp [选项] [组名] [文件或目录名]
选项:
-c或--changes 效果类似"-v"参数,但仅回报更改的部分。
-f或--quiet或--silent 不显示错误信息。
-h或--no-dereference 只对符号连接的文件作修改,而不更动其他任何相关文件。
-R或--recursive 递归处理,将指定目录下的所有文件及子目录一并处理。
-v或--verbose 显示指令执行过程。
--help 在线帮助。
--reference=<参考文件或目录> 把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同。
示例:
将文件file.txt的所属用户组更改为group1:
chgrp group1 file.txt
将目录dir1及其子目录下所有文件的所属用户组更改为group2:
chgrp -R group2 dir1