linux(fedora)文件权限管理
linux权限管理
1.linux基本权限
(1)文件权限对象分类:属主:属组:其他系统用户。
属主:文件的所有权的用户帐号,大多数文件的属主对文件有可读,写,执行权限。可以设置属组和其他用户对该文件的权限,系统管理员root用户可以更改文件的属主,取得所有权。
命令chown
格式:
chown 属主:属组 文件或目录 //同时更改文件或的属主和属组
例如:
[root@centOS ~]# ls -lh 123
-rw-r--r--. 1 root root 0 4月 28 05:33 123
[root@centOS ~]# chown baobao:baobao 123
[root@centOS ~]# ls -lh 123
-rw-r--r--. 1 baobao baobao 0 4月 28 05:33 123
chown 属主 文件或目录 //更改文件或目录的属主
[root@centOS ~]# chown root 123
[root@centOS ~]# ls -lh 123
-rw-r--r--. 1 root baobao 0 4月 28 05:33 123
chown :属组 文件或目录 //更改文件或目录的属组
root@centOS ~]# chown :root 123
[root@centOS ~]# ls -lh 123
-rw-r--r--. 1 root root 0 4月 28 05:33 123
参数
-R:一般用于参数是目录的时候用于递归的方式更改目录本身和目录中的文件和目录的属主,属组
[root@centOS ~]# ls -ld 234 //234目录本身
drwxr-xr-x. 2 root root 4096 4月 28 05:38 234
[root@centOS ~]# ls -lh 234
总用量 0
-rw-r--r--. 1 root root 0 4月 28 05:38 a //234目录下的文件
-rw-r--r--. 1 root root 0 4月 28 05:38 b
-rw-r--r--. 1 root root 0 4月 28 05:38 c
[root@centOS ~]# chown -R baobao:baobao 234
[root@centOS ~]# ls -ld 234
drwxr-xr-x. 2 baobao baobao 4096 4月 28 05:38 234
[root@centOS ~]# ls -lh 234
总用量 0
-rw-r--r--. 1 baobao baobao 0 4月 28 05:38 a
-rw-r--r--. 1 baobao baobao 0 4月 28 05:38 b
-rw-r--r--. 1 baobao baobao 0 4月 28 05:38 c
(2)文件基本权限分类:读(4),写(2),执行(1)
读:拥有该权限的用户帐号可以读取文件和目录相关信息,
写:拥有该权限的用户帐号可以对文件修改,添加,删除
执行:拥有该权限的用户对系统中的可执行文件拥有执行权限。
备注:用户文件或目录的权限有时会受到上级目录的影响。例如:/root/123/文件的属组是baobao具有可写权限,但对文件的上级目录/root/目录没有可写权限
[root@centOS ~]# ls -lh 123
-rw-rw----. 1 root baobao 30 4月 28 05:56 123
[root@centOS ~]# ls -ld /root/
dr-xr-x---. 35 root root 4096 4月 28 05:56 /root/
[root@centOS ~]# su - baobao
[baobao@centOS ~]$ cat /root/123
cat: /root/123: 权限不够
[baobao@centOS ~]$ vim /root/123
"/root/123"
"/root/123" E212: 无法打开并写入文件
请按 ENTER 或其它命令继续
结论:对文件有读,写,执行,的用户不一定能够操作文件,因为可能受到上级目录的影响。
linux系统中的特殊权限setuid,setgid,stick bit
(1)setuid:拥有该权限的文件(或目录)可以让系统中没有执行权限的用户获得文件(或目录)以属主的权限去执行,使用数字4表示,使用字母s表示,拥有文件的属主执行权限位将变成s。/usr/bin/passwd文件
[root@centOS tmp]# ls -lh /usr/bin/passwd
-rwsr-xr-x. 1 root root 26K 2月 22 2012 /usr/bin/passwd
众所周知,/etc/passwd文件存放的各个用户的账号与密码信息,/usr /bin/passwd是执行修改和查看此文件的程序,但从权限上看,/etc/passwd仅有root权限的写(w)权,可实际上每个用户都可以通过 /usr/bin/passwd命令去修改这个文件,于是这里就涉及了linux里的特殊权限setuid,正如-rwsr-xr-x中的s
setuid就是:让普通用户拥有可以执行“只有root权限才能执行”的特殊权限
作为普通用户是没有权限修改/etc/passwd文件的,但给/usr/bin/passwd以setuid权限后,普通用户就可以通过执行passwd命令,临时的拥有root权限,去修改/etc/passwd文件了
(2)setgid:拥有该权限的文件(或目录)可以让系统中没有执行权限的用户获得文件(或目录)以属组的权限去执行,使用数字2表示,使用字母s表示,拥有文件的属主执行权限位将变成s
(3)stick bit(粘贴位)tmp目录是所有用户共有的临时文件夹,所有用户都拥有读写权限,这就必然出现一个问 题,A用户在/tmp里创建了文件a.file,此时B用户看了不爽,在/tmp里把它给删了(因为拥有读写权限),那肯定是不行的。实际上是不会发生这 种情况,因为有特殊权限stick bit(粘贴位)权限,正如drwxrwxrwt中的最后一个t
stick bit (粘贴位)就是:除非目录的属主和root用户有权限删除它,除此之外其它用户不能删除和修改这个目录。
2.linux权限扩展ACL
扩展权限ACL在linux系统中是对权限的一种扩展,在实际的工作环境中,我们可能需要文件或目录的组中大多数成员具有一定的权限(组中成员对文件和目录有rw),组中的一个用户有rwx权限,在不改变文件属主和其他属组中用户的权限就情况,就可以通过ACL权限扩展微调权限实现,如果需要创建需要这样的文件或目录,需要现设定文件的基本权限(rwx),在设定微调的ACL权限,本身已具有这种权限的文件或目录,如果需要调整基本权限(rwx),必须先清除文件和目录的ACL扩展权限.
相关命令:getfacl,setfacl,chacl
getfacl命令:查看文件或目录的的ACL设置信息
格式:
getfacl 选现 参数
-a , --access:显示文件或目录的访问控制列表。
-d , --default:显示文件或目录的默认(缺省)的访问控制列表。
-c , --omit-header:不显示默认的访问控制列表。
-R , --recursive:操作递归到子目录。
-t , --tabular:使用列表输格式出ACL设置信息。
-n , --numeric:显示ACL信息中的用户和组的UID和GID。
-p , --absolute-names:
-v , --version:显示命令的版信息
-h , --help:显示命令帮助信息。
命令
setfacl
-m, --modify=acl:修改文件或目录的扩展ACL设置信息。
-M, --modify-file=file:从一个文件读入ACL设置信息并以此为模版修改当前文件或目录的扩展ACL设置信息。
-x, --remove=acl:从文件或目录删除一个扩展的ACL设置信息。
-X, --remove-file=file:从一个文件读入ACL设置信息并以此为模版删除当前文件或目录的ACL设置信息。
-b, --remove-all:删除所有的扩展的ACL设置信息。
-k, --remove-default:删除缺省的acl设置信息。
--set=acl:设置当前文件的ACL设置信息信息。
--set-file=file:从文件读入ACL设置信息来设置当前文件或目录的ACL设置信息。
--mask:重新计算有效权限,即使ACL mask被明确指定。
-n, --no-mask:不要重新计算有效权限。setfacl默认会重新计算ACL mask,除非mask被明确的制定。
-d, --default:设置默认的ACL设置信息(只对目录有效)。
-R, --recursive:操作递归到所有子目录和文件。
-L, --logical:跟踪符号链接,默认情况下只跟踪符号链接文件,跳过符号链接目录。
-P, --physical:跳过所有符号链接,包括符号链接文件。
--restore=file:从文件恢复备份的acl设置信息(这些文件可由getfacl -R产生<---针对目录)。通过这种机制可以恢复整个目录树的acl设置信息。此参数不能和除--test以外的任何参数一同执行。
--test:测试模式,不会改变ACL设置信息。
-v, --version:显示程序的版信息。
-h, --help:显示帮助信息。
ges
baolinchuan:!!:501:baobao,baolin
abrt:x:478:
wbpriv:x:88:squid
vboxusers:x:502:
named:x:25:
mysql:x:503:
squid:x:23:
baobao:x:504:
baolin:x:505:
[root@fedora tmp]# mkdir 123 //创建测试使用的123目录
[root@fedora tmp]# ls -ld 123
drwxr-xr-x 2 root root 4096 4月 28 10:30 123
drwxr-xr-x 2 root root 4096 4月 28 10:30 123
[root@fedora tmp]# chown :baolinchuan 123 //修改目录属组为baolinchuan组,组中有baobao,baolin.baolinchuan3个用户
[root@fedora tmp]# ls -ld 123
drwxr-xr-x 2 root baolinchuan 4096 4月 28 10:30 123
[root@fedora tmp]# chmod 760 123/ //修改目录权限,设置属组有(rw)权限,信息如下
[root@fedora tmp]# ls -ld 123/
drwxrw---- 2 root baolinchuan 4096 4月 28 10:30 123/
[root@fedora tmp]# setfacl -m u:baolin:rwx 123/ //修改属组中的baolin对目录123有rwx的权限的权限
[root@fedora tmp]# getfacl
Usage: getfacl [-aceEsRLPtpndvh] file ...
Try `getfacl --help' for more information.
[root@fedora tmp]# getfacl 123/
# file: 123/
# owner: root
# group: baolinchuan
user::rwx
user:baolin:rwx
group::rw-
mask::rwx
other::---
[root@fedora tmp]# su - baolin //切换登录用户为baolin
[baolin@fedora ~]$ cd /tmp/123/ //baolin可以进入123目录
[baolin@fedora 123]$ touch baolin //baolin可以在123目录创建文件
[baolin@fedora 123]$ ls
baolin
baolin@fedora 123]$ su - baobao //切换登录用户为baobao
密码:
[baobao@fedora ~]$ cd /tmp/123/
-bash: cd: /tmp/123/: 权限不够 //baobao登录目录失败,没有
ACL权限微调成功,
设置分区对文件ACL权限支持
支持设置ACL文件系统的分区类型有:ReiserFS , EXT2 , EXT3 , EXT4 , JFS , XFS等
修该/etc/fstab文件在分区权限后面添加上,acl重启系统或重新挂在分区.