**用户管理 ** 用户帐号 与 组帐号 唯一标识: UID(用户的ID) GID(组的ID) 管理员的UID为:0 用户 /etc/passwd #用户基本信息 添加用户 useradd -u 设置账户UID -d 设置账户家目录 默认为/home/用户名 -g 设置账户所属基本组 -e 设置账户的失效日期 格式为YYYY-MM-DD -G 设置账户所属附加组 -s 设置账户登陆Shell
例:
[root@server0 ~]# grep 'nsd01' /etc/passwd
nsd01:x:1001:1001::/home/nsd01:/bin/bash
用户名:密码占位符:UID:GID:用户的描述信息:家目录:解释器
[root@server0 /]# useradd nsd01
[root@server0 /]# id nsd01
[root@server0 /]# grep 'nsd' /etc/passwd
[root@server0 /]# useradd -u 1100 nsd02 #指定UID
[root@server0 /]# grep 'nsd' /etc/passwd
[root@server0 /]# useradd -d /op/haha nsd03 #指定家目录
[root@server0 /]# grep 'nsd' /etc/passwd
指定登陆的解释器程序
[root@server0 /]# useradd -s /sbin/nologin nsd04
[root@server0 /]# grep 'nsd' /etc/passwd
如果用户的解释器程序为/sbin/nologin则不能登陆操作系统
[root@server0 /]# useradd -g nsd01 nsd09
[root@server0 /]# id nsd09
[root@server0 /]# useradd -G nsd01 nsd10
[root@server0 /]# id nsd10
修改用户信息 usermod -u 修改账户UID -d 修改账户家目录 -g 修改账户所属基本组 -G 修改账户所属附加组 -e 修改账户的失效日期 -s 修改账户登陆Shell
显示账户信息 id 用户名
删除用户 userdel -r 递归删除 删除用户家目录
临时切换用户身份 su - 用户名
账户密码 /etc/shadow #用户密码信息 [root@server0 ~]# head -1 /etc/shadow root:$6$UiGI4Tc2$htsXYn5cJnOqv3P1VLcUSgfjDu2pL5yiJBuua6foZAHdwqeuLHfYUfS/vBn27Wjvoel8EJgtdsMjyquqvKAmf1:16261:0:99999:7::: 用户名 : 密码 : 上一次修改时间 : 密码最短使用时间 : 密码最长使用时间 : 提前多少时间警告::: 修改密码: passwd 用户名 -l 锁定账户 -u 解锁账户 #管理员模式下 echo '密码' | passwd --stdin 用户名 #非交互式更改密码
组账户管理 组账户: 方便管理用户帐号(权限)把相同权限用户加入到同一个组中 分类: 基本组 附加组(公共组 从属组) /etc/group #组基本信息 创建组帐号 groupadd
例:
[root@server0 ~]# useradd kenji
[root@server0 ~]# useradd tom
[root@server0 ~]# useradd kaka
[root@server0 ~]# useradd henter
[root@server0 ~]# groupadd tarena
[root@server0 ~]# grep 'tarena' /etc/group
gpasswd gpasswd -a #加入组成员 gpasswd -d #删除组成员 gpasswd -M #覆盖组成员
例:
gpasswd - M '' 组名 #删除该组全部成员
[root@server0 ~]# grep 'tarena' /etc/group #查看组信息
[root@server0 ~]# gpasswd -a kenji tarena #加入组成员
[root@server0 ~]# id kenji
[root@server0 ~]# gpasswd -a tom tarena
[root@server0 ~]# grep 'tarena' /etc/group
[root@server0 ~]# gpasswd -a kaka tarena
[root@server0 ~]# grep 'tarena' /etc/group
[root@server0 ~]# gpasswd -d kenji tarena #删除组成员
[root@server0 ~]# grep 'tarena' /etc/group
[root@server0 ~]# gpasswd -M 'kenji,henter' tarena
[root@server0 ~]# grep 'tarena' /etc/group
[root@server0 ~]# gpasswd -M 'kenji,kaka,tom,henter' tarena
[root@server0 ~]# grep 'tarena' /etc/group
[root@server0 ~]# gpasswd -M '' tarena
[root@server0 ~]# grep 'tarena' /etc/group
用户安全:
passwd -l锁定 -u解锁 -S 看状态
[root@server0 ~# useradd test
[root@server0 ~]# echo 123 | passwd --stdin test
更改用户 test 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@server0 ~]# passwd -S test
test PS 2018-01-01 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
[root@server0 ~]# passwd -l test
锁定用户 test 的密码 。
passwd: 操作成功
[root@server0 ~]# passwd -S test
test LK 2018-01-01 0 99999 7 -1 (密码已被锁定。)
[root@server0 ~# passwd -u test
解锁用户 test 的密码。
passwd: 操作成功
[root@server0 ~]# passwd -S test
test PS 2018-01-01 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
chage #查看用户信息 选项: -d, --lastday 最近日期 将最近一次密码设置时间设为“最近日期” 0 强制修改密码 -E, --expiredate 过期日期 将帐户过期时间设为“过期日期” yyyy/mm/dd 指定失效日期 (-1 取消) -h, --help 显示此帮助信息并推出 -I, --inactive INACITVE 过期 INACTIVE 天数后,设定密码为失效状态 -l, --list 显示帐户年龄信息 -m, --mindays 最小天数 将两次改变密码之间相距的最小天数设为“最小天数” -M, --maxdays 最大天数 将两次改变密码之间相距的最大天数设为“最大天数” -R, --root CHROOT_DIR chroot 到的目录 -W, --warndays 警告天数 将过期警告天数设为“警告天数”
[root@server0 ~]# chage -E 2018/01/31 tom
[root@server0 ~]# chage -l tom
最近一次密码修改时间 :1月 02, 2018
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :1月 31, 2018
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数 :7
与用户相关的配置问文件 /etc/passwd /etc/shadow /etc/login.defs #添加系统用户的默认配置文件 /etc/skel/ #存储用户系统环境配置文件
[root@test ~]# ls /etc/skel/ -a
. .. .bash_logout .bash_profile .bashrc .mozilla
[root@test ~]# useradd yy1
[root@test ~]# ls /home/yy1/ -a
. .. .bash_logout .bash_profile .bashrc .mozilla
[root@test ~]# touch /etc/skel/test.txt
[root@test ~]# useradd yy2
[root@test ~]# ls -a /home/yy2/
. .. .bash_logout .bash_profile .bashrc .mozilla test.txt
基本权限的类型 访问方式(权限) 读取:允许查看内容 -read r 写入:允许修改内容 -write w 可执行:允许运行和切换 -execuit x
对于文本文件: r: cat head tail less w: vim x: 运行
权限适用对象(归属) 所有者:拥有此文件/目录的用户-user u 所属组:拥有此文件/目录的组-group g 其他用户:除所有者,所属组以外的用户-other o
[root@server0 ~]# ls -ld /etc/
drwxr-xr-x. 133 root root 8192 10月 30 10:14 /etc/
[root@server0 ~]# ls -l /etc/passwd
-rw-r--r--. 1 root root 2089 10月 30 10:14 /etc/passwd
[root@server0 ~]# ls -l /etc/rc.local
lrwxrwxrwx. 1 root root 13 5月 7 2014 /etc/rc.local -> rc.d/rc.local
权限位 硬连接数 属主 属组 大小 最后修改时间 文件/目录名称
权限位(9位) 文件类型(1) User(属主)(3) Group(属组)(3) Other(其他人)(3)
文件类型
- 代表普通文件 d 代表目录 l 代表链接文件 三位一组分别为 所有者权限,所属组权限,其他账户权限
设置基本权限 chmod (只root能用) chmod 归属关系+-=权限类别 文档 -R 递归将权限应用于所有的子目录与子文件
[root@server0 ~]# chmod u-x /nsd01/
[root@server0 ~]# ls -ld /nsd01/
drw-r-xr-x. 2 root root 6 10月 30 10:41 /nsd01/
[root@server0 ~]# chmod g+w /nsd01/
[root@server0 ~]# ls -ld /nsd01/
drw-rwxr-x. 2 root root 6 10月 30 10:41 /nsd01/
[root@server0 ~]# chmod u=rwx,g=rx,o=r /nsd01/
[root@server0 ~]# ls -ld /nsd01/
drwxr-xr--. 2 root root 6 10月 30 10:41 /nsd01/
如何判断用户具备权限 1.判断用户所属的身份 是否是所有者 是否在所有组 所有者>所属组 >其他人 匹配及停止 2.看相应权限位的权限划分
目录的r 权限:能够ls 浏览此目录内容 目录的w 权限:能够执行 rm/mv/cp/mkdir/touch/..等更改目录内容的操作 目录的x 权限:能够cd切换到此目录
设置文件归属 使用chown命令 chown [所有者][:[所属组]] 文件或目录 -R 递归将权限应用于所有的子目录与子文件 例:
[root@server0 /]# chown :tedu /nsd02
[root@server0 /]# ls -ld /nsd02
drwxr-xr-x. 2 root tedu 6 10月 30 11:42 /nsd02
[root@server0 /]# useradd dc
[root@server0 /]# chown dc:tedu /nsd02
[root@server0 /]# ls -ld /nsd02
drwxr-xr-x. 2 dc tedu 6 10月 30 11:42 /nsd02
[root@server0 /]# chown student /nsd02
[root@server0 /]# ls -ld /nsd02
drwxr-xr-x. 2 student tedu 6 10月 30 11:42 /nsd02
特殊权限(附加权限)
Set UID 附加在属主的x位上 属主的权限标识会变成s 适用于可执行文件,Set UID 可以让使用者具有文件属组的身份及部分权限 (传递所有者身份) 如 手持尚方宝剑 例:
[root@server0 /]# cp /usr/bin/touch /usr/bin/hahach
[root@server0 /]# chmod u+s /usr/bin/hahach
[root@server0 /]# ls -l /usr/bin/hahach
-rwsr-xr-x. 1 root root 62432 10月 30 14:14 /usr/bin/hahach
[root@server0 /]# su - dc
[dc@server0 ~]$ touch a.txt
[dc@server0 ~]$ hahach b.txt
[dc@server0 ~]$ ls -l
total 0
-rw-rw-r--. 1 dc dc 0 Oct 30 14:15 a.txt
-rw-rw-r--. 1 root dc 0 Oct 30 14:15 b.txt
Set GID 附加在属组的x位 属组的权限标识变成为s 适用于可执行文件,功能于Set UID类似 适用于目录,Set GID可以是目录下新增的文档自动设置与父目录相同的属组
为了使在这个目录下新增的文件或目录的所属组和父目录相同(只针对未来生成的文件)
例:
[root@server0 /]# ls -l /test/1.txt
-rw-r--r--. 1 root root 0 10月 30 14:37 /test/1.txt
[root@server0 /]# chown :tedu /test/
[root@server0 /]# chmod g+s /test/
[root@server0 /]# ls -ld /test
drwxr-sr-x. 2 root tedu 18 10月 30 14:37 /test
[root@server0 /]# mkdir /test/testone
[root@server0 /]# ls -l /test/
-rw-r--r--. 1 root root 0 10月 30 14:37 1.txt
drwxr-sr-x. 2 root tedu 6 10月 30 14:39 testone
Sticky Bit 附加在其他人的x位 其他人的权限标识变成为t 适用于开放w 权限的目录,可以阻止用户滥用w 写入权限 (禁止操作别人的文档) 例:
[root@server0 /]# chmod u+w,g+w,o+w /public/
[root@server0 /]# chmod o+t /public/
[root@server0 /]# ls -ld /public/
drwxrwxrwt. 2 root root 6 10月 30 14:43 /public/
[zhangsan@server0 /]$ ls -l /public/
-rw-rw-r--. 1 dc dc 0 Oct 30 14:53 dc.txt
-rw-rw-r--. 1 test test 0 Oct 30 14:52 test.txt
-rw-rw-r--. 1 zhangsan zhangsan 0 Oct 30 14:52 zhangsan.txt
[zhangsan@server0 /]$ rm -rf /public/test.txt
rm: cannot remove ‘/public/test.txt’: Operation not permitted
ACL 访问控制列表 作用 文档归属的局限性 任何人只属于三种角色:属主,属组,其他人 无法实现更精细的控制 acl访问策略 能狗对个别用户,个别组设置独立的权限 大多挂载EXT3/4(存储小文件),XFS(存储大文件)文件系统已支持 命令 getfacl 文档 #查看ACL策略 setfacl [-R] -m u:用户名:权限类别 文档 setfacl [-R] -m g:组名 :权限类别 文档 setfacl [-R] -x u:用户名 文档 #删除指定ACL策略 setfacl [-R] -b 文档 #清空ACL策略
例:
[dc@server0 ~]$ cd /NB/
bash: cd: /NB/: Permission denied
[root@server0 /]# ls -ld /NB/
drwxrwx---. 2 root cw 6 10月 30 15:27 /NB/
[root@server0 /]# setfacl -m u:dc:rx /NB/
[root@server0 /]# ls -ld /NB/
drwxrwx---+ 2 root cw 6 10月 30 15:27 /NB/
[root@server0 /]# getfacl /NB/
getfacl: Removing leading '/' from absolute path names
# file: NB/
# owner: root
# group: cw
user::rwx
user:dc:r-x
group::rwx
mask::rwx
other::---
[dc@server0 ~]$ cd /NB/
[dc@server0 NB]$
权限的数值变化 权限的数值化 基本权限:r=4,w=2,x=1 附加权限:SUID=4,SGID=2,Sticky Bit=1 采取数值形式设置权限 chmod [-R ] nnn 文当 设置基本权限 chmod [-R ] xnnn 文档 设置附加权限(x为附加权限数值)
例如:
[root@room1pc32 桌面]# mkdir /test01
[root@room1pc32 桌面]# ls -ld /test01
drwxr-xr-x. 2 root root 6 11月 11 09:26 /test01
[root@room1pc32 桌面]# chmod 007 /test01
[root@room1pc32 桌面]# ls -ld /test01
d------rwx. 2 root root 6 11月 11 09:26 /test01
[root@room1pc32 桌面]# chmod 777 /test01
[root@room1pc32 桌面]# ls -ld /test01
drwxrwxrwx. 2 root root 6 11月 11 09:26 /test01
[root@room1pc32 桌面]# chmod 4750 /test01/
[root@room1pc32 桌面]# ls -ld /test01/
drwsr-x---. 2 root root 6 11月 11 09:26 /test01/