** Description changed:

  [Impact]
  
-  * update-rc.d, in sysv-rc-2.88dsf-41ubuntu6.3 is broken in trusty.
+  * update-rc.d, in sysv-rc-2.88dsf-41ubuntu6.3 is broken in trusty.
  
-  * update-rc.d incorrectly modifies symlinks when enabling or disabling 
services
-    which are started on the "S" runlevel.
+  * update-rc.d incorrectly modifies symlinks when enabling or disabling  
+    services which are started on the "S" runlevel.
  
-  * This can lead to services being changed from S runlevel from where they 
would
-    be started on boot, to "0" runlevel, and are run on halt, which is 
incorrect.
+  * This can lead to services being changed from S runlevel from where they 
+    would be started on boot, to "0" runlevel, and are run on halt, which is 
+    incorrect.
  
-  * The bug is caused by trying to use the runlevel to index into an integer
-    array of runlevels. When the runlevel in question is "S", an error is 
printed
-    
-    Argument "S" isn't numeric in array element at /usr/sbin/update-rc.d line 
232.
+  * The bug is caused by trying to use the runlevel to index into an integer
+    array of runlevels. When the runlevel in question is "S", an error is 
+    printed
  
-    Perl then sets the index to default to 0, which changes the runlevel.
+    Argument "S" isn't numeric in array element at /usr/sbin/update-rc.d line 
+    232.
  
-  * The fix is to check if the runlevel is "S", and if it is, set the index to 
99
-    which conforms with other expected usages for the "S" runlevel in the 
script.
-    See the "startstop" and "makelinks" subroutines.
+    Perl then sets the index to default to 0, which changes the runlevel.
+ 
+  * The fix is to check if the runlevel is "S", and if it is, set the index to 
 
+    99 which conforms with other expected usages for the "S" runlevel in the 
+    script. See the "startstop" and "makelinks" subroutines.
  
  [Test Case]
  
- * You can reproduce this with any service that is started on the "S" runlevel.
-   We will use open-iscsi for an example.
+ * You can reproduce this with any service that is started on the "S" 
+   runlevel. We will use open-iscsi for an example.
  
  1) Install open-iscsi
  
  $ sudo apt install open-iscsi
  
  2) Check to see symlinks for init.d scripts are set to defaults:
  
  root@trusty-openiscsi:/etc# ls -l /etc/rc[0123456S].d/*iscsi*
- lrwxrwxrwx 1 root root 24 Apr 29 20:56 /etc/rc0.d/K80umountiscsi.sh -> 
../init.d/umountiscsi.sh
- lrwxrwxrwx 1 root root 20 Apr 29 20:56 /etc/rc0.d/K81open-iscsi -> 
../init.d/open-iscsi
- lrwxrwxrwx 1 root root 24 Apr 29 20:56 /etc/rc1.d/K80umountiscsi.sh -> 
../init.d/umountiscsi.sh
- lrwxrwxrwx 1 root root 20 Apr 29 20:56 /etc/rc1.d/K81open-iscsi -> 
../init.d/open-iscsi
- lrwxrwxrwx 1 root root 24 Apr 29 20:56 /etc/rc6.d/K80umountiscsi.sh -> 
../init.d/umountiscsi.sh
- lrwxrwxrwx 1 root root 20 Apr 29 20:56 /etc/rc6.d/K81open-iscsi -> 
../init.d/open-iscsi
- lrwxrwxrwx 1 root root 20 Apr 29 20:56 /etc/rcS.d/S45open-iscsi -> 
../init.d/open-iscsi
+ /etc/rc0.d/K80umountiscsi.sh -> ../init.d/umountiscsi.sh
+ /etc/rc0.d/K81open-iscsi -> ../init.d/open-iscsi
+ /etc/rc1.d/K80umountiscsi.sh -> ../init.d/umountiscsi.sh
+ /etc/rc1.d/K81open-iscsi -> ../init.d/open-iscsi
+ /etc/rc6.d/K80umountiscsi.sh -> ../init.d/umountiscsi.sh
+ /etc/rc6.d/K81open-iscsi -> ../init.d/open-iscsi
+ /etc/rcS.d/S45open-iscsi -> ../init.d/open-iscsi
  
  3) Use update-rc.d to enable open-iscsi service
  
  root@trusty-openiscsi:/etc# update-rc.d open-iscsi enable
  update-rc.d: warning: start runlevel arguments (none) do not match open-iscsi 
Default-Start values (S)
  update-rc.d: warning: stop runlevel arguments (none) do not match open-iscsi 
Default-Stop values (0 1 6)
  Argument "S" isn't numeric in array element at /usr/sbin/update-rc.d line 232.
  Enabling system startup links for /etc/init.d/open-iscsi ...
  Removing any system startup links for /etc/init.d/open-iscsi ...
  /etc/rc0.d/K81open-iscsi
  /etc/rc1.d/K81open-iscsi
  /etc/rc6.d/K81open-iscsi
  /etc/rcS.d/S45open-iscsi
  Adding system startup for /etc/init.d/open-iscsi ...
  /etc/rc0.d/K81open-iscsi -> ../init.d/open-iscsi
  /etc/rc1.d/K81open-iscsi -> ../init.d/open-iscsi
  /etc/rc6.d/K81open-iscsi -> ../init.d/open-iscsi
  /etc/rc0.d/S45open-iscsi -> ../init.d/open-iscsi
  
- * The problem is the "/etc/rcS.d/S45open-iscsi" symlink is incorrectly 
changed to
-   "/etc/rc0.d/S45open-iscsi".
+ * The problem is the "/etc/rcS.d/S45open-iscsi" symlink is incorrectly 
+   changed to "/etc/rc0.d/S45open-iscsi".
  
- * Instead, the correct behaviour is to keep the symlink in /etc/rcS.d/
- intact:
+ * Instead, the correct behaviour is to keep the symlink in /etc/rcS.d/ 
+   intact:
  
  root@trusty-openiscsi:/etc# update-rc.d open-iscsi enable
  update-rc.d: warning: start runlevel arguments (none) do not match open-iscsi 
Default-Start values (S)
  update-rc.d: warning: stop runlevel arguments (none) do not match open-iscsi 
Default-Stop values (0 1 6)
  Enabling system startup links for /etc/init.d/open-iscsi ...
  Removing any system startup links for /etc/init.d/open-iscsi ...
  /etc/rc0.d/K81open-iscsi
  /etc/rc1.d/K81open-iscsi
  /etc/rc6.d/K81open-iscsi
  /etc/rcS.d/S45open-iscsi
  Adding system startup for /etc/init.d/open-iscsi ...
  /etc/rc0.d/K81open-iscsi -> ../init.d/open-iscsi
  /etc/rc1.d/K81open-iscsi -> ../init.d/open-iscsi
  /etc/rc6.d/K81open-iscsi -> ../init.d/open-iscsi
  /etc/rcS.d/S45open-iscsi -> ../init.d/open-iscsi
  
- 
  [Regression Potential]
  
-  * There is only one file modified, which is the update-rc.d perl script. 
Worst
-    case scenario is that users cannot enable or disable their services, or a
-    symlink is changed such that a service is started / stopped on an incorrect
-    runlevel.
+  * There is only one file modified, which is the update-rc.d perl script. 
+    Worst case scenario is that users cannot enable or disable their services, 
+    or a symlink is changed such that a service is started / stopped on an 
+    incorrect runlevel.
  
-  * If a regression happens, any damage should be easily spotted by a sysadmin,
-    and can be manually repaired by making manual symlinks with "ln -s".
+  * If a regression happens, any damage should be easily spotted by a 
+    sysadmin and can be manually repaired by making manual symlinks with 
+    "ln -s".
  
  [Other Info]
  
-  * trusty is the last Ubuntu release to use sysvinit, and this bug is not 
present
-    in newer versions since they use systemd, and the code in question is 
removed
-    from update-rc.d.
+  * trusty is the last Ubuntu release to use sysvinit, and this bug is not 
+    present in newer versions since they use systemd, and the code in question 
+    is removed from update-rc.d.
  
-  * The bug exists in debian squeeze, which is now unsupported, and the code 
in 
-    question is not in any newer versions.
+  * The bug exists in debian squeeze, which is now unsupported, and the code 
+    in question is not in any newer versions.
  
-  * The bug was introduced in 2009-06-29 and somehow evaded anyone
- noticing it.
+  * The bug was introduced in 2009-06-29 and somehow evaded anyone noticing 
+    it.

** Changed in: sysvinit (Ubuntu Trusty)
       Status: New => In Progress

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1827172

Title:
  update-rc.d: enabling or disabling S runlevel services incorrectly
  modifies runlevel

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/sysvinit/+bug/1827172/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to