linux用户及文件管理

时间:2021-11-22 05:16:57

帮助命令

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