介紹 在日常的維護過程中創建用戶操作用的相對會多一些,但是在這個過程中涉及到的知識點就不單單就是useradd了,接下來就來詳細瞭解賬號管理的相關信息。 用戶信息 先從用戶信息開始分析,可以通過查詢/etc/password文件,每一行代表一個用戶信息 介紹 在日常的維護過程中創建用戶操作用的相對會 ...
介紹
在日常的維護過程中創建用戶操作用的相對會多一些,但是在這個過程中涉及到的知識點就不單單就是useradd了,接下來就來詳細瞭解賬號管理的相關信息。
用戶信息
先從用戶信息開始分析,可以通過查詢/etc/password文件,每一行代表一個用戶信息root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
mysql:x:496:501::/home/mysql:/bin/bash
每個冒號分隔一部分,整行總共分為7個部分。
1.用戶名
2.用戶密碼,早期版本的賬號密碼是直接存在這裡,為了相容所以也保留下了這部分,用X代替。
3.UID:所屬的用戶ID,每個文件的前面都有該文件所屬的用戶和組,其實存的是UID只不過是通過UID再去etc/password、/etc/shadow中找到對應的UID和GID的名稱。
超級用戶的uid=0
系統用戶(1-499):其中1-99是系統創建的,100-499是用戶創建的系統賬戶,系統用戶不能登入但是可以執行系統的一些命令,這個跟最後指定的shell有關;有一個特殊的shell是/sbin/nologin
普通用戶(500-65535)
4.GID:賬號所屬的用戶組ID,和/etc/group組文件有關聯
5.用戶描述
6.用戶的家目錄:創建用戶的家目錄預設是在/home/用戶/,在創建用戶的時候可以指定用戶的家目錄,系統用戶的家目錄比較特殊,比如root用戶的家目錄是/root
7.shell:shell是終端和kernel(內核)溝通的橋梁、內核再和低層的硬體交互(包括CPU、主板、硬碟、顯卡、光碟機等),linux預設的shell是/bin/bash
密碼信息
用戶密碼文件中每一行記錄一個用戶的密碼信息,總共有九個部分
[root@localhost ~]# cat /etc/shadow root:$1$4/CBv0UU$GZ1mEvqxy6/9UaTGI9YUT0:16862:0:99999:7:::
1.用戶名:對應/etc/password文件中的用戶信息
2.密碼:密碼存的是密文
3.最近更改密碼的日期:linux將1970年1月1日作為1,所以上面的16862是累加的,具體就不去算了
4.密碼不可被更改的天數:0代表密碼隨時可以被更改,通常可以用來設置某個用戶在多少天密碼不能被更改
5.密碼需要重新更改的天數:99999為273年,改時間是在第3部分的基礎上再相加的。
6.密碼需要修改前的警告天數:改天數是在第5的基礎上計算的,這裡預設是7天也就是密碼在需要更改前的第7天開始就發出警告。
7.密碼過期後賬號寬限的天數:當密碼超過了需要更改的天數後,如果用戶依然沒有更改密碼,那麼該密碼就過期了,在過期的這幾天里密碼依舊可以登入當用戶在寬限的時間內登入系統系統會強制用戶修改密碼,如果用戶在寬限的天內還未修改密碼那麼密碼就永久過期無法再登入,只有賬戶超出了密碼過期的天數之後賬戶才失效,所以一個賬戶總的有效時間是3+6+7。
8.用戶失效的日期:改日期同第3部分一樣都是從1970年1月1日開始計算出來的數字,超過這個日期之後無論用戶密碼是否過期用戶都失效不能再使用,改日期通常會用在規定一個用戶在規定的日期之後就用戶就不能使用的收費系統中。
9.保留部分
計算當前日期通過1970年換算過來的數字
[root@localhost ~]# echo $(($(date +'%s')/86400+1)) 16927
計算指定日期通過1970年換算過來的數字
[root@localhost ~]# echo $(($(date --date="2016-01-01" +'%s')/86400+1)) 16802
創建用戶
明白了上面的概念之後就可以來創建用戶了,創建用戶的命令是useradd,接下來看幾個主要的參數。
useradd [-u UID] [-g 初始群組] [-G 次要群組] [-m\M] [-c 說明] [-d 家目錄絕對路徑] [-s shell] 賬號名
-c, --comment COMMENT 用戶說明 -d, --home-dir HOME_DIR 用戶的家目錄 -D, --defaults 預設的用戶配置 -e, --expiredate EXPIRE_DATE 用戶的失效日期,這裡需要指定的是從1970年1月1日開始計算出來的數字,比如16925代表2016年5月4日過期,對應密碼文件的第8部分 -f, --inactive INACTIVE 指定密碼過期的時間,這裡指定的是數字,比如10代表密碼在過期的10天內還可以登入但是登入後需要強制修改密碼, 對應密碼文件的第7部分 -g, --gid GROUP 用戶的GID -G, --groups GROUPS 列出用戶還能加人的組、次要組
-h, --help 幫助信息 -k, --skel SKEL_DIR use this alternative skeleton directory -K, --key KEY=VALUE override /etc/login.defs defaults -l, --no-log-init do not add the user to the lastlog and faillog databases -m, --create-home 強制需要創建家目錄 -M, --no-create-home 強制不創建家目錄 -N, --no-user-group 不創建用戶的組名和用戶名一樣 -o, --non-unique 允許創建的用戶uid相同,預設情況下用戶的UID是唯一的,加上-o參數可以創建相同UID的不用用戶
-p, --password PASSWORD 指定創建用戶的密碼,這裡的密碼存儲的是密文,所以還需要知道密文對應的明文密碼是多少 -r, --system 創建一個系統用戶 -s, --shell SHELL 指定用戶的shell -u, --uid UID 指定用戶的uid -U, --user-group 創建的用戶組名同用戶名,這是預設的
-Z, --selinux-user SEUSER use a specific SEUSER for the SELinux user mapping
1.創建用戶test
創建用戶不加參數預設會創建一個同名的用戶組、密碼為空,用戶的UID和GID都是500之後在現有的UID和GID的基礎上往後自動添加、預設會創建一個同名的家目錄家目錄的預設許可權是700
[root@localhost ~]# useradd test [root@localhost ~]# grep test /etc/passwd /etc/shadow /etc/group /etc/passwd:test:x:501:502::/home/test:/bin/bash /etc/shadow:test:!!:16925:0:99999:7::: /etc/group:test:x:502:
[root@localhost ~]# ll -d /home/test
drwx------. 4 test test 4096 May 4 16:25 /home/test
2.創建用戶new備註用戶為test,指定用戶UID為600,用戶的組初始組為test、用戶的次要組為mysql,指定用戶的失效日期(註意這裡的失效日期也是需要通過1970年1月1日進行換算)、指定用戶的過期天數
3.創建系統用戶old
創建的系統用戶雖然在用戶文件中有指定家目錄,但是實際上在home目錄下並不會創建對應用戶的目錄,且不會創建用戶郵件通知目錄。
4.創建不允許登入的用戶
5.指定用戶家目錄
先創建用戶家目錄
[root@localhost ~]# mkdir -p /test/home
[root@localhost ~]# mkdir /test/home/testuser
創建用戶並指定家目錄
[root@localhost ~]# useradd -d /test/home/testuser testuser useradd: warning: the home directory already exists. Not copying any file from skel directory into it.
註意:這裡的家目錄是絕對路徑,也就是你指定了那個目錄家目錄就是哪個目錄不會在你指定的目錄下再創建目錄,這裡會有警告說用戶不能拷貝文件到家目錄,因為家目錄的許可權還是之前創建目錄用戶的許可權,這個時候需要給家目錄賦予用戶擁有者。
[root@localhost ~]# chown testuser:testuser /test/home/testuser [root@localhost ~]# ll /test/home total 4 drwxr-xr-x. 2 testuser testuser 4096 May 5 06:22 testuser [root@localhost ~]#
刪除用戶
userdel [options] LOGIN
-f, --force 強制刪除用戶,不管該用戶是否在使用
-h, --help 幫助信息
-r, --remove 刪除用戶和組並且刪除用戶的家目錄和郵件通知目錄 -Z, --selinux-user 刪除SELinux用戶
1.不加參數刪除用戶
userdel testuser
不加參數刪除只會刪除用戶、密碼、用戶組,不會刪除用戶的家目錄和用戶的郵件目錄
2.刪除用戶同時刪除用戶的家目錄和郵件通知目錄
userdel -r test
使用-r參數刪除用戶會同時刪除用戶的家目錄和用戶的郵件通知目錄,如果用戶的用戶組是使用其它用戶的用戶組,其它用戶組不會被刪除。
用戶組
創建用戶組
groupadd groupname
刪除用戶組
groupdel groupname
修改用戶組
--修改用戶組名 groupmod -h newname oldname --修改用戶組ID groupmod -g newgid oldgid
單獨對用戶組的操作用的不會很多,這裡只需要瞭解一下就好。
總結
修改用戶這裡就不做詳細的解釋,跟創建用戶的語法相差不大,
備註: 作者:pursuer.chen 博客:http://www.cnblogs.com/chenmh 本站點所有隨筆都是原創,歡迎大家轉載;但轉載時必須註明文章來源,且在文章開頭明顯處給明鏈接。 《歡迎交流討論》 |