用户组管理系列(二):权限设置

1、权限简介

操作系统中每个文件都拥有特定的权限、所属用户和所属组。权限是操作系统用来限制资源访问的机制,在Linux中权限一般分为读(readable)、写(writable)和执行(excutable),分为三组。分别对应文件的属主(owner),属组(group)和其他用户(other),通过这样的机制来限制哪些用户、哪些组可以对特定的文件进行什么样的操作。

2、文件和目录权限的区别

   对文件和目录而言,读写执行表示不同的意义

对文件

r     可以使用cat查看文件的内容
w     可以修改文件的内容
x     可以将其运行为二进制文件

对目录

r     可以查看目录下列表
w     可以创建和删除目录下文件
x     可以使用cd进入目录

注:文件的x权限一般关闭,防止可执行的二进制病毒文件自动运行

目录的x权限一般开启,否则r和w权限将失去意义

3、权限的控制

    <1>修改文件的属主属组

chown [OPTION]... FILE...

-R:递归修改文件的属主属组

chgrp [OPTION]... FILE...

[[email protected] testdir]# touch f1 f2
[[email protected] testdir]# ll
total 0
-rw-r--r--. 1 root root 0 Aug  4 13:22 f1
-rw-r--r--. 1 root root 0 Aug  4 13:22 f2
[[email protected] testdir]# chown zhao:zhao f1
[[email protected] testdir]# chown :zhao f2
[[email protected] testdir]# touch f3
[[email protected] testdir]# chgrp zhao f3
[[email protected] testdir]# ll
total 0
-rw-r--r--. 1 zhao zhao 0 Aug  4 13:22 f1
-rw-r--r--. 1 root zhao 0 Aug  4 13:22 f2
-rw-r--r--. 1 root zhao 0 Aug  4 13:23 f3

   <2>修改文件的权限属性

     ●chmod [OPTION]... MODE[,MODE]... FILE...

-R:递归修改文件的权限

下面是三种修改权限的方法:

赋权表示法:操作一类用户的所有权限位

授权表示法:操作一类用户的一个权限位

        数字表示法:用数字的形式表示权限

[[email protected] testdir]# touch f1
[[email protected] testdir]# ll f1
-rw-r--r--. 1 root root 0 Aug  4 14:13 f1
[[email protected] testdir]# chmod o=rw f1
[[email protected] testdir]# ll f1
-rw-r--rw-. 1 root root 0 Aug  4 14:13 f1
[[email protected] testdir]# chmod o+x f1
[[email protected] testdir]# ll f1
-rw-r--rwx. 1 root root 0 Aug  4 14:13 f1
[[email protected] testdir]# chmod 644 f1
[[email protected] testdir]# ll f1
-rw-r--r--. 1 root root 0 Aug  4 14:13 f1

chmod [OPTION]... --reference=RFILE FILE...

[[email protected] testdir]# ll
total 0
-rw-r--r--. 1 root root 0 Aug  4 14:13 f1
-rw-rw-r--. 1 root root 0 Aug  4 14:18 f2
[[email protected] testdir]# chmod --reference=f1 f2
[[email protected] testdir]# ll
total 0
-rw-r--r--. 1 root root 0 Aug  4 14:13 f1
-rw-r--r--. 1 root root 0 Aug  4 14:18 f2
[[email protected] testdir]#

     ●chgrp [GROUPNAME]...

修改文件的数组

chown [OWNER][:[GROUP]] FILE...

修改文件的属主和属组

chattr [FILE]

设置文件的特定属性

-i:不能删除,改名,修改文件

-a:只能增加

lsattr [FILE]

显示特定属性

[[email protected] testdir]# chattr +i f1
[[email protected] testdir]# rm -f f1
rm: cannot remove ‘f1’: Operation not permitted
[[email protected] testdir]# echo f1 > f1
-bash: f1: Permission denied
[[email protected] testdir]# mv f1 f2
mv: cannot move ‘f1’ to ‘f2’: Operation not permitted
[[email protected] testdir]# chattr -i f1
[[email protected] testdir]# chattr +a f1
[[email protected] testdir]# lsattr f1
-----a---------- f1
[[email protected] testdir]# echo f1 > f1
-bash: f1: Operation not permitted
[[email protected] testdir]# echo f1 >> f1
[[email protected] testdir]# cat f1
f1

3、三种特殊权限及其意义

   在谈特殊权限之前,我们先需要了解一下安全上下文

安全上下文:计算机上的二进制文件一旦运行为程序,必定是以某个用户的身份在运行。如果此身份与某个被访问的资源属主一致,则应用资源属主权限;与属组一致,应用属组权限;与其他用户一致,应用其他用户权限。换言之,用户的访问权限,取决于发起此进程的用户。但是SUID、SGID这俩类特殊权限将与上述观点不一致。用户运行某程序时,如果程序拥有SUID权限,那么,此进程运行为程序时,用户将应用程序的属主权限去访问文件。SGID同理。

三种权限的应用范围:

SUID 作用在二进制文件上
SGID 作用在二进制文件上
SGID 也可以作用在目录上
SBIT 作用在目录上

下面详细分析三种权限的应用

<1>SUID作用:应用拥有SUID权限的二进制的属主权限

[[email protected] testdir]# ll /etc/shadow
-r--------. 1 root root 3933 Aug  4 18:34 /etc/shadow
[[email protected] testdir]$ ll /bin/nano
-rwxr-xr-x. 1 root root 205904 Jun 10  2014 /bin/nano
[[email protected] testdir]# ll /bin/nano
-rwsr-xr-x. 1 root root 205904 Jun 10  2014 /bin/nano
[[email protected] testdir]# su zhao
[[email protected] testdir]$ nano /etc/shadow
qi:!!:17017:0:99999:7::: ---->将俩个感叹号去掉,取消锁定--->qi:!!:17017:0:99999:7:::
[[email protected] testdir]$ su qi
[[email protected] testdir]$

注:危险操作,切勿模仿

<2>SGID作用在二进制文件上,作用:应用拥有SGID权限的二进制的属主权限,同SUID,不举例。

<3>SBIT作用在目录上时:如果用户对目录有写权限,对目录下的文件有读权限,虽然不能修改别人的文件,却可以创建自己的文件和删除别人的文件。此时SBIT可以避免删除别人的文件

示例:在/testdir下,要求自己可以创建和查看自己的文件,能查看别人的文件,但不能删除和修改别人的文件

[[email protected] testdir]# su user1
[[email protected] /testdir]$ touch f1
[[email protected] /testdir]$ chmod g-w f1
[[email protected] /testdir]$ su 
Password: 
[[email protected] testdir]# su user2
[[email protected] /testdir]$ touch f2
[[email protected] /testdir]$ chmod g-w f2
[[email protected] /testdir]$ ll f1 f2
-rw-r--r--. 1 user1 user1 0 Aug  4 20:08 f1
-rw-r--r--. 1 user2 user2 0 Aug  4 20:09 f2
[[email protected] /testdir]$ cat f1
[[email protected] /testdir]$ su
Password: 
[[email protected] testdir]# chmod o+t .
[[email protected] testdir]# ll -d .
drwxrwxrwt. 2 root it 24 Aug  4 20:09 .
[[email protected] testdir]# su user1
[[email protected] /testdir]$ echo content > f2
f2: Permission denied.
[[email protected] /testdir]$ rm -f f2
rm: cannot remove ‘f2’: Operation not permitted

*SGID作用在目录上时,在此目录下创建文件时,属组将自动属于目录的属组

示例:在/testdir下,创建一个组,要求组内的某些用户自己可以创建查看修改自己的文件,也能查看修改组内其他人的文件,不属于此组的用户对文件无任何权限。

步骤:root添加用户和组g1

用户创建自己的文件并且把属组改为g1

root修改目录的属组和对其他用户的访问权限并且将属组置为SGID权限

[[email protected] testdir]# useradd user1
[[email protected] testdir]# useradd user2
[[email protected] testdir]# groupadd g1
[[email protected] testdir]# gpasswd -a user1 g1
Adding user user1 to group g1
[[email protected] testdir]# gpasswd -a user2 g1
Adding user user2 to group g1
[[email protected] testdir]# su user1
[[email protected] testdir]$ touch f1
[[email protected] testdir]$ chgrp g1 f1
[[email protected] testdir]$ su
Password: 
[[email protected] testdir]# su user2
[[email protected] testdir]$ touch f2
[[email protected] testdir]$ chgrp g1 f2
[[email protected] testdir]$ su
Password: 
[[email protected] testdir]# ll f1 f2
-rw-rw-r--. 1 user1 g1 0 Aug  4 20:44 f1
-rw-rw-r--. 1 user2 g1 0 Aug  4 20:45 f2
[[email protected] testdir]# chgrp g1 .
[[email protected] testdir]# chmod o= .
[[email protected] testdir]# chmod g+s .
[[email protected] testdir]# ll -d .
drwxrws---. 2 root g1 24 Aug  4 20:45 .

4、ACL应用

ACL权限控制主要目的是提供传统的owner,group,other的read,wirte,execute权限之外的具体权限设置,可以针对单一用户或组来设置特定的权限。

<1>查看acl权限

getfacl FILENAME

<2>设置acl权限

语法格式

setfacl [OPTION] [FILENAME|DIRECTORY]

常用选项

-m     添加acl规则
-x     删除acl规则
-M      从文件中读取acl规则
-X     从文件中删除acl规则
-m d     设置默认acl规则,执针对目录有效
-k     清除默认acl规则
-b     清除所有的acl规则
-R     递归设置acl规则

<3>备份和恢复acl

第一步:设置目录及目录下文件的acl

[[email protected] dir]# setfacl -m u:user1:r f1
[[email protected] dir]# setfacl -m g:user2:r-x .
[[email protected] dir]# getfacl -R .
# file: .
# owner: root
# group: g1
# flags: -s-
user::rwx
group::r-x
group:user2:r-x
mask::r-x
other::r-x

# file: f1
# owner: root
# group: g1
user::rw-
user:user1:r--
group::r--
mask::r--
other::r--

第二步:备份这些acl至特定文件

[[email protected] dir]# getfacl -R . > /tmp/acl.txt

第三步:清除原有的目录及文件的acl

[[email protected] dir]# setfacl -b -R .
[[email protected] dir]# getfacl -R .
# file: .
# owner: root
# group: g1
# flags: -s-
user::rwx
group::r-x
other::r-x

# file: f1
# owner: root
# group: g1
user::rw-
group::r--
other::r--

第四步:还原acl

[[email protected] dir]# setfacl -R --set-file=/tmp/acl.txt .
[[email protected] dir]# getfacl -R .
# file: .
# owner: root
# group: g1
# flags: -s-
user::rw-
user:user1:r--
group::r--
group:user2:r-x			#effective:r--
mask::r--
other::r--

# file: f1
# owner: root
# group: g1
user::rw-
user:user1:r--
group::r--
group:user2:r-x			#effective:r--
mask::r--
other::r--
时间: 2024-11-10 01:01:42

用户组管理系列(二):权限设置的相关文章

Linux运维六:用户管理及用户权限设置

Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问:另一方面也可以帮助用户组织文件,并为用户提供安全性保护.每个用户账号都拥有一个惟一的用户名和各自的口令.用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录. 实现用户账号的管理,要完成的工作主要有如下几个方面: · 用户账号的添加.删除与修改. ·

Linux学习汇总——Linux用户组管理,文件权限管理,文本处理工具grep及egrep

本章Blog相关Linux相关知识点 解析:在数据库按搜索码查找相对应的条目,并找与之对应额外的其他数据库的过程:名称解析:UID ,组名解析:GID 数据库:文本文件,sql数据库,ldap数据库,用户库:/etc/passwd ,密码库 :/etc/shadow,组库:/etc/group,组密码库:/etc/gshadow 加密方法:对称加密--加密和解密使用同一个密码,如DES,AES :公钥加密--每个密码都成对出现,一个公钥,一个私钥,如DSA,RSA:单向加密--常用于数据完整性校

Linux账号管理与ACL权限设置

一.Linux用户与用户组 1.Linux用户账号位于 /etc/passwd 密码位于 /etc/shadow 用户组账号位于 /etc/group 密码位于 /etc/gshadow 2.groups:查看有效用户组和支持用户组 直接输入命令groups 第一个输出的用户组即为有效用户组 3.newgrp:有效用户组的切换 newgrp 用户组 二.账号管理(系统管理员) 1.useradd:新增账号 user [-u UID] [-g 初始用户组] [-G 次要用户组] [-mM] [-c

鸟哥的Linux私房菜7-------14章 Linux帐号管理与ACL权限设置

1. 用户表示符UID与GID /etc/passwd文件结构: 有几行就代表有几个帐号在你的系统里 每一行用:分割,一共7个字段. 1.帐号名称 2.密码:早起unix用,现在把密码数据放在/etc/shadow文件中了,这里用x表示 3.UID:0代表系统管理员. 1-499:系统帐号 500-65535:一般用户用 4.GID:     /etc/group有关 5.用户信息说明,使用finger时,这个字段能提供很多信息. 6.主文件夹 7.Shell:用户登录系统后取得的一个shell

小猿圈Linux 之用户和用户组管理(二)

Linux系统用户组的管理上一节我们讲解了linux系统用户账号的管理,小猿圈加加老师带你学习下一节---Linux系统用户组的管理 每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理.不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建. 用户组的管理涉及用户组的添加.删除和修改.组的增加.删除和修改实际上就是对/etc/group文件的更新.1.增加一个新的用户组使用groupadd命令.其格式如下: grou

第14章 Linux账号管理与ACL权限设置

Linux的账号与用户组 用户标识符:UID与GID 每一个文件都有一个所有者ID和用户组ID,当我们需要查看文件属性时,系统会根据/etc/passwd和/etc/group的内容,找到对应UID和GID对应的账户名和组名. 用户账号 用户的登陆流程如下: 1. 先搜索/etc/passwd里面是否有你输入的账号,如果有则将用户名对应的UID和GID(GID在/etc/group内)读取出来 2. 进入/etc/shadow找到对应账户与UID,核对密码是否正确 /etc/passwd文件结构

U盘装系统系列二—-如何设置U盘启动

老毛桃U盘启动制作好之后,如何设置U盘启动呢?我的是华硕的电脑,开机后按F2进入BIOS设置(不同主板可能不一样,比如有的是按向下键或者Del键,可以在网上查下看看),按Tab键选中Boot:按向下键移动光标到Hard Disk Drives(选择它是因为我们制作老毛桃U盘启动盘时类型是HDD,其实就是硬盘模式)上按Enter键看到:其中第二个USB Kingston DT是我的U盘,光标向下选中它之后按Enter键看到:点击OK之后按F10键保存设置重启电脑,这次即以U盘启动,可以看到:加载完

Linux 权限设置

一.文件和目录权限 在Linux系统中,用户可以对每一个文件或目录都具有访问权限,这些访问权限决定了谁能访问,以及如何访问这些文件和目录. 1.文件权限简介 在Linux系统中,每一位用户都有对文件或目录的读取.写入和执行权限.第1套权限控制访问自己的文件权限,即所有者权限.第2套权限控制用户组访问其中一个用户的文件的权限.第3套权限控制其他所有用户访问一个用户的文件的权限.这3套权限赋予用户不同类型(即所有者.用户组和其他用户)的读取.写入及执行权限. 2.一般权限 用"ls -l"

[Linux 004]——用户和用户组以及 Linux 权限管理(二)

到权限了.前面讲到了 Linux 中的用户和用户主管理,其实它们的本质(或者用户和用户组出现的初衷)都是方便权限管理.权限管理对于计算机的重要性不言而喻,权限让每个用户能够安安心心的使用计算机,而不用担心别的用户破坏到自己的资源.如果老王手里有一把你家的钥匙,你是不是很蛋疼呢,如果邻居除了老王,还有老赵,老李,老张...都有你家的钥匙,你是不是更加蛋疼呢.作为多用户的 Linux 而言,权限管理至关重要. 1.Linux 文件权限的规定 前文提到,Linux 规定一个文件必须要有三种权限:文件所