IO,用户与组管理,文件,目录权限管理

 
 
   文件统配
匹配模式:元字符
文件名通配符
*匹配任意长度的任意字符
[root@localhost ~]# ls /root/D*
/root/Desktop  /root/Documents  /root/Downloads

?匹配单个任意字符
[root@localhost ~]# ls /root/a?b
 /root/akb    /root/alb

[]匹配自带范围内的任意单个字符[1-9] [a-z] [a-z0-9]a-z,0-9中单个字符  
[root@localhost ~]# ls /root/a[a-z]b
/root/akb  /root/alb
[root@localhost ~]# ls /root/a[1-9]b
/root/a1b  /root/a3b
pa[0-9][0-9]  
数字:200-290=2[1-9][1-9]

[[:upper:]]  :所有大写字母
[[:lower:]]  :所有小写字母
[[:alpha:]]  :所有字母
[[:digit:]]   :所有数字
[[:alnum:]]  :所有的字母和数字
[[space]]   :所有空白字符    touch /root/a\ b     文件a空格b
[[:punct:]]  :所有标点符号

\转义字符    

[^] :匹配范围外的任意单个字符
[^[:upper:]]  
[^0-9]  

查找以m,n,r,p开头,以.conf文件结尾的文件
ls [m-nr-p]*.conf

IO重定向及管理
  可用于输入的设备,文件
   键盘,文件系统常规文件,网卡
  可用于输出的设备,文件
    键盘,文件,网卡

 程序的数据流有三种
 输入的数据流:<——  标准输出(stdin) 0   键盘
 输出的数据流   —–>  标准输出(stdou)1 显示器
 错误输出流     —–>  错误输出(stderr) 2  显示器
 
 fd 文件描述符
标准输入:0
标准输出:1
错误输出:2

io重定向
输出重定向 >  文件或者设备   ,重定向写数据时要非常注意 echo > /dev/sdb1
[root@localhost ~]# cat /etc/issue > /dev/tty1  重定向至终端
> 覆盖输出重定向
>> 追加重定向,IO流将输入到文件或设备后追加内容。
/dev/null  数据黑洞,将输出数据重定向至/dev/null ,设备/dev/null则会将它丢弃

cat /etc/issue >| /tmp/a.txt   强制覆盖输出

错误输出流重定向 2> ,2>>

合并正常输出流和错误输出流  &> ,&>>
1   ls +dafsa &> /root/err.log       
2   ls +safa > /root/err.log 2>&1    这种不能使用:2>>&1
3   ls + asdfa 2> err.log  1> err.log

输入重定向
cat  <  /etc/issue

tr命令  字符替换
localhost ~]# tr [a-z] [A-Z] < /etc/issue
CENTOS RELEASE 6.8 (FINAL)
KERNEL \R ON AN \M
WELCOME XIONG LINUX……

-d  删除字符  tr -d ‘xiong’ < /etc/issue

<<  
[root@localhost ~]# cat << EOF
> xiong
> xiong
> EOF
xiong
xiong

[root@localhost ~]# cat > /tmp/cat.out << EOF
> xiong
> xiong
> EOF
[root@localhost ~]# cat /tmp/cat.out
xiong
xiong
[root@localhost ~]#

管道(|):将前一个命令的输出流当后一个命令的输入流

tee 将输出流数据保存,并将流副本交给下个管道命令
[root@localhost ~]# cat /etc/issue | tee /root/issue | tr 'xiong' 'jiangshuang'
CentOS release 6.8 (Final)
Kernel \r an an \m
welcame jiang linuj.…..
[root@localhost ~]# cat /root/issue
CentOS release 6.8 (Final)
Kernel \r on an \m
welcome xiong linux……

 
 
   用户,组,权限管理

用户登录系统时,需要对用户进行识别,这个过程就是认证的过程。
3A认证
用户标识,密码 authertication 认证
autherrization  授权(chmod,chown)
监督权限使用,审计audition    

进入系统后,用户遵循linux安全上下文规则
Linux安全上下文
运行中的程序:进程 (process)
以进程发起者的身份运行:
root: /bin/cat
mage: /bin/cat
进程所能够访问资源的权限取决于进程的运行者的身份

组:用户组,用户容器,将几个用户加入容器,并将文件权限授权给组,使用户
组内的用户能对授权文件进行操作。组也可以角色。

用户类别:有管理用户,普通用户(系统用户,登录用户)

用户标识: userid用户id   uid 组id 是个二进制数字:0-65535
管理员:0
普通用户:1-65535
   系统用户:1-499个 centos5,6   1-999个 centos7中
   登录用户:500-6000个centos5,6  1000-6000个centos7

名称解析,
username<—>uid  根据名称解析库进行解析(/etc/passwd)
   
组类别1:
     管理员组
     普通用户组(系统组,登录组)
     组标识:  groupid   ,gid
     管理员组:0
       系统组:1-499个,centos5,6, 1-999个,centos7
      普通用户组
         500-6000个,centos5,6   1000-6000个centos7
   
 名称解析 :将groupname<—–>gid ,/etc/group
  组类别2
      用户的主组
      用户的附加组

  组类别3
       私有组:组名同用户,且只包含一个用户
       公共组:组内包含了多个用户:
    
  认证信息
  通过对比事先存储的信息,与登录时提供的信息是否一致

密码使用策略:
 1.使用随机密码
 2. 最短长度不要低于8位
 3.大写字母,小写字母,数字,标点符号至少3类
 4.定期更换密码

加密算法
  对称加密,加密和解密使用同一个密码
  非对称加密:加密和解密使用的一对密钥,公钥与私钥
  单向加密:只能加密,不能解密,提取数据的特征码
     定长输出,有雪崩效应

 算法:md5  
       sha
       sha224
       sha256
       sha384
       sha512  $6$

/etc/passwd 用户的信息库
/etc/passwd
 [root@localhost ~]# tail /etc/passwd | grep xiong
xiong:x:1001:1001:注释信息(useradd -c “”可以创建):/home/xiong:/bin/bash
xiong: 用户名
x:占位符
uid:用户的uid
gid:用户所属的主组的id号
gecos:注释信息
directory:用户的家目录
shell:用户默认的shell

/etc/shadow
用户名:加密的密码:最近一次修改密码的时间:最短使用期限,最长使用期限,警告期段,有效期限:保留字段
用户名:
[root@localhost ~]# cat /etc/shadow |grep xiong
xiong:$6$iWlJ.Osu$6Ma.e092soQLmIPWzTsS8YSbYwQ9BUa4uAK9FPqiPmAFeYgNGxw7.HwrBorAsk12JCYBrW9FRX.pBG97k4lup0:a17009:b0:c99999:d7:e:f:
$分隔
$6$ 6表示用sha512加密
$iWlJ.Osu$随机数
密码6Ma.e092soQLmIPWzTsS8YSbYwQ9BUa4uAK9FPqiPmAFeYgNGxw7.HwrBorAsk12JCYBrW9FRX.pBG97k4lup0
登录用名
用户密码:一般用sha512加密 ,随机数加+密码,在通过sha5进行加密
从1970年1月1日起到密码最近一次被更改的时间    a17009
密码再过几天可以被变更(0表示随时可被变更)    b0
密码再过几天必须被变更(99999表示永不过期)  c99999
密码过期前几天系统提醒用户(默认为一周)          d7
密码过期几天后帐号会被锁定                                    e
从1970年1月1日算起,多少天后帐号失效。           f

/etc/group
[root@localhost ~]# cat /etc/group | grep xiong
xiong:x:1001:
xiong:组名   x密码占位符  gid组id   
user_list:该组的用户组成员,以次组为附加组的用户的用户列表
群组名称:就是群组名称
群组密码:
组管理员列表:组管理员的列表,更改组密码和成员
以当前组为附加组的用户列表:(分隔符为逗号)

/etc/gshadow
群组名称:就是群组名称
群组密码:
组管理员列表:组管理员的列表,更改组密码和成员
以当前组为附加组的用户列表:(分隔符为逗号)

linux 用户组管理
 groupadd,如果不指定的话,默认为上一个组id加1
-g –gid 指定用户组的组id

-r  创建系统组
 系统组:
  进程访问的文件权限,取决于发起者的权限
  为了让那些后台进程或服务类进程以非管理员的身份运行,通常需要为此创建多个普通用户,
  这个用户从来不用等了系统:仅仅是用来让其他进程以他身份来运行,从而获取普通权限的。
[root@localhost ~]# groupadd -r -g 306 marriadb

groupmod修改组属性
-n  修改组名               [root@localhost ~]# groupmod -n xiongdb(新名字) marriadb(旧名字)
-g   修改组id              [root@localhost ~]# groupmod -g 399 xiongdb

groupdel 删除组      [root@localhost ~]# groupdel testid

gpasswd 组添加密码
选项
-a username 向组中添加用户    将fdora加入netadmin组      gpasswd -a fdora netadmin
-d username 重组中移除用户   gpasswd -d fdora netadmin
-A user1,user2,…: 设置有管理权限的用户列表

groupmems [options] [action]      组成员管理
options:
-g –group groupname 更改为指定组 (只有root) Actions:
-a –add username 指定用户加入组
-d –delete username 从组中删除用户
-p –purge 从组中清除所有成员
-l –list 显示组成员列表

groups [OPTION].[USERNAME]…       查看用户所属组列表

newgrp   临时将用户组切换           newgrp user05, exit    退出组必须用

useradd  创建用户

-c添加注释信息          useradd  -c“test” user05
-u UID: [UID_MIN, UID_MAX]定义在/etc/login.defs     useradd -u 3000 docker
-o 配合-u 选项,不检查UID的唯一性
-g GID:指明用户所属基本组,可为组名,也可以GID        此组必须实现存在 useradd -g openstack xiong
-c "COMMENT":用户的注释信息
-d HOME_DIR: 以指定的路径(不存在)为家目录。默认在home目录自动创建,通过复制/etc/skel此目录并重命令实现的:  useradd -d /tmp/user09 user09
-s SHELL: 指明用户的默认shell程序        可用列表在/etc/shells文件中
-G GROUP1[,GROUP2,…]:为用户指明附加组,组必须事先存在  
-N 不创建私用组做主组,使用users组做主组
-r: 创建系统用户 CentOS 6: ID<500,CentOS 7: ID<1000
-m 强制为用户指定目录,并复/etc/skel环境等配置文件
-M 不创建主目录
-f 非活动期限,指用户到期后,登录系统,修改密码就行,值为-1

默认值设定:/etc/default/useradd文件中
GROUP=100     私有组
HOME=/home   创建家目录位置
INACTIVE=-1     非活动期限禁用
EXPIRE=         永不过期
SHELL=/bin/bash  默认shell
SKEL=/etc/skel    
CREATE_MAIL_SPOOL=yes  是否创建邮件队列,在/var/spool/mail创建邮件地址

用户创建时,需要用到的文件及目录
useradd -D
/etc/default/useradd  
/etc/skel/*                        目录的一些配置文件
/etc/login.defs                创建用户时一些配置文件

批量创建用户    
newusers passwd格式文件         passwd格式文件跟/etc/passwd一致
chpasswd 批量修改用户口令  

passwd修改用密码
-l-u 锁定和解锁
-e 过期期限 ,日期
-i  days 非活动期限
-n  days密码的最短使用期限
-x  密码的最长期限
-w 警告期限
–stdin 通过标准输出来设置用户名密码         echo "111111" | passwd –stdin user05

usermod 修改用户属性
-u  修改用户为此处的新id号
-g  修改用户所属的基本组       usermod -g openstack user09  新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项,表示append;
-a –append:与-G一起使用,用于为用户追加新的附加组。
-c修改注释信息
-d 修改用户的家目录,用户原有的文件不会被转移至新位置,必须与-m一起使用
-s 修改用户shell
-l login_name: 新的名字
-L: lock指定用户,在/etc/shadw 密码栏的增加 !
-U: unlock指定用户,将 /etc/shadow 密码栏的 ! 拿掉
-e YYYY-MM-DD: 指明用户账号过期日期;
-f INACTIVE: 设定非活动期限;

userdel删除用户
userdel -r user01 删除用户,同时删除用户目录

id  显示用户id,组id等信息
   -g或–group  显示用户所属群组的ID。
 -G或–groups  显示用户所属附加群组的ID。
 -n或–name  显示用户,所属群组或附加群组的名称。
 -r或–real  显示实际ID。
 -u或–user  显示用户ID。
 -help  显示帮助。

pwck 检查用户密码是否有问题
gpwck 检查用户组的密码是否有异常的
chage 命令 更改用户密码过期信息

su切换用户
登录式切换,会通过重新读取目标的配置文件来重新初始化
 su – 用户名  su – xiong  或者 su -l username

非登录式切换,不会读取目标用户的配置文件进行初始化
su 用户名
管理员切换至他用户,不需要用户密码,但是切换用户切换需要输入密码
-c 仅以指定用户的身份运行此处指定的命令
[root@localhost ~]# su – netadmin -c 'whoami'
netadmin

权限管理
 进程安全上下文:
      进程对文件的访问权限应用模型
      进程的属组与文件的属组是否相同,如果相同,则应用属组权限,
      否则,则检查进程属组是否与文件的属组;如果是,则应用属组权限。
      否则,就只能运用其他权限进程的属组与文件的属组是否相同,如果相同,则执行,如果不同则检查属组权限,如果有权限,则执行,如果没有,检查其他
用户权限,有权限则执行。)
      左三位定义属组权限,中三位为属组权限,右三位为其他用户权限

r:readable 4读权限  w writeable  2写权限  x  excuteable  1执行权限

文件:r:可以获取文件数据       access time
          w  可修改文件的数据      touch  文件  stat 文件 modify time
          x   可将此文件运行的进程  change time  
        文件一般没有执行文件,如果文件有执行权限,则有可能有问题。
     
目录  r 可用ls命令获取其下的所有文件列表,但是不获取详细信息
         w 可修改此目录下的文件列表
         x 可cd至此目录 ,可用ls -l 获取所有文件的详细属性信息。

权限组合机制:没有权限就用-代表
—   000     0     没有读写,执行权限
–x   001     1
-w-  010     2
-wx  011     3
r–   100     4
r-x   101     5
rw-  110     6
rwx  111     7         规律为,有相应权限为则为1,没有相应权限则为0
     二进制  八进制

chmod命令有三种      在递归中X只给目录加执行权限,目录内文件不加执行权限
赋值表示:直接操作一类用户的所有权限位
属主u=  属组g=  其 他用户o=   所有a=
如果想同时给u,g,o赋值则可以用‘,‘分开。如果两u,g,o相同则可写成ugo=,
如果没有权限,则不写
如:
[root@localhost ~]chmod u=rwx,g=x,o=r  /root/f2
给文件f2属主加读写执行权限,给属组加执行权限,给其他用户执行权限
chmod u=rwx,g=wx,o=rx /root/2

授权表示法 :直接操作一类用户的一个权限位,属主,属组,其他用户权限相同时可连写 (ug, ugo,uo)
u+,u-   u+r  u+w u+x  u-r u -w o-x
g+,g-
o+g-
a+a-    这个时候可以省略a    chmod +w  f2等同于 chmod a+w  ,前面命令等同于同时加上w权限
如果
 [root@localhost ~]# ll f2
-rwxr-x–x 1 root root 5 Jul 28 08:59 f2
[root@localhost ~]# chmod ugo-x f2
[root@localhost ~]# ll f2
-rw-r—– 1 root root 5 Jul 28 08:59 f2

2.八进制表示法
x 1  w 2 x4
如:
chmod 740 f2   chmod 777 f2   chmod 111  f2
3.引用性修改,参考某个文件的权限,并将这个文件的权限赋值给文件,如
    chmod –reference=/var/log/messages f2  

选项
-r 递归修改目录文件内的权限,一般应用到授权表示法,不建议不加思索是使用赋值和8进制法修改

从属关系管理命令
chown,chgrp

选项 -R: 递归修改

chown -R xiong:root f2  将文件修改为xiong属主,并且文件属于root组
chown  -R –reference=/var/log/messges  f2

chgrp  组 文件
[root@localhost ~]# chgrp xiong shadow
[root@localhost ~]# ll
total 20
drwxr-xr-x. 2 xiong xiong 4096 Jul 29 17:40 addd
-rw——-. 1 root  root    56 Jul 29 12:02 dead.letter
-rw-r–r–. 1 xiong root    27 Jul 29 12:13 f2
-rw-r–r–. 1 root  root    21 Jul 29 12:33 mail.txt
———-. 1 root  xiong 1054 Jul 28 10:03 shadow

对目录有写权限,目录下文件没有写权限,则可以在目录里创建或删除文件,但是对
目录下的文件没有写权限

root创建文件是时,权限是为644  
而普通用户创建为664
umask:文件的权限反向掩码,遮罩码
文件:
        666-umask  
目录:  777-umask
注意:之所以文件用66区减,表示文件默认不能拥有执行权限,
如果减得的结果又执行,则其结果需要将其加1
umask:023
  666-023=643=644  减得得结果又1,则将加一边644
  777-023=754
[root@localhost ~]# umask 027   设置遮罩码
[root@localhost ~]# umask
0027
[root@localhost ~]# touch umask
[root@localhost ~]# ll
-rw-r—–. 1 root  root     0 Jul 29 18:28 umask
[root@localhost ~]# mkdir umaska
[root@localhost ~]# ll
-rw-r—–. 1 root  root     0 Jul 29 18:28 umask
drwxr-x—. 2 root  root  4096 Jul 29 18:28 umaska

linux很多设置,只对当前有效,退出系统就失效了。

特殊权限
三种常用权限:r, w, x suid 4, sgid2  ,sticky1    user  , group, other  
安全上下文
前提:进程有属主和属组;文件有属主和属组
(1) 任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限
(2) 启动为进程之后,其进程的属主为发起者;进程的属组为 发起者所属的组
(3) 进程访问文件时的权限,取决于进程的发起者
(a) 进程的发起者,同文件的属主:则应用文件属主权限
(b) 进程的发起者,属于文件属组;则应用文件属组权限
(c) 应用文件“其它”权限

suid
任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限启动为进程之后,其进程的属主为原程序文件的属主
SUID只对二进制可执行程序有效
SUID设置在目录上无意义
权限设定:
chmod u+s FILE… chmod u-s FILE…

任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限启动为进程之后,其进程的属主为原程序文件的属组
权限设定:
chmod g+s FILE…
chmod g-s FILE.

默认情况下,用户创建文件时,其属组为此用户所属的主组一旦某目录被设定了SGID,则对此目录有写权限的用户在此目录中创建的文件所属的组为此目录的属组
通常用于创建一个协作目录
权限设定:
chmod g+s DIR… chmod g-s DIR…

具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限或拥有权

在目录设置Sticky 位,只有文件的所有者或root可 以删除该文件sticky 设置在文件上无意义
权限设定:
chmod o+t DIR…
chmod o-t DIR…

chattr +i 不能删除,改名,更改
chattr -i 能删除,改名,更改
chattr +a 只能增加
chattr +A 只能增加
lsattr 显示特定属性

三种权限设置:
                       1:普通权限设置
                       2:特殊权限设置额
                       3.:acl访问控制列表, 即使文件权限为000,通过setfacl访问控制列表设置后,也可访问

setfacl -M acl.txt    文件

install复制文件同时,设置文件的属性的
install –mode=777 /etc/fstab /root

cp复制文件是不能修改器权限的

mktemp
创建临时文件

文件,目录权限设置影响试验结果

1.文件权限测试:      创建文件一般不能有x执行权限
2.没有x权限时,可以通过sh 文件,进行shell脚本执行,能进行cp,mv,rm删除。      明天要问问他,企业工作是不是用禁用其他用户使用sh命令   绿色
3.没有w权限时,不可以进行修改,进行shell脚本执行。能进行cp,mv,rm删除等操作 可以进行复制,mv,删除
4.没有r权限时,不能进行shell执行,不进行cp,能进行mv,rm。                  

对目录的意义  文件权限为rw-rw-rw-
1.没有x,但是有r,w权限        1.不能cd进入目录     2.但是可以ll查看目录,并且目录权限,属组不可见。  3.不能查看目录文件内容       4.不能删除目录内文件     5.不能移动和复制  
       6.也不能创建文件
2.有x,但是有r,w权限        1.进行cd进入目录     2.可以通过ll查看目录,并且目录权限,属组可见。      3. 能查看能用,能修改内容   4.能删除目录内文件   5. 能移动和复制  
        6.也不能创建文件                                  
3.没有w ,但是有r,x权限       1.进行cd进入目录     2.可以通过ll查看目录,并且目录权限,属组可见。      3. 能查看能用,能修改内容   4.不能删除目录内文件   5.不能移动和复制      
        6.不能创建文件
4.没有r权限,有w,x权限      1.进行cd进入目录    2.不可以通过ll查看目录,并且目录权限,属组,名称不可见。    3. 能查看能用,能修改内容       5. 能移动和复制
       6.能创建文件 ,删除文件  

文件,目录权限设置影响试验结论:
对于文件来说,没有r权限,不能进行cp复制,其他不受影响  
                          没有w权限,不能进行写操作,其他不受影响
                          没有x权限,不能进行./文件执行,其他不受影响
                         
对于目录来说:没有x权限,除了ll能查看目录下文件名,但并不现实属性等下,其他功能都不行
                        : 没有w权限:1.不能删除目录内文件  2 .不能移动和复制    3.不能创建文件,其他功能不受影响
                        :没有r权限:不可以通过ll查看目录,并且目录权限,属组,名称不可见。其他功能不受影响    

原创文章,作者:maoxiong,如若转载,请注明出处:http://www.178linux.com/29321

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-08 14:38

    文章总体来说总结的还是比较详细,希望能在以后的写作中能理论结合实际,这样能更加加深自己对用户,组,权限管理的理解。