Linux用户权限

Posted kyrieguard

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux用户权限相关的知识,希望对你有一定的参考价值。

目录

1.Linux中的正常权限有:读、写、执行权限

2.用户和组:

2.1牵涉的相关命令:

2.2创建用户牵涉到的文件:

2.3用户和组的关系:

2.4用户信息:

2.5添加用户:useradd命令

2.6更改和删除用户:usermod和userdel命令

2.7passwd命令:

2.8  group操作:groupadd和groupmod以及groupdel等

2.9 其他相关命令

3.修改用户权限的相关命令

3.1.chmod命令

3.2.chown命令

3.3.chgrp命令

3.4可以执行的用户

3.5权限掩码:umask

 4.Linux中的一些文件及其作用

5.文件或目录的隐藏属性

6.文件的特别权限

7.ACL

8.sudo授权


1.Linux中的正常权限有:读、写、执行权限


文件的读、写、执行权限:

        读 read——》允许查看文件的内容,包括的命令:cat、vim、grep、head、tail、more、less等          --r

        写 write——》允许修改文件内容,包括的命令:vim、>>、>(重定向)      --w

        执行 execute——》运行脚本里的命令: ./a.sh(相对路径)、/lianxi/a.sh(绝对路径) 直接运行文件,需要给脚本文件授予可执行权限.          --x

文件夹的读、写、执行权限:

        读 read——》可以显示目录列表,包括的命令:ls        --r

        写 write——》允许在目录中创建、移动等,包括的命令:cp、mv、rm、vim、touch、mkdir等         --w

        执行 execute——》允许切换目录,包括的命令:cd                --x

归属(所有权):

        文件拥有者(owner):拥有该文件或目录的用户账号   -- user --u

        属组(group):拥有该文件或目录的组账号   --group --g

        其他人(others):除了属主和属组的其他人   --others --o

普通的文件夹给rx权限,家目录的权限非常严格(w权限也很重要)

普通用户可以在自己的家目录和/tmp目录下新建文件夹

[root@scchen1 lianxi]# ll         //使用ll命令查看权限

drwxr-xr-x 2 root root      4096 1月  14 21:48 sc

drwxr-xr-x 的意思为:

        第一个字符为文件类型;

                - :普通文件

                d:目录文件

                l:链接文件

                s:表示socket文件          

                c:字符设备文件 character

                b:块设备文件 block 磁盘设备

                p:pipe管道文件

        rwx:拥有者权限;

        r-x:属主权限;

        r-x:其他人权限

2.用户和组:

2.1牵涉的相关命令:

id(查看用户信息)、useradd(新建新用户)、groupadd(新建组)、userdel(删除用户)、usermod(更改用户信息)、su(切换登录用户)、passwd(创建用户密码)

用户和组:     

        每个用户有一个唯一的UID,每个组也有一个唯一的GID

        一个用户可以属于不同组
        一个组可以有不同用户        //注:多对多的关系

        用户和组 --> 权限资源管控
        用户加入组,就可以有这个组的权限
        默认情况下,创建用户,会添加一个和用户同名的组

[root@scchen1 ~]# useradd sanchuang
[root@scchen1 ~]# groupadd sc
[root@scchen1 ~]# id sanchuang
uid=1028(sanchuang) gid=1029(sanchuang) 组=1029(sanchuang)
[root@scchen1 ~]# usermod sanchuang -g sc
[root@scchen1 ~]# id sanchuang
uid=1028(sanchuang) gid=1030(sc) 组=1030(sc)
[root@scchen1 ~]# passwd sanchuang
更改用户 sanchuang 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@scchen1 ~]# su - sanchuang
#####################
[sanchuang@scchen1 ~]$ 

2.2创建用户牵涉到的文件:

账户信息相关文件:

  • /etc/passwd ——〉存放用户相关信息的
  • /etc/shadow ——〉存放用户密码
  • /etc/passwd- 和 /etc/shadow- 这是/etc/passwd 和 /etc/shadow的备份文件,总是比原文件少一次操作

组相关文件:

  • /etc/group ——〉存放组信息的
  • /etc/gshadow ——〉存放组密码的
  • /etc/group- 和 /etc/gshadow- 这是/etc/group 和 /etc/gshadow的备份文件

用户环境默认设置

  • 创建用户时,会拷贝/etc/skel/下的文件到用户的家目录
    • 用户家目录下,一开始就会存在:
      • .bash_logout   用户退出登录时执行
      • .bash_profile  用户登录时执行,一般做用户个性化环境配置
      • .bashrc  进入新bash环境时执行,一般做用户个性化环境配置
      • 以上这几个文件是跟用户环境默认设置相关的文件
    • .bash_history:  记录存放上次注销前使用的历史命令
      该文件不是用户一开始建好就有的,得使用该用户输入过命令后才会产生.bash_history
    • 下面这两个文件,对所有用户都生效
      • /etc/bashrc        # 系统全局环境配置文件
      • /etc/profile    # 系统全局环境配置文件
    • # 总结
      • /etc/目录下的环境配置修改,属于全局配置
      • 家目录下的环境配置修改,属于个人用户配置
[sc94@zabbix-agent-nginx ~]$ vim .bash_profile 
#在这个文件里添加"echo this is sc94 .bash_profile"

[sc94@zabbix-agent-nginx ~]$ vim .bashrc
#在这个文件里添加"echo this is sc94 .bashrc"
[sc94@zabbix-agent-nginx ~]$ vim .bash_logout
#在这个文件里添加"echo this is sc94 .bash_Logout"


[sc94@zabbix-agent-nginx ~]$ 登出
this is sc94 .bash_Logout
[root@zabbix-agent-nginx ~]# su - sc94
上一次登录:二 5月 17 16:21:49 CST 2022pts/0 上
this is sc94 .bashrc
this is sc94 .bash_profile
[sc94@zabbix-agent-nginx ~]$ less .bash_profile
[sc94@zabbix-agent-nginx ~]$ bash
this is sc94 .bashrc
[sc94@zabbix-agent-nginx ~]$ exit

登陆的时候:
    .bash_profile
    ~/.bash_profile --> ~/.bashrc -->/etc/bashrc

进入新bash环境:
    ~/.bashrc  ---> /etc/bashrc

 用户的家目录

  • 默认情况下会在/home目录下创建一个同名文件夹

用户默认属性设置文件

  • /etc/login.defs    //用来保存用户的账户基本信息

邮件目录

  • /var/spool/mail/ 下创建一个同名的文件
    • Linux下发送邮件:
      • [root@xieshan ~]# echo "this is test"|mail -s "test" 177360xxxx@qq.com

/etc/passwd 文件详解:

[root@scchen1 ~]# cat /etc/passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

sanchuang:x:1028:1030::/home/sanchuang:/bin/bash

        使用冒号:分隔

        字段1:用户名

        字段2:密码占位符,通常为"x"或者"*"(因为/etc/passwd这个文件谁都可以读,所以真正的密码存放在/etc/shadow文件)

        字段3:用户id

        字段4:用户的属组的id(主要组)

        字段5:用户描述信息(新建的用户没有设置的话一般没有)

        字段6:家目录(是家目录的绝对路径)

        字段7:登陆shell的信息

/etc/shadow文件详解:

        用于保存密码字串、密码有效期等信息,每一行对应一个用户的密码记录

[root@scchen1 ~]# cat /etc/shadow
root:$6$azLRpIMNFP/SHEb$Okwvoq0USKS1DkhFB1yazdjP9P4S0YwVn3e1su5ukX78wYDivXav3MhsIUsrWXGmDdQD0hqv55xu3OSLxfZHW/:18854:0:99999:7:::
bin:*:18353:0:99999:7:::
sanchuang:$6$n0W9hCUh$ksRWmuhFpASSVn1f1.HpBR037nEdeg.1pIMbu7CWHgBvuDA5NmEGxl06qIJzVRudQV1fBC8YP84QVJxwyh2Sy1:19063:0:99999:7:::

        字段1:用户帐号的名称
        字段2:加密的密码字串信息
        字段3:上次修改密码的时间
        字段4:密码的最短有效天数,默认值为0
        字段5:密码的最长有效天数,默认值为99999
        字段6:提前多少天警告用户口令将过期,默认值为7
        字段7:在密码过期之后多少天禁用此用户
        字段8:帐号失效时间,默认值为空
        字段9:保留字段(未使用)

/etc/group文件详解:

[root@xieshan lianxi]# cat /etc/group
sanchuang12:x:1029:
sc100:x:1030:sc99
sc99:x:1031:

        字段1:组名

        字段2:密码占位符--真正的密码存放在gshadow里面

        字段3:组id(GID)

        字段4:附属组的组成员

2.3用户和组的关系:

        每个用户有一个唯一的UID

        每个组也有一个唯一的GID

        多个用户可以属于同一个组,一个用户也可以属于多个组(多对多的关系)

2.4用户信息:

用户账户:

        超级用户  root(最高权限)

        程序用户

        普通用户

UID (User Identity,用户标识号)

        超级用户 root的UID为0

        程序用户的UID为1-999

                1~201:系统安装好就有的用户——》系统用户(程序用户):作用就是用来启动或者登陆某个程序

                201~999:自己新建的系统用户

        普通用户的UID大于等于1000

                1000~60000:自己新建的用户

2.5添加用户:useradd命令

·格式:useradd [选项]… 用户名
常用命令选项
·-u:指定 UID 标记号
·-d:指定宿主目录,缺省为 /home/用户名
·-e:指定帐号失效时间
·-g:指定用户的基本组名(或GID号)
·-G:指定用户的附加组名(或GID号)
·-M:不为用户建立并初始化宿主目录
·-s:指定用户的登录Shell
·-c:用户注释描述信息
·-r: 新建系统用户,不会有新建家目录

#注:每次新建用户,uid都会在上一个用户uid基础上+1,默认新建用户从1001开始

#注:adduser命令,跟useradd的用法差不多,但是默认不会给用户创建家目录


Shell设置
/bin/bash # 注:系统默认用户的shell环境信息 --> 正常使用的shell
/bin/sync # 注:将内存里的缓存刷新到磁盘 --> 类似于Python中fp.flush()
/sbin/halt # 注:登陆就关机
/sbin/nologin # 注:用户不能登录,ssh和su都不能登陆
/sbin/shutdown # 注:登陆就关机


示例: -s /sbin/nologin

[root@scchen1 ~]# useradd -s /sbin/nologin sanchuang2
[root@scchen1 ~]# echo 123456 |passwd sanchuang2 --stdin
更改用户 sanchuang2 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@scchen1 ~]# ssh sanchuang2@39.108.111.241  //使用ssh登陆本机的sanchuang2用户
The authenticity of host '39.108.111.241 (39.108.111.241)' can't be established.
ECDSA key fingerprint is SHA256:4BIU2tmOP3Qv5VLGDR4cNV8MeJnDnBkDVVvXcL2wzW4.
ECDSA key fingerprint is MD5:a5:ec:e6:4e:7e:6c:e4:4d:a8:4a:b0:6a:b8:a5:97:2f.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '39.108.111.241' (ECDSA) to the list of known hosts.
sanchuang2@39.108.111.241's password: 

Welcome to Alibaba Cloud Elastic Compute Service !

This account is currently not available.      //提示用户不可达
Connection to 39.108.111.241 closed.
[root@scchen1 ~]# su - sanchuang2        //无法切换用户
上一次登录:六 3月 12 10:31:33 CST 2022从 39.108.111.241pts/1 上
This account is currently not available.         
[root@scchen1 ~]# usermod -s /bin/bash sanchuang2。   //更改用户的shell
[root@scchen1 ~]# su - sanchuang2     //可以登录了
上一次登录:六 3月 12 10:31:54 CST 2022pts/0 上
#####################
[sanchuang2@scchen1 ~]$ 

2.6更改和删除用户:usermod和userdel命令

usermod命令
格式:usermod [选项]… 用户名
常用命令选项
·-l:更改用户帐号的登录名称
·-L:锁定用户账户  ---(锁定账户的实质就是更改用户的密码,在密码前面加上了一个!)
·-U:解锁用户账户
·以下选项与useradd命令中的含义相同
-u、-d、-e、-g、-G、-s

·-u:指定 UID 标记号
·-d:指定宿主目录,缺省为 /home/用户名
·-e:指定帐号失效时间
·-g:指定用户的基本组名(或GID号)
·-G:指定用户的附加组名(或GID号)
·-s:指定用户的登录Shell

userdel命令
·格式:userdel [-r] 用户名
·添加 -r 选项时,表示连用户的宿主目录一并删除 # 注:建议接上

[root@scchen1 ~]# useradd exe1
[root@scchen1 ~]# ls -ld /home/exe1
drwx------ 2 exe1 exe1 4096 3月  12 10:37 /home/exe1
[root@scchen1 ~]# userdel -r exe1
[root@scchen1 ~]# ls -ld /home/exe1
ls: 无法访问/home/exe1: 没有那个文件或目录

2.7passwd命令:


·格式:passwd [选项]… 用户名
常用命令选项
·-d:清空用户的密码,使之无需密码即可登录
·-l:锁定用户帐号---(锁定账户的实质就是更改用户的密码,在密码前面加上两个!)
·-S:查看用户帐号的状态(是否被锁定)
·-u:解锁用户帐号
·–stdin:接收别的命令stdout做为stdin标准输入设置密码

root用户可以修改所有用户密码,不要求复杂性
普通用户只能改自己的密码,要求复杂性
 

[root@scchen1 ~]# passwd -d sanchuang2    //清空sanchuang2的密码
清除用户的密码 sanchuang2
passwd: 操作成功
[root@scchen1 ~]# useradd sanchuang3   //未设置密码
[root@scchen1 ~]# less /etc/shadow
sanchuang2::19063:0:99999:7:::
sanchuang3:!!:19063:0:99999:7:::
[root@xieshan selinux]# echo "123456"|passwd sc99 --stdin    //非交互方式设置密码
更改用户 sc99 的密码 。
passwd:所有的身份验证令牌已经成功更新。

2.8  group操作:groupadd和groupmod以及groupdel等

groupadd 命令   #新建组

格式:groupadd [-g GID] 组账号名

groupdel 命令   #删除组

groupmod命令   #修改组

格式:groupadd -g/-n 组账号名

        -g  修改组id

        -n   修改组名

newgrp        # 修改有效组
用户必须是组的成员才能切换有效组
有效组:当前用户新建文件或者文件夹的时候,默认使用gid对应的组就是有效组

[root@xieshan selinux]# groupadd sanle
[root@xieshan selinux]# groupadd sanle2
[root@xieshan selinux]# useradd -g sanle -G sanle2 sc92
[root@xieshan selinux]# su - sc92
[sc92@xieshan ~]$ touch a
[sc92@xieshan ~]$ ls -al
总用量 16
drwx------   2 sc92 sanle   81 5月  17 16:22 .
drwxr-xr-x. 38 root root  4096 5月  17 16:21 ..
-rw-r--r--   1 sc92 sanle    0 5月  17 16:22 a
-rw-r--r--   1 sc92 sanle    0 5月  16 15:59 aa
-rw-r--r--   1 sc92 sanle   18 10月 31 2018 .bash_logout
-rw-r--r--   1 sc92 sanle  193 10月 31 2018 .bash_profile
-rw-r--r--   1 sc92 sanle  231 10月 31 2018 .bashrc
[sc92@xieshan ~]$ id sc92  #用户在组里面才能更改这个组为有效组
uid=2003(sc92) gid=2002(sanle) 组=2002(sanle),2003(sanle2)
[sc92@xieshan ~]$ newgrp sanle2
[sc92@xieshan ~]$ touch bb
[sc92@xieshan ~]$ ls -al
总用量 16
drwx------   2 sc92 sanle    91 5月  17 16:24 .
drwxr-xr-x. 38 root root   4096 5月  17 16:21 ..
-rw-r--r--   1 sc92 sanle     0 5月  17 16:22 a
-rw-r--r--   1 sc92 sanle     0 5月  16 15:59 aa
-rw-r--r--   1 sc92 sanle    18 10月 31 2018 .bash_logout
-rw-r--r--   1 sc92 sanle   193 10月 31 2018 .bash_profile
-rw-r--r--   1 sc92 sanle   231 10月 31 2018 .bashrc
-rw-r--r--   1 sc92 sanle2    0 5月  17 16:24 bb
[sc92@xieshan ~]$ newgrp sc99     #sc92不属于组sc99,所以无法更改
密码: 
无效的密码。

gpasswd        # 管理组

groups        # 查询用户所在的组

2.9 其他相关命令

w			# 查看当前系统中已经登录的用户

who			# 查看当前系统中已经登录的用户,查询的信息比w简单

users		# 查看当前系统中已经登录的用户

last		# 查询当前已经登录和过去登录的用户信息

lastlog		# 查看系统中所有用户的最后一次登录时间、登录端口和来源IP

who am i	# 显示当前登录时用的用户名,尽管切换了多个用户

whoami		# 显示当前用户的用户名

tty			# 查看登录的终端号

3.修改用户权限的相关命令

3.1.chmod命令

普通用户只能改变自己的文件或文件夹权限

root用户可以更改所有用户的权限

chmod命令:
格式1:chmod [ugoa] [±=] [rwx] 文件或目录…
·u、g、o、a 分别表示
u属主、g属组、o其他用户、a所有用户
·+、-、= 分别表示
+增加、-去除、=设置权限
·rwx
对应的权限字符

常用命令选项
·-R:递归修改指定目录下所有文件、子目录的权限
 

[root@scchen1 lianxi]# vim men_test.sh
[root@scchen1 lianxi]# ll men_test.sh 
-rw-r--r-- 1 root root 12 3月  12 14:37 men_test.sh
[root@scchen1 lianxi]# chmod u+x men_test.sh        //给user属主加上执行权限
[root@scchen1 lianxi]# ls -al men_test.sh          //可执行文件是绿色的
-rwxr--r-- 1 root root 12 3月  12 14:37 men_test.sh
[root@scchen1 lianxi]# ./men_test.sh        //添加了可执行权限后,可以使用./文件名的方式执行
abc
[root@scchen1 lianxi]# chmod a+x men_test.sh  -R     //注:-R递归,把该目录和该目录下的所有子文件都去除可执行权限
[root@scchen1 lianxi]# ls -al men_test.sh 
-rwxr-xr-x 1 root root 12 3月  12 14:37 men_test.sh

chmod命令:
格式2:chmod nnn 文件或目录… # 注:nnn表示3位八进制数
权限项 读 写 执行 读 写 执行 读 写 执行
字符表示 r w x r w x r w x
数字表示 4 2 1 4 2 1 4 2 1
权限分配 文件所有者 文件所属组 其他用户

常用命令选项
·-R:递归修改指定目录下所有文件、子目录的权限

[root@scchen1 lianxi]# chmod 777 sc   //给sc文件的属主、属组、其他人都有读写执行权限
[root@scchen1 lianxi]# chmod 700 sc   //给sc文件的属主有读写执行权限
[root@scchen1 lianxi]# mkdir sanchuang
[root@scchen1 lianxi]# ls -ld sanchuang
drwxr-xr-x 2 root root 4096 3月  12 14:43 sanchuang
[root@scchen1 lianxi]# chmod 777 /lianxi/sanchuang      //都有读写执行
[root@scchen1 lianxi]# ls -ld sanchuang
drwxrwxrwx 2 root root 4096 3月  12 14:43 sanchuang

3.2.chown命令

chown命令         # 注:用来改变文件的属主和属组
·必须是root       # 注:chown 只能root去更改
·用户和组必须存在
·格式:

        chown 属主 文件
        chown :属组 文件
        chown 属主:属组 文件

常用选项:-R:递归修改指定目录下所有文件、子目录的归属(chmod跟chown都是一样的)

[root@sc-xieshan lianxi]# chown tangseng xiaotang
[root@sc-xieshan lianxi]# chown :xiyouji xiaotang -R
[root@sc-xieshan lianxi]# chown song:song xiaotang

3.3.chgrp命令

chgrp命令 # 注:修改属组(不常用)
·格式: chgrp 属组 文件
·必须是root或者是文件的所有者
·必须是新组的成员
常用命令选项
·-R:递归修改指定目录下所有文件、子目录的归属

 [root@sc-xieshan lianxi]# chgrp hongloumeng sc   //修改sc文件属于hongloumeng组

3.4可以执行的用户


#注:chgrp修改属组 文件所有者 必须是想要修改的组里的组成员

执行cp命令复制的时候,只有root用户可以将文件的权限复制过去,普通用户无法直接复制文件的权限。但是普通用户使用cp -a这个选项,可以将文件的属性(权限、时间、用户、组)一起复制过去

3.5权限掩码:umask

在内核级别,文件的初始权限666,文件夹的初始权限777

用umask命令控制默认权限,临时有效

不推荐修改系统默认的umask

id  -gn   获取当前用户组名

id  -un  获取当前用户名

[root@xieshan lianxi]# umask         //用户权限=777-022=755

0022

[root@xieshan /]# vim /etc/profile //可以查看系统的umask值
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
    umask 002
else
    umask 022
fi

 4.Linux中的一些文件及其作用

/tmp 是存放临时文件的,任何的用户创建的进程都可以在此处新建文件和文件夹

/root 是root用户的家目录

/home 是普通用户的家目录

/bin 存放可执行二进制程序 binary

/usr 存放Linux系统资源:各种程序默认会安装到这个文件夹里 unix system resource

/etc 存放各种配置文件:/etc/passwd /etc/shadow /etc/group

/proc  伪文件系统:Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。

5.文件或目录的隐藏属性

chattr命令:设置文件的隐藏属性
·格式:chattr [±=] [ai] 文件或目录 # 注:+、-、= 分别表示 增加、去除、设置参数
常用命令选项
·-R:递归修改
·-a:可以增加文件内容,但不能修改和删除——》只增不减
·-i:锁定保护文件——》不能动文件或者文件夹里的内容,不能增加和删除,不能修改

lsattr命令:查看文件的隐藏属性
·格式:lsattr [Rda] 文件或目录
常用命令选项
·-R:递归修改
·-d:查看目录

#注:普通用户设置不了文件的隐藏属性

[root@scchen1 lianxi]# mkdir local
[root@scchen1 lianxi]# lsattr local -d
-------------e-- local
[root@scchen1 lianxi]# chattr +I local     //不能删、不能写、不能移动
[root@scchen1 lianxi]# mv local /lianxi/sc
mv: 无法将"local" 移动至"/lianxi/sc/local": 不允许的操作
[root@scchen1 lianxi]# ls -al local
总用量 8
drwxr-xr-x 2 root root 4096 3月  12 15:03 .
drwxr-xr-x 7 root root 4096 3月  12 15:03 ..
[root@scchen1 lianxi]# lsattr local -d
----i--------e-- local            //多了一个-I属性
[root@scchen1 lianxi]# chattr -i local
[root@scchen1 lianxi]# lsattr local -d
-------------e-- local
[root@scchen1 lianxi]# touch hosts
[root@scchen1 lianxi]# chattr +a hosts   //只增不减
[root@scchen1 lianxi]# lsattr hosts
-----a-------e-- hosts
[root@scchen1 lianxi]# vim hosts     //不可以修改
[root@scchen1 lianxi]# echo "aaa" >>hosts   //可以追加
[root@scchen1 lianxi]# cat hosts
aaa
[root@scchen1 lianxi]# rm -rf hosts   //不可以删除
rm: 无法删除"hosts": 不允许的操作
[root@scchen1 lianxi]# 
[root@scchen1 lianxi]# chattr +i /etc/passwd
[root@scchen1 lianxi]# lsattr /etc/passwd
----i--------e-- /etc/passwd
[root@scchen1 lianxi]# useradd sanchuang6     //设置了隐藏属性,无法新建用户
useradd:无法打开 /etc/passwd
[root@scchen1 lianxi]# chattr -i /etc/passwd
[root@scchen1 lianxi]# useradd sanchuang6
[root@scchen1 lianxi]# 

6.文件的特别权限

SET位权限
主要用途:
·为可执行(有 x 权限的)文件设置,权限字符为“s” # 注:以前的x位变成s位
·其他用户执行该文件时,将拥有属主或属组用户的权限
SET位权限类型:
·SUID:表示对属主用户增加SET位权限
·SGID:表示对属组内的用户增加SET位权限

suid权限:普通用户在执行命令的时候,会以命令的拥有者的身份去执行。

Linux系统,默认所有的命令都是root的。如果不管控的话,会导致系统权限泛滥,出现安全问题

#注:用在可执行文件
 

[root@xieshan bin]# ll mkdir
-rwxr-xr-x. 1 root root 79864 10月 31 2018 mkdir
[root@xieshan bin]# chmod u+s mkdir
[root@xieshan bin]# ll mkdir
-rwsr-xr-x. 1 root root 79864 10月 31 2018 mkdir
//sgid权限:普通用户在执行命令的时候,会以属组的身份去执行。
[root@xieshan bin]# chmod g+s mkdir
//suid和sgid一般用在可执行命令上

粘滞位权限(Sticky):为公共目录设置,权限字符为“t"。用户不能删除该目录中其他用户的文件,一般用在文件夹上

使用权限数字:

chmod mnnn 可执行文件

m为4对应suid;m为2对应sgid;m为1对应粘滞位,可叠加(7777)

chmod o+t 可执行文件

[root@xieshan bin]# ls -ld /tmp
drwxrwxrwt. 12 root root 4096 2月  28 15:21 /tmp
[root@xieshan lianxi]# ll -d zhang.txt
-rw-r--r-T. 1 root root 0 2月  24 11:13 zhang.txt
[root@xieshan lianxi]# chmod o+t /tmp
[root@xieshan lianxi]# 

7.ACL

ACL:(Access Control List)一个文件/目录的访问控制列表,可以针对任意指定的用户/组使用权限字符分配rwx权限

设置ACL:setfacl指令 setfacl选项 规则 文件

常用选项:

-m:新增或修改ACL中的规则

-b:删除所有ACL规则

-x:删除指定的ACL规则

常用规则
格式:类型:特定的用户或组:权限
user:(uid/name):(perms)        指定某位使用者的权限
group:(gid/name):(perms)     指定某一群组的权限
other::(perms)                        指定其它使用者的权限
mask::(perms)                        设定有效的最大权限
注意
user、group、other、mask简写为:u , g , o , m

ACL类型
存取型ACL(Access ACL):文件或目录
预设型ACL(Default ACL):只能对目录
预设型ACL(Default ACL)
格式:setfacl –m default:类型:特定的用户或组:权限
               setfacl –m d:类型:特定的用户或组:权限
设置了预设型ACL的目录,其下的所有文件或者子目录就都具有了主目录的ACL权限,并且子目录也同样有预设的ACl权限

查看ACL:getfacl指令 getfacl 文件

[root@xieshan 3.1]# setfacl -m u:song:rwx test/      //单独给用户设置权限
[root@xieshan 3.1]# ll
总用量 0
drwxrwxr-x+ 2 root root 6 3月   1 09:34 test      //是对原来权限的扩展
[root@xieshan 3.1]# getfacl test
# file: test
# owner: root
# group: root
user::rwx
user:song:rwx
group::r-x
mask::rwx
other::r-x
[root@xieshan 3.1]# setfacl -m g:xiyouji:rwx test       //单独给组设置权限
[root@xieshan 3.1]# getfacl test
# file: test
# owner: root
# group: root
user::rwx
user:song:rwx
group::r-x
group:xiyouji:rwx
mask::rwx
other::r-x
[root@xieshan 3.1]# setfacl -m u:song:rwx,g:xiyouji:rwx test/
//一个用户属于某个组可以继承这个组的权限
//拒绝权限高于一切——》针对用户    单独设置黑名单
//一个组允许,一个组拒绝——》允许

[root@zabbix-agent-nginx lianxi]# setfacl -m m::r  hello.txt
[root@zabbix-agent-nginx lianxi]# getfacl hello.txt
# file: hello.txt
# owner: root
# group: root
user::rwx
user:sc98:rw-			#effective:r--   #即使sc98的权限是rw,但是mask是r,所以sc98的最大权限就是r
group::---
group:sanle:rw-			#effective:r--
mask::r--
other::r--
[root@zabbix-agent-nginx lianxi]# setfacl -m d:u:sc98:rwx acl
[root@zabbix-agent-nginx lianxi]# getfacl acl
# file: acl
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:sc98:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

[root@zabbix-agent-nginx lianxi]# cd acl
[root@zabbix-agent-nginx acl]# vim aa
[root@zabbix-agent-nginx acl]# touch aa
[root@zabbix-agent-nginx acl]# getfacl aa
# file: aa
# owner: root
# group: root
user::rw-
user:sc98:rwx			#effective:rw-
group::r-x			#effective:r--
mask::rw-
other::r--

8.sudo授权

sudo授权:可以给组也可以给用户

Linux里root用户权限最大,普通用户权限非常小,sudo可以给普通用户授权

给普通用户或者组授权,修改/etc/sudoers文件

有一个日志文件会记录下被授权者执行的所有命令:/var/log/secure

        /var 存放可变化的文件 variable 可变的

        log 日志文件 是不停的记录程序发生的事情

                secure 是与Linux安全相关的日志,登陆进入Linux、新建用户、设置密码

                messages 平时可以记录的日志,默认都记录到messages

                boot.log 开机启动的过程中的日志

/var/log/audit   安全审计相关服务日志

   linux audit子系统是一个用于收集记录系统、内核、用户进程发生的行为事件的一种安全审计系统。该系统可以可靠地收集有关上任何与安全相关(或与安全无关)事件的信息,它可以帮助跟踪在系统上执行过的一些操作。

   在内核里有内核审计模块,记录系统中的各种动作和事件,比如系统调用,文件修改,执行的程序,系统登入登出和记录所有系统中所有的事件,它的主要目的是方便管理员根据日记审计系统是否允许有异常,是否有入侵等等,说穿了就是把和系统安全有关的事件记录下来。

rsyslogd进程会记录能记录的各种消息都会记录一份到messages文件里

sudo的配置文件:/etc/sudoers
编辑配置文件 可以使用vim 也可以使用visudo,使用visudo不需要接文件名
推荐使用visudo去编辑/etc/sudoers,它会检测语法

[root@xieshan var]# visudo
##      user    MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere 
root    ALL=(ALL)       ALL  
#第一个ALL表示允许任何终端、机器访问sudo,一般就表示本机
#第二个ALL表示sudo命令可以允许以任何用户身份去执行
#第三个ALL表示可以执行任何命令

sanle   ALL=(ALL)   ALL       #表示sanle用户可以在这台主机上执行任何用户的任何密码,但是使用sudo执行时需要输入sanle用户的密码

sanle11   ALL=(ALL)   NOPASSWD:ALL   #表示sanle用户,可以在这台主机上执行任何用户的任何命令,无需输入sanle11的密码

%sanchuang05  ALL=(ALL) NOPASSWD:ALL
#表示sanchuang05这个组的用户,在这台主机上可以执行任何用户的任何命令,无需输入密码
 
 wy      ALL=(ALL)   /bin/chown,/bin/passwd #表示wy用户在这台主机上,拥有chown,passwd命令执行授权,命令路径写绝对路径。

 [sc94@zabbix-agent-nginx ~]$ sudo -l
匹配 %2$s 上 %1$s 的默认条目:
    !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin,
    env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS",
    env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
    env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",
    env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE",
    env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
    secure_path=/sbin\\:/bin\\:/usr/sbin\\:/usr/bin

用户 sc94 可以在 zabbix-agent-nginx 上运行以下命令:
    (ALL) NOPASSWD: /usr/bin/yum
[sc98@zabbix-agent-nginx ~]$ sudo -i    #切换到root
[root@zabbix-agent-nginx ~]# 登出

以上是关于Linux用户权限的主要内容,如果未能解决你的问题,请参考以下文章

linux的权限分配特点

Linux系统 查看用户权限的命令

Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )

关于linux用户权限授权-急

Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段

linux如何设置用户user为超级权限