- 面试题
- 关于操作系统及进程的一些概念
- 环境变量的设置
- 常用命令 ls pwd cd clear echo history help ! man reboot alias
- Linux中的文件类型
-dbclsp - 文件管理命令 grep head tail cd touch mkdir
- vim
- find
- 用户权限管理 groupadd groupmod groupdel
- 用户组管理
- 用户管理 useradd userdel
- 用户权限管理
- 文件权限管理
- 文件权限设置
- 文件访问控制列表,acl权限 getfacl setfacl
mask有效权限- 特殊权限
suidsgidsticky - 文件属性
lsattr:查看文件的属性chattr:设置文件的属性- 文件的属性(只作了解)
umask- 一些常见Linux文件中保存的内容
面试题:
- 什么是操作系统?
- 什么是Linux内核、什么是Linux操作系统?
一些概念(记)
- Linux系统内核指的是一个由Linus Torvalds负责维护,提供硬件抽象层、硬盘及文件系统控制及多任务功能的系统核心程序。
- Linux发行套件系统是我们常说的Linux操作系统,也即是由Linux内核与各种常用软件的集合产品
- 计算机的元年
1970年的一月一日
时间戳:记录了1970年1月1日到现在的秒数
环境变量
window 加 PATH:系统环境变量,可通过 win+R 键入
Linux 加 PATH:
- 临时:
export PATH=$PATH:新路径 - 永久:写入文件
[root@localhost ~]# echo $PATH /root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
常用命令:
ls [-alrtAFRh] 显示内容
- -l 长格式
- -R 递归输出
- -h 以合适的大小输出
- -F 在列出的文件名称后加一符号 : *:(可执行文档)/:(目录)@:(链接)
pwd 显示工作目录
cd:
- cd ~ 进入家目录
- cd .. 返回上一层目录
- cd - 返回上一次操作的目录 eg : -dir1 -a -b -c
cd dir1
cd a/b/c
clear 清屏 ----------快捷键ctrl+l
echo 输出
echo "hello world" >hello.txt
(没有.txt文件的话会自动创建)
- -n 不换行
- 注意:echo helloBrenda >> /root/Beth/soft和 echo hello > /root/Beth/hello.txt的区别,前者>>是追加,后者>是覆盖
history
history -a .bash_history
- history -a .bash_history 将缓存写入文件(文件在磁盘上,缓存就是内存)
- history -r 将文件读入history记忆
- -c 清空缓存
- -w 记忆写入文件
help
help [-dms] [内置命令]
- eg:
ls --help -m
! 回溯
- !! 执行上条命令
- !ping 从下往上数第一条ping命令
- !6 第6条命令
man
man + 需要帮助的命令或者文件
reboot 重启
alias
Linux中的文件类型
-:文本文件
d:目录文件
b:块设备文件
c:字符设备文件
l:链接文件
s:套接字文件
p:管道文件
文件管理命令
touch: 文件 无则建,有则刷新时间
mkdir 目录 [-mvp]
- -p 递归创建 eg:
mkdir -p a/b/c
cp cp + 源 + 目(相对路径)-r -p
mv mv + 源 + 目(相对路径)
rm rm + 源 + 目(相对路径)
- -r 递归操作
- -f 强制(不会抛出疑问)
cat 打开文本文件并显示
- -n 逐行编号
less 翻页查看
head 默认十行
- -n N 文件 显示N行
tail 默认十行
- -n N 文件 显示N行
- -f 实时追踪更新
grep 筛选过滤
grep '关键词' 文件目录 (不包含特殊符号时单引号可省略,也允许双引号)
eg:
[root@xwz ~]# grep 'root' /etc/passwd
[root@xwz ~]# grep '^root' /etc/passwd
[root@xwz ~]# grep 'bash$' /etc/passwd
stat 显示文件时间和 inode 内容
file 查看文件的类型
find查找(记+熟练使用)
常见用法
-name:根据文件名进行查找
-iname:忽略大小写
-size:按照文件大小进行查找
-maxdepth:最大深度
-mindepth:最小深度
-a:同时连接多个条件,表示and预算,多个条件同时成立才可以
-o:同时连接多个条件,表示or运算,多个条件中只要出现有一个是成立的就可以
-not:条件进行取反操作
-atime 访问时间
+N:N天前
N:N天
-N:N天以内
-mtime 修改时间
-ctime 改变时间
-user:根据属主进行查找
-group:根据属组进行查找
-nouser:没有属主的
-nogroup:没有属组的
-type:文件类型
f
d
b
c
s
p
l
-perm:文件权限
find / -perm 644 -ls精确查找权限为644的文件find / -perm -644 -ls查找权限大于等于644的文件find / -perm /222或运算,相当于 >=2 or >=2 or >=2 ,属主属组和其它用户只要有一个满足条件就算匹配. -perm /mode 表示:只要文件权限在 __某个权限位(属主/属组/其他人)上包含了 ___mode 中对应的所有比特位,就算匹配成功**
-regex:通过正则表达式进行匹配文件名称
-exec : 允许对找到的每个文件执行一个命令
-ls : 对查找到的文件执行 ls ‐l 命令
-delete : 删除查找到的文件
eg:
** [root@localhost ~]# find /root -name "*.log" -exec mv {} /home/dir1 \;
[root@localhost ~]# find /var -user root -group mail
[root@localhost ~]# find /usr -not -user root -a -not -user bin -a -not -user ftp
**[root@localhost ~]# find /usr -not \( -user root -o -user bin -o -user ftp \)
[root@localhost ~]# find /etc -mtime -7
[root@localhost ~]# find /etc -size +1M -type f
[root@localhost ~]# find /etc -not -perm /222
[root@localhost ~]# find /etc -not -perm -111
[root@localhost ~]# find /etc/init.d -perm -113
补充:生成一个指定大小为5MB的文件
__dd if=/dev/zero of=test1.txt bs=1M count=5__
正则表达式
案例:
[root@server1 ~]# find test?
[root@server1 ~]# find test*
vim
注意:快捷键ctl+z十是把进程挂起,不是正常退出,一定要用:wq或者:x正常退出
命令模式常见命令 :
:set nu 显示行号
:set nonu 取消显示行号
:set ai 智能缩进
:set noai 取消智能缩进
0 本行第一个字符
$ 本行最后一个字符
gg 第一行(1G)
h← j↓ k↑ l→
G 移动到文档最后一行
nG 移动到第n行 (移动到第一行的方式有两种 gg 和1G)
n + Enter 光标向下移动n行
/something 向下寻找something
?something 向上寻找something
n 重复前一个搜索 N 反向搜索
: (g:将一行中所有符合条件的此全部替换,无g则只替换第一个;c:逐 个提问,与用户交互)
- :n1,n2s/源/目/g
- :%s/源/目/g
- :1,$s/源/目/g
删除
以字符为位单个删除:x(向后删)或X(向前删)(ndd)
以行为单位删除:dd (ndd) / nc 以行为单位,光标向前删d0, 向后删d$
以整个文档为单位,光标所在向前删完:d1G,向后删完:dG
复制
以行为单位复制:yy
其他同 delete y1G yG y0 y$
粘贴 p(向前粘贴) P(向后粘贴)
可以删除全文的方式
gg dG
G d1G
G dgg
:%d
:1,$d
可以保存并退出的方式
:wq
:x
ZZ
用户权限管理
用户组管理
groupadd 增加用户组
- -g 新建组的 id
groupmod 修改用户组
- -g 改组 id groupmod -g 目的ID 组名
- -n 改组名 groupmod -n 目 源
- -o 允许重复的 id
groupdel 删除用户组
gpasswd 将一个用户添加到组或删除
- -a 添加用户到组 gpasswd -a 用户名 组名
- -d 从组删除用户
- -A 指定管理员 -M 替换组中全部用户列表,不在内的被删除 -R 限制用户登入组,只有组中成员才可以用newgrp加入该组
eg:
创建用户Beth
[root@localhost ~]#useradd Beth
将 Beth 添加到组it(同理添加用户Brenda)
[root@localhost ~]#gpasswd -a Beth it
在group文件中可以过滤查找
[root@localhost ~]# cat /etc/group |grep it:
将Brenda从组中删除(Brenda不在it组中,但是Brenda的主组仍在group
|是一根管道将前面的作为输入传递给后面
这句命令等同于:grep it: /etc/passwd即grep 'it:' /etc/passwd
[root@localhost ~]# cat /etc/group
用户管理
useradd 添加用户
useradd 用户名
- -c comment:指定一段注释性描述。
- -d 目录:指定用户家目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
- -m:创建用户的主目录
- -g 用户组:指定用户所属的用户组,默认会创建一个和用户名同名的用户组。
- -G 用户组:指定用户所属的附加组,一个用户可以属于多个附加组。
- -s Shell文件:指定用户的登录Shell。
- -u 用户号:指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
su 切换用户
su Brenda
su - Brenda
区别:前者只相当于调用用户完成任务,环境不变,后者把环境变量和目录完全切换到目标用户的环境
usermod 修改用户
[root@localhost ~]# usermod -d /home Brenda
[root@localhost ~]# su - Brenda
[user01@localhost ~]$ pwd
/home
- -c<备注>:修改用户帐号的备注文字。
- -a:追加,默认的修改是覆盖
- -d登入目录>:修改用户登入时的目录。
- -e<有效期限>:修改帐号的有效期限。
- -f<缓冲天数>:修改在密码过期后多少天即关闭该帐号。
- -g<群组>:修改用户所属的群组。
- -G<群组>:修改用户所属的附加群组。
- -l<帐号名称>:修改用户帐号名称。
- -L:锁定用户密码,使密码无效。
- -s:修改用户登入后所使用的shell。
- -u:修改用户ID。
- -U:解除密码锁定
userdel 删除用户
userdel -r [用户帐号]
passwd 修改用户密码root
交互式
[root@localhost ~]# passwd test01
Linux非交互式密码修改命令
[root@localhost ~]# echo 123456 | passwd --stdin test01
chage :
- -d:设置密码的最后更改日期
强制下次登陆重设密码:
1.先设置一个旧密码 passwd;
2.运行下面的指令;
3.logout 重新进入一个新会话;
4.输入旧密码,系统提示设置一个新密码,新密码需要复杂些否则而不予通过;
[root@localhost ~]# chage -d 0 test01
- -E 过期日期:设置账号的过期日期
- -I INACITVE:设置密码过期后若未更改,多少天后用户账号被禁用。
- -l:显示用户账号的密码过期信息。
- -m 最小天数:设置两次改变密码之间相距的最小天数
- -M 最大天数:设置将两次改变密码之间相距的最大天数
- -W 警告天数:设置密码过期前的警告天数
sudo用户提权:
-u:以指定用户或 ID 运行命令(或编辑文件)
eg : [test01@localhost ~]$ sudo -u Beth cat /etc/group
-l:显示出自己(执行 sudo 的使用者)的权限
eg : User test01 may run the following commands on localhost:
(ALL) ALL
-b:将要执行的指令放在后台执行
-i: 以目标用户身份运行一个登录 shell;可同时指定一条命令。相当于切换到root,不过只需要用户自己的密码即可。
- 设置用户密码
- 将在root将用户加入到wheel组里,不是所有用户都可以进行提权,只有组里的用户才可以
- sudo 命令
- 执行目标指令 如 chage -l root
papi ALL=/usr/sbin/,/sbin/,!/usr/sbin/fdisk
这是关于sudo权限的配置,主要作用是控制用户papi能通过sudo执行哪些系统命令。
papi | 目标用户 | 规则仅适用于名为 papi 的用户 |
|---|---|---|
ALL | 主机限制 | 规则适用于所有主机(如果是多主机环境,这里可替换为具体主机名) |
/usr/sbin/ | 允许执行目录 | 允许运行 /usr/sbin/ 目录下的所有命令 |
/sbin/ | 允许执行目录 | 允许运行 /sbin/ 目录下的所有命令 |
!/usr/sbin/fdisk | 具体命令禁止 | 特例排除:明确禁止运行 /usr/sbin/fdisk 命令(即使它在允许目录中) |
文件权限管理
| 权限 | 对文件的影响 | 对目录的影响 |
|---|---|---|
| r(读取) | 可以读取文件的内容 | 可以列出目录的内容(文件名),可以使用ls命令 |
| w(写入) | 可以更改文件的内容 | 可以创建或删除目录中的任一文件,可以使用touch、rm命令 |
| x(可执行) | 可以作为命令执行文件 | 可以访问目录的内容(取决于目录中文件的权限),可以使用cd命令 |
文件权限设置
chown 修改文件属主/属组
- -R: 处理指定目录以及其子目录下的所有文件
属组
[root@localhost ~]# chown :Beth test01
属主+属组
root@localhost ~]# chown Beth:Brenda test01
[root@localhost ~]# ll
total 8
-rw-------. 1 root root 1067 Jul 7 11:21 anaconda-ks.cfg
-rw-------. 1 root root 32 Jul 7 15:41 bash_history
d-w--w-r--. 2 Beth Brenda 6 Jul 8 07:52 test01
chmod 修改文件权限
u/g/o/a +-= rwx/rw-/...- 八进制语法 chmod 644 文件名 读 r 4 列出目录内容(如用 ls 查看目录下的文件列表)。
写 w 2 修改目录内容(创建、删除、重命名目录内的文件或子目录touch 、rm)。
执行 x 1 进入目录(如用 cd 进入该目录,或访问目录内的文件/子目录的元数据)
单独对某个用户/组设置文件的acl权限
getfacl:查看文件的acl权限列表
- -c:不显示注释行
setfacl:单独对某个用户设置文件的acl权限
- -m:添加
- -x:删除
- -b:清除所有
- -m d: 可以设置默认ACL权限,来让目录下面的新建文件和文件夹都继承父目录的权限(否则对workdir设置的acl权限并不会被之后在workdir下创建的子文件和子目录继承)
添加权限-m u:user g:group
[root@localhost ~]# setfacl -m u:user1:rx /workdir/
[root@localhost ~]# setfacl -m g:worker2:rwx /workdir
移除权限-x u:user g:group
[root@localhost ~]# setfacl -x u:user1 /workdir/
继承操作:
注意,继承只是指子目录继承,default中的权限属于一种提示,不属于真正的权限,只有在root中执行setfacl -m u:user1:r-x /workdir/指令才能在user1中cd进workdir和workdir的下一层子目录。且只有当workdir建立在根目录之下每一个不同的用户才能对其进行操作。
[root@localhost ~]# setfacl -m d:u:user1:rx /workdir
mask 有效权限 指的是用户或群组能拥有的最大 ACL 权限,也就是说,给用户或群组设定的 ACL 权限不能超过 mask 规定的权限范围,超出部分做无效处理。
特殊权限 :
suid 所有人获得某个命令的属主的权限
注意:
- 只运行在可执行文件上,目录不行
- 执行该文件的所有者的权限,权限从属主处获得,因此是
u+s - 可执行文件例如
/usr/bin/rm和/usr/bin/cat,若直接给/usr/bin/rm设置 SUID需要额外注意,这会允许普通用户删除任何文件,导致系统灾难。我们将通过受控脚本实现安全删除。 - 对于本来就自带suid的文件,如/etc/passwd,权限是
-rwsr-xr-x,使得所有用户都可以使用passwd指令进行密码修改操作。
更改用户 user1 的密码
[user1@localhost ~]$ passwd
如果想某个文件添加suid权限,可以输入下面两个命令
chmod u+s file
chmod 4644 file
eg:
实例步骤:
1.在 根目录 下创建一个目录,目录下创建一个文件比如 file1(/workdir,如果直接创建mkdir workdir则是相对目录,其他用户没法进入到root的家目录下,也就没办法对其进行操作
2.文件在root下用chmod 000 file1 将其权限设置为0,即不可操作
3.在root下用chmod u+s file 例如rm,即chmod u+s /usr/bin/rm赋予其root的权限
4.切到任意用户比如user1,即可对文件采取rm操作,可将其删除
sgid 所有人获得某个命令的属组的权限
注意:
- 作用在二进制文件:和suid类似,不过权限从属组处获得,因此是
g+s - 作用在目录上:在这个目录下创建的文件会继承此目录的属组(不包含属主);如果一个文件拥有此权限时,可以借出所属组的权限。
如果想某个文件添加sgid权限,可以输入下面两个命令
chmod g+s file
chmod 2644

sticky 注意:
- sticky 权限只能运用于目录上,该目录下所有的文件和子目录只能由所属者或者root删除。
- 案例/tmp目录,该目录下在任意一个用户下创建一个文件,切到其他用户均不能对其进行修改或是删除。
如果想某个文件添加sticky权限,可以输入下面两个命令
chmod o+t
chmod 1644
文件属性
lsattr:查看文件的属性chattr:设置文件的属性- -i 不得任意更改文件或目录
- -a 设置文件或目录仅支持追加
- 文件的属性(只作了解)
umask 影响创建文件时的初始权限
文件最终权限=666-umask
目录最终权限=777-umask
如果想要修改umask的数值能够永久生效,可以写入到/etc/profile中
一些Linux常见文件保存的内容
/etc/passwd:用户信息
/etc/shadow:密码信息
/etc/group:组信息
/etc/gshadow:组密码
/etc/login.defs:创建用户时参考的一些设置
/etc/skel:创建新用户时会从此目录拷贝文件到新用户的家目录中






Comments NOTHING