您的位置:首页 > 其它

学习笔记整理——用户,属组以及密码相关

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐