Linux用户及权限管理--总结
1、Linux操作系统用户及用户组
Linux操作系统是多任务(Multi-tasks)多用户(Multi-users)分时操作系统,Linux操作系统的用户就是让我们登录到Linux的权限;每当我们使用用户名登录操作系统时,Linux都会对该用户进行认证、授权审计等操作。操作系统为了识别每个用户,会给每个用户定义一个ID,就是UID。用户组就相当于多个用户的容器;在Linux系统中,用户组也有一个ID,GID。
1.1 Linux操作系统用户
在Linux中,用户分为两大类;管理员和普通用户,其中普通用户有分为系统用户和登录用户;
系统用户:为了能够让那些后台进程或服务类进程以非管理员的身份运行,通常需要为此创建多个普通用户,这类用户从来不用登录系统。
登录用户:就是我们一般使用登录Linux的用户
用户标识:user id,UID
通常使用16bits二进制数字表示(0-65535)
管理员的用户标识:0
普通用户:1-65535
系统用户:1-499(centos6)、1-999(centos7)
登录用户:500-60000(centos6)、1000-60000(centos7)
Linux通过名称解析库 "/etc/passwd" 文件解析用户名与用户ID之间的对应关系。
/etc/passwd:用户信息库
name:password:UID:GID:GECOS:home directory:shell
1.2Linux操作系统用户组
在Linux中,用户组分类方式有三种:
1、管理员组、普通用户组(系统用户组、登录用户组)
2、用户的基本组、用户附加组
3、私有组、公共组
用户组标识:group id,GID
通常使用16bits二进制数字表示(0-65535)
管理员的用户组标识:0
普通用户组:1-65535
系统用户组:1-499(centos6)、1-999(centos7)
登录用户组:500-60000(centos6)、1000-60000(centos7)
Linux通过名称解析库“/etc/group”文件解析用户名与用户ID之间的对应关系。
/etc/group:组的信息库
group_name:passwd:GID:user_list
user_list:该组用户的成员;以此组为附加组的用户的用户列表
1.3Linux操作系统密码
用户在登录Linux系统时,会对比passwd与之前保存在"/etc/shadow"、"/etc/gshadow"文件中的密码是否一致。
加密算法:
对称加密:加密和解密使用同一个密码
非对称加密:加密和解密使用的一对密钥
密钥对:公钥、私钥
单向加密:只能加密,不能解密;提取数据特征码
定长输出:
雪崩效应:密码中某一个字符改变,那么整个加密后的密钥都会改变
Linux的密码加密方式使用单项加密算法,并且添加随机数(salt)计算得出的。
系统识别算法ID | 算法名称 |
1 |
MD5:message digest,128bits |
2 | sha:secure hash algorithm,160bits |
3 | sha224 |
4 | sha256 |
5 | sha384 |
6 | sha512 |
/etc/shadow:用户密码
用户名:加密的密码:最近一次修改密码的时间:最短使用期限:最常使用期限:警告期段:非活动期限:过期期限:保留字段
1 [root@localhost ~]# head -1 /etc/shadow
2 root:$6$mNeLUb3TE/L9utIA$nVgYyR6KkPDFRYrZC2Q9hPRNgz8z3mDKsQKraE1Fy8.LBMQoldhK4Ne1ZZlolZg2362JgdrwmTRmSbI5PTe.j0::0:99999:7:::
加密密码:使用$分隔,第一个段表示使用的加密算法,第二个段表示添加的salt(随机数),第三段表示加密后的密码
2、权限管理
Linux的文件管理权限分为读、写和执行
1 [root@localhost ~]# ls -l /bin/bash
2 -rwxr-xr-x. 1 root root 960392 8月 3 2016 /bin/bash
文件权限:
-rwxr-xr-x
共分为五个部分:-表示文件类型、rwx用户属主的权限、r-x用户属组的权限、r-x其他用户的权限、.是否启用facl
权限:
r:readable,读
w:wirteable,写
x:excuteable,执行
权限对文件的作用:
r:可获取文件的数据
w:可修改文件的数据
x:可将此文件运行为进程
权限对目录的作用:
r:可使用ls命令获取其下的所有文件列表或其子目录。
w:可修改此目录下的文件列表即创建或删除文件,包括子目录。
x:可cd至此目录中;且可使用ls -l来获取所有文件的详细属性信息
权限组合 | 二进制数 | 十进制数 |
--- | 000 | 0 |
--x | 001 | 1 |
-w- | 010 | 2 |
-wx | 011 | 3 |
r-- | 100 | 4 |
r-x | 101 | 5 |
rw- | 110 | 6 |
rwx | 111 | 7 |
练习:
rw-rw-r-- 664
rwxrwxr-x 775
rwxr-x--- 750
rw------- 600
rwxr-xr-x 755
3、相关命令
3.1用户管理命令
useradd命令:创建用户
useradd [选项] 用户名
-u,--uid UID:指定UID,默认是上一个用户的UID+1
-g,--gid GID:指定基本组ID,此组得事先存在
-G,--groups GROUP1[,GROUP2,.....][,GROUPSN]:指明用户所属的附加组,多个组之间用逗号分隔
-c,--comment COMMENT:指明注释信息
-d,-home HOME_DIR:以指定路径为用户的家目录;通过复制/etc/skel此目录并重命名实现;指定的家目录路径如果事先存在,则不会为用户复制环境配置文件
-s,--shell SHELL:指定用户的默认shell,可用的所有shell列表存储在/etc/shells文件中
-r,--system:创建系统用户
-M:不为用户创建主目录
-f,--incatice INACTIVE:在密码过期后,账户被彻底禁用之前的天数,0表示立即禁用,-1表示禁用该功能
注意:创建用户时的诸多默认设定配置文件为/etc/login.defs
useradd -D:显示创建用户的默认选项配置
useradd -D 选项:修改默认选项的值
修改的结果保存于/etc/default/useradd文件中;可以直接修改此文件来实现
usermod命令:修改用户属性
usermod [选项] 用户名
-u,--uid UID:修改用户的ID为此处指定的新UID
-g,--group GROUP:修改用户所属的基本组;此组得事先存在
-G,--groups GROUP1[,GROUP2,GROUP3,....]:修改用户所属的附加组,原来的附加组会被覆盖
-a,-append:与-G一同使用,用于用户追加新的附加组
-c,--comment COMMENT:修改注释信息
-d,--home HOME_DIR:修改用户的家目录;用户原来的文件不会被转移至新位置
-m,--move-home:只能与-d选项一同使用,用于将原来的家目录移动为新的家目录
-l,--login NEW_LOGING:修改用户名
-s,--shell SHELL:修改用户的默认shell
-L,--lock:锁定用户密码;即在用户原来的密码字符串之前添加一个“!”
-U,--unlock:解锁用户密码
userdel命令:删除用户
userdel [选项] 用户名
-r:删除用户时一并删除其家目录和用户邮箱
id命令:显示用户的真实和有效的UID和GID
id [option]... [username]
-u:仅显示有效的UID
-g:仅显示用户的基本组的ID
-G:仅显示用户所属的所有组的ID
-n:显示名字而非ID;一般与g一起使用:-ng
su命令
登录式切换:会通过重新读取目标用户的配置文件来重新初始化
su - USERNAME
非登录式切换:不会读取目标用户的配置文件进行初始化
su USERNAME
注意:管理员可无密码切换至其他任何用户;其他用户在切换用户时必须输入密码
-c “COMMAND”:仅以指定用户的身份运行此处指定的命令
例如:su - USERNAME -c “whoami”
3.2用户组管理命令
groupadd命令:添加组
groupadd [选项] GROUP_NAME
-g GID:指定GID,默认是上一个组的GID+1
-r:创建系统组
groupmod命令:修改组属性
groupmod [选项] GROUP_NAME
-g GID:修改GID
-n NEW_NAME:修改组名
groupdel命令:删除组
groupdel [选项] GROUP
3.3用户及用户组练习
练习:1:创建用户gentoo,UID为4001,基本组为gentoo,附加组为distro(GID为5000)和penguin(GID为5001);
练习2:创建用户fedora,其注释信息为"Fedora Core",默认shell为/bin/tsch;
练习3:修改gentoo用户的家目录为/var/tmp/gentoo;要求其原有文件人仍能被用户访问;
练习4:为gentoo新增附加组netadmin
3.4密码管理命令
passwd命令:passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays]
[-S] [-stdin] [username]
(1)passwd:修改用户自己的密码
(2)passwd USERNAME:修改指定用户的密码,但仅root有此权限
-l:锁定用户
-u:解锁用户
-d:清除用户密码
-e:过期期限,日期
-i:非活动期限,时间范围
-n:密码的最短使用期限
-x:密码的最长使用期限
-w:警告期限
--stdin:echo “PASSWORD” | passwd --stdin USERNAME
1 [root@localhost ~]# echo "ceshimima" | passwd --stdin ceshi
2 更改用户 root 的密码 。
3 passwd:所有的身份验证令牌已经成功更新。
gpasswd命令:
用户组密码文件:/etc/gshadow
gpasswd [选项] group_name
-a USERNAME:向组中添加用户,作为附加组
-d USERNAME:从组中删除用户
newgrp命令:临时切换指定的组为基本组
newgrp [-] [group_name]
-:会模拟用户重新登录以实现重新初始化其工作环境
注意:
若指定组设定了密码:
(1)如果用户的附加组是要切换到的组名,那么不需要密码可以直接切换到指定组
(2)如果用户的附加组不包含要切换的组名,那么需要输入密码才能切换到指定组
若指定组没有设定密码,所有用户都不可以直接切换到指定组,root用户除外
3.5权限管理命令
chmod命令:
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...
三类用户:
u:属主
g:属组
o:其他
a:所有
(1)chmod [OPTION]... MODE[,MODE]... FILE...
MODE表示法:
赋权表示法:直接操作一类用户打的所有权限位;
在赋予三类用户的权限不同时,则用逗号隔开;如果相同,可以合并授权
u=
g=
o=
a=
授权表示法:直接操作一类用户的所有权限位r,w,x
在赋予三类用户的权限不同时,则用逗号隔开;如果相同,可以合并授权
u+,u-
g+,g-
o+,o-
a+,a-
(2)chmod [OPTION]... OCTAL-MODE FILE...
使用十进制的数字进行授权
(3)chmod [OPTION]... --reference=RFILE FILE...
参考其他文件权限授权
选项:
-R:递归修改,对目录下的所有文件(包括子目录)都有效。
注意:用户仅能修改属主为自己的文件的权限
从属关系管理命令:chown,chgrp
chown命令:
chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...
选项:
-R:递归修改,对目录下的所有文件(包括子目录)都有效
--reference:参考其他文件属主属组进行修改属主和属组
注意:仅管理员可修改文件的属主和属组
chgrp命令:
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
思考一:用户对目录有写权限,但对目录下的文件没有写权限时,能否修改此文件内容?能否删除此文件?
不能修改此文件内容,但是能够删除此文件
思考二:用户对目录有什么权限时,可以使用mv命令?
x,执行权限
umask命令:文件的权限反向掩码,遮罩码
文件:
666-umask
目录:
777-umask
注意:之所以文件用666去减,表示文件默认不能拥有执行权限;如果减得的结果中有执行权限,则需要将其加1;
umask命令:
umask:查看当前umask
umask MASK:设置umask
注意:此类设定仅对当前shell进程有效