Linux用户权限
Posted kyrieguard
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux用户权限相关的知识,希望对你有一定的参考价值。
目录
2.8 group操作:groupadd和groupmod以及groupdel等
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
-
- Linux下发送邮件:
/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用户权限的主要内容,如果未能解决你的问题,请参考以下文章
Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )
Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段