linux用户及文件管理
帮助命令
whatis 命令 #显示命令的简短功能
man 命令 #查看手册页和命令描述
命令--help #适用于外部命令
help 命令 #适用于内部命令
type 命令 #查看命令内嵌还是外部
文件管理
位置判断
绝对路径 :从/开始
相对路径:以 . 或 .. 开始的
文件管理
touch/mkdir/mv/rm/cp #创建/修改/移动/删除/复制
#创建文件
touch #创建空文件,文件存在修改时间
touch file{1..n} #批量创建文件
vi file #vi创建文件
cat EOF<< >file #重定向创建文件
XXXXXX
EOF
echo"xxx">file #重定向创建文件
#创建目录
mkdir -p/a/b/c #父目录子目录一起创建
mkdir -v/a #创建显示信息
mkdir -p/a/{1..101} #批量创建目录
#移动文件
mv file1 file2 #重命名文件
mv /a/file1 /b #移动文件
#删除文件
rm -r/a/* #删除目录下所有文件
rm -rf/a/* #强制删除不提示
#复制文件
语法 cp-r 源文件 目标文件
cp -r /a /b #递归,包含目录下的子目录一并处理
#查看文件
ls -a 文件 #显示所有文件及文件夹
ls -l 文件 #格式化显示目录下的内容列表
cat -n 文件 #对输出的所有行进行编号
cat -b 文件 #对非空的输出行进行编号
cat -s 文件 #多行的空行合并为一个空行
more 文件 #分布显示文件内容,不支持向前翻页
less 文件 #可前后翻页
head -n 文件 #显示从文件头开始到n的行数,默认显示前10行
tail 文件 #显示文件尾部内容,默认显示末尾10行
tail -nf 文件 #动态显示文件末尾n行的内容
xfs文件系统备份与恢复
xfs备份介绍
XFS提供了 xfsdump 和 xfsrestore 工具协助备份XFS文件系统中的数据。xfsdump 按inode顺序备份一个XFS文件系统。
与传统的UNIX文件系统不同,XFS不需要在dump前被卸载;对使用中的XFS文件系统做dump就可以保证镜像的一致性。这与XFS对快照的实现不同,XFS的dump和restore的过程是可以被中断然后继续的,无须冻结文件系统。xfsdump 甚至提供了高性能的多线程备份操作,把一次dump拆分成多个数据流,每个数据流可以被发往不同的目的地。
首先了解一下xfsdump的备份级别有以下两种,默认为0(即完全备份)
完全备份 0
增量备份 1-9
备份
语法: xfsdump –f 备份存放位置 要备份路径
#交互式备份
xfsdump -f /opt/dump_sdb1 /sdb1
# -L 指定备份会话标签 -M 指定设备备份标签
#非交互式备份
xfsdump -f /opt/dump_sdb1 /sdb1-Ldump_sdb1-Mmedia0
# 指定文件备份
xfsdump -f /opt/dump_sda1_passwd-spasswd /sda1-Ldump_sda1_passwd-Mmedia1
#克隆目录到另一个目录
xfsdump -/sda1 | xfsrestore -/data/
#克隆指定目录到另一个目录
xfsdump--stest /sda1 | xfsrestore-/data/
恢复
语法: xfsrestore –f 指定恢复文件的位置 要恢复的目录
xfsrestore-f /opt/dump_sdb1 /sdb1
#指定恢复单个文件
xfsrestore -f/opt/dump_sdb1-spasswd /sdb1
用户管理
用户分类
超级用户: root 拥有对系统的最高的管理权
普通用户:系统用户 UID:1-999(RHEL7) 1-499(RHEL6)
本地用户 UID:1000+ 500+
虚拟用户:伪用户 一般不会用来登录系统的,它主要是用于维持某个服务的正常运行
#创建用户
useradd -m -u -d- g"初始组" -G"附加组" -s "登陆的shell" "用户"
-m 创建用户主目录/home
-g 设置用户的初始组名称或id
-G 设置用户附属组
-s 设置用户登陆shell ,/sbin/nologin 禁止登陆系统
-u 指定用户的uuid
-d 指定用户的主目录
#改变用户信息
usermod -aG 组名 用户名
-u UID
-d 宿主目录
-g 起始组 #只能有一个
-G 附加组 #可以有多个
-s 登录shell
-L 锁定
#删除用户及家目录
userdel -r user
#创建用户密码
passwd user
echo123456 |passwd --stdin user
#修改密码
chage 用来更改用户密码过期信息
-m:密码可更改的最小天数。为0时代表任何时候都可以更改密码
-M:密码保持有效的最大天数
-W:用户密码到期前,提前收到警告信息的天数
-E:帐号到期的日期。过了这天,此帐号将不可用
-d:上一次更改的日期,为0表示强制在下次登录时更新密码
-I:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用
-l:(list)列出当前的设置,由非特权用户来确定他们的密码或帐号何时过期
#添加用户到指定组
gpasswd
-a:添加用户到组;
-d:从组删除用户;
-A:指定管理员;
-M:指定组成员和-A的用途差不多;
-r:删除密码;
-R:限制用户登入组,只有组中的成员才可以用newgrp加入该组。
gpasswd -a users user
授权
#创建用户
useradd user
#编辑sudoers文件
vi /etc/sudoers
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
## Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
use rALL=(ALL) NOPASSWD:ALL
加%表示组,NOPASSWD表示使用sudo不需要密码认证
文件权限管理
文件基本权限
#查看文件权限
ll /etc/passwd
-rw-r--r--.1root root9305月2306:46 /etc/passwd
p 表示命名管道文件
d 表示目录文件
l 表示符号连接文件
- 表示普通文件
s 表示socket套接口文件,比如我们启用mysql时,会产生一个mysql.sock文件
c 表示字符设备文件
b 表示块设备文件
#文件属性说明
-|rw-|r--|r--|属主|属组|修改时间|对象:文件名
rw- 文件所有者对文件具有读取、写入的权限
r-- 用户组里用户则具有读取的权限
r-- 其他用户则具有读取的权限
#更改文件的属主和属组
语法:chown chgrp+文件或目录
chown user:user text.txt 更改文件的属主,属组
chown user text.txt 更改文件的属主
chown:user text.txt 更改文件的属组
chown -R user:user /text 更改目录的属主,属组
chgrp user text.txt 更改文件的属组
#修改权限
语法:chmod+ 文件或目录
+-= 添加或者删除对应的权限
r=4,w=2,x=1数字权限
u+-=(rwx) 添加删除拥有者权限
g+-=(rwx) 添加删除组的权限
o+-=(rwx) 添加删除其他的权限
a+-=(rwx) 添加删除所有用户的权限
chmodu+x test.txt 添加拥有者可执行的权限
chmoda-r text.txt 删除所有人可读的权限
#文件默认权限
umask 设定文件的缺省值,从权限中去掉部分权限
umask 000-777
默认创建目录权限为777-022=755
默认创建文件权限为666-022=644
修改umask的值,改变默认文件目录权限
vi/etc/profile | $[HOME]/.bash.profile | $[HOME]/.profile
if[$UID-gt199] && ["`id -gn`"="`id -un`"];then
umask002
else
umask022
#查看文件权限
ll /etc/passwd
-rw-r--r--.1root root9815月2517:34 /etc/passwd
stat -c %a /etc/passwd
644
stat -c %A /etc/passwd
-rw-r--r--
文件高级权限
特殊权限
SUID:限定:只能设置在二进制可执行程序上面,对目录设置无效。
功能:程序运行时的权限从执行者变更成程序所有者。
SGID:限定:既可以给二进制可执行程序设置,也可以对目录设置。
功能:在设置了SGID权限的目录下建立文件时,新创建的文件的所属组会继承上级目录的所属组。
Stickybit:粘滞位权限是针对目录的,对文件无效,也叫防删除位。
SGID SUID Stickybit
u=4,u+s | g=2,g+s | o=1,o+t
#增加特殊权限
chmod u+s text.txt 对文件需要可执行权限
chmod g+s /text 对目录使用
chmod o+t /text 只能针对目录
chmod 4777 text.txt 对文件需要可执行权限
chmod 2777 /text 对目录使用
chmod 1777 /text 只能针对目录
ACL访问控制列表
ACL: 访问控制列表
它是一种权限分配之外的普遍范式。例如,默认情况下你需要确认3个权限组:UGO。而使用ACL,你可以增加权限给其他用户或组别,可以允许指定的用户A、B、C拥有写权限而不再是让他们整个组拥有写权限。
#ACL参数解释
ACL_USER_OBJ: 相当于Linux里file_owner的权限
ACL_USER: 定义了额外的用户可以对此文件拥有的权限
ACL_GROUP_OBJ: 相当于Linux里group的权限
ACL_GROUP: 定义了额外的组可以对此文件拥有的权限
ACL_MASK: 定义了ACL_USER, ACL_GROUP_OBJ和ACL_GROUP的最大权限
ACL_OTHER: 相当于Linux里other的权限
#查看ACL
getfacl /etc/passwd
# file: etc/passwd
# owner: root
# group: root
user::rw-
group::r--
other::r--
#设置文件权限
#创建文件
touch a.txt
#查看acl
getfacl a.txt
# file: a.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--
#设置文件acl
setfacl -m:: a.txt 设置用户,组权限
setfacl -m: a.txt 设置mask的权限
#设置默认目录权限
setfacl -md::: /test 目录中所有新建文件都继承此权限,这个权限对目录本身不生效,并且不会影响目录中已经存在的文件
#删除acl权限
setfacl -x: a.txt 删除用户组acl权限
setfacl -xd:: a.txt 删除默认目录下acl权限
setfacl -b a.txt 删除所有acl权限
#acl权限复制
getfacl /text | setfacl --set-file=/text1
文件锁
chattr 命令的作用很大,通过chattr命令修改文件属性能够提高系统的安全性,包括(root)但是它并不适合所有的目录,chattr命令不能保护/,/dev,/tmp,/var等目录。
#chattr属性
chattr +-=文件#添加,删除,给予权限
chattr +a
对文件来说:只能在文件中追加数据,但现有数据不能删除也不能进行修改
对目录来说:只能只允许在目录中建立和修改文件,但是不允许删除
chattr +i
对文件来说:不能修改,删除文件,也不能添加和修改其内的数据,但可以查看文件里面的内容
对目录来说:只能修改目录下的文件数据,但不能建立和删除文件
lsattr 文件 #查看文件属性
#举例说明(针对文件)
touchb.txt
chattr+a b.txt
echo"123456">b.txt 无法修改
-bash: b.txt: 不允许的操作
echo"123456">>b.txt &&echook 可以追加
ok
chattr+i b.txt
echo"123456">b.txt
-bash: b.txt: 不允许的操作
echo"123456">>b.txt
-bash: b.txt: 权限不够
catb.txt 可以查看
123456
123456
123456
#举例说明(针对目录)
mkdirb
chattr+a b
touchb/{file1,file2}
rm-rfb/file1
rm: 无法删除"b/file1": 不允许的操作
echo123456>b/file1
catb/file1
123456
chattr+i b
touchb/file4
touch: 无法创建"b/file4":
rm-rfb/file1
rm: 无法删除"b/file1": 权限不够
echoaaaa>b/file1
catb/file1
aaaa
我是MIkel Pan,云计算爱好者,定期更新生活感悟,心灵进化者就在MIkel Pan,喜欢我就来找我吧!
博客园地址:http://www.cnblogs.com/plyx/
简书地址:https://www.jianshu.com/u/5986765934f4