linux 三种用户: 超级用户:root 普通用户 虚拟用户“伪用户” shell 是 /sbin/nologin 作用是:为弄个服务(程序)提供支持的。 用户组的概念; 组的由来。方便管理用户。如果要设置许多用户的权限很繁琐。这里需要把用户加入组。 然后给组设定权限。 用户的配置文件: /etc/passwd # more /etc/passwd root:x:0:0:root:/root:/bin/bash 解析:用户名:密码(x 是个占位符。真正的密码文件位于/etc/shadow):属主的id(UID):属组的id(GID):描述性文字:调用的shell 可以使用id命令来查看 属主的id和属组的id。 # id root uid=0(root) gid=0(root) groups=0(root) LINUX下面 UID 的数值又65535个之多。一般以500为界限。小于等于500的为系统所占有的id。500以上的为普通用户所占有的id 修改用户的属性:可以利用 命令 vipw (直接进入/etc/passwd 的编辑模式) 修改普通用户为超级用户: vipm 修改 普通用户的UID 为0 密码配置文件: /etc/shadow 组配置文件 /etc/shadow 其实: useradd执行创建用户是读取以下3个文件的设置。来创建用户的相关信息的。 /etc/login.defs /etc/default/useradd /etc/kernel (目录)# more /etc/login.defs | grep -Ev "#|^$"MAIL_DIR /var/spool/mailPASS_MAX_DAYS 99999PASS_MIN_DAYS 0PASS_MIN_LEN 5PASS_WARN_AGE 7UID_MIN 500 (centos7 下是1000开始默认)UID_MAX 60000GID_MIN 500GID_MAX 60000CREATE_HOME yesUMASK 077USERGROUPS_ENAB yesENCRYPT_METHOD SHA512 # more /etc/default/useradd GROUP=100HOME=/homeINACTIVE=-1EXPIRE=SHELL=/bin/bashSKEL=/etc/skelCREATE_MAIL_SPOOL=yes# ls -a /etc/skel/. .. .bash_logout .bash_profile .bashrc 所有创建中组和用户如果不指定。都会根据上面3个文件默认自行设定参数。 命令操作; groupadd 创建一个新的工作组。 -g 指定新的组id groupdel 用于删除指定的组 useradd 添加用户命令: 格式: useradd 选项 参数 举个例子: # useradd swa4 -u 510 -g swa -G swa1 -c swa -s /bin/bash # more /etc/passwd | grep swa4 swa4:x:510:501:swa:/home/swa4:/bin/bash -u 指定用户的UID -g 指定用户的组id -G 指定用户的附加组(一个用户除了自身的组外,还可以加入其它组。 就好比,你是羽毛球协会的,你也可以加入乒乓球协会) -c 是注释的内容。 -s 用户登录后的shell -M 不创建用户目录 一般用于创建新用户支持某种服务可以不让用户登录并且不创建用户目录。 # useradd nginx -s /sbin/nologin -M userdel 删除用户 -r 删除用户。连同用户目录下是文件一起删除 -f 如果用户在登录状态也可以强制删除。 此外,还可以通过修改 /etc/passwd 等文件修改。 usermod 用于修改用户的基本信息。 -c 修改用户的备注文字 -d 修改用户登录的目录 -g 修改用户所属的群组 -G 修改用户所属的附加群组 -L 锁定用户账号名称 -U 接触用户ID -l 修改用户的名称 注意-l 的用法: usermod -l 修改后的名字 需要修改的名字linux的权限体系:除了用户和组的概念还有rwx体系: # ls -l ./a -rw-rw-r--. 1 root root 0 Jan 29 23:48 ./a 使用ls 查看一个文件的权限信息。 我们简析下 第一列表示文件的属性 第二列表示硬链接数 第三列和第四列是所属用户和组 第五列是大小 第六,七,八列修改时间 第九列 文件名 我们来看下第一列: -rwxr-xr-x. 先来说下这个点的的含义:就是不使用acl的意思(没有给他ACL设置)如果设置了.就变成+ ACL全称Access Control List,访问控制列表.作用可以针对某个文件赋予单个用户的权利。 如果,你想让不同组的用户,拥有跨组的权限可以通过acl单独对某用户控制。 # setfacl -m user:swa:rw- ./a # getfacl --omit-header ./a user::rw- user:swa:rw- group::r-- mask::rw- other::r-- # ls -l ./a -rw-rw-r--+ 1 root root 0 Jan 29 23:48 ./a -rw-rw-r-- 解读 r 表示 读权限 w 表示写的权限 - 表示没有权限 此外还有 x 表示执行权限 还有一种数字话的表示方式: 4 代表读权限 2 代表写权限 1 代表执行权限 0 代表没有权限。 第一个-代表文件类型。常见的- 文件 d 目录 l 链接 b 块设备文件 c 字符设备文件 s 套接口文件 rw- 是属主的权限也是第一个root(属主)的权限。 -rw 是属组的权限也是第二个root(属组)的权限。 r-- 表示除了属组和属组以外的任何用户。 由此而生的命令:chown 改变属组或属主 chmod 改变文件的权限 chown只有文件主和超级用户才可以便用该命令 -R 改变目录下的所有文件的属主或属组(是个递归操作。对目录使用) chown -R 主名称:组名称 由于读写执行权限又2种解读方法所以chmod 也又2中写法: chmod a=rwx,g=rw-,0=r-x abc(a属主,g 属组,o 其它用户) 想对应的数字为:chmod 765 abc此外,还有些特殊权限:SUID、SGID、SBIT SUID:当用户执行具有x权限的二进制文件时拥有此文件所有者的权限 SGID:当用户执行具有x权限的二进制文件时拥有此文件所在组的权限,另外也可以对目录设置此权限 SBIT:当用户对某个目录具有w和x权限时,在该目录下建立的文件和目录只有该用户和root用户才可以删除 # ls -ld /tmp drwxrwxrwt. 6 root root 4096 Jan 29 22:56 /tmp 这个目录就有 SBIT权限 下面通过数字来设置下 SUID 和 SGID 的权限 # chmod 4664 a # ls -l a -rwSrw-r--+ 1 root root 0 Jan 29 23:48 a # chmod 2664 a # ls -l a -rw-rwSr--+ 1 root root 0 Jan 29 23:48 a SUID 对应4 (对应在x位上的S) SGID 对应 2(对应在x位上的S) SBIT 对应 1(对应在x位上的t) 在原有 3位权限的基础上再加上一位。即可添加这些特殊权限了。 属性 名称大小:文件名、 大小,这两个最好理解了就是文件名字和占用空间大小 所属属性:拥有者、拥有组,如1中所述 时间属性:mtime、ctime、atime mtime:最近一次文件内容变化时间,是具体内容变化,不是属性、权限变化,ls显示的结果就是mtime ctime:最近一次文件状态变化时间,这里就是属性、权限那些变化时的时间 atime:最近一次读取文件时间,如用cat去读取文件的时候还可以通过设置文件属性来保护文件不被修改。 chattr 命令:改变文件属性。 + <属性>:开启文件或目录的该项属性 - <属性>:关闭文件或目录的该项属性 = <属性>:指定文件或目录的该项属性 i :不能对文件修改 # chattr +i /etc/passwd 此时你可以vim进入尝试修改。大都会提醒文件只读。 如何查看文件是否设置了特殊属性呢? lsattr # lsattr /etc/passwd ----i--------e- /etc/passwd 如果想修改回来? # chattr -i /etc/passwd # lsattr /etc/passwd -------------e- /etc/passwd