`

linux中的权限管理

 
阅读更多

 

chattr

chattr [-RV][-v<版本编号>][+/-/=<属性>][文件或目录...]

只有超级权限的用户才具有使用该命令的权限,这项指令可改变存放在ext2、ext3、ext4、xfs、ubifs、reiserfs、jfs等文件系统上的文件或目录属性。

 

这些属性共有以下8种模式:

A:即Atime,告诉系统不要修改对这个文件的最后访问时间。

S:即Sync,一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘。

a:即Append Only,系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。

b:不更新文件或目录的最后存取时间。

c:将文件或目录压缩后存放。

d:当dump程序执行时,该文件或目录不会被dump备份。

D:检查压缩文件中的错误。

i:即Immutable,系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。

s:彻底删除文件,不可恢复,因为是从磁盘上删除,然后用0填充文件所在区域。

u:当一个应用程序请求删除这个文件,系统会保留其数据块以便以后能够恢复删除这个文件,用来防止意外删除文件或目录。

t:文件系统支持尾部合并(tail-merging)。

X:可以直接访问压缩文件的内容。

 

参数:

-R 递归处理,将指定目录下的所有文件及子目录一并处理。

-v<版本编号> 设置文件或目录版本。

-V 显示指令执行过程。

+<属性> 开启文件或目录的该项属性。

-<属性> 关闭文件或目录的该项属性。

=<属性> 指定文件或目录的该项属性。

#1、用chattr命令防止系统中某个关键文件被修改
chattr +i /etc/fstab 

#2、让某个文件只能往里面追加内容,不能删除,一些日志文件适用于这种操作
chattr +a /data1/user_act.log

 

 

 

lsattr

用chattr执行改变文件或目录的属性,可执行lsattr指令查询其属性。

lsattr 命令显示文件系统属性与ls 显示的UNIX 文件系统属性是两个不同的概念。lsattr实现的属性是文件系统的物理属性,而ls显示的文件属性是操作系统进行管理文件系统的逻辑属性。

 

 

 

chmod

chmod [-cfRv][--help][--version][<权限范围>+/-/=<权限设置...>][文件或目录...]

chmod [-cfRv][--help][--version][数字代号][文件或目录...]

chmod [-cfRv][--help][--reference=<参考文件或目录>][--version][文件或目录...]

变更文件或目录的权限。在UNIX系统家族里,文件或目录权限的控制分别以读取,写入,执行3种一般权限来区分,另有3种特殊权限可供运用,再搭配拥有者与所属群组管理权限范围。您可以使用chmod指令去变更文件与目录的权限,设置方式采用文字或数字代号皆可。符号连接的权限无法变更,如果您对符号连接修改权限,其改变会作用在被连接的原始文件。权限范围的表示法如下:

u:User,即文件或目录的拥有者。

g:Group,即文件或目录的所属群组。

o:Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围。

a:All,即全部的用户,包含拥有者,所属群组以及其他用户。

有关权限代号的部分,列表于下:

r:读取权限,数字代号为"4"。

w:写入权限,数字代号为"2"。

x:执行或切换权限,数字代号为"1"。

-:不具任何权限,数字代号为"0"。

s:当文件被执行时,根据who参数指定的用户类型设置文件的setuid或者setgid权限。

 

参数:

-c或--changes  效果类似"-v"参数,但仅回报更改的部分。

-f或--quiet或--silent  不显示错误信息。

-R或--recursive  递归处理,将指定目录下的所有文件及子目录一并处理。

-v或--verbose  显示指令执行过程。

--help  在线帮助。

--reference=<参考文件或目录>  把指定文件或目录的权限全部设成和参考文件或目录的权限相同

--version  显示版本信息。

<权限范围>+<权限设置>  开启权限范围的文件或目录的该项权限设置。

<权限范围>-<权限设置>  关闭权限范围的文件或目录的该项权限设置。

<权限范围>=<权限设置>  指定权限范围的文件或目录的该项权限设置。

#所有人可读
chmod ugo+r file1.txt
chmod a+r file1.txt
chmod 777 file1.txt

#将目前目录下的所有档案与子目录皆设为任何人可读取
chmod -R a+r *

#当其他用户执行oracle的sqlplus这个程序时,他的身份因这个程序暂时变成oracle
chmod u+s sqlplus

#此外,chmod也可以用数字来表示权限如 chmod 777 file
#语法为:chmod abc file
#其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。
#r=4,w=2,x=1
#若要rwx属性则4+2+1=7;
#若要rw-属性则4+2=6;
#若要r-x属性则4+1=5。

 

 

 

chown

chown [-cfhvR] [--help] [--version] user[:group] file...

Linux/Unix 是多用户多任务操作系统,所有的文件皆有其拥有者(Owner)。利用 chown命令 可以将文件的拥有者加以改变。一般来说,这个命令只能由系统管理者(root)使用,一般用户没有权限来改变别人的文件的拥有者,也没有权限可以将自己的文件的拥有者改设为别人。只有系统管理者(root)才有这样的权限。

user : 新的档案拥有者的使用者 ID

group : 新的档案拥有者的使用者群体(group)

-c : 若该档案拥有者确实已经更改,才显示其更改动作

-f : 若该档案拥有者无法被更改也不要显示错误讯息

-h : 只对于连结(link)进行变更,而非该 link 真正指向的档案

-v : 显示拥有者变更的详细资料

-R : 对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐个变更)

--help : 显示辅助说明

--version : 显示版本

#将档案 file1.txt 的拥有者设为 users,群体的使用者 jessie :
chown users:jessie file1.txt

#将目前目录下的所有档案与子目录的拥有者皆设为 users 群体的使用者 lamport :
chown -R lamport:users * 

 

 

 

chgrp

chgrp [-cfhRv][--help][--version][所属群组][文件或目录...] 或 chgrp [-cfhRv][--help][--reference=&lt;参考文件或目录&gt;][--version][文件或目录...]

chgrp(change group) 在UNIX系统家族里,文件或目录权限的掌控以拥有者及所属群组来管理。您可以使用chgrp指令去变更文件与目录的所属群组,设置方式采用群组名称或群组识别码皆可。

-c或--changes 效果类似"-v"参数,但仅回报更改的部分。

-f或--quiet或--silent  不显示错误信息。

-h或--no-dereference  只对符号连接的文件作修改,而不更动其他任何相关文件。

-R或--recursive  递归处理,将指定目录下的所有文件及子目录一并处理。

-v或--verbose  显示指令执行过程。

--help  在线帮助。

--reference=&lt;参考文件或目录&gt;  把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同。

--version  显示版本信息。

#更改所属组
 chgrp root myfile
 chgrp test myfile

 

 

 

umask

当我们登录系统之后创建一个文件总是有一个默认权限的,那么这个权限是怎么来的呢?这就是umask干的事情。umask设置了用户创建文件的默认 权限,它与chmod的效果刚好相反,umask设置的是权限“补码”,而chmod设置的是文件权限码。一般可在/etc/profile、/etc/bashrc、$ [HOME]/.bash_profile、$[HOME]/.profile或$[HOME]/.bashrc中设置umask值。具体取决于Linux发行版,比如Fedora19下要更改自己的umask值,在$[HOME]/.profile或$[HOME]/.bash_profile下的增加umask的值覆盖不了/etc/profile中的配置值的,必须在$[HOME]/.bashrc下增加umask值才可以永久定义自己的umask值。

 

umask 命令允许你设定文件创建时的缺省模式,对应每一类用户(文件属主、同组用户、其他用户)存在一个相应的umask值中的数字。对于文件来说,这一数字的最 大值分别是6。系统不允许你在创建一个文本文件时就赋予它执行权限,必须在创建后用chmod命令增加这一权限。目录则允许设置执行权限,这样针对目录来 说,umask中各个数字最大可以到7。

该命令的一般形式为:

umask nnn

其中nnn为umask置000-777。

让我们来看一些例子。

计算出你的umask值:

可以有几种计算umask值的方法,通过设置umask值,可以为新创建的文件和目录设置缺省权限。下表列出了与权限位相对应的umask值。

在计算umask值时,可以针对各类用户分别在这张表中按照所需要的文件/目录创建缺省权限查找对应的umask值。

例如,umask值002 所对应的文件和目录创建缺省权限分别为6 6 4和7 7 5。

还有另外一种计算umask值的方法。我们只要记住umask是从权限中“拿走”相应的位即可。[2] 

umask值与权限

umask 文件 目录

0 6 7 600 710

1 6 6 500 611

2 4 5 421 532

3 4 4 322 433

4 2 3 243 354

5 2 2 144 255

6 0 1 065 176

7 0 0 066 077

 

例如,对于umask值0 0 2,相应的文件和目录缺省创建权限是什么呢?

第一步,我们首先写下具有全部权限的模式,即777 (所有用户都具有读、写和执行权限)。

第二步,在下面一行按照umask值写下相应的位,在本例中是0 0 2。

第三步,在接下来的一行中记下上面两行中没有匹配的位。这就是目录的缺省创建权限。

稍加练习就能够记住这种方法。

第四步,对于文件来说,在创建时不能具有执行权限,只要拿掉相应的执行权限比特即可。

这就是上面的例子, 其中u m a s k值为0 0 2:

1) 文件的最大权限 rwx rwx rwx (777)

2) umask值为0 0 2 --- --- -w-

3) 目录权限 rwx rwx r-x (775) 这就是目录创建缺省权限

4) 文件权限 rw- rw- r-- (664) 这就是文件创建缺省权限

下面是另外一个例子,假设这次u m a s k值为0 2 2:

1) 文件的最大权限 rwx rwx rwx (777)

2 ) u m a s k值为0 2 2 --- -w- -w-

3) 目录权限 rwx r-x r-x (755) 这就是目录创建缺省权限

4) 文件权限 rw- r-- r-- (644) 这就是文件创建缺省权限

 

 

 

setfacl和getfacl

setfacl[-bkndRLP]{-m|-M|-x|-X...}file... # -m|-M|-x|-X

getfacl dir/file

 

getfacl,取得某个文件/目录的ACL设置项目

setfacl,顾名思义就是设置文件的ACL规则

而Acl(Access Control List)就是访问控制列表,传统的文件系统控制只针对一个用户或者一个组,如果多个用户或者多个组都想对某个文件/目录 有访问权限,而且需要有不同的访问权限,传统的方式就无法满足了,于是就出现setfacl这个命令,在不改变所有者的前提下,将这个文件/目录对任意用户和组都可以设置不同的访问权限。

-m,--modify=acl modify the current ACL(s)of file(s) #设置文件acl规则

-M,--modify-file=file read ACL entries to modify from file #从文件读取访问控制列表条目更改

-x,--remove=acl remove entries from the ACL(s)of file(s) #删除文件的acl规则

-X,--remove-file=file readACL entries to remove from file #从文件读取访问控制列表条目并删除

-b,--remove-all remove all extended ACL entries # 删除所有扩展的acl规则,基本的acl规则(所有者,群组,其他)将被保留.

-k,--remove-default remove the defaultACL #删除缺省的acl规则。如果没有缺省规则,将不提示.

--set=acl set the ACL of file(s),replacing the current ACL.

--set-file=file readACL entries toset from file #从文件中读设置ACL规则.

--mask dorecalculate the effective rights mask #重新计算有效权限,即使ACL mask被明确指定.

-n,--no-mask don'trecalculate the effective rights mask #不要重新计算有效权限。setfacl默认会重新计算ACL mask,除非mask被明确的制定.

-d,--default operations apply tothe defaultACL #设定默认的acl规则,针对目录而言.

-R,--recursive recurse into subdirectories #递归的对所有文件及目录进行操作.

-L,--logical logical walk,follow symbolic links #跟踪符号链接,默认情况下只跟踪符号链接文件,跳过符号链接目录。

-P,--physical physical walk,donotfollow symbolic links #跳过所有符号链接,包括符号链接文件。

--restore=file restore ACLs(inverse of`getfacl-R') #从文件恢复备份的acl规则(这些文件可由getfacl -R产生)。通过这种机制可以恢复整个目录树的acl规则。此参数不能和除--test以外的任何参数一同执行.

--test testmode(ACLs are notmodified) #测试模式,不会改变任何文件的acl规则,操作后的acl规格将被列出.

-v,--version print version andexit #版本.

-h,--help thishelp text #不用说肯定是帮助了.

当使用-M,-X选项从文件中读取规则时,setfacl接受getfacl命令输出的格式。每行至少一条规则,以#开始的行将被视为注释.

 

setfacl命令可以识别以下的规则格式。

[d[efault]:][u[ser]:]uid[:perms]

指定用户的权限,文件所有者的权限(如果uid没有指定)。

[d[efault]:]g[roup]:gid[:perms]

指定群组的权限,文件所有群组的权限(如果gid未指定)

[d[efault]:]m[ask][:][:perms]

有效权限掩码

[d[efault]:]o[ther][:perms]

#perms域是一个代表各种权限的字母的组合:读:r 写:w 执行:x,执行只适合目录和一些可执行的文件。perms域也可设置为八进制格式0~7。

setfacl -m u:testuser:rw- testfile  
#多了一行user:lee,这种设置对于目录和文件显示的结果是一样的
getfacl testfile 
# file: testfile
# owner: test
# group: test
user::rw-
user:testuser:rw-
group::rw-
mask::rw-
other::r--

#设置组权限
setfacl -m g:mygroup:rwx xx.log 
getfacl xx.log
# file: xx.log
# owner: root
# group: root
user::rw-
group::r--
group:mygroup:rwx
mask::rwx
other::r--

#设置mask
setfacl -m m:--- test.log
getfacl test.log
# file: test.log
# owner: root
# group: root
user::rwx
group::r-x                      #effective:---
mask::---
other::r-x

#设置other
setfacl -m o:rwx hehe.txt
getfacl hehe.txt 
# file: hehe.txt
# owner: root
# group: root
user::rw-
group::r--
other::rwx

ll 命令显示出如果设置了setfacl,会在权限最后多出一个+
-rwx---r-x+ 1 root       root       213672 Jan  4 17:31 xx.log
drwx---r-x+ 2 root       root         4096 Jan 10 22:27 tmp

 

setfacl权限错误

setfacl: /mnt/bak: Operation not supported 错误

解决方法:重新修改/etc/fstab文件,加入acl选项

/dev/vg/bak             /mnt/bak                ext3    defaults,acl    0 0

然后:mount -o remount /mnt/bak 重新挂载,再执行上面的命令,成功!

 

 

 

suid

当设置了这个权限位时,以该文件拥有者的身份去运行,也就是说无论谁执行这个文件,他都有文件拥有者的权限,可以用chmod来设置权限,4表示suid,2表示sgid,1表示stick bit

 

#修改suid
chmod 4741 xx.log
chmod u+s temp/
#注意用户权限的x那一位变成了s
ll xx.log
-rwsr----x 1 root root 2 Jan 10 17:49 xx.log
 

 

 

sgid

当设置了这个权限时,以该文件所属的组的权限去运行。当被拷贝到这个目录下的文件所属的组都和这个目录一样,除非设置了-p(保留原先的权限)才能保留原先的组权限

 

chmod 2755 hehe.sh  
chmod g+s tempdir/
#注意组那几位的权限中的x权限位变成了s
ll hehe.sh         
-rwxr-sr-x 1 root root 150 Dec 26 19:39 hehe.sh
 

 

 

sticky bit

即使组内的其他用户或者其他用户(other)都有对这个文件的写和执行权限,但当设置了sticky bit位后,只有这个文件的拥有者才能删除这个文件。

最典型的例子就是/tmp目录,这个目录的权限是drwxrwxrwt  注意最后一位是t ,所以这个目录下的文件只有root或者文件的拥有者才能删除。

chmod 1755 hehe.sh  
chmod o+t mytemp/ 
#最后最后一位变成了t
ll hehe.sh                 
-rwxr-xr-t 1 root root 150 Dec 26 19:39 hehe.sh

 

 

sudo

su

账号管理useradd userdel

groupadd 

groupdel

 

登陆模块/sbin/nologin

w who last等

 

 

参考

setfacl提示 Operation not supported

Operation not supported 错误及解决方法

chattr

lsattr

setfacl和getfacl

setfacl百科

linux的三种特殊权限介绍

sticky bit

linux:SUID、SGID详解

 

 

分享到:
评论

相关推荐

    linux文件系统管理-权限管理(基础权限设置实验)

    Linux 文件系统管理 - 权限管理(基础权限设置实验) 本实验旨在掌握 Linux 文件系统权限的设置、Linux 用户帐号与组管理、Linux 文件共享的设置方法和权限设置方法。实验中,我们将学习如何设置权限,使得文件夹和...

    linux用户权限管理

    Linux用户权限管理是Linux系统中至关重要的一环,它确保了多用户环境下的安全性和稳定性。在Linux中,每个用户都有其特定的权限,这使得不同用户可以在同一时间执行不同的任务,而不会相互干扰。 1. **用户与组的...

    linux系统权限管理文件特殊权限PPT学习教案.pptx

    Linux 系统权限管理文件特殊权限是 Linux 操作系统中的一种重要机制,用于控制用户对文件和目录的访问权限。本学习教案将详细介绍 Linux 系统权限管理文件特殊权限的概念、类型、作用和使用方法。 ACL 权限 ACL...

    Linux安全体系的文件权限管理.doc

    Linux 操作系统中的文件权限管理是指控制用户或用户组对文件或目录的访问权限。Linux 安全体系的文件权限管理方式主要有两种:自主访问机制(Discretionary Access Control,DAC)和基于能力机制(Capability-based...

    中标麒麟Linux文件权限管理和归属管理.pdf

    中标麒麟Linux服务器操作系统文件权限管理和归属管理是 Linux 操作系统中的一种重要机制,用于控制用户对文件和目录的访问权限和所有权。本章将详细介绍中标麒麟Linux文件权限管理和归属管理的技术创新,包括文件...

    深入理解linux虚拟内存管理(中+英)

    Linux虚拟内存管理是操作系统设计中的核心部分,它允许程序访问比实际物理内存更大的地址空间,同时优化了内存的使用效率。这一系统通过映射技术,将进程的虚拟地址转换为实际物理地址,使得多个进程可以共享同一...

    LINUX修改文件权限

    在Linux操作系统中,文件权限管理是一项至关重要的功能,它确保了系统安全性与数据隐私的维护。不同于Windows系统中较为宽松的权限控制,Linux通过更为严格的权限设置,有效地防止了不同用户之间的非法访问,增强了...

    linux-权限管理视频教程

    08.1.1 权限管理-ACL权限-简介与开启.mp4 08.1.2 权限管理-ACL权限-查看与设定.mp4 08.1.3 权限管理-ACL权限-最大有效权限与删除.mp4 08.1.4 权限管理-ACL权限-默认与递归ACL权限.mp4 08.2.1 权限管理-文件特殊...

    信息安全技术:Linux文件权限管理实验.doc

    在多用户环境中,每个用户对文件和目录的访问都受到严格的控制,这正是Linux权限系统的核心功能。 实验内容详细介绍了Linux文件权限的表示方式,包括字符串表示(如"rwx")和数字表示(如"755")。在Linux中,文件...

    11-RHEL7-Linux文件权限管理

    为了保护系统的安全性和用户的数据,Linux提供了一套复杂的文件权限管理系统。用户可以通过这套系统为不同的用户和用户组设定对文件或目录的访问权限。 在Linux中,文件权限分为三类:所有者(owner)、用户组...

    LINUX教程(各种操作、LINUX所有管理命令、所有磁盘管理、用户管理、服务器管理、进程管理等等。。)

    这个压缩包中的资源提供了丰富的Linux学习资料,包括各种操作、所有管理命令、磁盘管理、用户管理、服务器管理和进程管理等内容。以下是对这些主题的详细解释: 一、Linux基本操作 Linux的基本操作包括文件和目录...

    Linux文件管理的总结

    Linux文件管理; Linux文件和目录的权限管理和区别; Linux文件和目录的内容操作; Linux文件系统EXT2的详解

    LINUX用户管理概述

    Linux操作系统中的用户管理是系统安全和资源控制的关键组成部分。用户账户是系统中访问和操作资源的基本单位,分为不同类型,如root用户、虚拟用户和普通真实用户。这些用户账户的概念不仅涉及用户登录和权限,还...

    linux用户和组权限管理

    linux用户和组权限管理 1.用户文件/etc/passwd 2.密码文件/etc/shadow * 现在用户的密码都是加密保存在这个文件里了,需要管理员权限才能打开,不再保存在passwd里。

    linux实验 用户管理和进程管理

    在Linux系统管理中,用户管理和进程管理是两个关键的领域。这个实验主要涵盖了这两个方面的内容,旨在让学生熟悉和掌握Linux中的基本操作。 首先,我们来看用户管理部分: 1. 创建用户登录脚本模板:在/Linux/目录...

    Linux常用命令之权限管理命令

    在 Linux 中,权限管理命令主要包括 chmod 和 chown 两个命令,下面将详细介绍这两个命令的使用方法和实践操作。 chmod 命令 chmod 命令用于更改文件或目录的权限,它有两种使用方式:符号方式和数字方式。 符号...

    共享Linux系统资源的管理与权限分配设计实现.pdf

    【Linux系统资源管理与权限分配】 Linux操作系统以其开源、稳定和高效的特点,在教育信息化进程中扮演着重要角色。本文主要探讨了如何在Linux系统中实现多用户、多任务环境下的文件资源共享,通过深入理解Linux系统...

Global site tag (gtag.js) - Google Analytics