touch /etc/nologin 

echo system is maintanining >> /etc/nologin 

可以控制非管理员root之外的所有普通用户不能登陆


7版本里面

cd /run/

touch /run/nologin

效果一样让普通用户不能登陆

ehho weihu > /run/nologin


useradd -ou0 root2

通过强制该成UID=0 生成管理员用户

wKioL1ejMY3TNlmPAAAf2Zk_ZEk317.png-wh_50

cp -r /etc/skel/. /home/zczx

cp -r /etc/skl/.[^.]* /home/zczx

补齐家目录的文件



groupadd 

      -g 指明GID号

      -r 创建系统组

                    centos 6:ID<500

                    centos 7:ID<1000

wKiom1ejNCKTwAh-AAAScs6hzYI208.png-wh_50

groupmod      

      -n 新名字

      -g 新的GID

wKioL1ejNCuyRcxqAAAWrd9WZMo778.png-wh_50

groupdel

       删除辅助组,用户的主组删除不了。

wKiom1ejRQGy0x6aAAAQMZgw4A8802.png-wh_50


gpasswd

       -a user:将user添加至指定组

       -d user: 从指定组中移除用户user

       -A user1,user2,.....:设置有管理权限的用户列表

       -M 指定成员作用跟-A差不多

       -r:删除密码

       -R:限制用户登入组,只有组成员才能可以用newgrp加入

Linux 用户组和用户权限的使用2_第1张图片

newgrp 命令:临时切换基本组

       如果用户不属于此组,则需要密码



' ' 直接当字符串输出

" " 变量能识别

` ` 反向引用,变量输出

具体输出要看使用



权限 


r read  读

w write 写

x excute  执行


文件 -rw-r--r--

      rw-r--r--

    用户 组  other

Linux 用户组和用户权限的使用2_第2张图片

chmod 

change mode 修改权限

chmod who opt per file...

who:u,g,o,a

pot:+,-,=

per:

chmod u=rwx f1

chmod a=rwx f1 所有人a

Linux 用户组和用户权限的使用2_第3张图片

文件的

有r权限的,能够读出文本,但是不能修改文本

有w权限的,可以将文件修改写空,有一定危险性,但没有权限删除文件

有x权限的,针对可执行的二进制程序或脚本

X:不会增加x,(前提本身无x权限)

目录的

r:可以查看目录内的文件列表,但不能访问文件,不能cd,也不能查看文件的元数据

w:可以创建或删除文件,要配合x权限。

x:可以进去目录,可以访问目录的文件,不显示目录下文件,但可以直接通过文件名字访问

X:不会增加x(前提本身无x权限)

目录中有 w和x,写和执行权限就可以操作目录的内容,可以删除目录下的文件


chmod -R a=rwx dir1/

chmod -R a=rwX dir1/


八进制数字


rw-r-----

110100000  二进制

420400000  四进制

640        八进制

640:rw-r-----

755:rwxr-xr-x

chomd 640

chomd

    u 文件属主权限

    g 同组用户权限

    o 其它用户权限

    a 所有用户(含以上3种)


    + 增加权限

    - 取消权限 

    = 唯一设定权限


chmod --reference /etc/shadow dir1 参考文件dir1的权限设置



如何修复用户根目录被删去

rm -rf wangcai 

cp -r /etc/skel wangcai

chown -R wangcai.wangcai wangcai /

chmod 700 wangcai 


chown 修改文件的属主

      更改每个文件的所有者或所属组

      -R递归处理所有文件及子目录


chgrp 修改文件的属主

      改变文件的组所有权

      -R递归的改变目录和它的内容的组所有权



umask 可以用来保留在创建文件权限

      -S :以字符的形式显示当前掩码

      -p :带umask开头以数字的形式显示当前掩码


umask + default per =file 666/dir 777

umask +数值  umask 022


可以通过加入文件 .bashrc 永久生效

wKioL1ejRZaQOXOQAAAWmtQNVE0930.png-wh_50

umaks 本质从目录或文件上屏蔽掉最大权限相应的位,从而得出默认权限。

umask 125

最大权限 110 110 110   666

二进制: 001 010 101   125

         110 100 010   642

    目录:dir 777-umask   目录直接减法计算

    文件:file 666-umask  有奇数加1,偶数保留        


umask 127

touch fff

666-127=54-1  

       =640


       -rw-r-----



umask -S 

直接显示出文件权限


umask -p 输出可被调用



非特权用户umask 是002

root 的 umask 是 022

umask :查看

umask #:设定


文件所有者  | 文件所属组用户 |  其他用户

r  w  x     |  r    w    x   |  r  w  x

4  2  1     |  4    2    1   |  4  2  1


wKiom1ejRbDj8figAAAZHp1Yows069.png-wh_50


特殊权限

suid  s 4

sgid  s 2 

sticky  t 1

权限数字在原来数字基础前面加一位数字

启动为进程之后,其进程的属主为发起者,进程的属组为发起者的属主

特殊权限要在x执行权限生效的时候才生效


ll


suid

passwd 

ll /usr/bin/passwd 

-rwsr-xr-x

suid  用数字4表示

普通用户执行属主的权限

在文件修改chmod u+s 要注意安全性问题,因为大部分文件属主都是root用户

只针对二进制进程生效

wKioL1ejRc_Q0ipEAAAUgq28htY069.png-wh_50


sgid

组权限 

root 组权限不大,跟root用户有根本上区别

sgid 用数字2表示

chomd u-s,g-s /testdir

作用在二进制程序

作用在目录上,目录下的新建文件都属于该目录的同一个组,新建的目录与子目录同样属于目录的组。

wKioL1ejReLAqfh2AAAUTrMeZ_Q501.png-wh_50


sticky 

粘滞位

chomd o+t /testdir

可以建立和删除自己的文件,但不能删除其他用户的文件(root)用户除外

作用在目录上

wKioL1ejRe6z40cLAAAUTosH67w211.png-wh_50

chattr 

      修改文件在Linux第二扩展文件系统上特有属性

      -R 递归修改目录及其下内容的属性



chattr +A user.txt 锁定user.txt atime 读取的时间

chattr -A user.txt 消除atime时间锁定

lsattr user.txt 可以显示文件是否带A

lsattr 显示文件在Linux 第二扩展文件系统上特有属性

       -R 递归列出目录及一下内容的属性

       -v 显示文件版本

       -a 列出目录中的所有文件,包括.开头的文件属性



chattr 避免你的文件误操作

+ i 不能删除,改名,更改

+ a 只能增加

lsattr 显示特定属性


Linux 用户组和用户权限的使用2_第4张图片

ACL:

具有能再添加局限权限的能力,实现灵活的权限管理

Centos 7 默认创建xfs 和ext4 文件系统有ACL功能。

Centos 7 版本之前,默认手工创建的ext4文件系统无ACL功能。

         手动添加:

                  tune2fs -o acl /dve/sdb1

                  mount -o acl /dve/sbd1 /mnt

ACL 生效顺序:所有者,自定义用户,自定义组,其他人。


setfacl  设定文件访问控制列表

         -m :改变文件的访问控制列表

         -M :从文件读取访问控制列表条目更改

         -x : 根据文件中访问控制列表移除条目

         -X :从文件读取访问控制列表条目并删除

         -b : 删除所有扩展访问控制列表条目

         -k : 移除默认访问控制列表

         -n : 不重新计算有效权限掩码

         -d : 应用到默认访问控制列表的操作

         -R :递归操作子目录

         -v : 显示版本并退出


setfacl -m u:zczx:rwx 

           用户

        -m g:zczx:0


           组

setfacl -x u:zczx f1

        -x g:zczx fi


清除ACL权限


setfacl -b 

完全清除ACL痕迹 



getfacl f1

可以看到特殊权限

Linux 用户组和用户权限的使用2_第5张图片


u:wang

u:wangcai 


setfacl -X a.txt 

删除a文件中名单用户的ACL权限


setfacl -m m::x f1   mask::--x

一但设置了ACL权限之后,修改g组的权限等于修改mask权限


setfacl -m m::rw f1 

设置了mask权限

除了所有者的权限,其他用户和组的权限都被限制成为rw或者不够rw.

只能比小和相等。(user 和 other 不影响)

Linux 用户组和用户权限的使用2_第6张图片


setfacl -m d:u:wangcai:rwX


getfacl 可以看到特殊权限


base ACL 不能删除

setfacl -k dir 删除默认ACL权限

setfacl -b file 清除所有ACL权限

Linux 用户组和用户权限的使用2_第7张图片

getfacl f1 | getfacl --set-file=- f2

复制f1的ACL权限给f2

Linux 用户组和用户权限的使用2_第8张图片

cp -a f1 /root/

cp -p f1 


getfacl -R /tmp/dir1 > acl.txt

setfacl -R -b /tmp/dir1

setfacl -R --set-file=acl.txt /tmp/dir1

getfacl -R /tmp/dir1





mkdir test

groupadd g1

groupadd g2

groupadd g3


chgrp g1 test

chmod 2770 test

chgrp g1 test

setfacl -m g:g2:rwx test

setfacl -m g:g3:rwx test

setfacl -m d:g:g2:rwx test

setfacl -m d:g:g3:rwx test

setfacl -m d:g:g3:r test

getfacl test 

gpasswd -a user g2