2018.7.31第四次课及预习

课堂笔记

1、chattr lsattr

补充   chattr:  i权限,无法修改删除追加 a权限,即append,只能追加

2、文件的特殊权限

set-suid  属主暂时获取文件拥有者root的权限,SUID仅可用在二进制文件(binary file),而且对目录无效

set-gid 若目录被设置这个权限后,任何用户在此目录下创建的文件或者目录都具有和该目录所属组相同的组。

 如果s的权限是在用户组,那么就是Set GID,简称SGID。SGID可以用在两个方面:

         1  文件:如果SGID设置在二进制文件上,无论用户是谁,在执行该程序的时候,它的有效用户组将会变成该程序的用户组所有者;

         2  目录:如果SGID是设置在A目录上,则在该A目录内所建立的文件或目录的用户组,将会是此A目录的用户组。

sticky bit :SBit一般用于目录上,对文件的意义不大。SBit对目录的作用是:在具有SBit的目录下,用户若在该目录下具有w及x权限,则当用户在该目录下建立文件或目录时,只有文件拥有者与root才有权利删除。SBit可以理解为防删除位,粘滞位(Sticky bit),或粘着位,是Unix文件系统权限的一个旗标。最常见的用法在目录上设置粘滞位,如此以来,只有目录内文件的所有者或者root才可以删除或移动该文件。如果不为目录设置粘滞位,任何具有该目录写和执行权限的用户都可以删除和移动其中的文件。实际应用中,粘滞位一般用于/tmp目录,以防止普通用户删除或移动其他用户的文件。

一般情况下,文件名和inode号码是"一一对应"关系,每个inode号码对应一个文件名。但是,Unix/Linux系统允许,多个文件名指向同一个inode号码。这意味着,可以用不同的文件名访问同样的内容;对文件内容进行修改,会影响到所有文件名;但是,删除一个文件名,不影响另一个文件名的访问。这种情况就被称为"硬链接"(hard link)

ln -s命令可以创建软链接。

  ln -s 源文文件或目录 目标文件或目录

3.1 用户配置文件和密码配置文件

用户配置文件 /etc/passwd

  • 这里是列表文本/etc/passwd由“:”分割成7个字段
  1. 第一段:用户名,root是超级用户
  2. 第二段:密码
  3. 第三段:用户的UID,root的uid是0,1-999是系统用户的uid或者预留的,普通用户从1000开始;
  4. 第四段:用户组gid;这个字段对应着/etc/group中的一条记录;
  5. 第五段:注释说明,没有实际意义;
  6. 第六段:用户的家目录;
  7. 第七段:用户的shell;/bin/bash:用户可以登录系统,/sbin/nologin 不可以登录系统。 注意:root和普通用户默认的是 /bin/bash;如果想让一个用户不能登陆系统 可以在 vi/etc/passwd 修改。将/bin/bash 修改成/sbin/nologin

密码配置文件:/etc/shadow

/etc/shadow 存放密码的文件用“:”别冒号分割成9段

1、用户名

2、是密码 这里是*表示账号被锁定 !!表示账号密码为空 密码为空时不能登陆系统的

3、是从1970年1月1日到上次修改密码的时间

4、是多少天后可以修改密码, 如果设置1表示上次修改时间过1天后才能修改密码

5、是多少天后密码会过期 99999就相当于永远不会过期

6、是密码到期前报警期限,

7、是密码过期后多少天如果不修改密码,这个账号就会废掉

8、是账号的生命周期, 从创建账号开始到过期时间

9、是保留项

3.2 用户组管理

用户组文件 /etc/group

groupadd增加用户组

  • 增加用户组命令格式:groupadd [-g gid] groupname

例子:

  • -g选项:设置gid;gid默认从1000开始 

删除组命令:groupdel

  • group有一种情况不能删除组:一个组里有很多用户,只要里面有一个用户,这个组就不能删除。

groupdel:不能移除用户“user1”的主组 //user1组里有个用户user1用户,所以删除不了; 如果想要删除用户组,必须先删除组里的所以用户,再删除用户组。

3.3 用户管理

useradd 增加用户

  • -u 定义UID;普通用户uid从1000开始
  • -g 定义Gid
  • -d 定义家目录
  • -s 定义shell ; /bin/bash登陆,/sbin/nologin不允许登陆
  • -M 不建家目录
  • Useradd不加任何选项,直接跟用户名,这个会创建一个跟用户名同名的组(所创建的用户的uid会延续之前的uid向后顺延,gid会与uid同步,如果与uid同步的gid已被占用,则会往下顺延,例如创建的用户的uid为1007,但gid1007已被占用,则)。

  • 注意:-g后面跟一个不存在的gid会报错;加上-M后,不会创建家目录,但是这里会显示出来家目录,但是在home下面是没有这个家目录文件的

userdel 删除用户,但不会删除家目录

  • userdel -r 删除用户连带家目录一起删除。 例子:

3.4 usermod命令

usermod 修用户的属性

  • -u 修改用户UID
  • -g 修改用户Gid
  • -d 修改用户家目录
  • -s 修改用户shell
  • -G 增加用户扩展组;一个用户可以属于多个组,但是gid只有一个,把用户gid的叫做组,其他组叫做扩展组。
  • -L 锁定一个用户登录
  • -U 解锁用户登录

例子:

usermod -G 扩展组;-G后面可以跟多个组

usermod -g 后面只能跟一个组名

usermod -L 锁定用户

注意:-L user6,查看密码文件的时候,user6密码前面多了一个感叹号,表示用户user6被锁定了;

usermod -U 解锁用户

注意:删除一个组,如果组里面有用户,是不能被删除的,但是这个组属于扩展组是可以删除的。

3.5 用户密码管理

命令passwd:设置用户密码;后面不加用户名,默认修改当前用户的密码

注意:只有root用户才能修改其他用户的密码,普通用户只能修改自己的密码;

  • passwd有个选项也能锁定用户登录
  1. passwd –l 锁定用户
  2. passwd –u 解锁用户

注意:*表示用户密码是锁定的,不能用,不能登录系统;!!表示密码是空的也不能登录;

passwd -l 密码锁定

user5的密码锁定后,密码前面多了2个叹号;

passwd -u 密码解锁

passwd --stdin

passwd --stdin XXX(用户名) 更改密码(密码为明文)

echo "xxxxxxx" |passwd --stdin XXX(用户名)

输出“xxxxxxx”为XXX的明文密码

echo "xxxxxxx" |passwd –stdin username 

这个多用于脚本修改密码

echo -e可以使用换行符\n,这样相当于人工打了一次回车,也可以可以修改密码的。

3.6 mkpasswd命令

mkpasswd用户生成密码;需要安装一个expect包

mkpasswd默认会生成一个9位数密码mkpasswd -l 12 指定密码长度为12

1、-s 1 指定特殊字符个数1

2、-d 4 指定有4个数字

3、-c 3 指定有3个小写

4、-C 5 指定有5个大写

3.7 su命令

  • 切换用户 命令su的格式:su – username;普通用户的su命令不加username时,就是切换到root用户
  • su切换用户,加不加“-”都可以,但还是有区别的;不加“-”切换用户后,环境变量还是上一个用户的;
  • -号加上后会初始化当前用户的各种环境变量su - -c “命令” username
  • 指定某个用户去执行某个命令;
  • Tips:/etc/skel/ 这个目录时家目录文件的模板,如果家目录没有这些文件,直接拷贝过去。

  • 3.8 sudo命令

  • sudo可以使一个普通用户临时去执行root的一个命令或者脚本,通常情况下都是给普通用户授权root用户的身份;不使用su的原因是,su切换的root用户下,需要root的密码,告知密码很不安全;默认情况下只有root用户才能使用sudo命令,普通用户要想使用sudo命令,必须要root预先设定;
  • 使用visudo命令编辑配置文件/etc/sudoers,如果没有这个命令,需要用yum install -y sudo 找到下面内容ALL=(ALL) 左边ALL 表示所有的登陆方式,远程,ip/ip段 (ALL)表示以所有的用户登陆;NOPASSWD: 不需要输入密码例子:只允许普通用户账户登录,而普通用户登录后,不需要输入密码就能使用su切换到root账户下 

    在visudo后面添加下面命令:

    User_Alias USER_SU = lem,user7 //做用户别名

    Cmnd_Alias SU = /usr/bin/su //做命令别名

    USER_SU ALL=(ALL) NOPASSWD: SU 

  • 3.9 限制root远程登录

     /etc/ssh/sshd_config为sshd服务配置文件,默认允许root账户通过ssh远程登录linux。如果想要不允许root用户远程登录linux,具体操作方法:修改配置文件/etc/ssh/sshd_config,在文件中找到#PermitRootLogin yes 修改成PermitRootLogin no,保存后,重启sshd服务:

  • 重新打开一个窗口,提示错误了,root不能远程登录

  •  

  • 这个时候我们可以登录普通用户,然后使用sudo命令切换到root用户下

  • 扩展

  • sudo与su比较 http://www.apelearn.com/bbs/thread-7467-1-1.html

  • sudo配置文件样例 www.opensource.apple.com/source/sudo/sudo-16/sudo/sample.sudoers

  • sudo不错的教程 http://www.jianshu.com/p/51338e41abb7

  • sudo -i 也可以登录到root吗? http://www.apelearn.com/bbs/thread-6899-1-1.html

  • 等等

猜你喜欢

转载自blog.csdn.net/qq_33488321/article/details/81350946