Linux文件权限

1. 用户类别

用户 含义
root 超级用户
owner 所属用户,实际拥有文件的用户
group 所属组,用户组
world/other 其他用户

/etc/shadow的内容如下

root:$6$VGqBtY77$6Jcc7wKrpA7jyMGg46C5BKdxeh6iU1HM2EPIjjgLPOYtw5/zrFUf4BdkXMmz2nm5435uzYB5MOpyjgpM2ogWc/:17170:0:99999:7:::
...
hwg:$6$aWw2vuOM$VWHW8LLAaDxK1aJCXsmdxjX/8zAO3kcRFjr3Ha6/Z8ZiMsIBCzQKqkkjeO2O.Y8Glr.3nBPeZcT5incUY6dAq1:17170:0:99999:7:::

每一个用户共有9项内容,以:分隔开
(1) 用户名
(2) 密码(*或!开头的,表示不能登录)
(3) 密码最后一次被修改的时间(单位:天,从1970-01-01开始)
(4) 从上一次修改密码到下一次允许进行修改,需要经过多少天
(5) 经过多少天后,用户必须修改密码
(6) 密码到期前多少天,向用户发出必须修改密码的警告
(7) 密码到期后经过多少天便把该账号关闭
(8) 账号到期日
(9) 保留

2. 组管理

/etc/group的部分内容如下

root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
......
rtkit:x:123:
saned:x:124:
hwg:x:1000:

每个组共有4项内容,以:分隔开
(1) 组名称
(2) 组密码
(3) 组识别号
(4) 该组用户清单

/etc/gshadow的部分内容如下:

root:*::
daemon:*::
bin:*::
sys:*::
adm:*::syslog,hwg
tty:*::
disk:*::
......
rtkit:!::
saned:!::
hwg:!::

组管理命令

命令 用途 举例
groupadd 添加组 (1) groupadd 组名
(2) groupadd -g 777 组名,-g直接指定组号gid
gpasswd 管理用户组信息,如设置密码、添加或删除组成员 (1) gpasswd 组名
(2) gpasswd -a 用户名 组名
(3) gpasswd -d 用户名 组名
-a增加用户进入组
-d从组里删除用户
groupmod 修改用户组信息 groupmod -n newname oldname
groupdel 删除用户组 groupdel 组名
groups 显示用户所属的用户组 groups 用户名

3. 用户管理

命令 用途 举例
useradd或adduser 添加用户 (1) useradd 用户名,创建一个用户,同时创建一个同名的组,作为用户的默认组
(2) useraddd -g 默认组名 用户名,创建一个用户,并且指定它的默认组
(3) useradd -g 默认组名 -G 其他组列表(用逗号隔开) 组名,创建一个用户,指定默认组,也指定其属于其他组
(4) useradd -d /tt west,创建用户west,同时指定其主目录为/tt
passwd 为用户设置密码 (1)passwd 用户名,设置密码
(2) passwd -d 用户名,删除密码
usermod 修改用户信息 usermod -c newname oldname
userdel 删除用户 userdel -r 用户名,-r连同用户的主目录一并删除
su 用户切换 (1) su root,切换到root用户,当前路径没有改变
(2) su - root,切换到root用户,同时执行一些配置文件,改变当前目录到root的主目录
id 查看用户的uid、gid、groups(所属的用户组) id 用户名

注意:
(1) 使用“useradd west”添加用户west时,会创建一个同名组west,而在/etc/group中,west的用户列表为空,这是因为该组有一个默认的用户west
(2) 使用“useradd -g gtest west”添加用户west,同时指定一个组,在/etc/group中,gtest的用户列表会出现一个名为west的用户

4. 权限管理

4.1 Linux的文件权限位

文件权限位共有10位:-rwxrwxrwx
第1位表示文件的类型,后面9位,表示owner用户、group用户、other用户的读、写、执行权限。

命令 用途 举例
chown 设置文件所属的用户 chown [option] owner[:group] file
(1) chown hwg:g_test file,将file的所属用户修改为hwg,所属组改为g_test
(2) chown -R hwg tmp,将文件夹tmp及其下的所有文件的所属用户修改为hwg
chgrp 设置文件所属的组 chgrp [option] group file
(1) chgrp g_test file
(2) chgrp -R g_test tmp
chmod 给文件赋予相应的权限位 chmod [option] mode file
(1) 数字方式:chmod 777 file
(2) 文本方式:[ugoa][+-=][rwx]
chmod a=rw file,将file的权限改为rw-rw-rw
chmod u+x file,将file的拥有者加上可执行权限
chmod g-w file,将file的组用户去掉w权限
chmod -R a=rw tmp,将tmp的所有文件的权限改为rw-rw-rw

4.2 两个特殊的权限——s和t

ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 47032  7月 16  2015 /usr/bin/passwd

/usr/bin/passwd的owner权限为rws,这里的s称为suid
注意:
(1) suid权限仅对可执行程序有效,即程序必须具有x权限
(2) suid权限针对的是运行中的进程,而不是程序
(3) suid权限使该程序对应的进程,拥有该程序owner的权限,上面的passwd运行对应的进程,将拥有root(owner)的权限,即使当前的启动用户不是root!
(4) 当s出现在组权限的x位置上时,称为sgid
(5) s的作用是让一般使用者临时具有该文件所属主/组的执行权限

t称为sticky bit(sbit)粘着位

ls -ld tmp/
drwxrwxrwt 14 root root 4096  1月 16 19:17 tmp/

注意:
(1) t仅对目录有效,因为它保护的是目录下的文件不被删除,而不是保护目录本身
(2) t的作用是只能让所属主以及root可以删除(重命名/移动)该目录下的文件
(3) 目录有了t权限,能保证目录下文件不能被随意删除! 然而其他用户可以删除该目录!

下面演示如何修改s和t权限

hwg@hwg-virtual-machine ~/dtest $ touch file.txt
hwg@hwg-virtual-machine ~/dtest $ ls -l file.txt 
-rw-rw-r-- 1 hwg hwg 0  1月 16 20:02 file.txt
hwg@hwg-virtual-machine ~/dtest $ chmod 4746 file.txt 
hwg@hwg-virtual-machine ~/dtest $ ls -l file.txt 
-rwsr--rw- 1 hwg hwg 0  1月 16 20:02 file.txt
hwg@hwg-virtual-machine ~/dtest $ chmod 6746 file.txt 
hwg@hwg-virtual-machine ~/dtest $ ls -l file.txt 
-rwsr-Srw- 1 hwg hwg 0  1月 16 20:02 file.txt
hwg@hwg-virtual-machine ~/dtest $ chmod 6756 file.txt 
hwg@hwg-virtual-machine ~/dtest $ ls -l file.txt 
-rwsr-srw- 1 hwg hwg 0  1月 16 20:02 file.txt
hwg@hwg-virtual-machine ~/dtest $ chmod 7756 file.txt 
hwg@hwg-virtual-machine ~/dtest $ ls -l file.txt 
-rwsr-srwT 1 hwg hwg 0  1月 16 20:02 file.txt
hwg@hwg-virtual-machine ~/dtest $ chmod 755 file.txt 
hwg@hwg-virtual-machine ~/dtest $ ls -l file.txt 
-rwxr-xr-x 1 hwg hwg 0  1月 16 20:02 file.txt

说明:
(1) 如果没有x权限,修改s(或t)会变成大写的S(或T)
(2) t只对目录有效

其他注意点:
(1) 对目录来说,具有x权限,说明可以进入该目录;具有r权限,说明可以列出目录中的内容,即读文件夹。
(2) 对于目录来说,mode = 777 & ~umask
对于普通文件来说,mode = 666 & ~umask (因为文件没有可执行权限,因此是666)
(3) 默认情况下,root用户的umask=0022;普通用户的umask=0002.

posted @ 2017-02-10 20:13  west000  阅读(173)  评论(0编辑  收藏  举报