学习笔记整理——用户,属组以及密码相关
2017-04-05 21:08
330 查看
知道每一列代表的意思,面试可能遇到。 新建用户的uid号码从500开始 可以通过更改用户的 shell来限制用户能否登陆。 userdel -r username删除用户以及家目录 id username 查看用户的 uid,gid,以及组 | 用户名文件 # cat /etc/passwd 【核心配置文件】 root: x: 0: 0: root : /root : /bin/bash bin: x: 1: 1: bin : /bin : /sbin/nologin daemon: x: 2: 2: daemon : /sbin : /sbin/nologin adm: x: 3: 4: adm : /var/adm: /sbin/nologin 用户名 口令 uid gid 注释说明 家目录 shell 1. 用户名,可以是大小写字母,数字,减号(不能出现在首位),点,下划线组成。实际应用中,不建议使用点以及下划线,避免引起混淆 2. 口令,早期防止密码的位置,处于安全考虑,放置到 /etc/shadow 中,这里用一个 x 替代。 3. 用户标识号 uid,一个用户对应一个 uid,uid就是系统识别用户的身份。root 的 uid 是 0,如果设置 test 的uid 为 0 ,那么系统会默认 test 获得 root 的所有权限。 uid取值范围0~65536,实际上支持到4294967294,其中0是超级用户的标示,1~499由系统保留,作为管理账号,普通用户识别号由500开始。自定义建立普通用户,用户号大于等于500. 4. 组标识号 gid。 该字段对应 /etc/group 中的一条记录 5. 注释说明。 该字段没有实际意义,记录用户属性,如名字,电话,地址等。普通用户该字段是空的,没有东西。 6. 用户家目录。 用户登录时,就会出在这个目录。root家目录是/root,普通用户家目录格式为 /home/username,可以自定义用户家目录。 7. 用户shell。 root用户和普通用户的默认shell是/bin/bash,该字段中除了/bin/bash,还有/sbin/nologin,表示不允许该账号登陆;/bin/false 表示不能登陆该账号; /bin/shutdown 表示关机。创建用户的时候,不想该用户登陆,可以更改其shell为/sbin/nologin 或者 /bin/false。 创建和删除用户 # useradd [-u UID] [-g GID] [-d HOME] [-M] [-s] -u 指定UID -g 指定GID -d 自定义用户的家目录 -M 不建立家目录 -s 自定义shell /bin/login /bin/shutdown /sbin/nologin -G 指定扩展组 # useradd -u 511 -M newuser -s /sbin/nologin # useradd -d /tmp/newuser -s /bin/bash # tail -n2 /etc/passwd newuser:x:511:511::/home/newuser:/sbin/nologin newuer2:x:512:512::/home/newuser2:/bin/bash 虽然指定了 newuser 不创建家目录,但是在配置文件中仍然存在,这里也只是一个记录,ls /home/newuser 提示不存在。 如果指定了一个 uid,那么系统再创建其他新用户的时候,会从最大的 uid 开始创建,中间如果有略过的,就略过,不会补全。 # userdel -r username # userdel newuser # userdel -r newuser2 -r 选项,在删除用户的时候连带删除用户的家目录和邮件目录,不加则不删。 查看用户信息 # id user1 uid=511(user1) gid=511(user1) 组=511(user1) 修改用户属性 usermod #usermod [-ugds] [用户名] 更改已经存在的用户相关属性 -u 更改用户UID -G 更改扩展组 -g 更改用户属组,后面跟组ID或者组名 -d 更改用户家目录 -s 更改用户shell -L 锁定 Lock -U 解锁 unlock - L 锁定用户之后,不能登录 - U 解锁用户 |
/bin/false和/sbin/nologin的区别 /bin/false是最严格的禁止login选项,一切服务都不能用。而/sbin/nologin只是不允许login系统,但可以使用其他ftp等服务。如果想要用false在禁止login的同时允许ftp,则必须在/etc/shells里增加一行/bin/false。 |
记住密码文件每一列代表的意思。面试。 groupdel 组名,del后面不能跟 GID | 密码文件 # cat /etc/shadow root:$6$roHJdvCkhuW2y1O9$5Fru2qw5yeP81vnKydcNxvuzP0k.T/.RzLqwnvk4.1AjBpB/aXpXLelJr0wnHD9l6LtiMxaR6NnV9YKyXyiGO/:17255:0:99999:7::: bin:*:15980:0:99999:7::: daemon:*:15980:0:99999:7::: adm: *: 15980: 0: 99999: 7: : : 用户名 密码 1. 用户名 2. 密码。 root 的密码很长,经过加密,通常以 $6 开头;* 表示账号锁定,!! 表示 4000 没有密码。 CentOs 6 的加密方式是 sha-512。 $6$开头是 sha-512 $5$开头是sha-256 $1$ 表明是用MD5加密 3. 上次更改密码的时间。距离1970年1月1号,到上次更改密码的间隔天数。 4. 需要多久才可以更改密码。默认 0 ,不限制 5. 密码过期时间 6. 密码到期多少天之前,给用户发送警告。 7. 账号失效期限。默认 0, 若数值为 3,表示密码已经到期,用户在到期之前没有修改密码,那么 3 天后,密码失效。 8. 账号生命周期。表示账号可以用多久,按距离 1970.1.1 号多少天来计算。表示在这个日期前都可以使用。默认为空。 9. 保留用 增加和删除用户组 # groupadd [-g GID] [组名] -g 选项用来指定gid数值,不加-g,默认和uid相同 # groupdel 组名 如果组里面有其他用户,不能删除,只能删除空组 若删除的是扩展组,可以删除。 命令后面只能跟组名,不能跟 GID。 查看用户组文件 # tail /etc/group nfsnobody :x :65534 : cgred :x :499 : stapusr :x :156 : stapsys :x :157 : stapdev :x :158 : haldaemon :x :68 :haldaemon sshd :x :74 : aming :x :500 : 第一列依次 组名、密码、GID、注释。GID 和 UID 一样,默认从 500 开始。 查看组密码文件 # tail /etc/gshadow nfsnobody :! : : cgred :! : : stapusr :! : : stapsys :! : : stapdev :! : : haldaemon :! : :haldaemon sshd :! : : 第一列组名,第二列密码。 ! 表示没有密码。 |
1.工作中最常用的命令是 chown -R user:group file chown -R admin 2.掌握修改密码的三种方法;一条命令行修改密码。 | 更换用户和属组 #chown == change owner, 语法 chown [账户名] [文件名] #chgrp == change group, 语法 chgrp [组名] [文件名] -R 选项表示级联更改 # chown user1:user1 comman # chown -R user2:user2 dir # chown -R user1 dir # chown -R :user1 dir # chgrp -R user2 dir # chgrp user1 1.txt chgrp groupname filename == chown :groupname filename 修改密码 # passwd username 密文的形式修改密码 # passwd --stdin username 明文的形式修改密码 # echo "passwd" |passwd --stdin username 后面没有用户名,则修改root密码 |
在不切换用户的情况下,以该用户的身份执行命令的操作,su - -c command username su - 切换用户的时候同时初始化环境变量 | su 切换用户 查看当前用户的命令 # id # whoami 切换用户 su # su - username 减号的作用,就是在切换用户之后,会初始化当前用户的各种环境变量。比如 PATH,alias,当前目录等待。 如果不加减号,虽然切换了用户,使用的环境变量仍然是之前用户的环境变量。 以指定用户的身份执行命令 # su -c command username # su -c "pwd" user2 /tmp # su - -c "pwd" user2 /home/user2 sudo 在权限够的情况下切换用户 # yum install -y sudo # visudo ## Allow root to run any commands anywhere root ALL=(ALL) ALL username sourceip=user command username localhost=(user1,user2) /binl/ls, /bin/mkdir, /bin/cat username sourceip=NOPASSWD: /bin/ls, /bin/mkdir username 指定哪个用户拥有sudo权限 sourceip 指定主机或者ip地址,即用户从哪个ip访问 user 用户,指定可以切换的用户,ALL 代表所有 command 指定可以使用的命令,ALL代表所有 多个用户用括号括起来,中间逗号隔开 # sudo -u user2 command 限定命令,多个命令用逗号隔开 NOPASSWD: 在执行 sudo 的时候无需输入密码 sudo 登陆 root 为了频繁的执行某些只有超级用户才能执行的权限,而不用每次输入密码,可以使用该命令。 [user2@centos2 ~]$ sudo -i [root@centos2 ~]# ls /root sudo su 登录到 root,但并没有切换环境变量 [user2@centos2 ~]$ echo $PATH /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/user2/bin [user2@centos2 ~]$ sudo su [root@centos2 user2]# echo $PATH /sbin:/bin:/usr/sbin:/usr/bin sudo su - 登录到 root,并切换环境变量,此命令和登陆 root 没有区别 sudo /bin/bash : 这个命令也会切换到root的bash下,但不能完全拥有root的所有环境变量,比如PATH,可以拥有root用户的权限。这个命令和 sudo -s 是等同的。 sudo -s : 如上 所以,我们再来总结一下: sudo su - 约等于 sudo -i sudo -s 完全等于 sudo /bin/bash 约等于 sudo su sudo 终究被一个"临时权限的帽子"扣住,不能等价于纯粹的登录到系统里。 sudo 的日志与安全 配置 sudo 日志 # yum install -y rsyslog # touch /var/log/sudo.log # vim /etc/rsyslog.conf local2.debug /var/log/sudo.log #前面必须用 tab 键 # vim /etc/sudoers Defaults logfile=/var/log/sudo.log Defaults loglinelen=0 Defaults !syslog # /etc/init.d/rsyslog restart |
相关文章推荐
- Asp.Net Ajax 学习笔记10 JavaScript的原生类型以及Microsoft AJAX Library的相关扩展(下)
- 菜鸟学习linux笔记与练习-----第一天。一些初级命令以及基本用户管理
- Linux学习笔记#1_磁盘以及磁盘分区相关的概念
- 学习笔记:查看谷歌浏览器的登陆账号以及密码
- 黑马程序员之C#编程基础学习笔记:提示用户输入密码,如果密码是“888888”,则提示正确,否则提示错误。
- 学习笔记-Linux批量创建用户和设置密码及删除用户
- 菜鸟学习linux笔记与练习-----第一天。一些初级命令以及基本用户管理
- ThinkPHP学习笔记(八)CURD的的相关操作以及表的关联查询等
- 黑马程序员之C#编程基础学习笔记:提示用户输入用户名,然后再提示输入密码,如果用户名是"admin"并且密码是“888888”,则提示正确,否则提示错误,如果用户名不是admin还提示用户用户名不存在
- Linux 学习笔记_7_Linux用户管理_2_SetUID、SetGID、粘着位相关分析
- 【PHP学习笔记】用户注册模块用户类以及验证码类
- 菜鸟学习linux笔记与练习-----一些初级命令以及基本用户管理
- PHP学习笔记(4)----Mysql用户密码的修改[原创]
- plsql学习笔记---plsql相关概念,以及基础结构
- [RedHat学习笔记]总结现学的所有命令(RH033),以及相关概念。
- PHP学习笔记(4)----Mysql用户密码的修改[原创]
- PHP学习笔记 用户注册模块用户类以及验证码类
- MySql学习笔记(登录、增加用户、密码更改)
- 【Linux学习笔记十六】用户密码修复和GRUB引导错误无法进入系统解决办法
- Asp.Net Ajax 学习笔记9 JavaScript的原生类型以及Microsoft AJAX Library的相关扩展(上)