Linux的用户管理和文件权限

Linux沿用了Unix文件权限的办法,即允许用户和组根据每个文件和目录的安全性设置来访问文件。
Linux安全系统的核心是用户账户。每个能进入Linux系统的用户都会被分配唯一的用户账户。用户对系统中各种对象的访问权限取决于他们登录系统时用的账户。
用户权限是通过创建用户时分配的用户ID(User ID,通常缩写为UID)来跟踪的。UID是数值,每个用户都有唯一的UID,但在登录系统时用的不是UID,而是登录名。登录名是用户用来登录系统的最长八字符的字符串(字符可以是数字或字母),同时会关联一个对应的密码。

Linux系统使用一个专门的/etc/passwd文件来将用户的登录名匹配到对应的UID值。
root用户账户是Linux系统的管理员,固定分配给它的UID是0。
系统用户:Linux系统会为各种各样的功能创建不同的用户,而这些用户并不是真的用户(伪
用户) ,而是系统上运行的各种服务进程访问资源用的特殊账户 (500以下的UID值)。所有
运行在后台的服务都需要用一个系统用户账户登录到Linux系统上。

普通用户创建账户时,大多数Linux系统会从500开始
/etc/passwd文件中的每行用户信息都以 " :" 作为分隔符,划分为 7 个字段,每个字段所表示的含义如下:
用户名
用户密码(x表示加密。用户密码保存在/etc/shadow文件中)
用户的UID(数字形式)
用户的组ID(GID)(数字形式)
用户的描述性信息(称为备注字段)
用户HOME目录的位置
用户的默认shell

只有root用户才能访问/etc/shadow文件。查看时一定要加sudo cat /etc/shadow。(sudo这个命令
就相当于是root给普通用户的一份特权,让普通用户也可以查看权限受制的文件内容)
在/etc/shadow文件中同样" :" 作为分隔符,划分为 9个字段:
•用户名
•加密后的密码
•自上次修改密码后过去的天数密码(自1970年1月1日开始计算)
•多少天后才能更改密码
•多少天后必须更改密码
•密码过期前提前多少天提醒用户更改密码
•密码过期后多少天禁用用户账户
•用户账户被禁用的日期(自1970年1月1日开始计算)
•预留字段给将来使用

当我们直接登陆上root用户后,就可以直接用 cat /etc/shadow命令查看文件。该如何登陆呢?使用su root(或su -)命令,然后输入root的密码,即可登录root用户。退出root用户就是exit

使用sudo passwd root设置新的密码后重新登录,当用户名切换为root,说明登录成功

添加新用户有两种命令:useradd和adduser
useradd命令使用系统的默认值以及命令行参数来设置用户账户。可以一次性创建新用户账户及设置用户HOME目录结构。
系统默认值被设置在/etc/default/useradd文件中。cat /etc/default/useradd

useradd -m username 能在添加新用户时,为新用户的HOME目录里放置默认的系统文(/etc/skel下的文件)。
每个用户的目录都是在根目录下的home(/home),你进入到自己的home目录时(比如cd /home/zhang/)才显示的波浪号~

当我们使用-m参数新建一个用户后,新用户下的系统配置文件与根目录下的系统配置文件完全相同。包括修改日期都一致。但是新用户home目录下配置文件的所有者姓名是新用户自己。

如果我们在使用useradd命令时,不加-m等任何参数,sudo useradd test创建出来的用户将是默认“三无”用户:一无Home Directory,二无密码,三无系统Shell。但创建出来的用户是确实存在的。你无法再新创建一个用户名也为“test”的。
可以cat /etc/passwd检查用户是否存在。

而使用adduser时,创建用户的过程更像是一种人机对话,默认参数下系统会提示你输入各种信息(密码等),然后会根据这些信息帮你创建新用户。

关于adduser中的各种参数,可以adduser –help去查询。非常详细,两种添加用户的命令大家都可以使用并且多添加它们的参数一起使用,让新建的用户信息更加完整。

userdel可以从系统中删除用户。
默认情况下,userdel命令会只删除/etc/passwd文件中的用户信息,而不会删除系统中属于该账户的任何文件。
加上-r参数,userdel会删除用户的HOME目录以及邮件目录。然而,系统上仍可能存有已删除用户的其他文件。
在删除用户的HOME目录之前一定要检查清楚有无重要文件!!!!

usermod可以在创建完新用户后修改用户信息。
用法:usermod [options] XXX username
使用对应的参数可以用来修改/etc/passwd文件中的大部分字段。
参数大部分跟useradd命令的参数一样:
•-c修改备注字段
•-e修改过期日期
•-g修改默认的登录组
除此之外,还有:
•-l修改用户账户的登录名。
•-L锁定账户,使用户无法登录。
•-p修改账户的密码。
•-U解除锁定,使用户能够登录。
•-L选项尤其实用。它可以将账户锁定,使用户无法登录,同时无需删除账户和用户的数据。要让账户恢复正常,只要用-U选项就行了。

passwd 可以改当前登录用户(你自己)的密码
root用户可以使用passwd username 修改任意用户密码。

chpasswd命令能从标准输入自动读取登录名和密码对(由冒号分割)列表,给密码加密,然后为用户账户设置。并且可以同时更改多个用户的密码。
用法:echo "username:password" | chpasswd

chsh、chfn和chage工具专门用来修改特定的账户信息。
chsh命令用来快速修改默认的用户登录shell。使用时必须用shell的全路径名作为参数,不能只用shell名。
chfn命令提供了在/etc/passwd文件的备注字段中存储信息的标准方法。

chage命令用来帮助管理用户账户的有效期。
chage命令的日期值可以用以下格式: 
YYYY-MM-DD
Y代表year,M代表month,D代表day

组(group):
方便管理用户,同一组内不同用户之间的文件可能是互相可读的。
1. 有些Linux发行版会创建一个组,把所有用户都当作这个组的成员。
2. 有些发行版会为每个用户单独创建的一个组,这样可以更安全一些。
可以使用grep USERNAME /etc/group或tail /etc/group查看用户组信息
/etc/group文件有4个字段:
•组名 
•组密码 
•GID
•属于该组的用户列表

groupadd命令可在系统上创建新组。
在创建新组时,默认没有用户被分配到该组。可以用usermod -G会把指定用户添加进这个新组中。

在已创建好新组的基础上修改组:
groupmod –g [new GID] [old GID]命令可以修改已有组的GID。
groupmod –n [new name] [old name]命令可以修改已有组的组名。

ls –l 命令可以用来查看Linux系统上的文件、目录和设备的权限。
第一字段的第一个字符代表了文件对象的编码类型:
•-代表文件 之后有3组三字符的编码。
•d代表目录
•l代表链接
•c代表字符型设备 
•b代表块设备
•n代表网络设备

之后有3组三字符的编码。 每一组定义
•d代表目录 了3种访问权限:
•r代表对象是可读的 
•w代表对象是可写的 
x代表对象是可执行的
•-代表没有某种权限

八进制模式的安全性设置
先获取这3个rwx权限的值将其转换成3位二进制值用一个八进制值来表示

umask命令用来显示和设置所创建文件和目录的默认权限。
umask命令第一位代表了一项特别的安全特性,叫作粘着位(sticky bit)。进程结束后文件还驻留(粘着)在内存中。
后三位umask值是个掩码,它会屏蔽掉不想授予该安全级别的权限。
对文件来说,全权限的值是666(所有用户都有读和写的权限);
而对目录来说,则是777(所有用户都有读、写、执行权限)。
文件一开始的权限是666,减去umask值022之后,剩下的文件权限就成了644。
文件一开始的权限是777 ,减去umask值022之后,剩下的文件权限就成了755。

umask值通常会设置在/etc/profile启动文件中,有一些是设置在/etc/login.defs文件中的(如Ubuntu)。
可以用umask命令为默认umask设置指定一个新值。

chmod命令用来改变文件和目录的安全性设置。用法:
chmod [options] [mode] [file]
mode参数可以使用八进制模式或符号模式进行安全性设置。
options的-R选项可以让权限的改变递归地作用到file的子文件和子目录上(相当于把该目录下的所有文件都更改了权限,就不用再去一个一个文件去修改了)。
当然也可以使用通配符(*)指定所有文件,然后利用一条命令将权限更改应用到这些文件

符号模式:
chmod命令也可以在符号模式下指定文件权限。用法:
chmod [option] [u/g/o/a][+/-/=][rwxXstugo…] filename
[option] 可以选择-R参数。常用选项
[u/g/o/a] 字符定义了权限作用的对象。u代表所有者(user);g代表所属组(group);o代表其他用户(others);a代表上述所有用户(all),等同于ugo。
[+/-/=] 字符表示你是想在现有权限基础上增加权限(+)、移除权限(-)、还是设置权限(=)。
[rwxXstugo…] 表示作用的权限模式。rwx表示读、写、执行。X:如果对象是目录或者它已有执行权限,赋予执行权限。 s:运行时重新设置UID或GID。t:保留文件或目录。u:将权限设置为跟所有者一样。 g:将权限设置为跟所属组一样。 o:将权限设置为跟其他用户一样。

命令chmod -R ugo+rw * 等同于刚才的命令 chmod -R 666 *。所以文件的权限这里没有更改的变化。

改变所属关系。chown (change owner)命令用登录名或UID来指定文件的新属主。 用法:
chown [options] [username/:groupname] filename
如:chown –R username filename 表示只更改文件的所有者;
chown –R :groupname filename 表示只更改文件的所属组;
chown –R username :groupname filename 表示同时更改文件的所有者和所属组。
只有root用户才能够改变文件的所有者。文件的所有者可以改变文件的所属组,但前提是所有者必须是原所属组和目标所属组的成员。

创建新文件时,Linux会用你默认的UID和GID给文件分配权限。想让其他人也能访问文件,要么改变其他用户所在组(others)的访问权限,要么把其他用户拉进该文件所在的组(group)Linux系统上共享文件的方法是创建组,并把其他用户放置在一个组中(usermod -G 命令更改用户所在组)。这样这个组内所有成员享有同等的文件权限。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值