一、文件的基本操作
文件的增删改查
文件的新建:touch filename 文件的改名:mv 文件的查看:ls 文件内容的查看:cat 文件的删除:rm [-r -f] 文件的拷贝:cp [-r -f -p] 文件的移动:mv
touch命令

#touch命令 新建文件和修改文件或者文件的时间戳 #命令语法: touch 【选项】 【文件名或者目录名】 #命令选项: -a 只修改文件的access(访问)时间. -c 或—no-create 不创建不存在的文件。 -d 使用指定的日期时间,而非现在的时间 -m 指修改Modify(修改)时间,而不修改access(访问)时间 -r file 使用指定file文件的时间戳(access,modify)更新文件的时间戳(access,modify) -t 将时间修改为参数指定的日期,如:10011150代表10月8号11点55分 #拓展:linux文件的三time stat命令:打印信息节点(inode)内容 atime:(access time)显示的是文件中的数据最后被访问的时间,比如系统的进程直接使用或通过一些命令和脚本间接使用。 mtime: (modify time)显示的是文件内容被修改的最后时间。 ctime: (change time)显示的是文件的权限、拥有者、所属的组、链接数发生改变时的时间。当然当内容改变时也会随之改变 rm命令
rm命令

rm命令 删除文件 #命令语法 rm [options] name… #命令选项 -i 删除前逐一询问确认。 -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。 -r 将目录及以下之档案亦逐一删除。
mv文件改名

mv命令 文件改名
命令语法:
mv old_file new_file
文件查看
#文件类型 - 普通文件 d 目录 l 链接文件 b 设备文件 c 字符设备 s 套接字文件 p 管道文件 #linux 文件颜色意义 绿色文件: 可执行文件,可执行的程序 红色文件:压缩文件或者包文件 蓝色文件:目录 白色文件:一般性文件,如文本文件,配置文件,源码文件等 浅蓝色文件:链接文件,主要是使用ln命令建立的文件 红色闪烁:表示链接的文件有问题 黄色:表示设备文件 灰色:表示其他文件
mv文件移动

#命令语法: mv [选项] 源文件或目录 目标文件或目录 #命令选项 -b:若需覆盖文件,则覆盖前先行备份。 -i:若指定目录已有同名文件,则先询问是否覆盖旧文件; -f:force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖; -u:若目标文件已经存在,且 source 比较新,才会更新(update) #拓展:mv src dST 改名 dst是一个文件夹的时候 执行是移动 dst不是一个文件夹的时候 执行改名
cp命令

#命令语法 cp [options] 源文件或目录 目标目录 #命令选项 -a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容 -d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。 -f:覆盖已经存在的目标文件而不给出提示。 -i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。 -p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。 -r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。 -l:不复制文件,只是生成链接文件。
文件内容查看
文件内容查看之cat命令(打印全部到屏幕)

#cat 命令用于连接文件并打印到标准输出设备上。 #命令语法 cat [选项列表] [文件列表] #命令选项 -n 或 --number: 由 1 开始对所有输出的行数编号。 -b 或 --number-nonblank: 和 -n 相似,只不过对于空白行不编号。 -s 或 --squeeze-blank: 当遇到有连续两行以上的空白行,就代换为一行的空白行。 -v 或 --show-nonprinting: 使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。 -E 或 --show-ends : 在每行结束处显示 $。 -T 或 --show-tabs: 将 TAB 字符显示为 ^I。 -A, --show-all: 等价于 -vET。 -e: 等价于"-vE"选项; -t: 等价于"-vT"选项;
文件内容查看之head命令(默认打印前10行到屏幕)
head - 输出文件的开始部分 命令语法 head [OPTION] [FILE] 命令选项 -c, --bytes=SIZE 打印字节的个数 -n, --lines=NUMBER 修改打印的行数 -q, --quiet, --silent 从不显示给出文件名的首部 -v, --verbose 总是显示给出文件名的首部 --help 显示帮助后退出 --version 输出版本信息后退出
文件内容查看之tail命令(默认打印末尾10行)

#命令语法 tail [OPTION] [FILE] #命令选项 -f 循环读取 ,例如,日志一直更像,那么tail也更新 -v 显示详细的处理信息 -c<数目> 显示的字节数 -n<行数> 显示文件的尾部 n 行内容 #延申: tail -n +5 FILE 从第5行打印到末尾
二、文件夹的基本操作
新建文件夹:mkdir 文件夹改名:mv 文件夹插卡:ls 空文件夹的删除:rmdir 不为空的文件夹的删除:rm -rf 递归删除 文件夹移动:mv 文件夹拷贝:cp [-r -p -f]
mkdir命令
#命令语法 mkdir [选项] 目录 #命令选项 -v 显示创建信息信息 -p 递归创建
rmdir命令
#命令语法 rmdir [options] directory #命令选项 -p 递归删除空目录
三、vim文本编辑器
文本编辑器的模式
1)命令行模式 2)输入模式、编辑模式 3)末行模式 4)替换模式
命令行模式

存盘 ZZ 保存退出 #光标移动: 移动光标 h j k l 左 下 上 右 光标移到本行开头home 移到本行末尾 end 光标移到末尾 G 光标移到开头gg 光标移动一个单词w #粘贴复制: 复制一行 yy 复制 n行 nyy 粘贴 p #删除: 删除字符 x 向后删除 X 向前删除 删除一行 dd ndd 删除一个单词 dw #撤销: 撤销操作 u 向上一步 . 重复上一次操作 #查找: 查找/string define 转义字符 查找“/bin/bash” //bin/bash #删除与修改 “编辑”是指文字的添加、修改以及删除,甚至包括文字区块的移动、复制等。 在vim 中一般认为输入与编辑是两个概念。 编辑是在命令模式下进行的,先利用命令移动光标来定位到要进行编辑的地方,然后再使用相应的命令进行编辑;而输入是在插入模式下进行的。 在命令模式下常用的编辑命令: x 删除光标所在字符。 dd 删除光标所在的行。 r 修改光标所在字符,r 后是要修正的字符。 R 进入替换状态,输入的文本会覆盖原先的资料。 s 删除光标所在字符,并进入输入模式。 S 删除光标所在的行,并进入输入模式。 cc 修改整行文字。 u 撤消上一次操作。 . 重复上一次操作。
编辑模式

#输入模式 在输入模式下,屏幕的左下方会出现INSERT 字样。 在输入状态下,用户可以输入文本的内容 在插入模式下也可以删除字符,而标准的vim 编辑器在编辑状态下不能删除字符,只能插入字符 #如何从命令行模式进入输入模式 a 从光标所在位置后面开始输入资料,光标后的资料随增加的资料向后移动。 A 从光标所在行最后面的位置开始输入资料。 #插入(insert) i 从光标所在位置前面开始插入资料,光标后的资料随新增资料向后移动。 I 从光标所在行的第一个非空白字符前面开始插入资料。 #开始(open) o 在光标所在行下新增一行并进入输入模式。 O 在光标所在行上方新增一行并进入输入模式。 如何退出输入模式 esc
末行模式

#只要在命令模式下输入命令“:”即可进入末行模式。 在末行模式下,可以进行保存文件、退出vim、进行查找和替换等操作。 : 当同时编辑多个文件时 因为同一时间只能显示一个文件,所以在VI中切换打开的文件可以使用N或n来切换打开的文件 :n 切换下一个文件 :N 切换上一个文件 :q 退出 :q! 强制退出不保存 :w :wq #替换 :s/old/new 只替换光标所在行的第一个old string :s/old/new/g 将本行(光标)的所有old string替换为new string g global n代表一个#行号 :%s/old/new/g 将本文中所有的old string替换为new string :1,2s/old/new/g 替换1到2行中的old string为new string :.,2s/old/new/g .代表光标所在行 当前行到第二行的 :2,$s/old/new/g 替换2到最后一行中的old string为new string :set nu 显示行号 :set nonu :!command 在vim编辑器中执行一条命令(不许要退出当前的编辑,可以在编辑器中执行命令,类似退出编辑器执行命令) #查找 /string 将光标定位到string 所在的行。 ?string 将光标移动到最近的一个包含 string 字符串的行 :n 把光标定位到文件的第n 行。 #保存文档 可以用:n,mw filename 命令将第n 行到第m 行的文字存放的所指定的filename 文件中。
替换模式

命令行下按R键进入替换模式
退出
esc
用户和组
Linux用户分类
#超级管理员: UID为0 root用户拥有至高无上的命令,root用户不能改名 #系统用户: UID小于1000,用于管理服务,一般不允许登陆 #普通用户: UID大于或等于1000,权限较小,允许登陆,只能使用bin下命令 #用户的增删改该查 useradd userdel usermod /etc/passwd /etc/shadow 查看两个配置文件
useradd创建用户

#语法 useradd 【选项】 用户名 (注意:用户名不能超过32字符) -b, --base-dir BASE_DIR 新账户的主目录的基目录 -c, --comment COMMENT 描述 -d, --home-dir HOME_DIR 新账户的家目录 -D, --defaults 显示或更改默认的 useradd 配置 -e, --expiredate EXPIRE_DATE 新账户的过期日期 -f, --inactive INACTIVE 是否启用过期 -g, --gid GROUP 新账户主组的名称或 ID -G, --groups GROUPS 新账户的附加组列表 -h, --help 显示此帮助信息并推出 -k, --skel SKEL_DIR 使用此目录作为骨架目录 -K, --key KEY=VALUE 不使用 /etc/login.defs 中的默认值 -l, --no-log-init 不要将此用户添加到最近登录和登录失败数据库 -m, --create-home 创建用户的主目录 -M, --no-create-home 不创建用户的主目录 -N, --no-user-group 不创建同名的组 -o, --non-unique 允许使用重复的 UID 创建用户 -p, --password PASSWORD 加密后的新账户密码 -r, --system 创建一个系统账户 -R, --root CHROOT_DIR chroot 到的目录 -s, --shell SHELL 新账户的登录 shell -u, --uid UID 新账户的用户 ID -U, --user-group 创建与用户同名的组 -Z, --selinux-user SEUSER 为 SELinux 用户映射使用指定 SEUSER

新建以下4个用户 1、user01 UID1500 附属root组 家目录 /tmp/user01 登陆shell/bin/bash 2、user02 系统用户 不要家目录 不允许交互登陆 3、user03启用过期 过期时间为2019-6-20 4、user04 UID为0 GID为0

useradd -u 1500 -G root -m /tmp/user01 -s shell/bin/bash user01 useradd -r -M -s /sbin/nologin user02 useradd -f 3 -e 2019-6-20 user03 #(这里的3是在禁用时间3天后彻底禁用) useradd -o -u 0 -g 0 user04
passwd密码设置

语法 passwd [选项] 用户名 -l lock 锁定 -u unlock 解锁 -d 删除密码 -S This will output a short information about the status of the password for a given account. --stdin标准输入 echo linux |passwd --stdin vfast 1 > 0 #交互式修改密码 root修改用户密码,passwd user03 用户自己修密码 passwd #标准输入 echo '123' |passwd --stdin user03
userdel删除用户

#删除用户 userdel [选项] 用户名 -f强制 -r递归删除 #用户属性的修改 user [选项] 用户名 -c, --comment 注释 GECOS 字段的新值 -d, --home HOME_DIR 用户的新主目录 -e, --expiredate EXPIRE_DATE 设定帐户过期的日期为 EXPIRE_DATE -f, --inactive INACTIVE 过期 INACTIVE 天数后,设定密码为失效状态 -g, --gid GROUP 强制使用 GROUP 为新主组 -G, --groups GROUPS 新的附加组列表 GROUPS -a, --append GROUP 将用户追加至上边 -G 中提到的附加组中, 并不从其它组中删除此用户 -h, --help 显示此帮助信息并推出 -l, --login LOGIN 新的登录名称 -L, --lock 锁定用户帐号 -m, --move-home 将家目录内容移至新位置 (仅于 -d 一起使用) -o, --non-unique 允许使用重复的(非唯一的) UID -p, --password PASSWORD 将加密过的密码 (PASSWORD) 设为新密码 -R, --root CHROOT_DIR chroot 到的目录 -s, --shell SHELL 该用户帐号的新登录 shell -u, --uid UID 用户帐号的新 UID -U, --unlock 解锁用户帐号 -Z, --selinux-user SEUSER 用户账户的新 SELinux 用户映射
change修改用户的属性

-m 密码可更改的最小天数。为零时代表任何时候都可以更改密码。 -M 密码保持有效的最大天数。 -W 用户密码到期前,提前收到警告信息的天数。 -E 帐号到期的日期。过了这天,此帐号将不可用。 -d 上一次更改的日期 如果设置为0 用户下次登录必须改密码 -i 停滞时期。如果一个密码已过期这些天,那么此帐号将不可用 -l 例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。 #交互式修改(注意是chage,不是change) [root@localhost ~]# chage user03 正在为 user03 修改年龄信息 请输入新值,或直接敲回车键以使用默认值 最小密码年龄 [0]: 3 最大密码年龄 [99999]: 365 最近一次密码修改时间 (YYYY-MM-DD) [2019-06-19]: 密码过期警告 [7]: 2 密码失效 [3]: 2 帐户过期时间 (YYYY-MM-DD) [2019-06-20]: 2 [root@localhost ~]# passwd -S user03 user03 NP 2019-06-19 3 365 2 2 (密码为空。) #非交互式 [root@localhost ~]# chage -m 10 -M365 -W 3 -I1 -E 2019-06-19 user03 [root@localhost ~]# passwd -S user03 user03 NP 2019-06-19 10 365 3 1 (密码为空。)
组管理
#组的增删改查 groupadd groupdel groupmod gpasswd组密码
1、groupadd创建组

用法:groupadd [选项] 组 选项: -f, --force 如果组已经存在则成功退出 并且如果 GID 已经存在则取消 -g -g, --gid GID 为新组使用 GID -h, --help 显示此帮助信息并推出 -K, --key KEY=VALUE 不使用 /etc/login.defs 中的默认值 -o, --non-unique 允许创建有重复 GID 的组 -p, --password PASSWORD 为新组使用此加密过的密码 -r, --system 创建一个系统账户 -R, --root CHROOT_DIR chroot 到的目录 #例如 groupadd admin vim /etc/group 按G切到最后
2、groupmod修改组属性

#用法:groupmod [选项] 组 #选项: -g, --gid GID 将组 ID 改为 GID -h, --help 显示此帮助信息并推出 -n, --new-name NEW_GROUP 改名为 NEW_GROUP -o, --non-unique 允许使用重复的 GID -p, --password PASSWORD 将密码更改为(加密过的) PASSWORD -R, --root CHROOT_DIR chroot 到的目录 #l例子 groupmod admin -n admin123 将组名修改为admin123
3、gpasswd命令

#创建修改组密码 gpasswd 组名 gpasswd -r 组名 (移除组密码) #用法:gpasswd [选项] 组 #选项: -a, --add USER 添加用户 -d, --delete USER 删除用户 -h, --help 显示此帮助信息并推出 -Q, --root CHROOT_DIR 要 chroot 进的目录 -r, --delete-password 删除组密码 -R, --restrict 向其成员限制访问组 GROUP -M, --members USER,... 设置组 GROUP 的成员列表 -A, --administrators ADMIN,... 添加管理员 例子 #创建管理员 gpasswd -A user01 group123 #管理员的可以添加和删除成员 [user06@localhost ~]$ gpasswd -d user02 admin1 正在将用户“user02”从“admin1”组中删除 [user06@localhost ~]$ gpasswd -a user02 admin1 正在将用户“user02”加入到“admin1”组中

#知道组密码,临时切到某个组 [root@localhost ~]# useradd user1 [root@localhost ~]# [root@localhost ~]# su - user1 [user1@localhost ~]$ [user1@localhost ~]$ touch a [user1@localhost ~]$ [user1@localhost ~]$ ll 总用量 0 -rw-rw-r--. 1 user1 user1 0 6月 19 10:33 a [user1@localhost ~]$ [user1@localhost ~]$ newgrp admin1 密码: [user1@localhost ~]$ touch b [user1@localhost ~]$ ll 总用量 0 -rw-rw-r--. 1 user1 user1 0 6月 19 10:33 a -rw-r--r--. 1 user1 admin1 0 6月 19 10:33 b -R不允许别人临时切换到组内 [root@localhost ~]# gpasswd -R admin1 [root@localhost ~]# [root@localhost ~]# su - user1 上一次登录:三 6月 19 10:33:22 CST 2019pts/0 上 [user1@localhost ~]$ [user1@localhost ~]$ newgrp admin1 密码: 无效的密码。(输入的是正确的密码)
4、相关文件
/etc/passwd 用户账户信息。 /etc/shadow 安全用户账户信息。 /etc/group 组账户信息。 /etc/gshadow 安全组账户信息。 /etc/default/useradd 账户创建的默认值。 /etc/skel/ 包含默认文件的目录。 /etc/login.defs Shadow 密码套件配置。
文件与文件夹的权限
1、基本权限
1.1chmod命令
chmod - 改变文件的访问权限 #命令语法 chmod [options] mode file... #命令选项 -R 递归设置权限,针对目录有效 #mode 谁给什么权限 u(所有者) g(所属组) o(其他人) a(所有人) #权限 r 读 w 写 x 执行

方式一通过 + - = 使用+-改权限,直接按需求加减即可+— 修改文件a的权限 [root@localhost ~]# ll a -rw-rw----. 1 root root 0 6月 19 19:26 a [root@localhost ~]# chmod o+r a [root@localhost ~]# ll a -rw-rw-r--. 1 root root 0 6月 19 19:26 a [root@localhost ~]# [root@localhost ~]# chmod g-w,u+x a #多个命令间用,号 [root@localhost ~]# ll a -rwxr--r--. 1 root root 0 6月 19 19:26 a 使用= [root@localhost ~]# ll b -rwxrwxr-x. 1 root root 0 6月 19 19:26 b [root@localhost ~]# chmod u=rw,g=rw,o=rw b [root@localhost ~]# [root@localhost ~]# ll b -rw-rw-rw-. 1 root root 0 6月 19 19:26 b 方式二,数字权限 r 读 4 w 写 2 x 执行 1 [root@localhost ~]# ll c -rwxr--r--. 1 root root 0 6月 19 19:26 c [root@localhost ~]# chmod 644 c [root@localhost ~]# ll c -rw-r--r--. 1 root root 0 6月 19 19:26 c
1.2 chown命令
#chown 修改文件或文件夹所有者 #命令语法 chown [options] user [:group] file... #命令选项 -R 递归设置,针对文件夹 chown 新所有者 文件名 chown 新的所有者.新的所属组 文件名 -R 递归修改

#修改权限 [root@localhost ~]# mkdir doc [root@localhost ~]# mv a b c doc/ [root@localhost ~]# [root@localhost ~]# ll doc/ 总用量 0 -rwxr--r--. 1 root root 0 6月 19 19:26 a -rw-rw-rw-. 1 root root 0 6月 19 19:26 b -rw-r--r--. 1 root root 0 6月 19 19:26 c #[root@localhost ~]# chmod -R 755 doc [root@localhost ~]# [root@localhost ~]# ll doc 总用量 0 -rwxr-xr-x. 1 root root 0 6月 19 19:26 a -rwxr-xr-x. 1 root root 0 6月 19 19:26 b -rwxr-xr-x. 1 root root 0 6月 19 19:26 c ---------------------------------------------------------------------------- #修改所有者 #修改单个文件所有者 [root@localhost ~]# cd doc/ [root@localhost doc]# [root@localhost doc]# ll 总用量 0 -rwxr-xr-x. 1 root root 0 6月 19 19:26 a -rwxr-xr-x. 1 root root 0 6月 19 19:26 b -rwxr-xr-x. 1 root root 0 6月 19 19:26 c #[root@localhost doc]# chown user1 a [root@localhost doc]# ll 总用量 0 #-rwxr-xr-x. 1 user1 root 0 6月 19 19:26 a -rwxr-xr-x. 1 root root 0 6月 19 19:26 b -rwxr-xr-x. 1 root root 0 6月 19 19:26 c #修改所有文件所有者 [root@localhost ~]# cd doc/ [root@localhost doc]# [root@localhost doc]# ll 总用量 0 -rwxr-xr-x. 1 root root 0 6月 19 19:26 a -rwxr-xr-x. 1 root root 0 6月 19 19:26 b -rwxr-xr-x. 1 root root 0 6月 19 19:26 c [root@localhost doc]# chown user1 a [root@localhost doc]# ll 总用量 0 -rwxr-xr-x. 1 user1 root 0 6月 19 19:26 a -rwxr-xr-x. 1 root root 0 6月 19 19:26 b -rwxr-xr-x. 1 root root 0 6月 19 19:26 c ------------------------------------------------ #修改所有组(所有者点后边的是组名) #改所有(只改组) [root@localhost ~]# chown -R user1.admin123 doc [root@localhost ~]# [root@localhost ~]# ll doc 总用量 0 -rwxr-xr-x. 1 user1 admin123 0 6月 19 19:26 a -rwxr-xr-x. 1 user1 admin123 0 6月 19 19:26 b -rwxr-xr-x. 1 user1 admin123 0 6月 19 19:26 c #改所有(所有者和组一起改) #[root@localhost ~]# chown -R root.root doc [root@localhost ~]# ll doc 总用量 0 -rwxr-xr-x. 1 root root 0 6月 19 19:26 a -rwxr-xr-x. 1 root root 0 6月 19 19:26 b -rwxr-xr-x. 1 root root 0 6月 19 19:26 c #改所有(直接点也行) #[root@localhost ~]# chown -R .admin123 doc [root@localhost ~]# ll doc 总用量 0 -rwxr-xr-x. 1 root admin123 0 6月 19 19:26 a -rwxr-xr-x. 1 root admin123 0 6月 19 19:26 b -rwxr-xr-x. 1 root admin123 0 6月 19 19:26 c #2修改单个 [root@localhost ~]# cd doc [root@localhost doc]# ll 总用量 0 -rwxr-xr-x. 1 root admin123 0 6月 19 19:26 a -rwxr-xr-x. 1 root admin123 0 6月 19 19:26 b -rwxr-xr-x. 1 root admin123 0 6月 19 19:26 c [root@localhost doc]# chown .root a [root@localhost doc]# ll 总用量 0 -rwxr-xr-x. 1 root root 0 6月 19 19:26 a -rwxr-xr-x. 1 root admin123 0 6月 19 19:26 b -rwxr-xr-x. 1 root admin123 0 6月 19 19:26 c
1.3chgrp命令(change group)
#chgrp 改变所属的组 #命令语法 chgrp [选项] 组文件... #命令选项 -R 递归设置权限,针对目录有效 chgrp 新所有组 文件名 chown .新的所属组 文件名

#改所有 [root@localhost ~]# ll doc 总用量 0 -rwxr-xr-x. 1 root root 0 6月 19 19:26 a -rwxr-xr-x. 1 root admin123 0 6月 19 19:26 b -rwxr-xr-x. 1 root admin123 0 6月 19 19:26 c #[root@localhost ~]# chgrp -R root doc [root@localhost ~]# ll doc 总用量 0 -rwxr-xr-x. 1 root root 0 6月 19 19:26 a -rwxr-xr-x. 1 root root 0 6月 19 19:26 b -rwxr-xr-x. 1 root root 0 6月 19 19:26 c #自定义更改个数 [root@localhost ~]# cd doc [root@localhost doc]# ll 总用量 0 -rwxr-xr-x. 1 root root 0 6月 19 19:26 a -rwxr-xr-x. 1 root root 0 6月 19 19:26 b -rwxr-xr-x. 1 root root 0 6月 19 19:26 c [root@localhost doc]# chgrp admin123 a (#可以指定 两个或多个) [root@localhost doc]# ll 总用量 0 -rwxr-xr-x. 1 root admin123 0 6月 19 19:26 a -rwxr-xr-x. 1 root root 0 6月 19 19:26 b -rwxr-xr-x. 1 root root 0 6月 19 19:26 c
2、特殊权限
#linux特殊权限 7 777 #suid 4 当一个二进制文件拥有SUID权限后,当其他用户执行该二进制文件的时候,该二进制文件就会以他所有者的权限去执行 #sgid 2 要求文件夹下的新建的子文件夹或者子文件继承父文件夹的属组 #sticky bit 1 如果给文件夹 赋予粘连位 则该文件夹下的文件或文件夹只能由所有者及ROOT删除

[root@localhost ~]# useradd a1 [root@localhost ~]# su - a1 #[a1@localhost ~]$ shutdown -r now #要求立马重启, User root is logged in on sshd. #只有root才有这个权限 User root is logged in on tty1. #Please retry operation after closing inhibitors and logging out other users. Alternatively, ignore inhibitors and users with 'systemctl reboot -i'. [a1@localhost ~]$ exit [root@localhost ~]# ll /sbin/shutdown lrwxrwxrwx. 1 root root 16 6月 14 04:14 /sbin/shutdown -> ../bin/systemctl [root@localhost ~]# ll /bin/systemctl -rwxr-xr-x. 1 root root 717688 10月 31 2018 /bin/systemctl 此时发现权限是755 [root@localhost ~]# chmod 4755 /bin/systemctl #修改了权限 [root@localhost ~]# ll /bin/systemctl -rwsr-xr-x. 1 root root 717688 10月 31 2018 /bin/systemctl 此时权限是4755 (相当于,此时任何人来操作改文件,都会认为是root在操作) [root@localhost ~]# su a1 [a1@localhost root]$ shutdown -r +10 #10分钟后重启 可以执行重启 Shutdown scheduled for 三 2019-06-19 21:46:08 CST, use 'shutdown -c' to cancel. [a1@localhost root]$ shutdown -c #关闭上边的重启命令

[root@localhost ~]# cd doc [root@localhost doc]# ll -rwxr-xr-x. 1 root admin123 0 6月 19 19:26 a #(doc的属组为admin123) -rwxr-xr-x. 1 root admin123 0 6月 19 19:26 b -rwxr-xr-x. 1 root admin123 0 6月 19 19:26 c [root@localhost doc]# touch d #创建一个文件d [root@localhost doc]# ll -rwxr-xr-x. 1 root admin123 0 6月 19 19:26 a -rwxr-xr-x. 1 root admin123 0 6月 19 19:26 b -rwxr-xr-x. 1 root admin123 0 6月 19 19:26 c -rw-r--r--. 1 root root 0 6月 19 21:54 d #d文件属组是root 怎么让创建的文件和doc(父文件)属组相同呢 [root@localhost doc]# cd ~ [root@localhost ~]# chmod 2755 doc #修改了权限 [root@localhost ~]# ll -d doc drwxr-sr-x. 2 root admin123 42 6月 19 21:54 doc #多了一个s, [root@localhost ~]# [root@localhost ~]# cd doc [root@localhost doc]# touch e #新建文件e [root@localhost doc]# ll 总用量 0 -rwxr-xr-x. 1 root admin123 0 6月 19 19:26 a -rwxr-xr-x. 1 root admin123 0 6月 19 19:26 b -rwxr-xr-x. 1 root admin123 0 6月 19 19:26 c -rw-r--r--. 1 root root 0 6月 19 21:54 d -rw-r--r--. 1 root admin123 0 6月 19 21:57 e #e的属组与父文件夹相同 [root@localhost doc]#

#粘连位一般用于公共目录上, [root@localhost ~]# mkdir /opt/publish #创建一个公共文件夹 [root@localhost ~]# chmod 777 /opt/publish #修改文件夹的权限 [root@localhost ~]# ll -d /opt/publish/ drwxrwxrwx. 2 root root 6 6月 19 22:06 /opt/publish/ [root@localhost ~]# useradd us01 #创建两个用户 [root@localhost ~]# useradd us02 [root@localhost ~]# su - us01 #切入用户1 [us01@localhost ~]$ cd /opt/publish/ #进入公共文件夹 [us01@localhost publish]$ touch x0 #在文件夹下创建两个文件 [us01@localhost publish]$ touch x1 [us01@localhost publish]$ exit 登出 [root@localhost ~]# su - us02 #切入用户2 [us02@localhost ~]$ cd /opt/publish/ #进入公共文件夹 [us02@localhost publish]$ [us02@localhost publish]$ ll #查看公共文件夹的内容 -rw-rw-r--. 1 us01 us01 0 6月 19 22:09 x0 -rw-rw-r--. 1 us01 us01 0 6月 19 22:10 x1 [us02@localhost publish]$ touch x2 x3 #用户2 创建两个文件夹 [us02@localhost publish]$ ll -rw-rw-r--. 1 us01 us01 0 6月 19 22:09 x0 -rw-rw-r--. 1 us01 us01 0 6月 19 22:10 x1 -rw-rw-r--. 1 us02 us02 0 6月 19 22:12 x2 -rw-rw-r--. 1 us02 us02 0 6月 19 22:12 x3 [us02@localhost publish]$ rm -rf x1 #用户2把用户1创建文件删除 [us02@localhost publish]$ [us02@localhost publish]$ ll 总用量 0 -rw-rw-r--. 1 us01 us01 0 6月 19 22:09 x0 -rw-rw-r--. 1 us02 us02 0 6月 19 22:12 x2 -rw-rw-r--. 1 us02 us02 0 6月 19 22:12 x3 [us02@localhost publish]$ exit 登出 [root@localhost ~]# chmod 1755 /opt/publish/ #修改权限,权限修改后,文件只能由创建者删除 [root@localhost ~]# [root@localhost ~]# ll -d /opt/publish/ drwxr-xr-t. 2 root root 40 6月 19 22:13 /opt/publish/ [root@localhost ~]# [root@localhost ~]# [root@localhost ~]# su us02 [us02@localhost root]$ [us02@localhost root]$ ll ls: 无法打开目录.: 权限不够 [us02@localhost root]$ cd /opt/publish/ [us02@localhost publish]$ [us02@localhost publish]$ ll 总用量 0 -rw-rw-r--. 1 us01 us01 0 6月 19 22:09 user08 -rw-rw-r--. 1 us02 us02 0 6月 19 22:12 x2 -rw-rw-r--. 1 us02 us02 0 6月 19 22:12 x3 [us02@localhost publish]$ rm -rf x2 x3 rm: 无法删除"x2": 权限不够 rm: 无法删除"x3": 权限不够
3、file ACL权限
#个性化定制权限 例如场景, root rw- root r-- other r-- 需要把用户user1,user2 添加权限为rwx 把组admin123添加权限 rw-
3.1getfacl与setfacl命令
#getfacl 查看文件权限 #命令语法 getfacl file... #setfacl 修改文件权限 #命令语法 setfacl [选项] file... #命令选项 -m 修改acl -x 删除acl -b 删除所有acl -k 删除默认的acl -R 递归

[root@localhost ~]# getfacl top # file: top # owner: root # group: root user::rw- group::r-- other::r-- [root@localhost ~]# setfacl -m group:admin123:rwx top #给组改 [root@localhost ~]# setfacl -m user:user1:rwx top #给用户改

#场景,两个用户,对一个添加权限 [root@localhost ~]# useradd user11 [root@localhost ~]# useradd user22 #创建两个用户 [root@localhost ~]# touch /opt/file1 [root@localhost ~]# chmod 600 /opt/file1 #创建文件夹,并仅对管理员附加权限 [root@localhost ~]# su - user11 [user11@localhost ~]$ cd /opt/ [user11@localhost opt]$ cat file1 cat: file1: 权限不够 [user11@localhost opt]$ [user11@localhost opt]$ exit #切换带user1查看创建的文件,没有权限 登出 [root@localhost ~]# [root@localhost ~]# setfacl -m user:user11:rw /opt/file1 #添加权限 [root@localhost ~]# [root@localhost ~]# su - user11 [user11@localhost ~]$ cat /opt/file1 #可以查看 [user11@localhost ~]$ [user11@localhost ~]$ exit 登出 [root@localhost ~]# [root@localhost ~]# su - user22 #user22没有权限 [user22@localhost ~]$ [user22@localhost ~]$ cat /opt/file1 cat: /opt/file1: 权限不够 [user22@localhost ~]$
4、隐藏权限
chatter命令
chattr [+-=][ASacdistu] 文件或文件名 命令选项: + : 增加某个特殊参数,其他原本存在的参数不动。 - : 删除某个特殊参数,其他原本存在的参数不动。 = : 设置一定,且仅有后面接的参数 A : 当设置了A属性时,这个文件(或目录)的存取时间atime(access)将不可被修改,可避免例如手提电脑有磁盘I/O错误的情况发生。 S : 这个功能有点类似sync。就是将数据同步写入磁盘中。可以有效地避免数据流失。 a : 设置a之后,这个文件将只能增加数据,而不能删除,只有root才能设置这个属性。 c : 这个属性设置之后,将会自动将此文件“压缩”,在读取的时候将会自动解压缩,但在存储的时候,将会先进行压缩后再存储(对于大文件有用)。 d : 当执行dump(备份)程序的时候,设置d属性将可使该文件(或目录)具有转储功效。 i : i的作用很大。它可以让一个文件“不能被删除、改名、设置连接,也无法写入或新增数据”。对于系统安全性有相当大的帮助。 j : 当使用ext3文件系统格式时,设置j属性将会使文件在写入时先记录在journal中。但是,当文件系统设置参数为data=journalled时,由于已经设置日志了,所以这个属性无效。 s : 当文件设置了s参数时,它将会从这个硬盘空间完全删除。 u : 与s相反,当使用u来设置文件时,则数据内容其实还存在磁盘中,可以用来还原删除. 注意:这个属性设置上,比较常见的是a与i的设置值,而且很多设置值必须要root才能设置。
4.2lsattr命令
lsattr 文件或文件名
查看文件或文件夹的隐藏权限